gppg

    0热度

    1回答

    我们使用GPPG(本质上是Bison的bison)来为编程语言生成解析器。除了一个真正讨厌的位,一切都很好。我们解析的语言有一种“隐式比较”规则,其中“表达式表达式”应该被解释为“表达式==表达式”。 例如,这是一个完全有效的语句: If SomeValue False Then EndIf 这显然介绍解析器生成过程中的种种矛盾。我第一次尝试解决这些问题是沿着这些方向发展的(为简洁起见)。我

    0热度

    2回答

    我试着去建模EBNF表达 ("declare" "namespace" ";")* ("declare" "variable" ";")* 我已经建立了YACC(即时通讯使用MPPG)语法,这似乎来表示这一点,但它不符合我的测试表达式。 测试情况下,我试图匹配是 declare variable; 从词法记号流是 KW_Declare KW_Variable Separator 语

    12热度

    3回答

    是否有可能使YACC(或我是我的案例MPPG)输出抽象语法树(AST)。 我正在阅读的所有东西都表明它很容易让YACC做到这一点,但我很努力想知道如何知道在构建它时如何在树中移动节点。

    10热度

    6回答

    我在理解转换/减少关于语法的转换/减少的问题时遇到了问题,我知道它没有含糊之处。这种情况是if类型之一,但它不是'悬而未决'的问题,因为我有强制性的END子句分隔代码块。 这里是GPPG语法(它是一种野牛一样编译器编译...这不是一个回声): %output=program.cs %start program %token FOR %token END %token THINGS %