20 lines
1.4 KiB
Plaintext
20 lines
1.4 KiB
Plaintext
relation = { SOI ~ boolean_expression ~ EOI }
|
|
conjecture = { SOI ~ arithmetic_expression ~ EOI }
|
|
boolean_expression = { "(" ~ (binary_boolean_conjunction | unary_boolean_conjunction | comparison_expression) ~ ")" |
|
|
binary_boolean_conjunction | unary_boolean_conjunction | comparison_expression}
|
|
binary_boolean_conjunction = { binary_boolean_operator ~ boolean_expression ~ boolean_expression }
|
|
binary_boolean_operator = { "and" | "or" | "xor" }
|
|
unary_boolean_conjunction = { boolean_unary_operator ~ boolean_expression }
|
|
boolean_unary_operator = { "not" }
|
|
comparison_expression = { comparison_operator ~ arithmetic_operand ~ arithmetic_operand }
|
|
comparison_operator = { ">=" | "<=" | "!=" | ">" | "<" | "=" }
|
|
arithmetic_operand = { arithmetic_expression | number_literal }
|
|
arithmetic_expression = { "(" ~ (binary_arithmetic_conjunction | unary_arithmetic_conjunction | variable) ~ ")" |
|
|
binary_arithmetic_conjunction | unary_arithmetic_conjunction | variable }
|
|
binary_arithmetic_conjunction = { binary_arithmetic_operator ~ arithmetic_operand ~ arithmetic_operand }
|
|
binary_arithmetic_operator = { "*" | "/" | "+" | "-" | "^" }
|
|
unary_arithmetic_conjunction = { unary_arithmetic_operator ~ arithmetic_operand }
|
|
unary_arithmetic_operator = { "neg" | "ham" }
|
|
variable = { "x" | "y" | "n" | "p" | "k" }
|
|
number_literal = { ('0'..'9')+ }
|
|
WHITESPACE = _{ " " } |