自动机、正则式、正则文法和上下文无关文法

自动机、正则式、正则文法和上下文无关文法

自动机概念[1]
自动机是有限状态机(FSM)的数学模型。FSM是给定符号输入,依据(可表达为一个表格的)转移函数跳转过一系列状态的一种机器。
包括:确定有限自动机DFA,非确定有限自动机NFA

有限自动机的扩展:
下推自动机(PDA)
线性有界自动机(LBA)
图灵机(TuringMachine)

无限自动机百度百科上有,但不了解。


正则表达式与有限自动机及正则文法的关系:
三者功能是等价的。DFANFA间可以相互转换,而正则表达式可以方便地构造,自动机,及正则文法(一般的编译原理或形式语言教材上都有例子)。
但根据自动机构造正则表达式,比较麻烦,特别是要化简的时候。

正则式与自动机相互转换的例子见《C注释正则式及其效率思考》。


正则文法与上下文无关文法的区别:
正则文法对应有限自动机(DAFNFA),上下文无关文法(CFG,ContextFreeGrammar)对应下推自动机(有限自动机的扩展)。有限自动机只对终结符做状态转移,而下推机,可以对非终结符做状态转移。
下面文法,是上下文无关文法,但其描述的语言却无法用正则文法来描述:
文法:P::=aPb|c
所描述的语言:



通俗地说,正则文法无法控制状态自返次数(其实CFG也是无法控件的,比如语言,是无法用CFG描述的)。

参考:
[1]http://zh.wikipedia.org/wiki/%E8%87%AA%E5%8A%A8%E6%9C%BA

你可能感兴趣的:(自动机、正则式、正则文法和上下文无关文法)