Extend mathematic operations support in the kmath-ast parser #120
@ -2,11 +2,11 @@ grammar ArithmeticsEvaluator;
|
|||||||
|
|||||||
|
|
||||||
fragment DIGIT: '0'..'9';
|
fragment DIGIT: '0'..'9';
|
||||||
fragment LETTER: 'a'..'z';
|
fragment LETTER: 'a'..'z';
|
||||||
What about uppercase letters? What about uppercase letters?
Added. Added.
|
|||||||
fragment CAPITAL_LETTER: 'A'..'Z'
|
fragment CAPITAL_LETTER: 'A'..'Z';
|
||||||
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
|
|||||||
fragment UNDERSCORE: '_';
|
fragment UNDERSCORE: '_';
|
||||||
|
|
||||||
ID: (LETTER | UNDERSCORE | CAPITAL_LETTER) (LETTER | UNDERSCORE | DIGIT | CAPITAL_LETTER)*;
|
ID: (LETTER | UNDERSCORE | CAPITAL_LETTER) (LETTER | UNDERSCORE | DIGIT | CAPITAL_LETTER)*;
|
||||||
NUM: (DIGIT | '.')+ ([eE] MINUS? DIGIT+)?;
|
NUM: (DIGIT | '.')+ ([eE] (MINUS? | PLUS?) DIGIT+)?;
|
||||||
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
|
|||||||
MUL: '*';
|
MUL: '*';
|
||||||
DIV: '/';
|
DIV: '/';
|
||||||
PLUS: '+';
|
PLUS: '+';
|
||||||
@ -17,7 +17,7 @@ LPAR: '(';
|
|||||||
`1.23e+3` generally + in exponent is generally allowed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
Fixed Fixed
|
|||||||
RPAR: ')';
|
RPAR: ')';
|
||||||
WS: [ \n\t\r]+ -> skip;
|
WS: [ \n\t\r]+ -> skip;
|
||||||
|
|
||||||
number
|
num
|
||||||
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
|
|||||||
: NUM
|
: NUM
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ binaryFunction
|
|||||||
`1.23e+3` generally + in exponent is generally allowed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
Fixed Fixed
|
|||||||
;
|
;
|
||||||
|
|
||||||
term
|
term
|
||||||
: number
|
: num
|
||||||
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
|
|||||||
| singular
|
| singular
|
||||||
| unaryFunction
|
| unaryFunction
|
||||||
| binaryFunction
|
| binaryFunction
|
||||||
|
|||||||
`1.23e+3` generally + in exponent is generally allowed
`1.23e+3` generally + in exponent is generally allowed
Fixed Fixed
Fixed Fixed
|
@ -18,7 +18,7 @@ import scientifik.kmath.operations.SpaceOperations
|
|||||||
* TODO move to common
|
* TODO move to common
|
||||||
*/
|
*/
|
||||||
object ArithmeticsEvaluator : Grammar<MST>() {
|
object ArithmeticsEvaluator : Grammar<MST>() {
|
||||||
private val num: Token by token("[\\d.]+(?:[eE]-?\\d+)?".toRegex())
|
private val num: Token by token("[\\d.]+(?:[eE][-+]?\\d+)?".toRegex())
|
||||||
private val id: Token by token("[a-z_A-Z][\\da-z_A-Z]*".toRegex())
|
private val id: Token by token("[a-z_A-Z][\\da-z_A-Z]*".toRegex())
|
||||||
private val lpar: Token by token("\\(".toRegex())
|
private val lpar: Token by token("\\(".toRegex())
|
||||||
private val rpar: Token by token("\\)".toRegex())
|
private val rpar: Token by token("\\)".toRegex())
|
||||||
|
1.23e+3
generally + in exponent is generally allowed1.23e+3
generally + in exponent is generally allowedFixed
Fixed