WHITESPACE = _{ " " } truthtable = { SOI ~ column_list ~ EOI } column_list = _{ column ~ (", " ~ column)* } column = _{ emphazised | expression } emphazised = { "E" ~ expression } expression = { negatable_term ~ (binop ~ negatable_term)* } negatable_term = _{ negated | term } negated = { negation ~ term } term = _{ label | "(" ~ expression ~ ")" } negation = _{ "not" | "!" | "~" } binop = @{ and_op | or_op | iff_op | if_op } and_op = _{ "and" | "^" | "&&" } or_op = _{ "or" | "v" | "||" } if_op = _{ "if" | "->" } iff_op = _{ "iff" | "<->" | "<>" } label = @{ ASCII_ALPHA+ }