joetjen.net
EN DE
← Alle Bibliotheken
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}
ElixirGrammar compilerPEG / LR / GLR