From a1cc591220a7ca522eb23a066bcc007cea183b2d Mon Sep 17 00:00:00 2001 From: Boolean-True Date: Wed, 1 May 2024 12:06:14 +0200 Subject: [PATCH] Update grammar --- src/main/antlr/Decaf.g4 | 23 ++++++++++++++-------- src/main/java/de/maishai/ast/Operator.java | 11 ++++++++++- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/antlr/Decaf.g4 b/src/main/antlr/Decaf.g4 index fee030c..e91c303 100644 --- a/src/main/antlr/Decaf.g4 +++ b/src/main/antlr/Decaf.g4 @@ -28,7 +28,7 @@ stmt : 'if' '(' expr ')' block ('else' block)? #If stmtexpr : id '=' expr ';' #Assign | methCall ';' #MethodCall - | NEW type '(' args? ')' #New + | NEW type '(' args? ')' #New ; expr : expr binaryOp expr #BinaryOperation @@ -39,15 +39,13 @@ expr : expr binaryOp expr #BinaryOperation | stmtexpr #StatementExpressionexpr ; -binaryOp : ADD | SUB | MUL; +binaryOp : ADD | SUB | MUL | GT | LT | GE | LE | EQ | NE | AND | OR | NOT; methCall : id '(' args? ')'; args : expr (',' expr)*; -literal : NUMBER | boolean | CHAR; - -boolean : 'true' | 'false' ; +literal : NUMBER | BOOLEANLITERAL | CHARLITERAL; id : IDENTIFIER; @@ -58,14 +56,23 @@ NEW : 'new'; SUB : '-'; ADD : '+'; MUL : '*'; +GT : '>'; +LT : '<'; +GE : '>='; +LE : '<='; +EQ : '=='; +NE : '!='; +AND : '&&'; +OR : '||'; +NOT : '!'; INT : 'int'; BOOL : 'boolean'; VOID : 'void'; +CHAR : 'char'; -CHAR: ['][a-zA-Z][']; +BOOLEANLITERAL : 'true' | 'false' ; +CHARLITERAL : ['][a-zA-Z][']; IDENTIFIER : [a-zA-Z]+; NUMBER : [0-9]+; WS : [ \t\r\n] -> skip; - - diff --git a/src/main/java/de/maishai/ast/Operator.java b/src/main/java/de/maishai/ast/Operator.java index 6d0b605..bf6fd7c 100644 --- a/src/main/java/de/maishai/ast/Operator.java +++ b/src/main/java/de/maishai/ast/Operator.java @@ -3,5 +3,14 @@ package de.maishai.ast; public enum Operator { ADD, SUB, - MUL + MUL, + GT, + LT, + GE, + LE, + EQ, + NE, + AND, + OR, + NOT }