lalr

    0热度

    1回答

    我为LALR解析器编写了语法,而且我被困在可选的非终端中。例如,考虑C++解引用时,你可以写: ******expression; 当然,你可以写: expression; 这里是我的问题,取消引用非终端是可选真的,这对语法等的影响,现在解析器认为它适用于任何地方(几乎),因为它可能是空的。 是否有一个共同的模式我该如何重写语法来修复它? 我也很乐意指出一些书或其他资源,它们处理“编写语法

    0热度

    2回答

    我想通过在Jison中定义一种非常简单的语言(JavaScript解析器)来解析解析的窍门。它接受与野牛相同/非常类似的语法。 这里是我的语法: %token INT TRUE FALSE WHILE DO IF THEN ELSE LOCATION ASSIGN EOF DEREF %left "+" %left ">=" /* Define Start Production */

    1热度

    1回答

    我目前在野牛减少其目的是要与几个可选不同规则匹配一个逗号分隔的列表: arg_list : | expr_list | assignment_list | expr_list ',' assignment_list | varargs | expr_list ',' varargs | assignment_list ',' v

    0热度

    1回答

    鉴于以下输入: int x = y; 和 int x = y(); 有没有办法为LALR(1)语法,以避免移进/归约冲突?转移/减少冲突决定减少y或继续(。 (这是假设变量名可以是任何一组字母数字字符,和函数调用是任何组由括号下列字母数字字符。)

    0热度

    1回答

    我一直试图解析连接字符串,以便表达式也可以连接起来形成字符串。也就是, "No, " + 4*(6+5)/(8-4) + " is not equal to " + 75*1.3 + "." 上面应该正确解析。问题是+导致转换减少冲突。我一直在使用下面的语法; <S> ::= <A> '+' <S> | <A> <A> ::= <E> |QUOT <E> ::= <

    0热度

    1回答

    是否有PCYACC关键字,相当于BISON的expect declaration: %expect NUMBER

    1热度

    2回答

    我有规则的语法像这样 A -> pq B -> pr Block -> { Astar Bstar } Astar -> Astar A | epsilon Bstar -> Bstar B | epsilon 有什么办法把这个语法到LALR(1)?从我可以弄明白的,如果解析器在块内看到p,就会出现转换/消除冲突。

    0热度

    1回答

    我已经为布尔和算术表达式做了一个语法。我想处理像算术表达式: (1+5)+(-3) 我与所做的工作:我可以处理所有我想要的表情。 我的问题是一个布尔表达式可以是这样的:那么在某些时候我的布尔规则不得不提到我的算术表达式规则 (((2+2==4) or (3>2)) and 2==2) 。我不能在我的布尔规则中使用括号(),因为它会导致我的语法不明确。我明白为什么,但我无法弄清楚这个问题的解

    1热度

    1回答

    我一直在使用帘布写LALR解析器和试图解析乘法时所遇到的不一致。 由于全解析link是几千行代码我将不包括在这里,但我已经创建了一个简单的例子: import ply.lex as lex import ply.yacc as yacc tokens = ( 'int', 'times', 'plus', ) precedence = ( ('lef

    4热度

    1回答

    我们试图生成(在guile中)一个解析器和一个从字符串中读取字符而不是标准输入的词法分析器。 我们开始修改在 http://code.google.com/p/lalr-scm/source/browse/trunk/calc.scm?r=52 包含在代码计算器例子的问题似乎是以下行: (let* ((location (make-source-location "*stdin*" (port-