Lambda ist der Parser
-Generator der Intersult.
Der Parser enthält bereits eine Reihe von Parsern für bestimmte Ausdrücke, die durch eine Metasprache angewendet werden können.
angelehnt.
Die grundlegenden Elemente sind:
| Symbol | Parser | Beschreibung |
|---|---|---|
| " | quote-literal | Ein String (auch Literal) kann von zwei Quotes '"' (Anrührungsstrichen) umschlossen sein. |
| ' | apos-literal | Ein String kann von zwei Apos "'" (Apostrophenzeichen) umschlossen sein. |
| | | choice-expression: Definiert eine Entscheidung dass entweder der linke oder der rechte Teil neben dem Symbol verwendet werden darf. | |
| + | sequence-expression: Legt fest, dass zuerst der linke Teil und dann der rechte Teil neben dem Symbol kommen muss. | |
| # | delimiter-repetition-parser: Drückt aus dass der linke Teil beliebig oft wiederholt werden darf, wenn sich zwischen den Wiederholungen jeweils der rechte Teil befindet. | |
| ! | simple-repetition-parser: Drückt aus, dass der linke Teil beliebig oft wiederholt werden darf. | |
| . | terminal-parser-expression: Zeigt an, dass der linke Teil am Ende der Eingabe stehen muss. | |
| ; | parser-set: Trennt zwei Parser-Definitionen voneinander ab. | |
| := | parser-definition: Ordnet dem linken Teil "Parsernamen" die Definition auf der rechten Seite zu. |
Parsers parsers = Parsers.getGlobal().clone();
parsers.create("test := operation-low + eof;");
parsers.create("bracket-expression := '(' + operation-low + ')';");
parsers.create("operand-high := symbol | bracket-expression;");");
parsers.create("operation-high := operand-high #1 ('*'| '/');");
parsers.create("operand-low := operation-high | symbol;");
parsers.create("operation-low := operand-low #1 ('+' | '-')");)";
new ChoiceParser(parsers, "sequence-element", "repetition-parser", "sequence-expression", "parser-element");