diskmat-tools/src/truthtable/truthtable.pest

21 lines
593 B
Plaintext

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+ }