提问人:Mackie Messer 提问时间:9/23/2023 更新时间:9/23/2023 访问量:32
是否有标准的 Backus-Naur 表单来检查列表是否包含一致的令牌类型?
Is there a standard Backus-Naur form for checking that lists contain consistent token types?
问:
我正在使用 PLY 解析 DNET 文件。DNET规范建议的部分语法是(用我的话说):
<value> -> NUMBER | STRING | ID
<values> -> <value> | <values> COMMA <value>
<list> -> LPAREN <values> RPAREN | LPAREN RPAREN
如果我不关心在列表中混合令牌类型,这很好用。但是,如果我想确保解析器只生成有效的列表,那么如果我能保证列表中的令牌类型一致,那就太好了。
我的直觉是为每个有效的令牌类型联合定义一个列表生成,然后在需要时使用该列表生成。例如,如果我想保证我有一个令牌列表:STRING
<strings> -> STRING | <strings> COMMA STRING
<string_list> -> LPAREN <strings> RPAREN | LPAREN RPAREN
但这意味着我必须定义一个 bajillion 不同的列表制作。有没有更聪明的方法可以在解析器级别执行此操作,或者我应该保存这种验证以在我构建的 AST 上执行?
答: 暂无答案
上一个:如何使用 PLY 实现路径验证
下一个:使用 pcl 可视化工具的点云
评论