编译原理:第四节
2015-09-10 16:21
246 查看
形式语言与自动机原理
回顾上节内容
例:已知文法 G [ S ] 为 S —> aSb | Sb | b , 证明 G [ S ] 为二义性文法
解:
存在两棵不同的语法分析树,所以得证 G [ S ] 为二义性文法
短语,直接短语和句柄
短语:一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语。直接短语:仅有父子两代的一棵子树,它的所有叶子自左至右排列起来所形成的符号串。
句柄:一个句型的分析树中最左那棵只有父子两代的子树的所有叶子的自左至右排列。
例:
给定文法 G = ( { a,b,c,d,e } ,{ S,A,B} , S , P } )
规则 P : S —> aAcBe
A —> b
A —> Ab
B —> d
给出句子 abbcde 的最右推导过程,并指出每一步推导的短语,直接短语和句柄
解:
文法等价与递归文法
如果两个文法G1,G2对应的语言集合相同 :L(G1)= L(G2),则称这两个文法等价例:
G1:S—>ABC G2:S—> Xc
A—>a
X—> AB
B—>b
A—> a
C—>c
B—> b
上面两个文法最后都推出 abc,这两个文法是等价的。
递归文法可分为两种形式:直接递归文法和间接递归文法。
直接递归文法:一个文法一步就可以推出本身
间接递归文法:一个文法多步才可以推出本身
文法分类
乔姆斯基(省理工学院语言学的荣誉退休教授)把文法分成四种类型,即0型、1型、2型和3型。设G=(VN,VT,S,P),其P中的每个产生式α→β不加任何限制,则称G是一个0型文法。
设G=(VN,VT,S,P),若P中的每一个产生式α→β均满足|β|≥|α|
,仅仅S→ε除外,则文法G是1型或上下文有关文法。
设G=(VN,VT,S,P),若P中的每一个产生式α→β满足:α是一非终结符,β∈(
VN∪VT )*则此文法称为2型的或上下文无关文法。
设G=(VN,VT,S,P),若P中的每一个产生式的形式都是A→aB或A→a,其中A和B都是非终结符,a是终结符,则G是3型文法或正规文法。
四种文法之间的包含关系:
相关文章推荐
- SQLite 基本操作(增删改查)
- 将url字符串,转化成对象
- js操作DOM常用方法
- fiddler和wireshark
- 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
- 用Python写了个websocket即时聊天网页(含客户端、服务端代码)
- PHP去除字符串中所有空格
- JAVA+windows Memcached 安装
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- 各类排序算法的总结
- <<C++编程思想 第2卷>>读后感
- IOS开发—事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
- Actor Platform 平台搭建(二) -通过源码搭建服务器
- JAVA Memcached 安装与简单实战(windows)
- 理解AES加密解密的使用方法
- 使用WebSocket实现网页聊天室
- 面试题:二维数组中的查找
- mysql 创建新用户并添加权限
- 原码、反码、补码
- Unity 游戏开发技巧集锦之创建自发光材质