编译器学习--文法的类型

来源:互联网 发布:php curl模拟post 编辑:程序博客网 时间:2024/06/09 19:30
文法的类型


一个文法G[S],S为启始规则,如果它的所有规则符合形如:a=>b其中a和b都是G[S]文法的符号串,但a中至少要有一个非终结符,这时G[S]文法是短语文法。G[语言]为例“宾语张三=>名词张三”是短语文法的规则,“张三编写=>名词张三”则不是短语文法,因为“张三”和“编写”都是终结符规则左则没有非终结符。我们可以看出短语文法是对规则做了一些限制后形成的,下面的文法是对短语文法做进一步限制形成的。


如果G[S]的所有规则都满足形如:a=>b其中a的长度要小于等于b,这时G[S]文法是上下文有关文法(context-freegrammars)。上下文有关文法的更形象的定义是:文法的所有规则满足aBc=>abc的形式,
其中B是非终结符,a、b、c是符号串。也就是说B=>b 只在前面有a后面有c的情况下才能推导,所以是上下文有关的。例如:“张三动词程序=>张三编写程序”是上下文有关文法的规则。


如果G[S]的所有规则都满足形如:a=>b其中a是一个非终结符,b是符号串,这时G[S]文法是上下文无关文法(context-sensitivegrammars)。就是说a推导出b与其前后是什么符号串无关。上面G[语言]的文法就是上下文无关文法。


如果G[S]的所有规则都满足形如:A=>aB或A=>a其中A和B是非终结符,a是终结符,这时G[S]文法是正规文法(regulargrammars)。就是说规则的右则要以终结符开头。如:“谓语=>编写宾语”,“动词=>编写”都是正规文法的规则简称正规式,“谓语=>动词宾语”就不是正规式。


这四种文法是对规则的限制逐步加强形成的。正规文法是上下文无关文法的特例,上下文无关文法是上下文有关文法的特例,上下文有关文法是短语文法的的特例。文法产生的语言就是该文法的语言,如:上下文无关文法产生的语言就是上下文无关语言,正规文法产生的语言就是正规语言。文法是语言模型。计算机语言中普遍采用上下文无关文法来定义语法规则。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 建行app闪退怎么办 自己有房怎么办居住证 性格懒散不工作怎么办 脚受凉脚后跟疼怎么办 月子里脚着凉怎么办 腿着凉了疼怎么办 没有土地的农民怎么办 手机屁股坏了怎么办 包颈手术后睡中会勃起怎么办 武警义务兵训练不合格怎么办 空姐体检心率不齐怎么办 空姐体检差身高怎么办 锻炼过猛肌肉疼怎么办 中考体检有问题怎么办 想参军视力不够怎么办 公司体检查出乙肝怎么办 乙肝携带者福利体检怎么办 小孩没考好我该怎么办 客户考虑我该怎么办 明天中考 我该怎么办 考试考差了怎么办 没考上理想高中怎么办 我是差学生中考怎么办 衬衫后背鼓起来怎么办 高考体检表没了怎么办 高考体检视力不合格怎么办 高考体检转氨酶高怎么办 高考体检肝功能异常怎么办 高考体检有乙肝怎么办 高考体检有纹身怎么办 学校体检血压高怎么办 高考体检不属实怎么办 艺考身上有花臂怎么办 义务兵因病致残怎么办 新兵练成绩优秀怎么办 阿提拉部队得了瘟疫怎么办 公安体能测评胖子怎么办 社区工作者笔试不及格怎么办 警察考核体能差怎么办 胖子跑步跑不动怎么办 电脑跑不动了怎么办