- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有一种简单的方法可以通过查看语法而不进行任何复杂的分析来确定语法是否为 LL(1)、LR(0)、SLR(1)...?
例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Follow 集 - 在某些情况下这可能非常耗时。
有人知道如何更快地做到这一点吗?任何帮助将不胜感激!
最佳答案
首先,有点迂腐。您无法通过检查语法来确定语言是否为LL(1),您只能对语法本身做出陈述。完全有可能为存在 LL(1) 语法的语言编写非 LL(1) 语法。
解决这个问题:
您可以为语法编写一个解析器,并让程序首先计算并遵循集合和其他属性。毕竟,这是 BNF 语法的一大优势,它们是机器可理解的。
检查语法并查找违反各种语法类型约束的情况。例如:LL(1)允许右递归但不允许左递归,因此包含左递归的语法不是LL(1)。 (对于其他语法属性,您将不得不花一些时间来研究定义,因为我现在记不起任何其他内容:)。
关于parsing - 如何判断一种语言是否是LL(1) LR(0) SLR(1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415753/
假设我有以下语法: S → X X → a | ϵ 如果那个语法没有 ϵ涉及,我会构建第一个状态,如: S' → .S S → .X X → .a 但是 ϵ 呢?象征?我应该包括: X → .ϵ 也
我曾经实现过一个生成增量解析器的 SLR 解析器生成器。解析器可以从头到尾解析一段文本,但是当您删除或插入文本时,它会在标记流和语法树中执行最少的工作和最少的更改,而不是从头开始重新解析所有内容。问题
我正在研究我的编译器概念,但是我有点困惑...... 谷歌搜索让我无处获得明确的答案。 SLR 和 LR(0) 解析器是一回事吗?如果不是,有什么区别? 最佳答案 LR(0) 和 SLR(1) 解析器
LR、SLR 和 LALR 解析器之间的实际区别是什么?我知道 SLR 和 LALR 是 LR 解析器的类型,但是就它们的解析表而言,实际的区别是什么? 以及如何显示语法是 LR、SLR 还是 LAL
我有以下语法,有人告诉我是 LR(1) 但不是 SLR(1): S ::= a A | b A c | d c | b d a A ::= d 我不明白这是为什么。你将如何证明这一点? 最佳答案 我没
有没有一种简单的方法可以通过查看语法而不进行任何复杂的分析来确定语法是否为 LL(1)、LR(0)、SLR(1)...? 例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Fo
我们找到 follow(A) 以防我们找到类型的产生式 A → α 这里的 α 可以是 ε 吗? 就像下面的例子: P → aPa | bPb | ε 如果α可以是ε,它就不是LR(1) 最佳答案 是
是否有一种简单的方法来确定语法是否为 LL(1)、LR(0)、SLR(1)... 仅通过查看语法而不进行任何复杂分析? 例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Fol
所以我在理解简单线性回归时遇到了一些问题。我确实读了很多书,所以我心里有基本的想法,但是当我们做一个的时候我不能完全理解。所以我有这个等式: yi = a + bxi + ei 好吧,我确实意识到这是
我正在努力研究解析器理论,但我一直在不同的来源中找到相同的示例。语法大致如下(简化): E = T E = E + T T = 0..9 所以假设字符串 2 + 2 将被这样解析(“|”将堆栈与提醒分
我在一个我正在尝试的编译器样本期末考试中遇到了一个问题。如果有人能帮我解释一下,我将不胜感激。谢谢 考虑下面列出的语法 G S = E $ E = E + T |电话 T = T * F |传真 F
我希望有一个中心位置来为特定类型的异常实现异常处理逻辑。 如果发生特定的异常类型,我希望能够根据内部配置运行以下其中一项: 立即将消息发送到错误队列,无需进一步的二级重试; 隐藏消息,不将其发送到处理
每个 LR(0) 文法都是 SLR(1) 但反之不一定为真,为什么? 最佳答案 基本上,SLR(1) 文法可以解决相应的 LR(0) 文法中存在的移位归约冲突。以维基百科上的示例语法为例 SLR pa
这个问题已经有答案了: PHP parse/syntax errors; and how to solve them (20 个回答) 已关闭 7 年前。 我是初学者和文凭学生...我不知道错误是什么
我是一名优秀的程序员,十分优秀!