首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex用于普通语法,而____用于上下文无关语法

Regex用于普通语法,而____用于上下文无关语法
EN

Stack Overflow用户
提问于 2014-02-02 14:51:33
回答 4查看 260关注 0票数 1

我刚刚了解到,Regular Grammars有相应的Finite State Acceptors,这将对应于Regular Expressions

是否有与Context Free Grammars等效的转换?据我所知,上下文无关语法可以用Push Down Automata来表示,而这又对应于什么呢?

感谢那些能让我摆脱这一切的人。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-02 15:00:08

来自维基百科

上下文无关文法的流行表示法是巴克斯-诺尔形式

…正如正则表达式是普通语法的表示法一样。

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 15:07:53

事实上,答案可能仍然是"Regex“。

现代的regex方言,特别是那些支持递归的方言(如PHP、Perl、.NET、JGSoft等) 完美地处理上下文无关的语言。

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 15:33:33

现代编程语言本身在很大程度上是由上下文无关语法描述的。虽然理论上短语结构语法是最强大的(英语就是一个例子),但是对于用计算机解决问题,上下文无关文法和强大的记忆模型(变量)是足够的。接受这些上下文无关语言的程序是现代语言解析器。

示例语言BNF

  • Pascal的BNF
  • 用于Ruby的BNF
  • BNF用于Javascript
  • 用于Python的BNF
  • BNF for Java
  • 用于C的BNF

由于BNF是上下文无关的,可以自动生成解析器,当然,最著名的例子是雅克 --自创建野牛以来,其他的例子都是为创建gcc而创建的。现在有许多解析器生成器,其输出是用一种流行语言编写的解析器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21511958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档