问题标签 [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.
left-recursion - 如何在他的以下删除左递归?
这里是制作。
现在我应该做
会是正确的答案吗?那是'b'或'c'都可以用吗?
context-free-grammar - 删除 CFG 中的左递归
我将如何从语法中的这一行中删除左递归?
A -> D | 右 | r 巴 n ; | 机管局 | ε
r、n 和 ; 是终端符号。D,R,B 和 A 都是非终结符。
提前致谢
prolog - Prolog dcg 从语言中生成所有单词
我正在尝试在 prolog 中编写一些 dcg 语法来描述
a^nb^n n>=0
"",ab,aabb,aaabbb itd
我写的都是
只要我想做的只是检查单词是否正确,它就很好,但是 dcg 语法应该如何在 prolog 中查看?-phrase(s,X)
它将从我的语言中生成所有单词?
prolog - Change DCG to be deterministic
how to change this gramma to be deterministic
I just dont know where to put cut to avoid backtracking.
recursion - 如何去掉左递归
我想制作一个允许柯里化函数调用的语法。
那是:
我的第一个刺是这样的:
但是由于左递归而失败。
prolog - 删除 DCG 中的左递归 - Prolog
我在这个语法中的左递归有一个小问题。我正在尝试在 Prolog 中编写它,但我不知道如何删除左递归。
我写过类似的东西,但它根本不起作用。如何更改它以使该程序正常工作?
parsing - LL(1) 语法问题
对于 Mini Java 的子语法,我有 26 条规则语法。该语法应该是非面向对象的。无论如何,我一直在尝试对它进行左分解并删除左递归。但是,我用 JFLAP 对其进行了测试,但它告诉我它不是 LL(1)。我遵循了 Aho-Sethi 书中算法的每一步。
你能给我一些建议吗?
每个<IDENTIFIER>
都是有效的 Java 标识符,并且<INTEGER-LITERAL>
是一个简单的整数。每个e
产生式代表一个 epsilon 产生式,$
第一条规则中的 是文件结束标记。
parsing - 递归下降解析器 - 避免左递归
我有以下作品
所以很明显有左递归
据说使用以下规则可以避免左递归
这里如何避免左递归?函数A'中仍然存在递归。任何人都可以解释一下。我是这个主题的初学者吗?
ruby - 如何在不回溯的情况下避免树顶的左递归?
在我正在研究的这个简单的表达式解析器中,我无法避免左递归。本质上,我想将方程“fx y”解析为两个表达式“fx”和“(fx)y”(带有隐式括号)。如何在避免左递归和回溯的同时做到这一点?是否必须有一个中间步骤?
prolog - 删除其他抽象语法中的歧义以编写 DCG 解析器 Prolog
P => 程序 K => 块
S => 单命令
C => 命令
E => 表达式
B => 布尔表达式
I => 标识符
N > 数字
P ::= K。
K ::= 开始 C 结束
C ::= C1 ; C2 | 小号
S ::= 我 := E | 如果 (B) 则 S | 如果 (B) 则 S1 否则 S2 | 而(B)做S | 重复 C 直到 (B) | ķ | 打印 E
E ::= - E | E1 + E2 | E1 - E2 | E1 E2 | E1 分区 E2 | E1 模组 E2 | (五) | 我 | ñ
B ::= E1 = E2 | E1 > E2 | E1 < E2 | E1 != E2 | 不是 B | B1 和 B2 | B1 或 B2 | (乙)
我应该删除 E 和 B 中的歧义,以便我可以在 prolog 中编写 DCG 解析器。