lr相关内容

Epsilon(ε)乘积与LR(0)文法和LL(1)文法

在很多地方(例如在这个答案中here),我已经看到,LR(0)文法不能包含ε乘积。 我也在Wikipedia中看到过这样的语句:无ε的LL(1)文法也是SLR(1)。 现在我面临的问题是,我无法推理出这些陈述背后的逻辑。 我知道LR(0)文法通过空栈接受DPDA接受的语言,即它们接受的语言必须具有前缀属性。[然而,如果我们假定结束标记,则可以处理该前缀属性,并且在给定任何语言的情况下 ..
发布时间:2022-05-14 13:48:24 其他开发

LR、SLR 和 LALR 解析器有什么区别?

LR、SLR 和 LALR 解析器之间的实际区别是什么?我知道 SLR 和 LALR 是 LR 解析器的类型,但就它们的解析表而言,它们的实际区别是什么? 以及如何显示一个语法是 LR、SLR 还是 LALR?对于 LL 语法,我们只需要证明解析表的任何单元格都不应包含多个产生式规则.LALR、SLR 和 LR 是否有类似的规则? 例如,我们如何证明语法 S -->啊 |醋酸乙酯 | ..
发布时间:2022-01-17 08:42:40 其他开发

LL和LR解析有什么区别?

谁能给我一个 LL 解析与 LR 解析的简单示例? 解决方案 在高层次上,LL 解析和 LR 解析的区别在于 LL 解析器从开始符号开始,并尝试应用产生式到达目标字符串,而 LR 解析器从目标字符串开始并尝试返回开始符号. LL 解析是从左到右、最左边的推导.也就是说,我们从左到右考虑输入符号并尝试构造最左推导.这是通过从开始符号开始并重复扩展最左边的非终结符来完成的,直到我们到达目 ..
发布时间:2022-01-17 08:28:23 其他开发

适配器未激活-LoadRunner-500错误

我收到"500个内部服务器错误"适配器WD0232对于LR上的SAP Web协议脚本无效. 在录制脚本的同一天运行良好,但新的一天失败. 有人遇到过类似的问题吗? 提前谢谢! 解决方案 是的,这是因为脚本中与时间有关的动态元素尚未处理.这可以是会话标识符或时间戳.无论如何,您都超出了嵌入价值的合法性范围. 有多种方法可以识别代码中要替换的动态候选者.我认为标准产品培 ..

什么是LR(2)解析器?它与LR(1)解析器有何不同?

我熟悉LR(1)解析器,通常在传统的编译器课程中进行讲授.我知道LR(2)解析器存在,但我从未见过构造过的解析器. 如何构造LR(2)解析器?与LR(1)解析器有什么区别? 解决方案 在许多方面,LR(2)解析器的工作方式与LR(1)解析器类似.它找出反向最右边的派生,维护堆栈,对堆栈执行移位和减少操作,具有由LR项目集组成的状态等.但是,有一些主要区别: LR(2)解析器为每 ..
发布时间:2021-04-02 20:32:06 其他开发

现实世界中的LR(k> 1)语法?

对k> 1进行人工LR(k)语法很容易: 输入:A1 B x 输入:A2 B y(为终端a引入减少-减少冲突) A1:a A2:a B:bbb ... b(终端b发生k-1次) 但是,有没有真实世界非LR(1)计算机是LR(k> 1)可解析的语言? 还是非LR(1)语言也不是LR(k)? 解决方案 如果语言具有 LR(k)语法,则它具有 LR(1)语法 ..
发布时间:2020-10-08 23:20:23 其他开发

LR(0),LL(0),LALR(1)等之间的关系?

我真的很难理解之间的关系: LR(0) LL(0) LALR(1) SLR(1) LR(1) LL(1) 我很确定LALR(1)和SLR(1)是LR(1)的子集,但是我对其他的内容一无所知.他们都是独家的吗? LL(0)是LL(1)的子集吗? 谢谢 解决方案 包含规则如下: 每个LR(0)语法也都是SLR(1),但并非所有SLR(1)语法都是LR(0). ..
发布时间:2020-06-29 20:56:22 其他开发

如何将LR(1)解析转换为抽象语法树?

我已经编码了一个表驱动的LR(1)解析器,但是它工作得很好,但是在解析语法树/抽象语法树的阶段,我有些脱节。这是一个我非常热衷的项目,但是我真的在这里陷入了僵局。提前谢谢你的帮助。 编辑:同样,我的解析器仅使用一个2d数组和一个动作对象,该对象告诉它接下来要去哪里,或者它减少了哪里去以及弹出了多少项目。我注意到许多人使用访客模式。我不确定他们如何知道要制作哪种类型的节点。 这是上下文的 ..

LR(k)到LR(1)的语法转换

我对以下来自维基百科的报价感到困惑: 换句话说,如果一种语言足够合理,可以允许 有效的一遍解析器,可以用LR(k)语法描述. 而且这种语法总是可以机械地转化为 等效(但更大)的LR(1)语法.因此,LR(1)解析方法是 从理论上讲,其功能足以处理任何合理的语言.在 实践中,许多编程语言的自然语法是 接近LR(1).[需要引用] 这意味着解析器生成器(如bison)非常强大(因为它可以处 ..
发布时间:2020-05-25 01:29:45 其他开发

无法用LL表示的LR语法示例?

所有的LL语法都是LR语法,但并非相反,但是我仍然很难解决这个区别.我很想知道没有对应的LL表示形式的LR语法的小例子,如果有的话. 解决方案 就语法而言,它很容易-任何简单的左递归语法都是LR(可能是LR(1)),而不是LL.因此,列表语法如下: list ::= list ',' element | element 是LR(1)(假设element的乘积是),但不是LL.这样 ..
发布时间:2020-05-25 01:02:19 其他开发

LR(1)项目DFA-计算前瞻

我很难理解如何计算LR(1)项的提前期. 让我们说我有这个语法: S -> AB A -> aAb | a B -> d LR(1)项是具有超前功能的LR(0)项.因此,我们将获得状态0的以下LR(0)项目: S -> .AB , {lookahead} A -> .aAb, {lookahead} A -> .a, {lookahead} 状态:1 A - ..
发布时间:2020-05-25 00:57:36 其他开发

与LR解析器相比,LL解析器有什么优势?

与今天的解析器生成器工具相比,LL解析器相对于LR解析器具有什么优势,以保证其在今天的解析器生成工具中的相对流行? 根据维基百科,LR解析似乎比LL具有优势: LR解析比LL解析可以处理更大范围的语言,并且在错误报告方面也更好,即,当输入不尽快符合语法时,它可以检测语法错误.这与LL(k)(或更糟糕的是,LL(*)解析器)形成对比,后者可能由于回溯而将错误检测推迟到语法的不同分支,这通 ..
发布时间:2020-05-25 00:56:46 其他开发

LL(1),LR(1),LR(0),LALR(1)语法的示例?

在线上是否有很好的资源,其中包含一些主要解析算法(LL(1),LR(1),LR(0),LALR(1))的语法集合?我发现有许多属于这些家族的语法,但是我不知道有人在其中写了大量示例语法. 有人知道这样的资源吗? 解决方案 作者还具有一些测试语法,并将其与第二版的代码示例捆绑在一起,可以在注意:所有这些语法都很小(少于二十个规则),因为这显然是一本已出版的书. ..
发布时间:2020-05-25 00:28:35 其他开发

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

如何识别语法是LL(1),LR(0)还是SLR(1)? 任何人都可以使用此示例或任何其他示例进行解释吗? X→ Yz |一个 Y→ bZ | ε Z→ ε 解决方案 要检查语法是否为LL(1),一种选择是构造LL(1)解析表并检查是否存在任何冲突.这些冲突可能是 FIRST/FIRST冲突,对于非末端/末端对,必须预测两种不同的产生. FIRST/FOLLO ..
发布时间:2020-05-25 00:14:28 其他开发

LR(0)解析器如何离开状态0?

我至少阅读过Wikipedia的解释,但我仍然对LR(0)解析器如何离开状态0感到困惑. 维基百科的示例及其解释说: 解析器从仅包含初始状态('0')的堆栈开始: [0] 解析器看到的输入字符串中的第一个符号是'1'. ...但是这对我来说没有意义,因为看到输入符号将执行先行,但是根据定义,LR(0)解析器无法执行前瞻. 当解析器处于状态0时,它尚未移位,因此它的堆栈上没 ..
发布时间:2020-04-27 04:06:21 其他开发

Java,C ++,C#等如何解决这种特殊的句法模糊性与<和>?

我曾经认为C ++是一个“奇怪的”,与 的所有含糊不清,但在尝试实现解析器之后,我想我找到了一个打破 每个 语言的示例,该语言使用 用于泛型类型: f(g (j)); 这可能在语法上被解释为泛型方法调用( g ),或者可以解释为给出 f 两次比较的结果。 如何做这些语言(特别是Java,我认为应该是LALR(1) -parsable?)解决这种语 ..
发布时间:2018-12-25 20:30:27 Java开发

SLR(1)和LALR(1)和Reduce

我混淆了正确的!!!!!! 我在我的一个教授笔记中阅读下面的例子。 1)我们有一个SLR(1)语法G如下。我们使用SLR(1)解析器生成器并为G生成解析表S.我们使用LALR(1)解析器生成器并为G.生成解析表L. S-> AB A-> dAa A-> lambda(lambda是长度为0的字符串) B-> aAb :S中的R(减少)元素的数量大于 ..

为什么有LR(0)解析器而不是LL(0)解析器?

我一直在维基百科上阅读,并注意到虽然LR(0)解析器存在,没有LL(0)解析器。 从我读到的,我理解LL(k)/ LR(k)中的k表示解析器可以看到超过当前正在处理的当前字符的字符数。 所以我的问题是,为什么即使LR(0)存在也没有LL(0)解析器这样的东西? 解决方案 区别在于LR(k)对LL(k)的k是什么意思。 ),解析器维护关于自上而下的从左到右的解析的信息,该解 ..
发布时间:2016-12-22 21:30:13 其他开发

LR(1)语法的状态,符号和规则的数量的合理上限是什么?

我正在制作一个LR(1)解析器,我在各种地方遇到了性能瓶颈。 我想尝试优化数据结构,但为了这样做,我需要一个粗略的想法,有多少状态,规则和终端符号是合理的(可能是复杂的)计算机语言,如C ++。 我的猜测是,复杂语言的典型语法将具有: 100个终端符号 ≤每个作品50个符号 ≤ 2,000条规则 ≤ 10,000个州 但我真的不知道他们是多么正确。 请注意,我假 ..
发布时间:2016-10-27 05:56:31 C/C++开发