Elixir
ichor
Übersetzt Grammatikdefinitionen in fertige Sprachimplementierungen.
Absicht
Die meisten Grammatik-Werkzeuge enden beim Erkenner oder beim Parse-Baum. Ichor geht einen Schritt weiter: Grammatik einmal in Aether schreiben — oder ABNF, BNF, EBNF, PEG importieren — und man erhält Lexer, Parser und, über das eigene Actions-Modul, einen Executor. Ohne handgeschriebenen Parser-Code.
Beispiel
use Ichor, grammar_source: """
@grammar "calculator"
@root expr
expr := term (op:("+" | "-") term)*
""", actions: Calculator.Actions
Calculator.run("2 + 3 * 4")
#=> {:ok, 14}Installation
{:ichor_runtime, "~> 0.2"},
{:ichor, "~> 0.2", only: :dev, runtime: false}