diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-08-06 22:36:34 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2025-08-06 22:36:34 +1000 |
| commit | 7a8d2bcd75d88a5429937bf551878c55e1dcf0fd (patch) | |
| tree | 81bc1f259fb8678513aa8b214df4ef72720bb585 /Compiler/CGrammar.g4 | |
| parent | 16f3cb74564cf7c19da6e13666c98aca36094716 (diff) | |
moved everything to seperate projects, and started compiler work + push and pop instructions added
Diffstat (limited to 'Compiler/CGrammar.g4')
| -rw-r--r-- | Compiler/CGrammar.g4 | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Compiler/CGrammar.g4 b/Compiler/CGrammar.g4 new file mode 100644 index 0000000..69b2c0a --- /dev/null +++ b/Compiler/CGrammar.g4 @@ -0,0 +1,50 @@ +grammar CGrammar; + +ID: [a-zA-Z_][a-zA-Z0-9_]*; +INT: [0-9]+; + +program + : function EOF + ; + +function + : 'int' ID '(' ')' '{' statement* '}' + ; + +statement + : 'return' expression ';' #returnStatement + ; + +expression + : '(' expression ')' #parenthesizedExpression + + | '!' expression #notExpression + | '~' expression #invertExpression + + | left=expression '*' right=expression #multiplyExpression + | left=expression '/' right=expression #divideExpression + | left=expression '%' right=expression #modulusExpression + + | left=expression '+' right=expression #addExpression + | left=expression '-' right=expression #subtractExpression + + | left=expression '<' right=expression #lessThanExpression + | left=expression '>' right=expression #greaterThanExpression + | left=expression '<=' right=expression #lessThanOrEqualExpression + | left=expression '>=' right=expression #greaterThanOrEqualExpression + | left=expression '==' right=expression #equalExpression + | left=expression '!=' right=expression #notEqualExpression + + | left=expression '&' right=expression #bitwiseAndExpression + | left=expression '|' right=expression #bitwiseOrExpression + | left=expression '^' right=expression #bitwiseXorExpression + + | left=expression '&&' right=expression #logicalAndExpression + | left=expression '||' right=expression #logicalOrExpression + + | constant #constantExpression + ; + +constant + : INT # intConstant + ;
\ No newline at end of file |
