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

0 投票
1 回答
48 浏览

left-recursion - 左递归消除问题

所以我有这个左递归语法

就目前而言,它是左递归,所以我通过另一个步骤消除了左递归:

但是我有一种下沉的感觉,我错误地消除了它,因为如果我追踪它,那么第一组E仍然会以E. 我对么?还是我错过了什么?这个问题是更大语法集的一部分,仅供参考。

0 投票
1 回答
63 浏览

left-recursion - 消除特定语法的左递归

我已经浏览了一百万个示例/教程,但我仍然无法消除此语法的左递归:

有任何想法吗?

0 投票
1 回答
371 浏览

java - Antlr 删除左递归,同时分别保留数学表达式和布尔表达式

我收到了这个著名的错误

由于递归规则调用,规则具有非 LL(*) 决策

遵循简单的语法。

我已经经历了以下没有帮助的答案。

  1. 这个问题:我不想将数学表达式和布尔表达式合二为一,所以我不必通过 AST 来验证它。我试图将这两个表达式分开。

  2. 这个问题维基百科没有帮助我理解这种具体情况。而且我认为我不能比这更简化这个语法。

  3. 这个问题这里我想我们有不同的情况。

我不明白这里的左递归是什么。我没有看到任何A-->Ab|b或类似的东西。谁能帮我解决这个问题。

请注意以下。

  • 我没有运算符优先级,我总是使用括号
  • 我不想结合两种类型的表达式
  • 如果有人感兴趣,这适用于 ANTLR4
0 投票
1 回答
131 浏览

recursion - 删除左递归过程

我只是对左递归时的某些事情感到好奇,我已经完成了这个问题,当我完成左递归时,我已经将 F 添加到 S 中的所有内容中。我们是否总是为左递归这样做(我的老师没有解释得很好)。

0 投票
1 回答
761 浏览

antlr - ANTLR4 相互左递归

我刚刚遇到了 ANTLR 4.2.2 的一个奇怪问题:

考虑一个(简化的)java语法。这不会编译:

ANTLR 输出以下错误:

是的,我也看到了左递归。但我没有看到相互左递归,只有一个普通的。

当我删除周围的括号时(classOrInterfaceType),它编译得很好。当然,括号是多余的,但是语法是自动生成的,代码生成器在某些情况下总是插入括号。那么这里的问题是什么?

0 投票
0 回答
145 浏览

antlr - 尝试解决左递归尝试使用 ANTLR 构建解析器

我目前正在尝试使用 Antlr 和 Ecpise 为 Oberon 语言构建一个解析器。

这是我到目前为止所得到的:

我的问题是,当我检查语法时,我收到以下错误,只是找不到合适的方法来解决这个问题:

我也有声明序列和简单表达式的问题。

当我使用options { … backtrack = true; … }它时至少可以编译,但是当我运行测试文件时显然不再正常工作,但是我找不到自己解决左递归的方法(或者我可能只是太盲目了此刻,因为我已经看这个太久了)。有什么想法可以更改发生错误的行以使其正常工作吗?

编辑 我可以修复三个错误之一。statement现在工作。问题是,assignment两者procedurecall都以designator.

0 投票
1 回答
67 浏览

parsing - 仅使用 e 终端消除左递归

如果有语法:

其中 e 是 epsilon (空字符串)有没有办法从这个语法中消除左递归?

0 投票
1 回答
716 浏览

antlr - 相互左递归?

我正在为 ANTLR 中的语法开发解析器。我目前正在研究 () 具有最高优先级的表达式,然后是 Unary Minus 等。

当我添加 ANTLR 行时出现错误:以下规则集是相互左递归的 [add, mul, unary, not, and, expr, paren, accessMem, relation, or, assign, equal] 我该怎么做解决这个问题?提前致谢。

0 投票
1 回答
840 浏览

python - 使用 PyParsing 解析函数调用

我正在尝试解析一种简单的语言。问题在于解析函数调用。我试图告诉它函数调用是一个表达式,后跟左括号、参数列表和右括号。我有这样的事情:

问题很明显:expr是左递归的。但是,我不知道该怎么做才能解决这个问题。我对右递归式语法(又名 PLY、Yacc 等)很有经验,但我仍在尝试找出左递归语法。

0 投票
1 回答
289 浏览

parsing - 如何修改语法以消除 ANTLR4 中的左递归错误?

我正在尝试解析一种语言。以下 ANTLR4 解析器规则直接从语言规范中复制:

但是antlr报错:以下几组规则相互左递归不知道怎么修改语法,希望有人能帮帮我。谢谢。