我们使用GPPG(本质上是Bison的bison)来为编程语言生成解析器。除了一个真正讨厌的位,一切都很好。我们解析的语言有一种“隐式比较”规则,其中“表达式表达式”应该被解释为“表达式==表达式”。 例如,这是一个完全有效的语句: If SomeValue False Then
EndIf
这显然介绍解析器生成过程中的种种矛盾。我第一次尝试解决这些问题是沿着这些方向发展的(为简洁起见)。我
我想解析一个上下文无关语言,名为Context Free Art。我使用类似YACC的JS LALR(1)解析器生成器JSCC在Javascript中创建了它的解析器。 以下面的CFA(Context Free Art)代码为例。此代码是有效的CFA。 startshape A
rule A { CIRCLE { s 1} }
注意上面的A和s。 s是缩放CIRCLE的命令,但A只是此规则的