问题标签 [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.

0 投票
5 回答
121467 浏览

parsing - 如何识别语法是 LL(1)、LR(0) 还是 SLR(1)?

您如何识别语法是 LL(1)、LR(0) 还是 SLR(1)?

任何人都可以使用这个例子或任何其他例子来解释它吗?

X → Yz | 一种

Y → bZ | ε

Z → ε

0 投票
1 回答
2567 浏览

parsing - 不能用 LL 表示的 LR 文法的例子?

所有 LL 语法都是 LR 语法,但不是相反,但我仍然很难处理这种区别。我很好奇没有等效 LL 表示的 LR 语法的小例子(如果有的话)。

0 投票
2 回答
470 浏览

algorithm - 解析上下文无关文法

我知道自下而上的解析器比自上而下的解析器更好,因为它可以接受左递归语法,我们更喜欢自下而上解析而不是自上而下解析的其他原因是什么?

0 投票
2 回答
402 浏览

parsing - LR(1)项目的讨论:意义?

什么是典型的 LR(1) 项目!我读过龙书,它让我很困惑,(delta,gamma,toh,...)

有人可以帮我解决这个问题吗?

这在英语中是什么意思?[A - > alpha.Bbeta , a]

非常感谢..

0 投票
1 回答
162 浏览

parsing - LR Parser reduce/reduce(YACC等)

假设我有以下上下文无关语法,按特定顺序(对于 YACC):

  • z → x
  • z → zx

如果我有以下输入:

(z (zx

解析器会减少:

  1. “x”到“z”
  2. 'z x' 到 'z'

我在想它的 2 号,但不太清楚为什么。非常感谢

编辑:更改输入以进行澄清

0 投票
4 回答
16934 浏览

parsing - 这个语法是 LR(1) 而不是 SLR(1)?

我有以下语法,我被告知是 LR(1) 但不是 SLR(1):

S ::= 一个A | b A c | 直流| bda

一个::= d

我不明白为什么会这样。你将如何证明这一点?

0 投票
1 回答
323 浏览

bison - 如何解决减少减少冲突:

以下(简化的)Bison 语法会产生减少减少冲突:

我看到了这个问题——只有一个前瞻标记,无法判断(an_id是 an'(' expr ')'还是 a fn。但是我该如何解决呢?

0 投票
2 回答
1078 浏览

parsing - 词法分析器如何提取模棱两可的语言中的标记?

我想了解解析器是如何工作的。我了解了 LL、LR(0)、LR(1) 部分、如何构建、NFA、DFA、解析表等。

现在的问题是,我知道在某些情况下,词法分析器应该只根据解析器的需求提取标记,因为不可能在一个单独的通道中提取所有标记。我不完全理解这种情况,所以我愿意接受任何解释。

现在的问题是,词法分析器应该如何工作?它是否应该基于当前的“上下文”,即应该解析的当前非终端来识别它?这是完全不同的东西吗?GLR 解析又如何:这是词法分析器可以尝试不同终端的另一种情况,还是只是一种句法业务?我还想了解它与什么有关,例如它与解析技术(LL、LR 等)的种类有关还是仅与语法有关?

非常感谢

0 投票
1 回答
130 浏览

parsing - 在编写基于 LR(0) 算法的解析器的上下文中,魔术步骤和 tau 步骤是什么?

我必须执行的任务指定:

首先定义在魔术或 tau 步骤的帮助下执行减班阶段的非确定性机器

但是,我在 Compilers:Principles, Techniques & Tools (Aho et. al) 或在互联网上搜索时找不到任何关于什么是魔法或 tau 步骤的参考。

请有人能指出我正确的方向吗?

0 投票
3 回答
1231 浏览

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,而是因为没有时间自己测试一些生成器。因此,请仅在您对推荐的解析器生成器有经验的情况下回答。