gpt4 book ai didi

parsing - 如何设置 flex/bison 规则来解析逗号分隔的参数列表

转载 作者:行者123 更新时间:2023-12-02 12:07:47 26 4
gpt4 key购买 nike

我希望能够使用 flex/bison 解析规则解析非空、一个或多个元素、逗号分隔(以及可选的括号)列表。

一些例如可解析列表的数量:

  • 1
  • 1,2
  • (1,2)
  • (3)
  • 3,4,5
  • (3,4,5,6)

等等

我使用以下规则来解析列表(最终结果是解析元素“顶级列表”),但它们在解析时似乎没有给出所需的结果(在提供有效列表时出现语法错误) )。关于如何设置它有什么建议吗?

cList :   ELEMENT
{
...
}
| cList COMMA ELEMENT
{
...
}
;

topLevelList : LPAREN cList RPAREN
{
...
}
| cList
{
...
}
;

最佳答案

这听起来很简单。如果我错过了什么或者我的示例不起作用,请告诉我

RvalCommaList:
RvalCommaListLoop
| '(' RvalCommaListLoop ')'

RvalCommaListLoop:
Rval
| RvalCommaListLoop ',' Rval

Rval: INT_LITERAL | WHATEVER

但是,如果您接受 rval 以及此列表,则会发生冲突,将常规 rval 与单个项目列表混淆。在这种情况下,您可以使用下面的内容,它要么需要它们周围的 '('')' ,要么需要在列表之前有 2 个项目

RvalCommaList2:
Rval ',' RvalCommaListLoop
| '(' RvalCommaListLoop ')'

关于parsing - 如何设置 flex/bison 规则来解析逗号分隔的参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com