From 3e8e30e0dab646ac7a6f9eefe442e6bb27cba0aa Mon Sep 17 00:00:00 2001 From: nitrix Date: Tue, 4 Feb 2020 19:13:45 +0100 Subject: [PATCH] add struct definitions as a direct child of program --- src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 b/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 index e8021af..f349b26 100644 --- a/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 +++ b/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 @@ -5,7 +5,15 @@ parse ; program - : functionDef* expression SCOL + : (functionDef | structDef)* expression SCOL + ; + +structDef + : STRUCT structName=IDENT OBRK structField+ CBRK + ; + +structField + : IDENT type_annotation SCOL ; functionDef @@ -99,6 +107,7 @@ type : INTEGER | BOOLEAN | FLOAT + | IDENT ; functionCall @@ -127,6 +136,7 @@ PRINT: 'print'; IF: 'if'; ELSE: 'else'; FUNC: 'function'; +STRUCT: 'struct'; RETURN: 'return'; LET: 'let'; WHILE: 'while';