我们使用GPPG(本质上是Bison的bison)来为编程语言生成解析器。除了一个真正讨厌的位,一切都很好。我们解析的语言有一种“隐式比较”规则,其中“表达式表达式”应该被解释为“表达式==表达式”。 例如,这是一个完全有效的语句: If SomeValue False Then
EndIf
这显然介绍解析器生成过程中的种种矛盾。我第一次尝试解决这些问题是沿着这些方向发展的(为简洁起见)。我
我在理解转换/减少关于语法的转换/减少的问题时遇到了问题,我知道它没有含糊之处。这种情况是if类型之一,但它不是'悬而未决'的问题,因为我有强制性的END子句分隔代码块。 这里是GPPG语法(它是一种野牛一样编译器编译...这不是一个回声): %output=program.cs
%start program
%token FOR
%token END
%token THINGS
%