context-free-grammar - 平衡括号的上下文无关语法

标签 context-free-grammar computation-theory

我想为以下语言设计一个上下文无关的语法:

L = { w e {(, )}* | w is balanced}



我提出了以下语法:

S -> (S)S | E



而讲座中提出的解决方案是:

S -> (S) | SS | E



我无法弄清楚,我的解决方案可能存在什么问题。
我为各种情况运行了两种语法,例如:

(()()), ()()(), and (())()



并且 CFG 都接受这些字符串。

有人可以帮忙吗,我的 CFG 不涵盖哪些情况。或者它们都是等价的。或者达到最终状态所需的转换次数不同。

最佳答案

两种语法都生成相同的语言,因此都不是错误的。

我更喜欢你的,因为它是明确的,但这不是要求的一部分。许多人似乎发现另一个答案更容易理解,但这也不是要求的一部分,它是一个高度主观的标准。

关于context-free-grammar - 平衡括号的上下文无关语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430112/

相关文章:

theory - 图灵可判定和协同图灵判定之间的区别

algorithm - 计算数组的所有子集,其中最大数是剩余数的总和

c# - C# 中 antlr 语法/解析器的无效转换问题

prolog - 右手上下文符号[DCG]

parsing - LL-1 解析器 : Is the FOLLOW-Set really necessary?

computation-theory - 图灵机可以执行快速排序吗?

computation-theory - 包含相同数量的 a 和 b 的语言的 CFG

finite-automata - 平方根计算图灵机

compiler-construction - 将属性从 flex 返回给 bison

grammar - 上下文无关语言中的 "free"在概念上是什么意思?