SexpGrammar
A helper to manipulate sexp grammars.
Example
grammar = SexpGrammar.load("\n # alternative rule\n bool_expr:\n - bool_and\n - bool_or\n - bool_not\n - var_ref\n - literal\n\n # non-terminal\n bool_and:\n - [ bool_expr, bool_expr ]\n bool_or:\n - [ bool_expr, bool_expr ]\n bool_not:\n - [ bool_expr ]\n literal:\n - [ truth_value ]\n var_ref:\n - [ var_name ]\n\n # terminals\n var_name:\n !ruby/regexp /^[a-z]+$/\n truth_value:\n - true\n - false\n\n")
grammar === [:bool_and, [:bool_not, [:var_ref, "x"]], [:literal, true]]
# => true
grammar === [:bool_and, [:literal, "true"]]
# => false (second term is missing)