From e74b53b80e4b2cdf846e9dd207180087e0b9c41b Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Sun, 23 Jun 2019 15:37:50 +1000 Subject: [PATCH] oceani: allow 'then' in simple if statements. Allow 'then' after "if expression", and don't require a ':' if it is followed by simple statements. Similarly "else" doesn't need a colon for simple statements Signed-off-by: NeilBrown --- csrc/oceani-tests.mdc | 13 +++++++++++++ csrc/oceani.mdc | 25 ++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/csrc/oceani-tests.mdc b/csrc/oceani-tests.mdc index 8e4ddad..ab89bf2 100644 --- a/csrc/oceani-tests.mdc +++ b/csrc/oceani-tests.mdc @@ -242,6 +242,16 @@ Now we need to test if/else and some different loops print "Close enough" print "lower" if 355/113 < pi else "higher" + if pi > 3 then print "pi exceeds three"; else print "need more pie" + if (pi < 3) { print "not enough pi" } else { print "pi sufficient" } + for { i := 0; sum := 0 } + then { i = i+1 } + while i <= 10: + sum = sum + i + else: + pass + print "sum 1..10 is", sum + ###### output: cond_loop Success 1 2 4 8 16 32 64 @@ -256,6 +266,9 @@ Now we need to test if/else and some different loops I won't calculate 20 / 9 Close enough higher + pi exceeds three + pi sufficient + sum 1..10 is 55 ## Say Hello diff --git a/csrc/oceani.mdc b/csrc/oceani.mdc index e02057f..bf66eec 100644 --- a/csrc/oceani.mdc +++ b/csrc/oceani.mdc @@ -3636,6 +3636,11 @@ defined. $0->elsepart = $<3; var_block_close(c, CloseElse); }$ + | else OpenScope SimpleStatements NEWLINE ${ + $0 = new(cond_statement); + $0->elsepart = reorder_bilist($<3); + var_block_close(c, CloseElse); + }$ | else OpenScope CondStatement ${ $0 = new(cond_statement); $0->elsepart = $<3; @@ -3693,6 +3698,24 @@ defined. $0.thenpart = $<5; var_block_close(c, CloseParallel); }$ + | if OpenScope Expression OpenScope then Block ${ + $0.type = Xcond_statement; + $0.condpart = $<3; + $0.thenpart = $<6; + var_block_close(c, CloseParallel); + }$ + | if OpenScope Expression OpenScope then SimpleStatements ; ${ + $0.type = Xcond_statement; + $0.condpart = $<3; + $0.thenpart = reorder_bilist($<6); + var_block_close(c, CloseParallel); + }$ + | if OpenScope Expression OpenScope then SimpleStatements NEWLINE ${ + $0.type = Xcond_statement; + $0.condpart = $<3; + $0.thenpart = reorder_bilist($<6); + var_block_close(c, CloseParallel); + }$ | if OpenScope Block then OpenScope Block ${ $0.type = Xcond_statement; $0.condpart = $<3; @@ -4333,7 +4356,7 @@ things which will likely grow as the languages grows. print "", list[i], print - if 1 == 2: print "yes" else: print "no" + if 1 == 2 then print "yes"; else print "no" bob:fred bob.name = "Hello" -- 2.43.0