我正在尝试为由作业组成的非常简单的语言生成 LALR 语法。例如:
foo = "bar"
bar = 42
该语言还应该处理值列表,例如:
foo = 1, 2, 3
但我也想处理多行列表:
foo = 1, 2
3, 4
尾随逗号(用于单例和语言灵活性):
foo = 1,
foo = 1, 2,
显然,两者同时:
foo = 1,
2,
3,
我可以编写带有逗号或多行列表的语法,但不能同时用于两者。
我的语法如下所示:
content : content '\n'
: content assignment
| <empty>
assignment : NAME '=' value
| NAME '=' list
value : TEXT
| NUMBER
list : ???
注意:我需要语法中的'\n'来禁止这种代码:
foo
=
"bar"
预先感谢,
安托万。