sri*_*ity 7 parsing yacc lex bison flex-lexer
我希望能够使用flex/bison解析规则解析非空的,一个或多个元素,逗号分隔(以及可选的带括号的)列表.
一些例如可解析的列表:
等等
我使用以下规则来解析列表(最终结果是解析元素'顶级列表'),但它们在解析时似乎没有给出所需的结果(在提供有效列表时我得到语法错误).关于我如何设置它的任何建议?
cList : ELEMENT
{
...
}
| cList COMMA ELEMENT
{
...
}
;
topLevelList : LPAREN cList RPAREN
{
...
}
| cList
{
...
}
;
Run Code Online (Sandbox Code Playgroud)
小智 5
这听起来很简单。告诉我我是否遗漏了什么或者我的例子不起作用
RvalCommaList:
RvalCommaListLoop
| '(' RvalCommaListLoop ')'
RvalCommaListLoop:
Rval
| RvalCommaListLoop ',' Rval
Rval: INT_LITERAL | WHATEVER
Run Code Online (Sandbox Code Playgroud)
但是,如果您同时接受 rval 和此列表,则会发生冲突,将常规 rval 与单个项目列表混淆。在这种情况下,您可以使用下面的内容,这将需要在它们周围使用 '('')' 或在它是列表之前需要 2 个项目
RvalCommaList2:
Rval ',' RvalCommaListLoop
| '(' RvalCommaListLoop ')'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |