]> ocean-lang.org Git - ocean/commitdiff
oceani: allow 'then' in simple if statements.
authorNeilBrown <neil@brown.name>
Sun, 23 Jun 2019 05:37:50 +0000 (15:37 +1000)
committerNeilBrown <neil@brown.name>
Sun, 23 Jun 2019 05:37:50 +0000 (15:37 +1000)
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 <neil@brown.name>
csrc/oceani-tests.mdc
csrc/oceani.mdc

index 8e4ddadd7e9bb07b387929dd05a1434f7692b62f..ab89bf27ccd52140f8b43a4a72c0ecf18d6d8ec0 100644 (file)
@@ -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
 
index e02057f31a27f9f01fdfa5d27ed2533d1cc9645f..bf66eec5239bfba6de9230258a112d1cfe2d04e2 100644 (file)
@@ -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"