lalr

    12热度

    2回答

    我一直在使用lex/yacc,现在我试图切换到ANTLR。主要关心的是ANTLR是一个LL(*)解析器,而不像yacc是LALR。我习惯于自下而上思考,而且我不完全知道LL语法的优点。人们说,现在的LL语法更容易理解和流行。但似乎LR解析器更强大,例如LL解析器不能处理左递归,尽管似乎有一些解决方法。 所以问题是LL语法优于LALR的优点是什么?如果有人能给我一些例子,我会很感激。链接到有用的文章

    5热度

    2回答

    在LALR(1)语法分析器中,语法中的规则被转换为一个分析表,它有效地表示“如果你有这个输入,并且前瞻记号是X,那么转移到状态Y或者按规则减少R”。 我已经成功构建了解释语言(ruby)中的LALR(1)解析器,不使用生成器,但在运行时计算解析表并使用该解析表评估输入。这种方式出人意料地出色,表格生成相当简单(这让我感到很吃惊),支持自我引用规则和左/右关联。 但是,我有一点难以理解的是yacc/

    0热度

    1回答

    根据该交in Recursive Descent vs. LALR ,任何LALR(k)的可通过 “保” 转换为LALR(1)。我不拥有帖子中提到的Dragon Book,有没有一些解释或例子可以在网上找到,或者有人可以在这里提供一个关于如何做分解的说明?

    17热度

    3回答

    我不知道C#和Java语法是否是LALR(x)?如果是的话,x的价值是什么? 编辑: 接受真正的答案之后,我觉得这是更好地更改Q这样: 是否有任何LALR(x)的解析,可以解析Java的当前版本(版本7)或C#(版本4)?如果是的话,x的价值是什么?

    1热度

    1回答

    我有一个表示表达式的语法。比方说,为了简单起见,它是: S -> E E -> T + E | T T -> P * T | P P -> a | (E) 随着a,+,*,(和)是在我的英语字母,这个。 上述规则可以生成包含圆括号,乘法和加法的有效算术表达式,并使用正确的操作顺序和关联性。 我的目标是接受每个字符串,包含0个或更多字母的字母。以下是我的约束: 语法必须“接受”包含0个或多

    1热度

    1回答

    我想制作一个使用PLY解析Javascript文件的Python程序,我没有发现任何实现ECMAScript的解析器源,使用PLY的Javascript规则。 我发现的唯一的事情是一些ANTLR语法文件解析的JavaScript和ECMAScript: http://www.antlr.org/grammar/1153976512034/ecmascriptA3.g http://www.antl

    11热度

    1回答

    这不是我的家庭作业,我想了解LALR(k)语法。所以我发现this S -> aEa | bEb | aFb | bFa E -> e F -> e 我在git repo为LR1notLARL1.pdf 但我想不通,为什么这个LR文法不是LALR? 谁能帮助做一个分析仪(可作为PDF ?我谢谢

    2热度

    1回答

    以下(简化)野牛语法产生降低减少冲突: expr : '(' expr ')' | ID | fn ; arg_list : ID | arg_list ID ; fn : '(' ')' fnbody | '(' arg_list ')' fnbody ; fnbody :

    -2热度

    1回答

    如果我正在编写自己的自定义解析器,如何知道是否正在编写递归上升解析器?我对LALR解析的O(n)复杂性(加上我已经有一个LALR语法)一定感兴趣,并且不想在以后发现我写了一个LL解析器。 编辑:我只见过自动的表驱动解析器和一对夫妇生成简单的示例递归解析器 - 其中没有一个看起来像我手动构建的任何东西。因此,将“明显的”代码与实际算法相关联的规则进行关联很难。 如果采取相对简单的规则的代码,例如 n

    6热度

    1回答

    这比一个实际的问题更像是一个“原则上”的问题。是Yacc减少生产的顺序,并从定义的词法分析器中读取新的标记。也就是说,如果我有以下设置令牌: INTEGER_BEGIN INTEGER_VALUE LESS_THAN INTEGER_BEGIN INTEGER_VALUE 能Yacc的,它的语义中,读取来自词法分析器的LESS_THAN令牌,它给定一组作品的降低INTEGER BEGI