我刚刚了解到Regular Grammars
的对应Finite State Acceptors
与Regular Expressions
相对应。
是否有Context Free Grammars
的等效转换?据我所知,上下文无关语法可以用Push Down Automata
代表,而{1}}又可以代表什么?
感谢任何能够清除我的想法的人。
答案 0 :(得分:2)
答案 1 :(得分:2)
实际上,答案仍然可能是“正则表达式”。
现代正则表达式方言,特别是支持递归的方言(如PHP,Perl,.NET,JGSoft等)can handle context-free languages perfectly。
答案 2 :(得分:0)
现代编程语言本身大部分都是由无上下文语法描述的。虽然理论上词组结构语法是最强大的(英语是一个例子),但已经发现,为了解决计算机上下文问题,自由语法与强大的内存模型(变量)相结合就足够了。接受这些无上下文语言的程序是现代语言解析器。
鉴于BNF是无上下文的,可以自动生成解析器,原始和最着名的示例当然是Yacc其他人已经创建,因为Bison被发明用于创建gcc。现在有一个parser generators的主机,其输出是用一种流行语言编写的解析器。
答案 3 :(得分:0)
问题的措辞存在问题,因为它指的是语法而不是语言。
Regular Language是可以使用union,concatenation和closure的操作在集合上定义的Regular Expressions。 Regular Grammars和Context Free Language都是表示常规语言的便捷方式。
Context Free Grammar的内容是定义为 {{3}} 接受的语言,因此OP问题的答案是:在语言类别定义中。