问题标签 [context-free-grammar]

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 投票
6 回答
14932 浏览

parsing - 为什么自底向上解析比自顶向下解析更常见?

似乎递归下降解析器不仅解释最简单,而且设计和维护也最简单。它们不仅限于 LALR(1) 语法,而且代码本身可以被普通人理解。相比之下,自下而上的解析器对其能够识别的语法有限制,并且需要由特殊工具生成(因为驱动它们的表几乎不可能手动生成)。

那么,为什么自下而上(即 shift-reduce)解析比自上而下(即递归下降)解析更常见?

0 投票
4 回答
7966 浏览

context-free-grammar - 将上下文无关语言转换为下推自动机的程序?

我在网上找不到任何小程序或程序来将上下文无关语言转换为下推自动机......任何帮助将不胜感激。

0 投票
3 回答
1449 浏览

computer-science - 上下文无关文法-计算理论

我正在为我的期末考试而学习,我正在阅读来自维基百科的上下文无关语法文章,并遇到了以下示例。

我很清楚左右推导。当我试图解决这个问题时,我从开始符号开始

但是当我查看答案时,它是这样的

我不确定我的回答出了什么问题?是否需要两次使用第一个生产规则?任何人都可以帮我解决这个问题。

0 投票
1 回答
419 浏览

context-free-grammar - 多项式大小 CFG,使得单词中的每个终端出现偶数次(大字母表)

为所有单词的语言 L 找到上下文无关文法 (CFG),使得单词中的每个终结符在可能较大的字母表 Σ 上出现偶数次

我的长期方法是(唯一的非终结符是 S):

S ⟶ ε | 党卫军

x ∈ Σ : S ⟶ xSx

x,y ∈ Σ : S ⟶ xxSyy | yySxx | xySxy | xySyx | yxSyx | yxSyx

这个对吗?产生式生成正确的单词,它们会生成所有单词吗?

编辑:大字母表上的 CFG 能否描述一种语言,每个终端出现偶数次?

EDIT_2:如果存在解决方案,乔姆斯基范式是否可能是 |Σ| 中的多项式??

0 投票
1 回答
1204 浏览

context-free-grammar - 用终端去除左递归

如何删除以下规则的左递归:

S -> aSAbb | 氨基酸

我了解如何在 S -> SA 上执行它 | 一个

变成 S -> A | 作为'; S' -> A | AS',但终端在这个问题上让我失望。

编辑:

抱歉,显然我对左递归是什么感到困惑。我应该问如何从右侧删除左侧符号。

0 投票
4 回答
1990 浏览

random - 任何工具都可以根据语言语法随机生成源代码?

AC 程序源代码可以根据 C 语法(在 CFG 中描述)进行解析,最终变成许多 AST。我正在考虑是否存在这样的工具:它可以通过首先随机生成许多 AST 来做相反的事情,其中​​包括没有具体字符串值的令牌,只有令牌的类型,根据 CFG,然后生成具体根据正则表达式中标记的定义进行标记。

我可以想象第一步看起来像是一个迭代的非终结符替换,它是随机的,并且可以受到一定数量的迭代次数的限制。第二步只是根据正则表达式随机生成字符串。

有什么工具可以做到这一点吗?

0 投票
1 回答
427 浏览

c++ - 为什么这是有效的 C?--- ({123;}) 计算结果为 123

可能重复:
在哪些版本的 c 中,括号内的块用于返回有效值?

以下是典型 MAX 宏的类型安全版本(适用于 gcc 4.4.5):

在这里,我们看到这个表达式 max(a,b) 返回了表达式的结果

即使这个表达式在一个块中。因此,我进行了调查,发现这是有效的 C:

有人可以解释为什么这是有效的语法以及 ({statements}) 的真实行为是什么吗?此外,您会注意到 {123;} 不是有效的表达式,但只有 ({123;}) 是有效的。

0 投票
1 回答
6157 浏览

reverse - 上下文无关语法和反转

我正在设计一种上下文无关的语法来生成这种语言:

我将前两个字符串定义为:

然后结合这些:

但是我如何将反转表达为上下文无关语法呢?

0 投票
3 回答
2851 浏览

java - 支持歧义的 Java CFG 解析器

我正在寻找用 Java 实现的 CFG 解析器。问题是我正在尝试解析一种自然语言。而且我需要所有可能的解析树(歧义),而不仅仅是其中之一。我已经研究过很多 NLP 解析器,比如斯坦福解析器。但是它们主要需要统计数据(我没有的树库),并且很难将它们改编成新的语言,而且文档记录也很差。我发现了一些解析器生成器,例如 ANTRL 或 JFlex,但我不确定它们能否处理歧义。那么哪个解析器生成器或 java 库最适合我呢?提前致谢

0 投票
2 回答
1235 浏览

parsing - 修复 Lemon 解析冲突

我正在编写一个使用 Flex 和 Lemon 解析约束的小型解析器。Lemon 报告了一些我无法摆脱的解析冲突。是否有任何特殊技巧可以消除上下文无关语法中的解析冲突?

语法如下。

错误如下。

整个解析器生成器报告在这里。http://pastebin.com/TRsV3WvK

有人知道我在这里做错了什么吗?我可以忽略这些冲突吗?