]> gitweb.ps.run Git - toc/blobdiff - Toc.g4
type modifiers, parenthesized expressions, chained access expressions
[toc] / Toc.g4
diff --git a/Toc.g4 b/Toc.g4
index 21703211d5db185d7b0f7c0bb1e5b7275e88b25f..afe42094ffbae241b64550f1b37615e0d014b2d5 100644 (file)
--- a/Toc.g4
+++ b/Toc.g4
@@ -2,7 +2,7 @@ grammar Toc;
 \r
 prog: (decl)+ EOF;\r
 \r
-decl: varDecl\r
+decl: varDecl ';'\r
     | funcDecl\r
     | structDecl\r
     ;\r
@@ -12,7 +12,7 @@ var:  varName (':' type) ('=' expr)?;
 varInit:  varName (':' type) ('=' expr);\r
 \r
 type: typeName (typeModifier)*;\r
-typeModifier: '*' | '[' NUMBER? ']';\r
+typeModifier: '*' | ('[' (INT_LIT)? ']');\r
 \r
 \r
 funcDecl: 'func' func;\r
@@ -24,18 +24,18 @@ body: '{' stmt* '}';
 \r
 structDecl: 'struct' structName '{' structMember* '}';\r
 structMember: structVar | structMethod;\r
-structVar: var;\r
+structVar: var ';';\r
 structMethod: func;\r
 \r
 \r
-stmt: varDecl\r
+stmt: varDecl ';'\r
     | ifStmt\r
     | switchStmt\r
     | forStmt\r
     | whileStmt\r
-    | assignStmt\r
-    | returnStmt\r
-    | expr;\r
+    | assignStmt ';'\r
+    | returnStmt ';'\r
+    | expr ';';\r
 \r
 ifStmt: 'if' expr body elseIfStmt* elseStmt?;\r
 elseIfStmt: 'else' 'if' expr body;\r
@@ -115,4 +115,3 @@ BOOL_LIT: 'true' | 'false';
 NAME: ([a-z] | [A-Z] | [0-9])+;\r
 WS: [ \t\r\n]+ -> skip;\r
 NEWLINE: [\r\n]+;\r
-NUMBER: [0-9]+;\r