问题标签 [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 投票
1 回答
131 浏览

grammar - FOLLOW 函数说明 - 语法

我在理解 FOLLOW 函数时遇到了一些问题。我无法计算遵循语法的功能,这不好。我尝试练习来理解这个功能,特别是这个练习,我有这个语法:

S -> E

E -> T E'

E' -> + T E' | 减 T E' |

T -> F T'

T' -> * F T' |

F -> 标识 | ( F'

F' -> E) | n)

以下是跟随函数的计算结果:

新元

E), $

E'), $

T +, 减号, ), $

T' +, 减号, ), $

F *, +, 减号, ), $

F' *, +, 减号, ), $

我真的不明白为什么 FOLLOW(T)=FOLLOW(T') = { +, minus, ), $ } 在我给出的语法中,终端符号加号和减号永远不会出现在 T 或 T' 的右侧因此,如果有人可以向我解释这一点,那就太好了

0 投票
1 回答
176 浏览

grammar - 识别 LL 和 LR 语法......不是解析器

如果通过查看给我一个 CFG,我可以决定它是 LL 类语法还是 LR 类语法?当我在谷歌上搜索这个问题时,我得到的是这些语法的解析器是如何工作的,但这不是我想要的。任何帮助将不胜感激。

0 投票
1 回答
103 浏览

parsing - 关于这个 FIRST 函数的解释

LL(1) 语法:

而且,在我正在阅读的脚本中,它说该函数FIRST(ε DimList')给出了{#, [}. 但是,怎么做?

我的猜测是,由于 (2) 的右侧以 开头ε,它会跳过 epsilon 并取FIRST(DimList')is,考虑到 (3) 和 (5),等于{[},但由于 (4),它也取FOLLOW(DimList')is {#}

其他方式可能是,因为 (2) 以它开始,ε它跳过 epsilon 并从 (2) 中获取FIRST(DimList')但也从 (2) 获取 FOLLOW(DimList) ...

第一个对我来说更有意义,尽管我仍在学习 LL(1) 语法的基础知识,所以如果有人花时间说明这一点,我将不胜感激,谢谢。

编辑:当然,这些都可能不是真的。

0 投票
1 回答
331 浏览

parsing - 如果有一列在其单元格中没有条目,则 LL(1) 解析表是否有效?

我正在为考试做复习题。其中一个问题是从前一个问题中计算的第一个和后续集合构建一个 LL(1) 解析表。

现在我几乎可以肯定我已经正确构建了第一个和后续集合,并且该表的任何单元格中都没有任何重复的条目,所以我假设该语法是有效的 LL(1) 语法(我们被要求确定如果它是有效的,那么为什么我需要构建表格)。

然而下一个问题是将语法转换为有效的 LL(1) 语法,显然暗示它不是 LL(1)

所以我的问题实际上是2个问题。

由于有一列没有任何条目,因此该语法不是 LL(1) 语法吗?

或者

如果这在 LL(1) 解析表中是允许的,那么我很可能在创建第一个和后续集时出错了吗?

这是我解决的问题和框中的语法 http://imgur.com/UwmOAvX

0 投票
1 回答
440 浏览

antlr - Antlr:忽略特定上下文中的关键字

我正在用 ANTLR 构建一种类似英语的领域特定语言。它的关键字是上下文相关的。(我知道这听起来很脏,但对于非程序员的目标用户来说很有意义。)例如,通常的逻辑运算符,如orand not,当用括号括起来时,将被视为标识符,[like this and this] . 我目前的方法如下所示:

这与以下词汇定义结合使用时:

产生警告"Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"。我显然在为 ANTLR 制造歧义,但我不知道如何解决它。我该如何解决?

0 投票
2 回答
4257 浏览

parsing - 这是文法 LL(1) 吗?

我得出以下语法:

我知道为了使语法成为 LL(1),它必须是明确的和右递归的。问题是我不完全理解左递归和右递归语法的概念。我不知道以下语法是否正确递归。我真的很感激对左递归和右递归语法的概念的简单解释,如果我的语法是 LL(1)。

非常感谢。

0 投票
1 回答
1277 浏览

parsing - 计算第一组语法?

我有这个语法,我自己计算了第一组,但我不确定如何展示我的工作,因为我发现向我展示的方法太混乱了,但我了解如何获取这些集合而不是如何展示我的工作。

语法如下:

我的第一组是:

0 投票
2 回答
17272 浏览

parsing - 计算上下文无关文法的 FIRST 和 FOLLOW 集的算法

我需要一种算法来计算语法的 FIRST 和 FOLLOW 集。

是否有一个简单的算法或简单的代码来计算这些?

0 投票
2 回答
2295 浏览

parsing - LL(1) 用堆栈实现的解析器:如何构建 AST?

我目前正在手动构建解析器。它是一个 LL(1) 解析器。目前,它是一个很好的识别器:它的函数 parse(List tokens) 决定 tokens 是否是语言的成员。

现在,我想为该输入构建相应的 AST。但是,我知道如何以递归下降的方式实现它(已经做到了)。也就是说,对于挑战,我使用带有经典算法的堆栈来实现我的堆栈:

其中 PARSING_TABLE 是 LL(1) 表。但是,我想知道如何在这样的配置中实现构建 AST 的部分。我不要求完整的实施,更多的是实施理念。

谢谢 !

0 投票
2 回答
2071 浏览

parsing - Ebnf – 这是一个 LL(1) 语法吗?

我在维基百科上找到了以下EBNF,描述了 EBNF:

现在,由于我对解析器和语法的了解有限,我不知道这是否是 LL(1) 语法。我试图为它编写一个解析器,但是在尝试读取 rhs 时它失败了,它再次读取自己,再次读取自己,,你明白了......

  • 它是 LL(1) 语法吗?
  • 如果没有,如何将其变成一个(可能?)?