问题标签 [left-recursion]
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 - 如何从语法中删除间接左递归
我有一些相互左递归的 ANTLR 代码:
有想法该怎么解决这个吗?
parsing - 左因子分解和删除左递归 JavaCC
我有一个语法,我必须使用 JJTree 和 JavaCC 创建符号表和 AST。虽然我完全理解创建表和树的作业部分,但给我的语法是模棱两可的,包含左递归和间接左递归。它也需要被考虑在内。我在整个互联网上搜寻,试图找到对我有用的方法。
例如:
A ::= Aα | β
可以改为:
A ::= βA'
A' ::= αA' | ε
但我不知道如何将其应用于我的语法。
这是我从包含上述问题的语法中编写的生产规则的一部分。
parsing - 表达式解析器语法和左结合性
我一直在尝试为带有变量的表达式创建解析器并将它们简化为二次表达式形式。
这是我的解析器语法:
对于解析,我使用递归下降解析器。假设我想解析这个:
“ 2 - 1 + 1 = 0”
结果为 0,解析器创建错误的树:
我怎样才能使这个语法左结合?我是这方面的新手,请你告诉我在哪里可以找到更多信息的来源?我可以使用递归下降解析器来实现这一点吗?
java - 在 .jj 文件中检测到左递归
不确定是什么原因造成的。当我尝试编译文件时,我收到一条错误消息“检测到左递归表达式...->片段...->表达式。
有这个的代码区域是这个部分
我不太确定如何解决这个问题,如果有任何帮助,我将不胜感激!谢谢!
antlr - ANTLR4 到 ANTLR3 的转换 - 左递归删除
我一直在研究 ANTLR4 中的语法,但由于需求更改,我需要切换到 ANTLR3。所以我想删除下面的左递归。
我相信我在下面的尝试是可行的,但它与我在网上阅读的有关如何删除左递归的内容不同。
我是否正确删除了左递归?
antlr4 - 如何避免ANTLR 4中的相互左递归
我正在编写一个语法来处理标量和向量表达式。下面的语法被简化以显示我遇到的问题,其中标量表达式可以从向量导出,向量可以从标量导出。例如,向量可以是文字[1, 2, 3]
或标量和向量的乘积2 * [1, 2, 3]
(相当于[2, 4, 6]
)。标量可以是文字2
或向量的索引[1, 2, 3][1]
(相当于2
)。
ANTLR4 给了我错误:The following sets of rules are mutually left-recursive [scalar, vector]
. 这是有道理的,因为scalar
引用vector
,反之亦然,但同时它应该是确定性的。
我将如何重构此语法以避免相互(间接)左递归?我可以扩展其中一个术语 inplace,但这会在完整语法中引入大量重复,其中向量和标量有更多替代方案。我也可以将语法重构为具有主要表达式,但我不想允许scalar '*' scalar
作为有效的vector
替代方案。还有其他选择吗?
java - 在 Java 中删除 NullPointerException
我编写了这段代码来确定给定的语法是否是递归的。当我编译程序时,它给我NullPointerException
一行
和
我如何删除异常?
parsing - 为什么如果我添加 lambda 左递归会发生?
我正在尝试使用 flex bison 编写 if 语法,但在解析器中我遇到了问题
这是cpp中if语法的语法
我不明白为什么如果我替换这三个规则,就会发生左递归我只是将 lambda 添加到这些规则中
请帮我理解。
context-free-grammar - 语法到正则表达式
找到接受给定语法的相同语言的正则表达式的过程步骤是什么?
- S --> b | AA
- 一个--> aA | 艾伯 | ε
recursion - 语法 - 左递归
我在理解左递归方面遇到了问题。我知道这是左递归:A->Aa 你能告诉我这是否是左递归吗?A->aA
你能解释一下为什么这是一个间接的左递归吗?
- D ---> dcD' | 标清'
- D' --> DbaD' | 直流' | e
谢谢你的帮助!