小编mig*_*gou的帖子

使用解析表达式语法解析无序序列

解析表达语法(PEG)中,是否有一种(简单的)方式来表达“无序序列”?诸如

Rule <- A B C
Run Code Online (Sandbox Code Playgroud)

要求A,B和C顺序匹配。诸如

Rule <- (A B C) / (B C A) / (C A B) / (A C B) / (C B A) / (B A C)
Run Code Online (Sandbox Code Playgroud)

允许他们以任何顺序进行匹配(这是我们想要的),但是它麻烦且在实践中不适用于序列中更多的术语。

是使用语法上宽松的规则(例如,

Rule <- (A / B / C){3}
Run Code Online (Sandbox Code Playgroud)

并在语义上检查每个规则仅匹配一次?

例如,Relax NG Compact Syntax具有一个“无序列表”运算符来解析XML的事实使我暗示没有明显的解决方案。

最后一个问题:您认为添加这种运算符是否会给PEG带来歧义?

grammar parsing

5
推荐指数
1
解决办法
410
查看次数

标签 统计

grammar ×1

parsing ×1