summaryrefslogtreecommitdiff
path: root/crenshaw
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-08-19 17:43:31 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-08-19 17:43:31 +0200
commit8b33ba7fab06c77fcf3fd438439c885dc30a5a3d (patch)
tree926efc8f72ee8982348c0634920bf0d86d7f6514 /crenshaw
parenta6b830b9f542bdc65366d1d947c20aec1cbe96aa (diff)
downloadcompilertests-8b33ba7fab06c77fcf3fd438439c885dc30a5a3d.tar.gz
compilertests-8b33ba7fab06c77fcf3fd438439c885dc30a5a3d.tar.bz2
crenshaw: multiple assignments
Diffstat (limited to 'crenshaw')
-rw-r--r--crenshaw/README4
-rw-r--r--crenshaw/main.pas12
-rw-r--r--crenshaw/test.prog3
3 files changed, 16 insertions, 3 deletions
diff --git a/crenshaw/README b/crenshaw/README
index 201ffcd..dbe62d6 100644
--- a/crenshaw/README
+++ b/crenshaw/README
@@ -139,4 +139,6 @@ tutor4
Good point, even an expression parser can use an interpreter to
simplify constant expressions before generating code for them.
The other option is to let the programmer use the final constant
-and add a comment for it.
+and add a comment for it. Sort of an extreme here would be modern
+C++, where const expressions is THE thing nowadays.
+
diff --git a/crenshaw/main.pas b/crenshaw/main.pas
index 13499b0..172bdc7 100644
--- a/crenshaw/main.pas
+++ b/crenshaw/main.pas
@@ -299,10 +299,18 @@ begin
}
end;
+procedure NewLine;
+begin
+ if Look = LF then
+ GetChar;
+end;
+
begin
Prologue;
Init;
- Assignment;
- if Look <> LF then Expected('Newline');
+ repeat
+ Assignment;
+ NewLine;
+ until Look = '.';
Epilogue;
end.
diff --git a/crenshaw/test.prog b/crenshaw/test.prog
index 21f6d3b..84f044a 100644
--- a/crenshaw/test.prog
+++ b/crenshaw/test.prog
@@ -1 +1,4 @@
+a = 1
+b = 2
x = ( 4 + 4 + 12 ) * 3 / 2 - 3 + a - b * func1( )
+.