add tag4stmt in .g4,format cpp modification needed

This commit is contained in:
Downright
2025-03-19 20:35:37 +08:00
parent d4d7e6494b
commit 3e80cb8f3f
2 changed files with 24 additions and 15 deletions

View File

@@ -136,29 +136,29 @@ blockStmt: LBRACE blockItem* RBRACE;
blockItem: decl | stmt;
stmt: lValue ASSIGN exp SEMICOLON
| exp? SEMICOLON
| blockStmt
| IF LPAREN cond RPAREN stmt (ELSE stmt)?
| WHILE LPAREN cond RPAREN stmt
| BREAK SEMICOLON
| CONTINUE SEMICOLON
| RETURN exp? SEMICOLON;
stmt: lValue ASSIGN exp SEMICOLON #assignStmt
| exp? SEMICOLON #expStmt
| blockStmt #blkStmt
| IF LPAREN cond RPAREN stmt (ELSE stmt)? #ifStmt
| WHILE LPAREN cond RPAREN stmt #whileStmt
| BREAK SEMICOLON #breakStmt
| CONTINUE SEMICOLON #continueStmt
| RETURN exp? SEMICOLON #returnStmt;
exp: addExp;
cond: lOrExp;
lValue: Ident (LBRACK exp RBRACK)*;
// 为了方便测试 primaryExp 可以是一个string
primaryExp: LPAREN exp RPAREN
| lValue
| number
| string;
primaryExp: LPAREN exp RPAREN #parenExp
| lValue #lVal
| number #num
| string #str;
number: ILITERAL | FLITERAL;
unaryExp: primaryExp
| Ident LPAREN (funcRParams)? RPAREN
| unaryOp unaryExp;
unaryExp: primaryExp #primExp
| Ident LPAREN (funcRParams)? RPAREN #call
| unaryOp unaryExp #unExp;
unaryOp: ADD|SUB|NOT;
funcRParams: exp (COMMA exp)*;