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

标签 computer-science context-free-grammar

我正在准备期末考试,我正在阅读维基百科上的上下文无关语法文章,并发现了以下示例。

S → SS- (1st production rule)

S → (S) - (2nd production rule)

S → () - (3rd production rule)

我很了解左推导和右推导。当我尝试解决这个问题时,我从开始符号开始

S-> SS -> (S)S-> ()S-> ()(S) -> ()() 

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

S → SS → SSS → (S)SS → ((S))SS → ((SS))S(S)
→ ((()S))S(S) → ((()()))S(S) → ((()()))()(S)
→ ((()()))()(())

我不确定我的回答有什么问题?是否有必要使用第一个产生式规则两次?有人可以帮我解决这个问题吗?

最佳答案

您的方法没有任何“错误” - 您刚刚导出了与维基百科文章不同的符号序列。

关键的一点是,可以使用语法派生出任何匹配的嵌套括号序列,但不能派生出像 (())( )(

关于computer-science - 上下文无关语法-计算理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419216/

相关文章:

theory - 将 CFG 转换为 CNF

java - 为什么泛型接口(interface)不能用作类型参数?

algorithm - 当时间复杂度为 O(n!) 和 O(2^n) 时?

math - 探索计算机科学的数学

支持歧义的 Java CFG 解析器

string - 使用 Ogden’s Lemma 与常规 Pumping Lemma 进行上下文无关语法

arrays - 空间复杂度-涉及数组的各种情况函数

computer-science - 学习计算模型的好资源?

context-free-grammar - L* 和 Σ* 之间的差异

python - Pyparsing - 查找嵌套多项式