lab1
This commit is contained in:
@@ -75,17 +75,19 @@ FLITERAL
|
||||
;
|
||||
|
||||
fragment DECIMAL_FLOAT
|
||||
: (('+' | '-')? (DIGIT+ '.' DIGIT* | '.' DIGIT+ | DIGIT+)
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
| (('+' | '-')? '0' [0-7]+ '.' [0-7]*
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
: ((DIGIT+ '.' DIGIT* | '.' DIGIT+)
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
| ((DIGIT+ '.' DIGIT* | '.' DIGIT+ | DIGIT+)
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+))
|
||||
| ('0' [0-7]+ '.' [0-7]*
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
;
|
||||
|
||||
fragment HEX_FLOAT
|
||||
: ('+' | '-')? '0' ('x' | 'X')
|
||||
: '0' ('x' | 'X')
|
||||
(HEXDIGIT* '.' HEXDIGIT+ | HEXDIGIT+ '.')
|
||||
(('P' | 'p') ('+' | '-')? DIGIT+)
|
||||
| ('+' | '-')? '0' ('x' | 'X')
|
||||
| '0' ('x' | 'X')
|
||||
HEXDIGIT+
|
||||
(('P' | 'p') ('+' | '-')? DIGIT+)
|
||||
;
|
||||
@@ -104,13 +106,14 @@ LINECOMMENT: '//' ~[\r\n]* -> skip;
|
||||
BLOCKCOMMENT: '/*' .*? '*/' -> skip;
|
||||
|
||||
/*===-------------------------------------------===*/
|
||||
/* Parser rules */
|
||||
/* Syntax rules */
|
||||
/*===-------------------------------------------===*/
|
||||
|
||||
compUnit
|
||||
: (decl | funcDef)* EOF
|
||||
;
|
||||
|
||||
// 声明
|
||||
decl
|
||||
: constDecl
|
||||
| varDecl
|
||||
@@ -143,6 +146,7 @@ initValue
|
||||
| LBRACE (initValue (COMMA initValue)*)? RBRACE
|
||||
;
|
||||
|
||||
// 函数定义
|
||||
funcDef
|
||||
: funcType ID LPAREN (funcFParams)? RPAREN blockStmt
|
||||
;
|
||||
@@ -161,6 +165,7 @@ funcFParam
|
||||
: btype ID (LBRACK (exp)? RBRACK)*
|
||||
;
|
||||
|
||||
// 语句
|
||||
blockStmt
|
||||
: LBRACE blockItem* RBRACE
|
||||
;
|
||||
@@ -245,4 +250,3 @@ number
|
||||
: ILITERAL
|
||||
| FLITERAL
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user