正则语法适用于正则语法,因为____适用于无语境语法

时间:2014-02-02 14:51:33

标签: regex grammar context-free-grammar automata pushdown-automaton

我刚刚了解到Regular Grammars的对应Finite State AcceptorsRegular Expressions相对应。

是否有Context Free Grammars的等效转换?据我所知,上下文无关语法可以用Push Down Automata代表,而{1}}又可以代表什么?

感谢任何能够清除我的想法的人。

4 个答案:

答案 0 :(得分:2)

来自Wikipedia Context Free Grammar

  

无上下文语法的流行符号是Backus–Naur Form

...就像正则表达式是常规语法的符号一样。

答案 1 :(得分:2)

实际上,答案仍然可能是“正则表达式”。

现代正则表达式方言,特别是支持递归的方言(如PHP,Perl,.NET,JGSoft等)can handle context-free languages perfectly

答案 2 :(得分:0)

现代编程语言本身大部分都是由无上下文语法描述的。虽然理论上词组结构语法是最强大的(英语是一个例子),但已经发现,为了解决计算机上下文问题,自由语法与强大的内存模型(变量)相结合就足够了。接受这些无上下文语言的程序是现代语言解析器。

一些示例语言BNF

鉴于BNF是无上下文的,可以自动生成解析器,原始和最着名的示例当然是Yacc其他人已经创建,因为Bison被发明用于创建gcc。现在有一个parser generators的主机,其输出是用一种流行语言编写的解析器。

答案 3 :(得分:0)

问题的措辞存在问题,因为它指的是语法而不是语言

Regular Language是可以使用union,concatenation和closure的操作在集合上定义的Regular ExpressionsRegular GrammarsContext Free Language都是表示常规语言的便捷方式。

Context Free Grammar的内容是定义 {{3}} 接受的语言,因此OP问题的答案是:在语言类别定义中。