EBNF
*, ?, |, ()があるだけ
文法の例
code: arithetic.ebnf
expr = mul ( "+" mul | "-" mul )*
mul = primary ( "*" primary | "/" primary)
primary = num | "(" expr ")"
num = nonzero_digit? digit*
nonzero_digit = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
digit = nonzero_digit | 0