From 9f5457a18f551d261e4bd380ea16a52dc5b04cf9 Mon Sep 17 00:00:00 2001 From: Patrick Schönberger Date: Sat, 31 Jul 2021 23:18:40 +0200 Subject: compile again --- Toc.g4 | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'Toc.g4') diff --git a/Toc.g4 b/Toc.g4 index 631e2c3..2170321 100644 --- a/Toc.g4 +++ b/Toc.g4 @@ -37,10 +37,13 @@ stmt: varDecl | returnStmt | expr; -ifStmt: 'if' expr body ('else' 'if' expr body)* ('else' body)?; +ifStmt: 'if' expr body elseIfStmt* elseStmt?; +elseIfStmt: 'else' 'if' expr body; +elseStmt: 'else' body; switchStmt: 'switch' identifierExpr switchBody; -switchBody: '{' ('case' expr body)* '}'; +switchBody: '{' switchCase* '}'; +switchCase: 'case' expr body; forStmt: 'for' (varInit | assignStmt) ',' expr ',' expr body; @@ -72,16 +75,19 @@ nonAccessExpr: funcExpr funcExpr: funcName '(' (expr (',' expr)*)? ')'; opExpr: binaryOp | prefixOp | postfixOp | ternaryOp; -binaryOp: nonOpExpr BINARY_OP nonOpExpr (BINARY_OP nonOpExpr)*; -prefixOp: PREFIX_OP nonOpExpr; -postfixOp: nonOpExpr POSTFIX_OP; +binaryOp: nonOpExpr binary_op nonOpExpr (binary_op nonOpExpr)*; +prefixOp: prefix_op nonOpExpr; +postfixOp: nonOpExpr postfix_op; ternaryOp: nonOpExpr '?' expr ':' expr; identifierExpr: varName; litExpr: INT_LIT | DECIMAL_LIT | STRING_LIT | BOOL_LIT; -accessExpr: nonAccessExpr ((('.' | '->') identifierExpr) | ('[' expr ']'))+; +accessExpr: nonAccessExpr (accessSubExpr)+; +accessSubExpr: accessMember | accessBrackets; +accessMember: ('.' | '->') identifierExpr; +accessBrackets: '[' expr ']'; parenExpr: '(' expr ')'; @@ -91,12 +97,12 @@ typeName: NAME; structName: NAME; -POSTFIX_OP: +postfix_op: '++' | '--'; -PREFIX_OP: - [+!~&*-] | POSTFIX_OP; -BINARY_OP: - [+*/%&<|^>-] | +prefix_op: + '+' | '-' | '!' | '~' | '&' | '*' | postfix_op; +binary_op: + '+' | '-' | '*' | '/' | '%' | '&' | '<' | '|' | '^' | '>' | '==' | '!=' | '<=' | '>=' | '<' | '>' | '<<' | '>>' | '||' | '&&' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '+=' | '-=' | '*=' | '/=' | '%='; -- cgit v1.2.3