feat: 扩展浮点数、数组语法和函数参数支持
This commit is contained in:
@@ -69,6 +69,35 @@ fragment HEX_LITERAL
|
||||
: '0' ('x' | 'X') [0-9a-fA-F]+
|
||||
;
|
||||
|
||||
// 浮点字面量
|
||||
FLITERAL
|
||||
: (DECIMAL_FLOAT | HEX_FLOAT)
|
||||
;
|
||||
|
||||
fragment DECIMAL_FLOAT
|
||||
: (('+' | '-')? (DIGIT+ '.' DIGIT* | '.' DIGIT+ | DIGIT+)
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
| (('+' | '-')? '0' [0-7]+ '.' [0-7]*
|
||||
(('E' | 'e') ('+' | '-')? DIGIT+)?)
|
||||
;
|
||||
|
||||
fragment HEX_FLOAT
|
||||
: ('+' | '-')? '0' ('x' | 'X')
|
||||
(HEXDIGIT* '.' HEXDIGIT+ | HEXDIGIT+ '.')
|
||||
(('P' | 'p') ('+' | '-')? DIGIT+)
|
||||
| ('+' | '-')? '0' ('x' | 'X')
|
||||
HEXDIGIT+
|
||||
(('P' | 'p') ('+' | '-')? DIGIT+)
|
||||
;
|
||||
|
||||
fragment DIGIT
|
||||
: [0-9]
|
||||
;
|
||||
|
||||
fragment HEXDIGIT
|
||||
: [0-9a-fA-F]
|
||||
;
|
||||
|
||||
// 空白和注释
|
||||
WS: [ \t\r\n] -> skip;
|
||||
LINECOMMENT: '//' ~[\r\n]* -> skip;
|
||||
@@ -102,19 +131,20 @@ btype
|
||||
;
|
||||
|
||||
constDef
|
||||
: ID ASSIGN initValue
|
||||
: ID (LBRACK exp RBRACK)* ASSIGN initValue
|
||||
;
|
||||
|
||||
varDef
|
||||
: ID (ASSIGN initValue)?
|
||||
: ID (LBRACK exp RBRACK)* (ASSIGN initValue)?
|
||||
;
|
||||
|
||||
initValue
|
||||
: exp
|
||||
| LBRACE (initValue (COMMA initValue)*)? RBRACE
|
||||
;
|
||||
|
||||
funcDef
|
||||
: funcType ID LPAREN RPAREN blockStmt
|
||||
: funcType ID LPAREN (funcFParams)? RPAREN blockStmt
|
||||
;
|
||||
|
||||
funcType
|
||||
@@ -123,6 +153,14 @@ funcType
|
||||
| VOID
|
||||
;
|
||||
|
||||
funcFParams
|
||||
: funcFParam (COMMA funcFParam)*
|
||||
;
|
||||
|
||||
funcFParam
|
||||
: btype ID (LBRACK (exp)? RBRACK)*
|
||||
;
|
||||
|
||||
blockStmt
|
||||
: LBRACE blockItem* RBRACE
|
||||
;
|
||||
@@ -147,9 +185,11 @@ exp
|
||||
;
|
||||
|
||||
lValue
|
||||
: ID
|
||||
: ID (LBRACK exp RBRACK)*
|
||||
;
|
||||
|
||||
number
|
||||
: ILITERAL
|
||||
| FLITERAL
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user