问题标签 [lr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
parsing - 如何识别语法是 LL(1)、LR(0) 还是 SLR(1)?
您如何识别语法是 LL(1)、LR(0) 还是 SLR(1)?
任何人都可以使用这个例子或任何其他例子来解释它吗?
X → Yz | 一种
Y → bZ | ε
Z → ε
parsing - 不能用 LL 表示的 LR 文法的例子?
所有 LL 语法都是 LR 语法,但不是相反,但我仍然很难处理这种区别。我很好奇没有等效 LL 表示的 LR 语法的小例子(如果有的话)。
algorithm - 解析上下文无关文法
我知道自下而上的解析器比自上而下的解析器更好,因为它可以接受左递归语法,我们更喜欢自下而上解析而不是自上而下解析的其他原因是什么?
parsing - LR(1)项目的讨论:意义?
什么是典型的 LR(1) 项目!我读过龙书,它让我很困惑,(delta,gamma,toh,...)
有人可以帮我解决这个问题吗?
这在英语中是什么意思?[A - > alpha.Bbeta , a]
非常感谢..
parsing - LR Parser reduce/reduce(YACC等)
假设我有以下上下文无关语法,按特定顺序(对于 YACC):
- z → x
- z → zx
如果我有以下输入:
(z (zx
解析器会减少:
- “x”到“z”
- 'z x' 到 'z'
我在想它的 2 号,但不太清楚为什么。非常感谢
编辑:更改输入以进行澄清
parsing - 这个语法是 LR(1) 而不是 SLR(1)?
我有以下语法,我被告知是 LR(1) 但不是 SLR(1):
S ::= 一个A | b A c | 直流| bda
一个::= d
我不明白为什么会这样。你将如何证明这一点?
bison - 如何解决减少减少冲突:
以下(简化的)Bison 语法会产生减少减少冲突:
我看到了这个问题——只有一个前瞻标记,无法判断(an_id
是 an'(' expr ')'
还是 a fn
。但是我该如何解决呢?
parsing - 词法分析器如何提取模棱两可的语言中的标记?
我想了解解析器是如何工作的。我了解了 LL、LR(0)、LR(1) 部分、如何构建、NFA、DFA、解析表等。
现在的问题是,我知道在某些情况下,词法分析器应该只根据解析器的需求提取标记,因为不可能在一个单独的通道中提取所有标记。我不完全理解这种情况,所以我愿意接受任何解释。
现在的问题是,词法分析器应该如何工作?它是否应该基于当前的“上下文”,即应该解析的当前非终端来识别它?这是完全不同的东西吗?GLR 解析又如何:这是词法分析器可以尝试不同终端的另一种情况,还是只是一种句法业务?我还想了解它与什么有关,例如它与解析技术(LL、LR 等)的种类有关还是仅与语法有关?
非常感谢
parsing - 在编写基于 LR(0) 算法的解析器的上下文中,魔术步骤和 tau 步骤是什么?
我必须执行的任务指定:
首先定义在魔术或 tau 步骤的帮助下执行减班阶段的非确定性机器
但是,我在 Compilers:Principles, Techniques & Tools (Aho et. al) 或在互联网上搜索时找不到任何关于什么是魔法或 tau 步骤的参考。
请有人能指出我正确的方向吗?
parsing - LR(k) 或 LALR(k) 解析器生成器,具有类似于 ANTLR 的功能
我目前正在为某种语言编写解析器。我已经获得了这种语言的语法,但是这种语法有一些左递归和非 LL(*) 构造,所以 ANTLR 表现不佳,即使有回溯。
因为删除这些左递归和非 LL(*) 构造比乍一看更难,所以我现在想尝试一个 LR(k) 或 LALR(k) 解析器生成器。k越高越好。
谁能推荐我一个满足这些要求的解析器生成器?
- 生成的解析器最好是具有一些高(甚至是任意)k 的 LR(k) 解析器,或者至少是具有一些高 k 的 LALR(k) 解析器。
- 生成的解析器是用 C 或 C++ 编写的,如果它是用 C 编写的,它可以链接到 C++-Code。
- 类似于 ANTLR 的功能集(尤其是 AST 重写)会很好。
- 性能不是最紧迫的问题,生成的解析器旨在用于具有大量内存和 cpu 能力的台式机。
谢谢和问候,
约斯特
PS:我问不是因为我不能自己google,而是因为没有时间自己测试一些生成器。因此,请仅在您对推荐的解析器生成器有经验的情况下回答。