问题标签 [ll]

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 投票
2 回答
1246 浏览

parsing - LL(1) 语法问题

对于 Mini Java 的子语法,我有 26 条规则语法。该语法应该是非面向对象的。无论如何,我一直在尝试对它进行左分解并删除左递归。但是,我用 JFLAP 对其进行了测试,但它告诉我它不是 LL(1)。我遵循了 Aho-Sethi 书中算法的每一步。

你能给我一些建议吗?

每个<IDENTIFIER>都是有效的 Java 标识符,并且<INTEGER-LITERAL>是一个简单的整数。每个e产生式代表一个 epsilon 产生式,$第一条规则中的 是文件结束标记。

0 投票
2 回答
6166 浏览

parsing - 解析器的性能:PEG vs LALR(1) 或 LL(k)

我已经看到一些声称优化的 PEG 解析器通常不能比优化的 LALR(1) 或 LL(k) 解析器快。(当然,解析的性能取决于特定的语法。)

我想知道 PEG 解析器是否有任何特定限制,无论是一般有效还是对于 PEG 语法的某些子集,这会使它们在性能方面不如 LALR(1) 或 LL(k)。

特别是,我对解析器生成器感兴趣,但假设在任何特定情况下都可以调整它们的输出以提高性能。我还假设解析器已经过优化,如果需要提高性能,可以稍微调整特定语法。

0 投票
1 回答
605 浏览

python - 可以修改 ANTLR 语法文件以供 PLY 使用吗?

我想制作一个使用 PLY 解析 Javascript 文件的 python 程序,我没有找到任何实现 ECMAScript 的解析器来源,使用 PLY 的 Javascript 规则。

我唯一发现的是一些 ANTLR 语法文件来解析 javascript 和 ecmascript: http ://www.antlr.org/grammar/1153976512034/ecmascriptA3.g http://www.antlr.org/grammar/1206736738015/JavaScript.g

ANTLR 语法文件是否可以调整为 PLY 规则,如果可以,如何以半自动方式完成,是否需要解析语法文件?是否有另一种解决方法(即比使用 ANTLR 语法文件)?

0 投票
2 回答
8890 浏览

parsing - LALR 与 LL 解析器

我一直在使用 lex/yacc,现在我正在尝试切换到 ANTLR。主要问题是 ANTLR 是一个 LL(*) 解析器,而 yacc 是 LALR。我习惯于自下而上地思考,我并不完全知道 LL 语法的优势是什么。人们说现在 LL 语法更容易理解并且更受欢迎。但似乎 LR 解析器更强大,例如 LL 解析器无法处理左递归,尽管似乎有一些解决方法。

所以问题是 LL 语法相对于 LALR 的优势是什么?如果有人能给我一些例子,我将不胜感激。指向有用文章的链接也很棒。

提前感谢您的帮助!

(我看到这是一个很好的资源:LL 解析器比 LR 解析器有什么优势?,但如果有一些例子会更好。)

0 投票
1 回答
1096 浏览

parsing - 这是 BNF 语法 LL(1) 吗?

如果以下 BNF 语法是 LL(1),有人可以帮我确认一下:

其中 S 是起始符号,非终结符 A 和 B 可以导出为 epsilon。我知道解析表中的单个单元格中是否有 2 个或多个产生式,那么语法不是 LL(1)。但是如果一个单元格已经包含 epsilon,我们可以在构建解析表时安全地用新的产生式替换它吗?

0 投票
1 回答
650 浏览

grammar - 用于 LL 解析的语法重构

在一个简单的例子中,我很困惑如何通过删除左递归将这个语法变成 LL 语法。欢迎任何提示。

通过应用此算法,我得到以下信息:

这似乎可以为解析器生成 C 伪代码:

并为单词生成解析树aabab::

好吧,我只是不确定它是否正确......

0 投票
1 回答
210 浏览

parsing - 是否存在从 LL(*) 到 PEG 的明确且合理的转换?

我正在研究 PEG(解析表达式语法)解析器,我正在研究的主题之一是与其他解析技术的等效性。

我在From Regular Expressions to Parsing Expression Grammars找到了一篇关于将正则表达式转换为等效 PEG 的好论文。

我希望为LL(*)解析器找到类似的处理方法,但仍然空手而归。在我看来,1中描述的许多技术也将适用于LL(*)转换问题,但是我对形式主义的了解还不够,无法对自己的分析充满信心。

非常感谢您的集体帮助!

0 投票
2 回答
3299 浏览

antlr - ANTLR:回溯和前瞻之间的区别?

我对 ANTLR 比较陌生。我有一个非常简单的语法:

我认为我已经了解了前瞻和回溯概念的基础知识(适用于句法谓词)。所以这个语法适用于 k=4 或 backtrack=true。但是确切的区别是什么,主要问题是我什么时候使用什么?我试图在互联网上找到答案,但没有成功。

0 投票
1 回答
174 浏览

parsing - 关于 FOLLOW 语法集

这里http://slkpg.byethost7.com/llkparse.html定义了 FOLLOW_k-Sets

“语法中符号串的 FOLLOWk 集是语法中的一组 k 长度终端符号串,它可能遵循语法中可导出的某种句子形式的符号串”

首先,我对链接下的示例有一个疑问,那里是 Grammar 4.2

据说:

但我问自己为什么不

因为从例如也可以导出单个 b 。

此外对于语法

我不确定这个集合

它是空的,{ epsilon } 还是 { a, aa } 因为这些字符串是可推导的,还是因为 S 之后的内容很重要,并且因为 S 是起始符号,所以它后面什么都没有,但是我应该写 FOLLOW2(S) = \empyset 或 FOLLOW2(S) = { epsilon }?

0 投票
2 回答
1179 浏览

parsing - 解析:LL(3) 中的文法,但 LR(2) 中没有

我试图证明LL(3) 不是 LR(2) 的子集

直觉上这很容易,但我不能凭直觉找到这样的语法。

你能帮我一把吗?谢谢你的帮助