(AI) refactor - Lexer and parser grammer are separated
This commit is contained in:
@@ -49,66 +49,72 @@ atom
|
||||
| VARIABLE # VariableExp
|
||||
| NUMBER # NumberExp
|
||||
| CONSTANT # ConstantExp
|
||||
| '(' expr ')' # ParenExp
|
||||
| LPAREN expr RPAREN # ParenExp
|
||||
| PIPE expr PIPE # AbsExp
|
||||
| '[' expr (',' expr)* ']' # ListExp
|
||||
| LBRACKET expr (COMMA expr)* RBRACKET # ListExp
|
||||
;
|
||||
|
||||
// Single-argument functions
|
||||
func1
|
||||
: SIN '(' expr ')' # SinFunc
|
||||
| COS '(' expr ')' # CosFunc
|
||||
| TAN '(' expr ')' # TanFunc
|
||||
| ASIN '(' expr ')' # AsinFunc
|
||||
| ACOS '(' expr ')' # AcosFunc
|
||||
| ATAN '(' expr ')' # AtanFunc
|
||||
| SINH '(' expr ')' # SinhFunc
|
||||
| COSH '(' expr ')' # CoshFunc
|
||||
| TANH '(' expr ')' # TanhFunc
|
||||
| ASINH '(' expr ')' # AsinhFunc
|
||||
| ACOSH '(' expr ')' # AcoshFunc
|
||||
| ATANH '(' expr ')' # AtanhFunc
|
||||
| ABS '(' expr ')' # AbsFunc
|
||||
| SQRT '(' expr ')' # SqrtFunc
|
||||
| LN '(' expr ')' # LnFunc
|
||||
| LOG '(' expr ')' # LogFunc
|
||||
| EXP '(' expr ')' # ExpFunc
|
||||
| TNORM '(' expr ')' # TNormFunc
|
||||
| SNORM '(' expr ')' # SNormFunc
|
||||
| FLOOR '(' expr ')' # FloorFunc
|
||||
| CEIL '(' expr ')' # CeilFunc
|
||||
| ROUND '(' expr ')' # RoundFunc
|
||||
| GAMMA '(' expr ')' # GammaFunc
|
||||
| SIGM '(' expr ')' # sigmoidFunc
|
||||
| SFFT '(' expr ')' # sfftFunc
|
||||
| SIFFT '(' expr ')' # sifftFunc
|
||||
| ANGL '(' expr ')' # anglFunc
|
||||
| PRNT '(' expr ')' # printFunc
|
||||
| FRACT '(' expr ')' # FractFunc
|
||||
| RELU '(' expr ')' # ReluFunc
|
||||
| SOFTPLUS '(' expr ')' # SoftplusFunc
|
||||
| GELU '(' expr ')' # GeluFunc
|
||||
| SIGN '(' expr ')' # SignFunc
|
||||
| PRINT_SHAPE '(' expr ')' # PrintShapeFunc
|
||||
| PINV '(' expr ')' # PinvFunc
|
||||
: SIN LPAREN expr RPAREN # SinFunc
|
||||
| COS LPAREN expr RPAREN # CosFunc
|
||||
| TAN LPAREN expr RPAREN # TanFunc
|
||||
| ASIN LPAREN expr RPAREN # AsinFunc
|
||||
| ACOS LPAREN expr RPAREN # AcosFunc
|
||||
| ATAN LPAREN expr RPAREN # AtanFunc
|
||||
| SINH LPAREN expr RPAREN # SinhFunc
|
||||
| COSH LPAREN expr RPAREN # CoshFunc
|
||||
| TANH LPAREN expr RPAREN # TanhFunc
|
||||
| ASINH LPAREN expr RPAREN # AsinhFunc
|
||||
| ACOSH LPAREN expr RPAREN # AcoshFunc
|
||||
| ATANH LPAREN expr RPAREN # AtanhFunc
|
||||
| ABS LPAREN expr RPAREN # AbsFunc
|
||||
| SQRT LPAREN expr RPAREN # SqrtFunc
|
||||
| LN LPAREN expr RPAREN # LnFunc
|
||||
| LOG LPAREN expr RPAREN # LogFunc
|
||||
| EXP LPAREN expr RPAREN # ExpFunc
|
||||
| TNORM LPAREN expr RPAREN # TNormFunc
|
||||
| SNORM LPAREN expr RPAREN # SNormFunc
|
||||
| FLOOR LPAREN expr RPAREN # FloorFunc
|
||||
| CEIL LPAREN expr RPAREN # CeilFunc
|
||||
| ROUND LPAREN expr RPAREN # RoundFunc
|
||||
| GAMMA LPAREN expr RPAREN # GammaFunc
|
||||
| SIGM LPAREN expr RPAREN # sigmoidFunc
|
||||
| SFFT LPAREN expr RPAREN # sfftFunc
|
||||
| SIFFT LPAREN expr RPAREN # sifftFunc
|
||||
| ANGL LPAREN expr RPAREN # anglFunc
|
||||
| PRNT LPAREN expr RPAREN # printFunc
|
||||
| FRACT LPAREN expr RPAREN # FractFunc
|
||||
| RELU LPAREN expr RPAREN # ReluFunc
|
||||
| SOFTPLUS LPAREN expr RPAREN # SoftplusFunc
|
||||
| GELU LPAREN expr RPAREN # GeluFunc
|
||||
| SIGN LPAREN expr RPAREN # SignFunc
|
||||
| PRINT_SHAPE LPAREN expr RPAREN # PrintShapeFunc
|
||||
| PINV LPAREN expr RPAREN # PinvFunc
|
||||
| SUM LPAREN expr RPAREN # SumFunc
|
||||
| MEAN LPAREN expr RPAREN # MeanFunc
|
||||
| STD LPAREN expr RPAREN # StdFunc
|
||||
| VAR LPAREN expr RPAREN # VarFunc
|
||||
| MEDIAN LPAREN expr RPAREN # MedianFunc
|
||||
;
|
||||
|
||||
// Two-argument functions
|
||||
func2
|
||||
: POWE '(' expr ',' expr ')' # PowFunc
|
||||
| ATAN2 '(' expr ',' expr ')' # Atan2Func
|
||||
| TMIN '(' expr ',' expr ')' # TMinFunc
|
||||
| TMAX '(' expr ',' expr ')' # TMaxFunc
|
||||
| STEP '(' expr ',' expr ')' # StepFunc
|
||||
| TOPK '(' expr ',' expr ')' # TopkFunc
|
||||
| BOTK '(' expr ',' expr ')' # BotkFunc
|
||||
: POWE LPAREN expr COMMA expr RPAREN # PowFunc
|
||||
| ATAN2 LPAREN expr COMMA expr RPAREN # Atan2Func
|
||||
| TMIN LPAREN expr COMMA expr RPAREN # TMinFunc
|
||||
| TMAX LPAREN expr COMMA expr RPAREN # TMaxFunc
|
||||
| STEP LPAREN expr COMMA expr RPAREN # StepFunc
|
||||
| TOPK LPAREN expr COMMA expr RPAREN # TopkFunc
|
||||
| BOTK LPAREN expr COMMA expr RPAREN # BotkFunc
|
||||
| DOT LPAREN expr COMMA expr RPAREN # DotFunc
|
||||
;
|
||||
|
||||
func3
|
||||
: CLAMP '(' expr ',' expr ',' expr ')' # ClampFunc
|
||||
| LERP '(' expr ',' expr ',' expr ')' # LerpFunc
|
||||
| SMOOTHSTEP '(' expr ',' expr ',' expr ')' # SmoothstepFunc
|
||||
| RANGE '(' expr ',' expr ',' expr ')' # RangeFunc
|
||||
: CLAMP LPAREN expr COMMA expr COMMA expr RPAREN # ClampFunc
|
||||
| LERP LPAREN expr COMMA expr COMMA expr RPAREN # LerpFunc
|
||||
| SMOOTHSTEP LPAREN expr COMMA expr COMMA expr RPAREN # SmoothstepFunc
|
||||
| RANGE LPAREN expr COMMA expr COMMA expr RPAREN # RangeFunc
|
||||
;
|
||||
|
||||
func4
|
||||
@@ -117,13 +123,13 @@ func4
|
||||
|
||||
// N-argument functions
|
||||
funcN
|
||||
: SMIN '(' expr (',' expr)* ')' # SMinFunc
|
||||
| SMAX '(' expr (',' expr)* ')' # SMaxFunc
|
||||
| MAP '(' expr (',' expr)+ ')' # MapFunc
|
||||
| EZCONV '(' expr (',' expr)+ ')' # EzConvFunc
|
||||
| CONV '(' expr (',' expr)+ ')' # ConvFunc
|
||||
| PERM '(' expr ',' expr ')' # PermuteFunc
|
||||
| RESHAPE '(' expr ',' expr ')' # ReshapeFunc
|
||||
: SMIN LPAREN expr (COMMA expr)* RPAREN # SMinFunc
|
||||
| SMAX LPAREN expr (COMMA expr)* RPAREN # SMaxFunc
|
||||
| MAP LPAREN expr (COMMA expr)+ RPAREN # MapFunc
|
||||
| EZCONV LPAREN expr (COMMA expr)+ RPAREN # EzConvFunc
|
||||
| CONV LPAREN expr (COMMA expr)+ RPAREN # ConvFunc
|
||||
| PERM LPAREN expr COMMA expr RPAREN # PermuteFunc
|
||||
| RESHAPE LPAREN expr COMMA expr RPAREN # ReshapeFunc
|
||||
;
|
||||
|
||||
// LEXER RULES
|
||||
@@ -197,6 +203,11 @@ LT : '<';
|
||||
EQ : '==';
|
||||
NE : '!=';
|
||||
PIPE : '|';
|
||||
LPAREN : '(';
|
||||
RPAREN : ')';
|
||||
COMMA : ',';
|
||||
LBRACKET : '[';
|
||||
RBRACKET : ']';
|
||||
|
||||
CONSTANT : ('pi'|'PI'|'e'|'E');
|
||||
NUMBER : [0-9]+ ('.' [0-9]+)?;
|
||||
|
||||
Reference in New Issue
Block a user