|
|
@@ -1,14 +1,14 @@
|
|
|
<start> = assignment | expr
|
|
|
expr = add-sub
|
|
|
-<add-sub> = pow-log | mul-div | add | sub | variable
|
|
|
+<add-sub> = pow-term | mul-div | add | sub | variable
|
|
|
add = add-sub <'+'> mul-div
|
|
|
sub = add-sub <'-'> mul-div
|
|
|
-<mul-div> = pow-log | mul | div
|
|
|
-mul = mul-div <'*'> pow-log
|
|
|
-div = mul-div <'/'> pow-log
|
|
|
+<mul-div> = pow-term | mul | div
|
|
|
+mul = mul-div <'*'> pow-term
|
|
|
+div = mul-div <'/'> pow-term
|
|
|
+<pow-term> = pow | term
|
|
|
+pow = pow-term <'^'> term
|
|
|
<trig> = sin | cos | tan | acos | asin | atan
|
|
|
-<pow-log> = term | pow | log | ln | trig
|
|
|
-pow = pow-log <'^'> term
|
|
|
log = <#'\s*'> <'log('> expr <')'> <#'\s*'>
|
|
|
ln = <#'\s*'> <'ln('> expr <')'> <#'\s*'>
|
|
|
sin = <#'\s*'> <'sin('> expr <')'> <#'\s*'>
|
|
|
@@ -17,10 +17,10 @@ tan = <#'\s*'> <'tan('> expr <')'> <#'\s*'>
|
|
|
atan = <#'\s*'> <'atan('> expr <')'> <#'\s*'>
|
|
|
acos = <#'\s*'> <'acos('> expr <')'> <#'\s*'>
|
|
|
asin = <#'\s*'> <'asin('> expr <')'> <#'\s*'>
|
|
|
-<term> = negscientific | scientific | negnumber | number | variable | <#'\s*'> <'('> expr <')'> <#'\s*'>
|
|
|
-negscientific = #'\s*-[0-9]+\.?[0-9]*(e|E)-?[0-9]+()\s*'
|
|
|
+<posterm> = log | ln | trig | scientific | number | variable | <#'\s*'> <'('> expr <')'> <#'\s*'>
|
|
|
+negterm = <#'\s*'> <'-'> posterm
|
|
|
+<term> = negterm | posterm
|
|
|
scientific = #'\s*[0-9]+\.?[0-9]*(e|E)-?[0-9]+()\s*'
|
|
|
-negnumber = #'\s*-\d+(,\d+)*(\.\d*)?\s*'
|
|
|
number = #'\s*\d+(,\d+)*(\.\d*)?\s*'
|
|
|
variable = #'\s*[a-zA-Z]+(\_+[a-zA-Z]+)*\s*'
|
|
|
toassign = #'\s*[a-zA-Z]+(\_+[a-zA-Z]+)*\s*'
|