feat: 扩展浮点数、数组语法和函数参数支持

This commit is contained in:
2026-03-22 16:12:30 +08:00
committed by CGH0S7
parent d6e4fa016e
commit 7115f7e49d

View File

@@ -69,6 +69,35 @@ fragment HEX_LITERAL
: '0' ('x' | 'X') [0-9a-fA-F]+ : '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; WS: [ \t\r\n] -> skip;
LINECOMMENT: '//' ~[\r\n]* -> skip; LINECOMMENT: '//' ~[\r\n]* -> skip;
@@ -102,19 +131,20 @@ btype
; ;
constDef constDef
: ID ASSIGN initValue : ID (LBRACK exp RBRACK)* ASSIGN initValue
; ;
varDef varDef
: ID (ASSIGN initValue)? : ID (LBRACK exp RBRACK)* (ASSIGN initValue)?
; ;
initValue initValue
: exp : exp
| LBRACE (initValue (COMMA initValue)*)? RBRACE
; ;
funcDef funcDef
: funcType ID LPAREN RPAREN blockStmt : funcType ID LPAREN (funcFParams)? RPAREN blockStmt
; ;
funcType funcType
@@ -123,6 +153,14 @@ funcType
| VOID | VOID
; ;
funcFParams
: funcFParam (COMMA funcFParam)*
;
funcFParam
: btype ID (LBRACK (exp)? RBRACK)*
;
blockStmt blockStmt
: LBRACE blockItem* RBRACE : LBRACE blockItem* RBRACE
; ;
@@ -147,9 +185,11 @@ exp
; ;
lValue lValue
: ID : ID (LBRACK exp RBRACK)*
; ;
number number
: ILITERAL : ILITERAL
| FLITERAL
; ;