From c68e592f23545dc7213c38af351161be2b5abece Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 31 Mar 2016 23:23:47 +0200 Subject: Update toString in readme; own toString for Bool --- README.md | 54 +++++++++++++++++++++++++++--------------------------- While.dcl | 1 + While.icl | 4 +++- 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 -- cgit v1.2.3