在正则语法和上下文无关语法中,哪一种更强大.也请告诉我原因
Among regular and context-free grammars which one is more powerful. Please give me the reason too
我刚刚学习了编程语言的原理。我知道规则语法和上下文无关语法的概念及其用法。但我仍然无法决定哪一个更强大以及为什么。请帮助
提前谢谢。
每种正则语言都是上下文无关的,但有些上下文无关的语言不是正则的。从这个意义上说,上下文无关语言比常规语言更"强大"。
作为一个无上下文的非正则语言的例子,考虑由字符x和y组成的所有回文的语言。你可以通过使用泵浦引理或Myhill-Nerode定理来证明这种语言是非正则的。然而,它是上下文无关的,因为它是由语法生成的
S→aSa|bSb|a|b|ε
直觉上,正则语言对应于可以在内存有限的计算机上解决的是/否问题(Myhill-Nerode定理是将这种直觉形式化的一种方法)。这意味着,任何只能用有限内存解决的是/否问题都不会与常规语言相对应。上下文无关语言占据了一个奇怪的中间地带——它们对应的问题可以在内存有限、堆栈无限的计算机上解决。
如果你有兴趣了解更多关于这方面的知识,我建议你通读一本关于形式语言和可计算性的书。关于这些类语言,有很多令人惊讶的漂亮结果,我无法将其压缩为一个单一的答案。
希望这能有所帮助!
相关文章:
- 我正在寻找一种优雅的方式来从元组向量创建tuple_element向量
- 我想直接在结构中插入,但没有一种方法可以正确避免填充问题
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 在C++中,有没有一种方法可以让我在不传递参数的情况下拥有一个函数
- 我是 c++ 的新手,有没有一种算法可以找到 3d 数组中最接近的 0 的距离?
- 我怎样才能让编译器推导出一种类型的 nullptr
- C 向量异常处理:哪一种是抛出out_of_range()的更好方法以及原因
- 哪一种是在C 中分配非初始化内存的最惯用方法
- C 我需要一种解释
- 两种数字比较方法中哪一种更有效
- (无符号字符)str 与 str + 0xff 或(无符号整数)值与值 + 0xffff 中的哪一种更快和首选
- ADL与范围分辨率——更喜欢哪一种
- 在正则语法和上下文无关语法中,哪一种更强大.也请告诉我原因
- 我有一种感觉f3()下面展示UB.但我怎么能确定呢
- 在操作数据成员时:以下哪一种被认为是最佳实践
- 哪一种方法是更快的向量(插入后排序)或集合
- c++中使用哪一种数据结构来处理庞大的常量字典
- c++ OOP哪一种方式给构造函数赋值更好
- 找出后缀数组的两种算法中哪一种更快,为什么?
- 两种类型的构造函数/哪一种更好