问题标签 [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.
context-free-grammar - 没有多余括号的算术表达式的明确文法
我正在寻找一种没有多余括号的算术表达式的明确语法。例如,括号在 中是多余的id+(id*id)
,但在 中不是(id+id)*id
。
html - HTML 需要一个简单的 Bison 语法
我查看了 Bison 帮助并写了这个,但我不确定它是否完全正确。我还需要一个yylex()
处理词法分析器(它应该是Flex
工具)。我知道一些关于上下文无关语法的基本知识。但我不知道如何正确实施它们!:(
我想要一个用于 HTML 的简单 Bison 语法。问题是:以下语法应该改变什么?
这是 Bison 的输出:
它不会是一个完整的 HTML 解析器。我只想验证没有任何CSS
样式的非常简单的 HTML 文档JavaScripts
或...我也看到了这个。注意:解决方案必须是 Bison 语法!
recursion - 在给定上下文无关语法的情况下找出生成的语言?
我应该手动应用生产规则来找出这个语法生成的语言吗?这很乏味,有什么技巧/提示可以加快速度吗?
编辑:我发现 Matajon 的回答很好,那就是考虑由非终端符号生成的每种语言,然后将它们组合起来。
但是当我必须解决一些像这样的复杂示例时,我仍然陷入困境:
疯了,不是吗?取自过去的考试(编程语言课程)。
regex - “现代”正则表达式的识别能力
真正的现代正则表达式实际上可以识别哪一类语言?
每当存在带有反向引用(例如(.*)_\1
)的无限长度捕获组时,正则表达式现在正在匹配非常规语言。但这本身并不足以匹配诸如S ::= '(' S ')' | ε
匹配括号对的上下文无关语言之类的东西。
递归正则表达式(对我来说是新的,但我确信存在于 Perl 和 PCRE 中)似乎至少可以识别大多数 CFL。
有没有人做过或读过这方面的研究?这些“现代”正则表达式的局限性是什么?他们对 LL 或 LR 语法的识别比 CFG 严格多还是严格少?或者是否存在两种语言都可以被正则表达式识别但不能被 CFG 识别,反之亦然?
相关论文的链接将不胜感激。
grammar - CFG 算术优先级/歧义
自从我与 CFG 合作以来已经有一段时间了。无论如何,我有一个特定的语法可以正确地完成所有操作,但最后(我排除了其他标准数学操作)。
S ::= S+T | 意法半导体 | 吨
T ::= 非终结符 | 身份证 | -S | (S)
根据我所拥有的一切.. 我知道 -S 应该是 -T。但另外......这对优先级有什么影响。是模棱两可的吗?从数学上讲,我可以它显然是不正确的..但这不应该对歧义问题产生影响。
如果是 -T,它的优先级是否与 (S) 相同?
真的试图理解这是如何发生的,它循环回到开始状态。
context-free-grammar - 上下文无关语法可以左右递归吗?
前任。
S-> S + T | 吨
T-> U - T | ü
U -> ID | ñ
显然没有保留关联性。但无论如何我都看不出它是模棱两可的。那么这是一个非模棱两可的cfg吗?
context-free-grammar - 转换语法问题
B是无用的生产。现在移除后
它是否正确 ?
context-free-grammar - 从具有非终端的生产中删除左递归
你好,
我有以下形式的产品:
任何人都可以通过删除左递归来帮助我将其转换为 LL(1) 形式吗??我已经对此表示反对,但我仍然无法理解:(。以下是我的尝试。
上述转换是否正确??我从这里做什么?
我使用了在wikipedia中找到的以下一般规则。
转换时: