问题标签 [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.
parsing - 制作语法 LL
我已经在转换它上浪费了很多时间,但我总是起床获得通用前缀 ID。
谁能给我解释一下?因为我正试图为一个非常大的语法做这件事,并且需要我的基础知识清楚。
A、B、C、D 是唯一的非终端。
grammar - 有人可以验证以下 FIRST 和 FOLLOW 集是否正确吗?
我正在做一个练习来为语法创建 FIRST 和 FOLLOW 集。我认为我所做的是正确的,但答案与我的略有不同。所以需要有人帮助来验证这一点。谢谢你。语法是:
EPSILON 是真正的“epsilon”,这是我为 X 设置的第一个答案:
但给出的答案是:
有人可以验证哪个是正确答案吗?谢谢:)
parsing - 跟随集合自顶向下解析
我对遵循以下规则集有疑问:
我已经计算出Follow(L)
在Follow(L')
. 也是Follow(L')
在,Follow(L)
所以它们都将包含:{end, $}
. 但是,L'
Nullable 也将Follow(L)
包含Follow(C)
?
我已经计算出Follow(C)
=First(L')
和Follow(C) subset Follow(L) = { ; $ end}
.
在答案中Follow(L)
and Follow(L')
contains only {end, $}
,但它不应该包含;
as可以为 null 吗Follow(C)
?L'
谢谢
parsing - 如何使这个 LL(1) 解析器适应 LL(k) 解析器?
在龙书的附录中,给出了一个 LL(1) 前端作为例子。我认为这很有帮助。但是,我发现对于下面的上下文无关语法,至少需要一个 LL(2) 解析器。
我如何调整 LL(1) 解析器的词法分析器以支持 k 前瞻标记?有一些优雅的方法吗?
我知道我可以为令牌添加一些缓冲区。我想讨论一些编程的细节。
这是解析器:
并Lexer.scan()
从流中返回下一个令牌。
antlr - 尝试解决左递归尝试使用 ANTLR 构建解析器
我目前正在尝试使用 Antlr 和 Ecpise 为 Oberon 语言构建一个解析器。
这是我到目前为止所得到的:
我的问题是,当我检查语法时,我收到以下错误,只是找不到合适的方法来解决这个问题:
我也有声明序列和简单表达式的问题。
当我使用options { … backtrack = true; … }
它时至少可以编译,但是当我运行测试文件时显然不再正常工作,但是我找不到自己解决左递归的方法(或者我可能只是太盲目了此刻,因为我已经看这个太久了)。有什么想法可以更改发生错误的行以使其正常工作吗?
编辑
我可以修复三个错误之一。statement
现在工作。问题是,assignment
两者procedurecall
都以designator
.
parsing - 条件语句的 LL(1) 语法
我正在为 Pascal 创建一个解析器,但我陷入了条件语句。
假设我有这个代码片段:
这是有效的帕斯卡 if 语句。但是,当我尝试为((10 mod 3) = 1)
表达式提出 LL(1) 语法时,我崩溃并在括号上烧毁。问题是,上面的条件可以重写为if (10 mod 3) = 1 then ...
或由于运算符优先级为if 10 mod 3 = 1 then ...
我有算术表达式的典型 LL(1) 语法:
但是我无法为整个条件提出 LL(1) 语法。我想到了类似的东西:
where来自上面E
的E
算术表达式语法。
这不是 LL(1),因为CF -> E REL_OP E
andCF -> '(' E REL-OP E ')'
规则包含'('
.
任何想法如何解决第一次碰撞?
antlr - ANTLR4 力 LL(1)
如何强制 ANTLR4 仅接受 LL(1) 语法?
作为一项学术练习,我们必须制作一个 LL(1) 语法。但是,ANTLR4 只接受 LL(*) 语法,而不会警告它不是 LL(1)。我知道通常,LL(*) 是可取的,但 LL(1)-ness 是练习的要求。
我找不到它作为选项或论点,也找不到权威的 antlr4 指南......
提前致谢!
parsing - Transform grammar into LL(1)
I have the following grammar:
With this first
and follow
sets:
I've created the parsing table that follows:
From here I can see that this is not LL(1)
.
How can I modify this grammar so that it becomes LL(1)
?
grammar - 将语法转换为 LL(1)
得到了一个必须转换为的简单语法,LL(1)
我尝试了许多解决方案,但删除了左递归,但它不会产生相同的语法。
语法是这样的:
知道我怎样才能把这个右递归吗?有没有通用的算法?
parsing - 是否存在未生成的 LL(*) 解析器
我需要在运行时更改解析器的语法规则,并且我希望避免在每次规则更改时重新生成解析器。
是否有不使用代码生成的解析器?
问候,