问题标签 [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.
random - 从上下文无关文法生成 n 条语句
所以不要重新发明轮子,我想知道在从上下文无关语言(如 yacc 生成的语言等)生成随机语句方面已经做了什么。这些语法主要用于解析,但也许有人做了一些测试来测试解析器?谢谢
c++ - 有标准的 C++ 语法吗?
标准是否指定了官方的 C++ 语法?
我搜索了,但没有在任何地方找到它。
另外,我希望详细了解 C++ 语法,例如它属于哪种语法类别等。任何指向正确方向的链接都会有所帮助。
按类别,我的意思是
取自这里。
programming-languages - 乔姆斯基层次结构和编程语言
我正在尝试学习与编程语言相关的 Chomsky Hierarchy 的某些方面,但我仍然需要阅读 Dragon Book。
我读过大多数编程语言都可以解析为上下文无关语法(CFG)。就计算能力而言,它等于下推非确定自动机之一。我对吗?
如果是真的,那么一个 CFG 怎么可能持有图灵完备的无限制语法(UG)?我之所以问是因为,即使 CFG 描述了编程语言,它们实际上也用于描述图灵机,因此通过 UG。
我认为这是因为至少有两个不同级别的计算,第一个是 CFG 的解析,侧重于与语言的结构(表示?)相关的语法,而另一个侧重于语义(意义,解释数据本身?)与图灵完备的编程语言的能力有关。同样,这些假设是否正确?
compiler-construction - 识别以前未定义为令牌的 CFG 生产中的终端
我正在制作 LL(1) 解析器的生成器,我的输入是 CoCo/R 语言规范。我已经为该输入准备了一个扫描仪生成器。假设我有以下规范:
所以,如果由这个语法生成的解析器接收到一个单词“1+1”,它就会被接受,即会找到一个解析树。
我的问题是,字符“+”从未在标记中定义,但它出现在非终端“表达式”中。我生成的 Scanner 应该如何识别它?它不会将其识别为令牌。
那么这是一个有效的输入吗?我应该在 TOKENS 中添加这个终端,然后考虑一个扫描程序的错误例程让它跳过它吗?
通常的语言规范如何处理这个问题?
algorithm - LL(*) 解析器如何工作?
我在 Internet 上找不到任何关于 LL(*) 解析器(例如 ANTLR)的完整描述。
我想知道 LL(k) 解析器和 LL(*) 解析器之间有什么区别,以及为什么尽管它们具有灵活性,但它们仍不能支持左递归语法。
python - 在 Python 中解析上下文无关文法
Python 中有哪些工具可以帮助解析上下文无关文法?
当然,我可以自己动手,但我正在寻找一种通用工具,可以为给定的 CFG 生成解析器。
grammar - =*> 对于上下文无关语法意味着什么?
我一直在阅读一些关于编译器理论的书籍/在线参考资料,并且每隔一段时间就会看到那个特定的运算符出现(如此处所示),特别是当当前主题是上下文无关语法时。这是什么意思?同样,它与 有何不同=>
?
用示例区分=>
的解释=*>
将是最有帮助的。
context-free-grammar - “任意”上下文无关语法?
长期仰慕者第一次询问者:)
我正在开发一个程序,该程序从上下文无关语法中推导出确定性有限状态自动机,而我被分配的论文解释了如何做到这一点,一直提到“任意概率上下文无关语法”,但从未定义与 PCFG 相关的“任意”的含义。我认为他们的意思是“任何旧的 PCFG”,但为什么不直接说“任何 PCFG”呢?
该术语也出现在几个维基百科条目中。在CFG 页面的顶部,提到了与 CFG 相关的任意性(“子句可以任意深度地嵌套在子句中”),但没有明确说明为什么有人将 PCFG 或 PCFG 的子集称为任意.
如果有人好奇,这篇论文是Klein 和 Manning 的Parsing and Hypergraphs (2001);我还阅读了他们与这篇文章相关的另外两篇论文(An Agenda-Based Chart Parser for Arbitrary Probabilistic Context-Free Grammars and Empirical Bounds、Theoretical Models 和 Penn Treebank),它们广泛使用了这个术语,但从不解释它任何一个。
grammar - 将歧义语法转换为明确的语法
我不明白一个明确的语法是如何从一个不明确的语法推导出来的?考虑现场示例:Example。语法是如何派生的让我感到困惑。
谁能指导我?
c++ - 从 VB.NET 到 C++ 的变量和循环转换?
是否有任何可用的工具将变量和循环声明从 VB.NET 转换为 C++?