我需要确定一个语言(例如L={a^n b^m c^s | 0<=n<=m<=s})是正则、上下文无关、递归、可递归或都不是。 我知道如何确定语言是否为正则(找到DFA或正则表达式),或者上下文无关(找到PDA或上下文无关文法);我知道递归语言有一个图灵机总是会停机,而可递归...
我找不到关于LL(*)解析器的完整描述,例如ANTLR。 我想知道LL(k)解析器和LL(*)解析器之间的区别以及它们为什么不能支持左递归语法,尽管它们很灵活。
import nltk from nltk.parse import ViterbiParser def pcfg_chartparser(grammarfile): f=open(grammarfile) grammar=f.read() f.close() ...
如何判断属性是由语法规则继承还是合成生成的? 我猜想,如果该属性的值取决于子节点或父节点,那么该属性必须在问题中预定义。但是否有一种方法可以分析属性是从语法规则中继承还是合成生成的呢?
我正在学习上下文无关文法,对f和g部分中带星号的箭头和不带星号的箭头感到好奇: f是假的。 g是真的。
我每天看到无数关于“如何使用正则表达式进行X操作”的帖子。对于大多数这样的帖子,最好的回答似乎是:“为什么你要试图用锤子驱动螺丝钉呢?”但是正则表达式到处都是,语法基本上是可移植的,特别是如果你远离花哨的部分。 有没有什么东西在功率和可配置性上相当于正则表达式,但更高一级?一个“你可以在任何...
我正在使用Unicode字符处理非英语解析器。为此,我决定使用NLTK。 但它需要预定义的上下文无关语法,如下所示: S -> NP VP VP -> V NP | V NP PP PP -> P NP V -> "saw" | "ate" | "walk...
一份C程序源代码可以根据C语法(在CFG中描述)进行解析,并最终转换为许多AST。我在考虑是否存在这样的工具:它可以通过首先随机生成许多AST,这些AST包括没有具体字符串值的标记,只有标记的类型,根据CFG,然后根据正则表达式中标记的定义生成具体标记。 我可以想象第一步看起来像是一个迭代的...
多年来,“正则表达式”模式匹配功能越来越强大,以至于我不禁想问:它真的只是上下文有关语法匹配吗?它是上下文无关语法匹配的变化/扩展吗?现在它处于何种状态,为什么我们不称其为旧的、限制性的“正则表达式”,而是另起炉灶呢?
我需要一个生成非回文字符串的CFG。已经提供了解决方案,如下所示。(Sipser - 计算理论入门) R -> XRX | S S -> aTb | bTa T -> XTX | X | <epsilon> X -> a | b 我大致了解这个语法的工...