问题标签 [lr1]

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 回答
5476 浏览

parsing - LR1 解析器和 Epsilon

我试图了解 LR1 解析器是如何工作的,但我遇到了一个奇怪的问题:如果语法包含 Epsilons 怎么办?例如:如果我有语法:

很清楚如何开始:

... 等等

但我不知道如何为这样的语法做:

这样做是否正确:

然后让这个状态在 DFA 中接受?

任何帮助将不胜感激!

0 投票
1 回答
162 浏览

parsing - 为 LR(1) 解析构建状态时处理无限循环

我目前正在从以下语法构造 LR(1) 状态。

这是I0的构造

和 I1。

等等。但是当我开始构建 I4 时...

问题是 A -> .aA

当我尝试从 a 构造下一个状态时,我将再次获得与 I4 完全相同的内容,并且这会无限地继续下去。类似的循环发生在

那么,我做错了什么?必须有一些我遗漏的细节,但我浏览了我的笔记和我的书,要么找不到,要么就是不明白这里出了什么问题。有什么帮助吗?

0 投票
1 回答
78 浏览

grammar - 这个语法怎么了

WORD 和 SOMETHING 是非空终结符

这是一个 LR1 语法,所以野牛应该毫无问题地解析它。

但是我在运行时遇到了一个意想不到的问题:程序提示输入两次,例如,当我输入“qwerty”时,它提示输入第二个输入,当我尝试调试它时,我得到了这个:

0 投票
2 回答
2837 浏览

c# - 我在哪里可以找到 LR(1) 解析器生成器的简单、易于理解的实现?

我在哪里可以找到 LR(1) 解析器生成器的简单(尽可能多,但不简单!)实现?

我不是在寻找性能,只是在寻找生成 LR(1) 状态(项目集)的能力。
C++、C#、Java 和 Python 都适合我。

0 投票
2 回答
1376 浏览

parsing - LR(1) 语法:如何分辨?支持/反对的例子?

我目前正在查看 GNU Bison 来解析程序代码(或者实际上是扩展使用 Bison 来执行此操作的程序)。我知道 Bison 只能(或:最好)处理 LR(1) 语法,即一种特殊形式的上下文无关语法;而且我实际上也(相信)理解上下文无关和 LR(1) 语法的规则。

但是,不知何故,我对 LR(1) 语法的概念缺乏很好的理解。以 SQL 为例。SQL 包含——我相信——一种上下文无关的语法。但它也是 LR(1) 语法吗?我怎么知道?如果是,什么会违反 LR(1) 规则?

0 投票
1 回答
286 浏览

parsing - printing parse Tree as a dynamic list in c language

I have written a code in C to implement LR(1) parse table, however now I am facing a problem in printing the parse tree. How do we do that in C? The tree can have variable children and since the parsing algorithm is bottom-up, I am not sure where to begin. I want to make it look like the output of the pstree command or something of that sort.

Thank You

0 投票
0 回答
96 浏览

parsing - LR(1) - 如何计算前瞻

我很难理解如何计算前瞻。

可以说我有这个扩展语法:

我这样写了 State 0:

使用许多解析模拟器,我看到所有计算器都说:

为什么?R后面不能跟一个“=”吗?

0 投票
1 回答
553 浏览

parsing - 如何重写上下文无关语法使其成为 LR(1)?

对于给定的上下文无关文法:

如何重写语法使其成为 LR(1)?
当前语法在解析输入“id : .id”时存在移位/减少冲突,其中“。” 是解析器的输入指针。
该文法产生满足正则表达式 (id:(id)*)+ 的语言

0 投票
0 回答
587 浏览

parsing - 如何为非常简单的编程语言创建 Lr(1) 解析器

我需要为带有变量、简单条件、循环和函数的代码创建解析器,例如:

我阅读了很多理论,但没有找到任何 Lr(1) Parser for code 的工作示例。有必要在没有任何解析器生成器的情况下这样做..有人吗?

0 投票
1 回答
339 浏览

abstract-syntax-tree - 如何将 LR(1) Parse 翻译成抽象语法树?

我编写了一个表驱动的 LR(1) 解析器,它工作得很好,但是在将解析转换为语法树/抽象语法树的阶段我有点脱节。这是一个我非常热衷的项目,但我真的只是在这里遇到了死胡同。提前谢谢你的帮助。

编辑:我的解析器也只使用一个二维数组和一个动作对象,告诉它下一步去哪里,或者它是否减少去哪里以及要弹出多少项目。我注意到很多人使用访问者模式。我不确定他们如何知道要制作哪种类型的节点。

这是上下文的下推自动机