@@ -3,42 +3,40 @@ grammar mathjs;
33prog : expr EOF ;
44
55expr :
6- ' (' expr ' )'
7- | expr ' .' PARAMETER (' (' (expr (' ,' expr)*)? ' )' )?
8- | expr ' [' (PARAMETER | expr) ' ]'
9- // 运算符优先级 开始
10- | ' !' expr
11- | expr OPMOD
12- | expr (OPMOD |OP ) expr
13- | expr ' ?' expr ' :' expr
14- // 运算符优先级 结束
15-
16- | PARAMETER ' (' (expr (' ,' expr)*)? ' )'
17- | ' {' arrayJson (' ,' arrayJson)* ' ,' ? ' }'
18- | ' [' expr (' ,' expr)* ' ,' ? ' ]'
19- | ' -' ? NUM
20- | STRING
21- | PARAMETER
6+ ' (' expr ' )'
7+ | expr ' .' PARAMETER (' (' (expr (' ,' expr)*)? ' )' )?
8+ | expr ' [' (PARAMETER | expr) ' ]'
9+ | ' !' expr
10+ | expr OPMOD
11+ | expr (OPMOD |OPSUB |OP ) expr
12+ | expr ' ?' expr ' :' expr
13+
14+ | PARAMETER ' (' (expr (' ,' expr)*)? ' )'
15+ | ' {' arrayJson (' ,' arrayJson)* ' ,' ? ' }'
16+ | ' [' expr (' ,' expr)* ' ,' ? ' ]'
17+ | OPSUB ? NUM
18+ | STRING
19+ | PARAMETER
2220 ;
2321
2422arrayJson : (NUM | STRING | PARAMETER ) ' :' expr;
25-
23+
2624OPMOD : ' %' ;
27- OP : ' +' | ' -' | ' *' | ' /' |' &' | ' >' | ' >=' |' <' |' <=' | ' !=' | ' !==' | ' <>' | ' =' | ' ==' | ' ===' | ' &&' |' ||' ;
25+ OPSUB : ' -' ;
26+ OP : [+*/&><=]| [>=<!] ' =' ' =' ? | ' <>' | ' &&' | ' ||' ;
2827
2928NUM : [0-9]+ (' .' [0-9]+)? (' E' [+-]? [0-9]+)?
30- | [0-9]+ (' .' [0-9]+)? (' M'
31- | ' KM' | ' DM' | ' CM' | ' MM'
32- | ' M2' | ' KM2' | ' DM2' | ' CM2' | ' MM2'
33- | ' M3' | ' KM3' | ' DM3' | ' CM3' | ' MM3' | ' L' | ' ML'
34- | ' G' | ' KG' | ' T' )
29+ | [0-9]+ (' .' [0-9]+)? (
30+ [KDCM ]? ' M' [23]?
31+ | ' M' ? ' L'
32+ | ' K' ? ' G' | ' T' )
3533 ;
3634STRING :
3735 ' \' ' (~[' \\ ] | ' \\' .)* ' \' '
3836 | ' "' (~[" \\ ] | '\\ ' .)* '" '
3937 | ' `' (~[`\\ ] | ' \\' .)* ' `' ;
4038
41- PARAMETER: ([A-Z_] | FullWidthLetter) ( [A-Z0-9_] | FullWidthLetter )*;
39+ PARAMETER: ([A-Z_] | FullWidthLetter) ([A-Z0-9_] | FullWidthLetter)*;
4240
4341fragment FullWidthLetter:
4442 ' \u00c0' ..' \u00d6'
@@ -53,7 +51,6 @@ fragment FullWidthLetter:
5351 | ' \ua000' ..' \ud7ff'
5452 | ' \uf900' ..' \ufaff'
5553 | ' \uff00' ..' \ufff0'
56- // | ' \u10000' ..' \u1F9FF' //not support four bytes chars | ' \u20000' ..' \u2FA1F'
5754 ;
5855
5956WS: [ \t\r\n\f ]+ -> skip;
0 commit comments