abouttreesummaryrefslogcommitdiff
path: root/Toc.g4
diff options
context:
space:
mode:
authorPatrick Schönberger2021-07-31 23:18:40 +0200
committerPatrick Schönberger2021-07-31 23:18:40 +0200
commit9f5457a18f551d261e4bd380ea16a52dc5b04cf9 (patch)
treea0db0635e21039374a022d1f0619c88dcb5d0dd8 /Toc.g4
parent5f9668526491332f62c05ad831dbf6d5fdc2b6d0 (diff)
downloadtoc-9f5457a18f551d261e4bd380ea16a52dc5b04cf9.tar.gz
toc-9f5457a18f551d261e4bd380ea16a52dc5b04cf9.zip
compile again
Diffstat (limited to 'Toc.g4')
-rw-r--r--Toc.g428
1 files changed, 17 insertions, 11 deletions
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:
+ '+' | '-' | '*' | '/' | '%' | '&' | '<' | '|' | '^' | '>' |
'==' | '!=' | '<=' | '>=' | '<' | '>' |
'<<' | '>>' | '||' | '&&' | '&=' | '|=' | '^=' |
'<<=' | '>>=' | '+=' | '-=' | '*=' | '/=' | '%=';