语法规则修改 #2

Merged
pw6fhtz7q merged 1 commits from fix/grammer into feature/lab2 13 hours ago

@ -44,8 +44,15 @@ L_BRACE : '{';
R_BRACE : '}';
//const numeric classes
//Number... change
// float first
Number
: HEX_FLOAT
| DEC_FLOAT
| HEX_INT
| OCTAL_INT
| DECIMAL_INT
| ZERO
;
// 16进制float first
HEX_FLOAT
: '0' [xX](
@ -72,18 +79,8 @@ HEX_INT: '0' [xX] [0-9a-fA-F]+; //16进制
OCTAL_INT: '0' [0-7]*; //8进制
DECIMAL_INT: [1-9][0-9]*; //10进制
ZERO: '0'; //单独0
// TODO: 后续完善IR后移除Number兼容规则
Number
: HEX_FLOAT
| DEC_FLOAT
| HEX_INT
| OCTAL_INT
| DECIMAL_INT
| ZERO
;
// 标识符(放最后)
// 标识符
Ident
: [a-zA-Z_][a-zA-Z_0-9]*
;
@ -103,11 +100,7 @@ BLOCK_COMMENT
//----语法规则----//
compUnit
: (funcDef|decl|program) EOF
;
program
: (decl|funcDef)+
: (funcDef|decl)+ EOF
;
decl
@ -135,7 +128,6 @@ constInitVal
varDecl
: bType varDef (Comma varDef)* Semi
| Int Ident (Assign exp)? Semi
;
varDef
@ -182,11 +174,7 @@ stmt
| While L_PAREN cond R_PAREN stmt
| Break Semi
| Continue Semi
| returnStmt
;
returnStmt
: Return (exp)? Semi
| Return (exp)? Semi
;
exp
@ -201,21 +189,14 @@ lVal
: Ident (L_BRACK exp R_BRACK)*
;
primary
primaryExp
: L_PAREN exp R_PAREN
| lVal
| Number // 让旧代码能用
| HEX_FLOAT
| DEC_FLOAT
| HEX_INT
| OCTAL_INT
| DECIMAL_INT
| ZERO
| Ident
| Number
;
unaryExp
: primary
: primaryExp
| Ident L_PAREN (funcRParams)? R_PAREN
| unaryOp unaryExp
;
@ -238,7 +219,6 @@ mulExp
addExp
: mulExp
| addExp (AddOp|SubOp) mulExp
| primary (AddOp primary)*
;
relExp

Loading…
Cancel
Save