From 26de003feb2b9ad0a2ac15c219a5ffaebeb1648a Mon Sep 17 00:00:00 2001 From: ridethepig Date: Sat, 29 Apr 2023 23:03:41 +0800 Subject: [PATCH] rewrite grammar file --- .gitignore | 3 +- CMakeLists.txt | 1 + SysY.g4 | 381 -- Sysy.g4 | 114 + docs/SysY2022运行时库-V1.pdf | Bin 0 -> 238220 bytes docs/SysY语言定义.pdf | Bin 0 -> 373074 bytes include/SysYBaseVisitor.h | 207 - include/SysYVisitor.h | 118 - include/antlrgen/SysyBaseVisitor.h | 187 + include/{SysYLexer.h => antlrgen/SysyLexer.h} | 23 +- .../{SysYParser.h => antlrgen/SysyParser.h} | 444 +- include/antlrgen/SysyVisitor.h | 108 + scripts/antlr4-gen.sh | 11 +- src/SysYBaseVisitor.cpp | 9 - src/SysYLexer.cpp | 235 - src/SysYParser.cpp | 3780 ----------------- src/SysYVisitor.cpp | 9 - src/antlrgen/SysyBaseVisitor.cpp | 9 + src/antlrgen/SysyLexer.cpp | 239 ++ src/antlrgen/SysyParser.cpp | 3107 ++++++++++++++ src/antlrgen/SysyVisitor.cpp | 9 + src/main.cpp | 8 +- 22 files changed, 3929 insertions(+), 5073 deletions(-) delete mode 100644 SysY.g4 create mode 100644 Sysy.g4 create mode 100644 docs/SysY2022运行时库-V1.pdf create mode 100644 docs/SysY语言定义.pdf delete mode 100644 include/SysYBaseVisitor.h delete mode 100644 include/SysYVisitor.h create mode 100644 include/antlrgen/SysyBaseVisitor.h rename include/{SysYLexer.h => antlrgen/SysyLexer.h} (56%) rename include/{SysYParser.h => antlrgen/SysyParser.h} (60%) create mode 100644 include/antlrgen/SysyVisitor.h delete mode 100644 src/SysYBaseVisitor.cpp delete mode 100644 src/SysYLexer.cpp delete mode 100644 src/SysYParser.cpp delete mode 100644 src/SysYVisitor.cpp create mode 100644 src/antlrgen/SysyBaseVisitor.cpp create mode 100644 src/antlrgen/SysyLexer.cpp create mode 100644 src/antlrgen/SysyParser.cpp create mode 100644 src/antlrgen/SysyVisitor.cpp diff --git a/.gitignore b/.gitignore index d163863..81a5dc1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -build/ \ No newline at end of file +build/ +.antlr/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d68a321..67226f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,7 @@ include_directories(${ANTLR4_INCLUDE_DIR}) # Custom sources start here include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/antlrgen) file(GLOB_RECURSE SOURCES "src/*.cpp") add_executable(sysy ${SOURCES}) diff --git a/SysY.g4 b/SysY.g4 deleted file mode 100644 index 8320d48..0000000 --- a/SysY.g4 +++ /dev/null @@ -1,381 +0,0 @@ -grammar SysY; - -program - : compUnit - ; - -compUnit - : (funcDef | decl)+ - ; - -decl - : constDecl - | varDecl - ; - -constDecl - : CONST_KW bType constDef (COMMA constDef)* ';' - ; - -bType - : INT_KW - ; - -constDef - : IDENT (L_BRACKT constExp R_BRACKT)* ASSIGN constInitVal - ; - -constInitVal - : constExp - | (L_BRACE (constInitVal (COMMA constInitVal)*)? R_BRACE) - ; - -varDecl - : bType varDef (COMMA varDef)* ';' - ; - -varDef - : IDENT (L_BRACKT constExp R_BRACKT)* (ASSIGN initVal)? - ; - -initVal - : exp - | (L_BRACE (initVal (COMMA initVal)*)? R_BRACE) - ; - -funcDef - : funcType IDENT L_PAREN funcFParams? R_PAREN block - ; - -funcType - : VOID_KW - | INT_KW - ; - -funcFParams - : funcFParam (COMMA funcFParam)* - ; - -funcFParam - : bType IDENT (L_BRACKT R_BRACKT (L_BRACKT exp R_BRACKT)*)? - ; - -block - : L_BRACE blockItem* R_BRACE - ; - -blockItem - : constDecl - | varDecl - | stmt - ; - -stmt - : assignStmt - | expStmt - | block - | conditionStmt - | whileStmt - | breakStmt - | continueStmt - | returnStmt - ; - -assignStmt - : lVal '=' exp ';' - ; - -expStmt - : exp? ';' - ; - -conditionStmt - : IF_KW L_PAREN cond R_PAREN stmt (ELSE_KW stmt)? - ; - -whileStmt - : WHILE_KW L_PAREN cond R_PAREN stmt - ; - -breakStmt - : BREAK_KW ';' - ; - -continueStmt - : CONTINUE_KW ';' - ; - -returnStmt - : RETURN_KW (exp)? ';' - ; - -exp - : addExp - ; - -cond - : lOrExp - ; - -lVal - : IDENT (L_BRACKT exp R_BRACKT)* - ; - -primaryExp - : (L_PAREN exp R_PAREN) - | lVal - | number - ; - -number - : intConst - ; - -intConst - : DECIMAL_CONST - | OCTAL_CONST - | HEXADECIMAL_CONST - ; - -unaryExp - : primaryExp - | callee - | (unaryOp unaryExp) - ; - -callee - : IDENT L_PAREN funcRParams? R_PAREN - ; - -unaryOp - : '+' - | '-' - | NOT - ; - -funcRParams - : param (COMMA param)* - ; - -param - : exp - | STRING - ; - -mulExp - : unaryExp (mulOp unaryExp)* - ; // eliminate left-recursive - -mulOp - : MUL - | DIV - | MOD - ; - -addExp - : mulExp (addOp mulExp)* - ; // eliminate left-recursive - -addOp - : '+' - | '-' - ; - -relExp - : addExp (relOp addExp)* - ; // eliminate left-recursive - -relOp - : LT - | GT - | LE - | GE - ; - -eqExp - : relExp (eqOp relExp)* - ; - -eqOp - : EQ - | NEQ - ; - -lAndExp - : eqExp (AND eqExp)* - ; - -lOrExp - : lAndExp (OR lAndExp)* - ; - -constExp - : addExp - ; - -CONST_KW - : 'const' - ; - -INT_KW - : 'int' - ; - -VOID_KW - : 'void' - ; - -IF_KW - : 'if' - ; - -ELSE_KW - : 'else' - ; - -WHILE_KW - : 'while' - ; - -BREAK_KW - : 'break' - ; - -CONTINUE_KW - : 'continue' - ; - -RETURN_KW - : 'return' - ; - -IDENT - : [_a-zA-Z] - | [_a-zA-Z] [_a-zA-Z0-9]+ - ; - -DECIMAL_CONST - : [1-9] - | [1-9] [0-9]+ - ; - -OCTAL_CONST - : '0' - | ('0' [0-7]+) - ; - -HEXADECIMAL_CONST - : ('0x' | '0X') [a-fA-F0-9]+ - ; - -STRING - : DOUBLE_QUOTE REGULAR_CHAR*? DOUBLE_QUOTE - ; - -fragment REGULAR_CHAR - : (ESC | .) - ; - -fragment ESC - : '\\"' | '\\\\' - ; - -NOT - : '!' - ; - -MUL - : '*' - ; - -DIV - : '/' - ; - -MOD - : '%' - ; - -ASSIGN - : '=' - ; - -EQ - : '==' - ; - -NEQ - : '!=' - ; - -LT - : '<' - ; - -GT - : '>' - ; - -LE - : '<=' - ; - -GE - : '>=' - ; - -AND - : '&&' - ; - -OR - : '||' - ; - -L_PAREN - : '(' - ; - -R_PAREN - : ')' - ; - -L_BRACE - : '{' - ; - -R_BRACE - : '}' - ; - -L_BRACKT - : '[' - ; - -R_BRACKT - : ']' - ; - -COMMA - : ',' - ; - -SEMICOLON - : ';' - ; - -DOUBLE_QUOTE - : '"' - ; - -WS - : [ \r\n\t]+ -> skip - ; - -LINE_COMMENT - : '//' ~ [\r\n]* -> skip - ; - -MULTILINE_COMMENT - : '/*' .*? '*/' -> skip - ; diff --git a/Sysy.g4 b/Sysy.g4 new file mode 100644 index 0000000..9b28b6d --- /dev/null +++ b/Sysy.g4 @@ -0,0 +1,114 @@ +grammar Sysy; + +program: compUnit; + +compUnit: (funcDef | decl)+; + +decl: constDecl | varDecl; + +constDecl: 'const' bType constDef (',' constDef)* ';'; + +bType: 'int'; + +constDef: IDENT ('[' constExp ']')* '=' constInitVal; + +constInitVal: + constExp + | ('{' (constInitVal (',' constInitVal)*)? '}'); + +varDecl: bType varDef (',' varDef)* ';'; + +varDef: IDENT ('[' constExp ']')* ('=' initVal)?; + +initVal: exp | ('{' (initVal (',' initVal)*)? '}'); + +funcDef: funcType IDENT '(' (funcFParams)? ')' block; + +funcType: 'void' | 'int'; + +funcFParams: funcFParam (',' funcFParam)*; + +funcFParam: bType IDENT ('[' ']' ('[' exp ']')*)?; + +block: '{' (blockItem)* '}'; + +blockItem: decl | stmt; + +stmt: + lVal '=' exp ';' # assignStmt + | (exp)? ';' # expStmt + | block # blockStmt + | 'if' '(' cond ')' stmt ('else' stmt)? # ifStmt + | 'while' '(' cond ')' stmt # whileStmt + | 'break' ';' # breakStmt + | 'continue' ';' # continueStmt + | 'return' (exp)? ';' # returnStmt; + +exp: addExp; + +cond: lOrExp; + +lVal: IDENT ('[' exp ']')*; + +primaryExp: ('(' exp ')') | lVal | number; + +number: intConst; + +intConst: DECIMAL_CONST | OCTAL_CONST | HEXADECIMAL_CONST; + +unaryExp: + primaryExp + | IDENT '(' (funcRParams)? ')' + | unaryOp unaryExp; + +unaryOp: '+' | '-' | '!'; // 注:'!'仅出现在条件表达式中 + +funcRParams: funcRParam (',' funcRParam)*; + +funcRParam: exp | StringLiteral; + +mulExp: + unaryExp + | mulExp ('*' | '/' | '%') unaryExp; // ANTLR4 has support for direct left recursion + +addExp: mulExp | addExp ('+' | '-') mulExp; + +relExp: addExp | relExp ('<' | '>' | '<=' | '>=') addExp; + +eqExp: relExp | eqExp ('==' | '!=') relExp; + +lAndExp: eqExp | lAndExp '&&' eqExp; + +lOrExp: lAndExp | lOrExp '||' lAndExp; + +constExp: addExp; // 注:使用的 Ident 必须是常量 + +// -------- Terminals --------- + +IDENT: [_a-zA-Z] | [_a-zA-Z] [_a-zA-Z0-9]+; + +DECIMAL_CONST: [1-9] | [1-9] [0-9]+; + +OCTAL_CONST: '0' | ('0' [0-7]+); + +HEXADECIMAL_CONST: ('0x' | '0X') [a-fA-F0-9]+; + +WS: [ \r\n\t]+ -> skip; + +SINGLELINE_COMMENT: '//' ~ [\r\n]* -> skip; + +MULTILINE_COMMENT: '/*' .*? '*/' -> skip; + +fragment EscapeSequence: + '\\' ['"?abfnrtv\\] + | '\\' [0-7] [0-7]? [0-7]? + | '\\x' [0-9a-fA-F]+; // https://github.com/antlr/grammars-v4/blob/master/c/C.g4 + +fragment SChar: + ~["\\\r\n] + | EscapeSequence + | '\\\n' // Added line + | '\\\r\n' ; // Added line + +StringLiteral: '"' (SChar+)? '"'; +// https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md \ No newline at end of file diff --git a/docs/SysY2022运行时库-V1.pdf b/docs/SysY2022运行时库-V1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..563764c40fbd80e69729e3b417deb7e65da875f3 GIT binary patch literal 238220 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