diff --git a/src/yacc/parser.y b/src/yacc/parser.y index ba73a62..1faa60f 100644 --- a/src/yacc/parser.y +++ b/src/yacc/parser.y @@ -63,7 +63,7 @@ %left OpBitand OpBitor OpBitxor OpBitnot %% -program: statement; +program: statementlist; expr: ValFloat @@ -73,9 +73,23 @@ expr: ValFloat | Ident | operation; +statementlist: statementlist statement + | ; + statement: assign | decl - | definition; + | definition + | branch; + +branchif: KeyIf expr '{' statementlist '}' { DEBUG("if"); }; +branchelse: KeyElse '{' statementlist '}' { DEBUG("if-else"); }; +branchelseif: KeyElse KeyIf expr '{' statementlist '}' { DEBUG("else-if"); }; + +branchelseifs: branchelseifs branchelseif + | ; + +branch: branchif branchelseifs + | branchif branchelseifs branchelse; identlist: Ident ',' identlist | Ident