Parsing 如何解析解析表达式语法?

Parsing 如何解析解析表达式语法?,parsing,peg,recursive-descent,Parsing,Peg,Recursive Descent,我似乎找不到PEG本身的解析表达式语法(PEG) 如何解析解析表达式语法 注意这个问题不是关于如何从一个PEG构造一个递归的体面解析器,而是关于解析一个PEG。这个(“”)包含了PEG的语法。除了解释“接受的第一选择”之外,PEG语法还有什么特别之处吗?为什么不能使用任何标准的上下文无关语法进行PEG?@IraBaxter我的偏好是语法是PEG,其他语法也可以。@IraBaxter:PEG是LL(*),无限前瞻,第一选择,没有左递归。大多数语法都是为LR解析器设计的。@david.pfx:Aha

我似乎找不到PEG本身的解析表达式语法(PEG)

如何解析解析表达式语法


注意这个问题不是关于如何从一个PEG构造一个递归的体面解析器,而是关于解析一个PEG。

这个(“”)包含了PEG的语法。

除了解释“接受的第一选择”之外,PEG语法还有什么特别之处吗?为什么不能使用任何标准的上下文无关语法进行PEG?@IraBaxter我的偏好是语法是PEG,其他语法也可以。@IraBaxter:PEG是LL(*),无限前瞻,第一选择,没有左递归。大多数语法都是为LR解析器设计的。@david.pfx:Aha。没有左递归。好吧,你会遇到和ANTLR一样的麻烦(除了它们现在允许一些左递归)。这是PEGs的PEG语法?@IraBaxter-Yup,“图1.PEG正式描述了它自己的ASCII语法”。我使用该语法(通过动作扩展)编写了一个元循环PEG解析器生成器,因此它确实匹配自身。我看过的每个PEG产品都有自己的语法,主要是PEG。令人惊讶的是变量的细节。@david.pfx:我看过的每个解析器生成器都有自己的语法。基本的EBNF通常并没有什么不同,但总有一些其他细节“在细节上出人意料地变化”。