abouttreesummaryrefslogcommitdiff
path: root/Toc.g4
diff options
context:
space:
mode:
authorPatrick Schönberger2021-08-02 16:19:30 +0200
committerPatrick Schönberger2021-08-02 16:19:30 +0200
commit17fac686375c2823d22415e32e5b7e63bbfe7c54 (patch)
treeaa19aee9660d1d188a6f166c0010b017b68e752c /Toc.g4
parentc70926cf67a044a662b2587edb585c2c45c52902 (diff)
downloadtoc-17fac686375c2823d22415e32e5b7e63bbfe7c54.tar.gz
toc-17fac686375c2823d22415e32e5b7e63bbfe7c54.zip
generic grammar
Diffstat (limited to 'Toc.g4')
-rw-r--r--Toc.g45
1 files changed, 3 insertions, 2 deletions
diff --git a/Toc.g4 b/Toc.g4
index afe4209..0c8b501 100644
--- a/Toc.g4
+++ b/Toc.g4
@@ -16,17 +16,18 @@ typeModifier: '*' | ('[' (INT_LIT)? ']');
funcDecl: 'func' func;
-func: funcName '(' parameter ')' (':' type) body;
+func: funcName genericDecl? '(' parameter ')' (':' type) body;
parameter: (var (',' var)*)?;
body: '{' stmt* '}';
-structDecl: 'struct' structName '{' structMember* '}';
+structDecl: 'struct' structName genericDecl? '{' structMember* '}';
structMember: structVar | structMethod;
structVar: var ';';
structMethod: func;
+genericDecl: '<' typeName (',' typeName)* '>';
stmt: varDecl ';'
| ifStmt