问题标签 [lr]

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

parsing - LR(0) 解析器中的后缀和右关联运算符

是否可以构造一个 LR(0) 解析器来解析具有前缀和后缀运算符的语言?例如,如果我有一个带有 +(加法)和 ! (阶乘)运算符通常优先于 1+3!应该是 1 + 3!= 1 + 6 = 7,但如果解析器是 LR(0),那么当它在堆栈上有 1+3 时,它肯定会减少而不是移位?

另外,右结合运算符会带来问题吗?例如,2^3^4 应该是 2^(3^4) 但同样,当解析器在堆栈上有 2^3 时,它如何知道减少或移位?

如果这不可能,是否还有办法使用 LR(0) 解析器,可能通过更改语法在适当的位置添加括号?

0 投票
0 回答
32 浏览

bnf - 为 LR lex/parser 重用 BNF 中已经使用的终端子集有什么问题吗?

请原谅我的术语,因为我仍然对所有事情都感到困惑。我正在尝试将我的第一个解析器放在一起,并试图找到尽可能多的示例来构建我的语法。我见过很多非终端获得乘法产品的情况

这与写作相同

从我读过的所有内容来看,这非常好。我要做的是以下

有什么我需要注意的吗?对于 LR 解析器,我的排序是否正确? 这不完全是家庭作业,因为我目前不在学校,但可以这样对待,因为我知道这是我将来要学习的课程。

0 投票
1 回答
227 浏览

parsing - 我的 LR(0) 语法有什么问题?

0 投票
1 回答
2211 浏览

parsing - What is the closure of a left-recursive LR(0) item with epsilon transitions?

Let's say I have this grammar:

What is considered to be the closure of the item A: • B 'a'?
In other words, how do I deal with the epsilon transitions when figuring out closures?

0 投票
1 回答
2163 浏览

lr - 无法在 VUGen (Loadrunner) 中记录 https 应用程序

IE8 LR11 协议:HTTP/HTML 应用:https

当我尝试在 VUGen (loadrunner 11) 中记录 https:// 应用程序时,我无法记录并收到错误消息“Internet Explorer 无法显示网页”表示未连接到服务器。在浏览器中手动打开时应用程序工作正常,问题仅在录制时出现。

有人可以帮帮我吗?请帮我解决这个问题。

谢谢,KP

0 投票
1 回答
244 浏览

parsing - LR(0) 解析器如何离开状态 0?

我已经阅读了 Wikipedia 的解释至少十几次,但我仍然对 LR(0) 解析器如何离开状态 0 感到困惑。

维基百科的例子及其解释说

解析器从仅包含初始状态 ( '0') 的堆栈开始: [0]
解析器看到的输入字符串中的第一个符号是'1'

...但这对我来说没有意义,因为看到输入符号将执行前瞻,但根据定义,LR(0) 解析器无法执行前瞻。

当解析器处于状态 0 时,它还没有移动,所以它的堆栈上没有任何符号。
鉴于它是一个 LR(0) 解析器,它也不能执行前瞻。

那么它如何使用表格来确定从状态 0 转换或减少到哪个状态呢?

0 投票
1 回答
6286 浏览

parsing - 为什么编译器不能有“移位/移位”冲突?

我目前正在研究编译器,据我所知,在 LR(0) 中存在“移位/减少”或“减少/减少”冲突的情况,但不可能发生“移位/移位”冲突!为什么我们不能有“班次/班次”冲突?

0 投票
2 回答
1179 浏览

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

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

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

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

0 投票
1 回答
427 浏览

parsing - 维基百科关于 LR(1) 中 FOLLOW() 集的示例是否解析错误?

我不知道我是否误解了正在发生的事情,或者维基百科的解释是否不正确。

维基百科说

FOLLOW(k,B)一个项目集k和一个非终结符B的集合是所有项目的后续集合的并集,K其中'•'后面是B

他们的示例语法如下所示:

他们发现 LR(0) 项集 0 为:

这意味着,那FOLLOW(0,T)是项目集 0 中所有项目的后续集的并集,其中 '•' 后跟T

应用他们的逻辑,我们得到“项目集 0 中的项目,其中 '•' 后跟T实际上是这两个项目:

  • [E → • T]
  • [T → • T + n]

但是,这就是我卡住的地方:
第二个的后续集合包含符号),因为该项目[E → • ( E )]可以生产[E → • ( T )],这意味着 a)必须在后续集合中。

但是,维基百科说FOLLOW(0,T) = { $, '+' }.

我究竟做错了什么?

0 投票
1 回答
1322 浏览

compiler-construction - LR Parser GOTO 函数和 Epsilon

我正在尝试学习编译器构造,我刚刚通读了关于 SLR 解析器的 Dragon Book 章节。因此,我决定制作一个简单的语法并尝试手动编写解析器代码。语法如下所示:

哪里e是空字符串产生。

根据 StackOverflow 上的另一个问题,处于起始状态的项目应如下所示

但是 GOTO 函数会是什么样子。我知道这一点GOTO( '(' ) = *some state with A -> (.A)A*,但我无法真正理解GOTO(e)。解析器看到一个空字符串并没有什么意义。可以?

谢谢大家!

迈克尔