Compare commits

...

2 Commits

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

Loading…
Cancel
Save