diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2018-08-19 17:43:31 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2018-08-19 17:43:31 +0200 |
commit | 8b33ba7fab06c77fcf3fd438439c885dc30a5a3d (patch) | |
tree | 926efc8f72ee8982348c0634920bf0d86d7f6514 /crenshaw | |
parent | a6b830b9f542bdc65366d1d947c20aec1cbe96aa (diff) | |
download | compilertests-8b33ba7fab06c77fcf3fd438439c885dc30a5a3d.tar.gz compilertests-8b33ba7fab06c77fcf3fd438439c885dc30a5a3d.tar.bz2 |
crenshaw: multiple assignments
Diffstat (limited to 'crenshaw')
-rw-r--r-- | crenshaw/README | 4 | ||||
-rw-r--r-- | crenshaw/main.pas | 12 | ||||
-rw-r--r-- | crenshaw/test.prog | 3 |
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( ) +. |