aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-03-31 23:23:47 +0200
committerCamil Staps2016-03-31 23:23:47 +0200
commitc68e592f23545dc7213c38af351161be2b5abece (patch)
tree734cc92708fb9072bcedf32cd055f9def03ecc4a
parentParentheses for ArithExpr/BoolExpr toString (diff)
Update toString in readme; own toString for BoolHEADmaster
-rw-r--r--README.md54
-rw-r--r--While.dcl1
-rw-r--r--While.icl4
3 files changed, 31 insertions, 28 deletions
diff --git a/README.md b/README.md
index a69c119..50013c0 100644
--- a/README.md
+++ b/README.md
@@ -62,13 +62,13 @@ types can be `toString`ed:
For example, the tree for `sqrt` in `st` with `st x = 9` (when passed to
`toString`):
- (z:=0; o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (z:=0; o:=1; s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
z:=0
- (o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (o:=1; s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
o:=1
- (s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
s:=1
- (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (while s<=x do (z:=z+1; o:=o+2; s:=s+o)
(z:=z+1; o:=o+2; s:=s+o
z:=z+1
(o:=o+2; s:=s+o
@@ -76,7 +76,7 @@ For example, the tree for `sqrt` in `st` with `st x = 9` (when passed to
s:=s+o
)
)
- (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (while s<=x do (z:=z+1; o:=o+2; s:=s+o)
(z:=z+1; o:=o+2; s:=s+o
z:=z+1
(o:=o+2; s:=s+o
@@ -84,7 +84,7 @@ For example, the tree for `sqrt` in `st` with `st x = 9` (when passed to
s:=s+o
)
)
- (while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ (while s<=x do (z:=z+1; o:=o+2; s:=s+o)
(z:=z+1; o:=o+2; s:=s+o
z:=z+1
(o:=o+2; s:=s+o
@@ -92,7 +92,7 @@ For example, the tree for `sqrt` in `st` with `st x = 9` (when passed to
s:=s+o
)
)
- while s<=x do z:=z+1; o:=o+2; s:=s+o done
+ while s<=x do (z:=z+1; o:=o+2; s:=s+o)
)
)
)
@@ -102,26 +102,26 @@ For example, the tree for `sqrt` in `st` with `st x = 9` (when passed to
And the sequence:
- z:=0; o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- o:=1; s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- s:=1; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- while s<=x do z:=z+1; o:=o+2; s:=s+o done
- if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
- z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- while s<=x do z:=z+1; o:=o+2; s:=s+o done
- if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
- z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- while s<=x do z:=z+1; o:=o+2; s:=s+o done
- if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
- z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done
- while s<=x do z:=z+1; o:=o+2; s:=s+o done
- if s<=x then z:=z+1; o:=o+2; s:=s+o; while s<=x do z:=z+1; o:=o+2; s:=s+o done else skip
+ z:=0; o:=1; s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ o:=1; s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ s:=1; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ if s<=x then (z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)) else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ if s<=x then (z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)) else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ if s<=x then (z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)) else skip
+ z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ while s<=x do (z:=z+1; o:=o+2; s:=s+o)
+ if s<=x then (z:=z+1; o:=o+2; s:=s+o; while s<=x do (z:=z+1; o:=o+2; s:=s+o)) else skip
skip
As you can see, neither method outputs the states. Since a `State` is actually
diff --git a/While.dcl b/While.dcl
index aeb685d..2440457 100644
--- a/While.dcl
+++ b/While.dcl
@@ -19,6 +19,7 @@ instance toState State
instance toState CharState
instance toString ArithExpr
+instance toString Bool
instance toString BoolExpr
instance toString Stm
instance toString Var
diff --git a/While.icl b/While.icl
index 9b8efae..c1077f9 100644
--- a/While.icl
+++ b/While.icl
@@ -5,7 +5,7 @@ from StdList import hd, last, map, take
from StdMisc import abort
from StdOverloaded import class +++(..), class toString(..)
from StdString import instance +++ {#Char}, instance toString {#Char},
- instance toString Int, instance toString Bool, instance toString Char
+ instance toString Int, instance toString Char
import _SystemArray
// Evaluation utilities
@@ -91,6 +91,8 @@ where
toString (a1 - a2) = a1 <+ "-" <+ a2
toString (a1 * a2) = "(" <+ a1 <+ "*" <+ a2 <+ ")"
+instance toString Bool where toString True = "true"; toString False = "false"
+
instance toString BoolExpr
where
toString (a1 == a2) = a1 <+ "=" <+ a2