Ich versuche, eine LALR-Grammatik für eine sehr einfache Sprache zu erstellen, die aus Zuweisungen besteht. Zum Beispiel:
foo = "bar"
bar = 42
Die Sprache sollte auch Listen von Werten verarbeiten, zum Beispiel:
foo = 1, 2, 3
Aber ich möchte auch Listen über mehrere Zeilen verarbeiten:
foo = 1, 2
3, 4
Trailing Comma (für Einzelwerte und Flexibilität der Sprache):
foo = 1,
foo = 1, 2,
Und natürlich auch beides gleichzeitig:
foo = 1,
2,
3,
Ich bin in der Lage, eine Grammatik mit einer abschließenden Komma oder einer mehrzeiligen Liste zu schreiben, aber nicht für beides gleichzeitig.
Meine Grammatik sieht so aus:
content : content '\n'
: content assignment
|
assignment : NAME '=' value
| NAME '=' list
value : TEXT
| NUMBER
list : ???
Hinweis: Ich benötige das '\n' in der Grammatik, um folgenden Code zu verhindern:
foo
=
"bar"
Vielen Dank im Voraus,
Antoine.