13 lines
561 B
Plaintext
13 lines
561 B
Plaintext
program = { SOI ~ expr ~ EOI }
|
|
expr = { prefix* ~ primary ~ postfix* ~ (infix ~ prefix* ~ primary ~ postfix* )* }
|
|
infix = _{ add | sub | mul | div | pow }
|
|
add = { "+" } // Addition
|
|
sub = { "-" } // Subtraction
|
|
mul = { "*" } // Multiplication
|
|
div = { "/" } // Division
|
|
pow = { "^" } // Exponentiation
|
|
prefix = _{ neg }
|
|
neg = { "-" } // Negation
|
|
postfix = _{ fac }
|
|
fac = { "!" } // Factorial
|
|
primary = _{ int | "(" ~ expr ~ ")" } |