计算机语言的文法类型,chomsky文法类型的判断.doc

本文档是一份关于Chomsky文法类型判断的实验报告,详细介绍了0型到3型文法的特征及它们之间的包含关系。实验旨在通过理解和编程实现文法类型的自动判断,加深对编译原理的理解,特别是文法在程序设计语言、编译方法和计算复杂性中的应用。实验中强调了数据结构的选择和文法类型的递进关系在实现过程中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

chomsky文法类型的判断

编译原理实验报告

实验名称 Chomsky文法类型判断

实验时间 2014-4-2

院系 计算机科学与技术学院

班级 2011级科技(3)班

学号

姓名 张练钢

实验目的

(1)通过实验进一步理解chomsky文法类型判断的的依据,理解每个类型文法的特点。

(2)进一步理解4种文法类型之间的包含关系。

(3)体会这种理论对于计算机科学发展的深刻影响,特别是对程序设计语言的设计、编译方法和计算复杂性等方面的重大作用。通过上机实现文法类型的自动判别。

2.实验原理

1.0型文法(短语文法)

如果对于某文法G,P中的每个规则具有下列形式:

u:: = v

其中u∈V+,v∈V*,则称该文法G为0型文法或短语文法,简写为PSG。

0型文法或短语结构文法的相应语言称为0型语言或短语结构语言L0。这种文法由于没有其他任何限制,因此0型文法也称为无限制文法,其相应的语言称为无限制性语言。任何0型语言都是递归可枚举的,故0型语言又称递归可枚举集。这种语言可由图灵机(Turning)来识别。

2.1型文法(上下文有关文法)

如果对于某文法G,P中的每个规则具有下列形式:

xUy:: = xuy

其中U∈VN;u∈V+;x,y∈V*,则称该文法G为1型文法或上下文有关文法,也称上下文敏感文法,简写为CSG。

1型文法的规则左部的U和右部的u具有相同的上文x和下文y,利用该规则进行推导时,要用u替换U,必须在前面有x和后面有y的情况下才能进行,显示了上下文有关的特性。

1型文法所确定的语言为1型语言L1,1型语言可由线性有界自动机来识别。

3.2型文法(上下文无关文法)

如果对于某文法G,P中的每个规则具有下列形式:

U :: = u

其中U∈VN;u∈V+,则称该文法G为2型文法或上下文无关文法,简写为CFG。

按照这条规则,对于上下文无关文法,利用该规则进行推导时,无需考虑非终结符U所在的上下文,总能用u替换U,或者将u归约为U,显示了上下文无关的特点。

2型文法所确定的语言为2型语言L2,2型语言可由非确定的下推自动机来识别。

一般定义程序设计语言的文法是上下文无关的。如C语言便是如此。因此,上下文无关文法及相应语言引起了人们较大的兴趣与重视。

4.3型文法(正则文法,线性文法)

如果对于某文法G,P中的每个规则具有下列形式:

U :: = T 或 U :: = WT

其中T∈VT;U,W∈VN,则称该文法G为左线性文法。

如果对于某文法G,P中的每个规则具有下列形式:

U :: = T 或 U :: = TW

其中T∈VT;U, W∈VN,则称该文法G为右线性文法。

左线性文法和右线性文法通称为3型文法或正则文法,有时又称为有穷状态文法,简写为RG。

按照定义,对于正则文法应用规则时,单个非终结符号只能被替换为单个终结符号,或被替换为单个非终结符号加上单个终结符号,或者被替换为单个终结符号加上单个非终结符号。

3型文法所确定的语言为3型语言L3,3型语言可由确定的有限状态自动机来识别。

在常见的程序设计语言中,多数与词法有关的文法属于3型文法。

可以看出,上述4类文法,从0型到3型,产生式限制越来越强,其后一类都是前一类的子集,而描述语言的功能越来越弱,四类文法及其表示的语言之间的关系可表示为:

0型1型2型3型;即L0 L1 L2 L

3..实验内容

(1)理解四种文法类型的特点,并利用他们之间包含关系0型1型2型3型;即L0 L1 L2 L对所属类型作出判断。

(2)通过编程自动实现将输入的文法判断出其所属类型。

4.实验心得

本实验的上机实现需注意一下几点:

(1)数据的表示,利用struct con{

string front;

string end;

};//定义每个产生式的结构如A::=a 则front=A,end=a;

因为每个文法都有多个产生式,我们将这多个文法依次存入一个string类型的test数组中,然后再将每个产生式分解成前端和后端的格式以便于分析每个产生式所属的类型。

(2)在对文法进行判断前先对每个产生式作出判断,那么所有产生式中文法类型最低的那个产生式所属的类型即为该文法所属的类型。

(3)在对每个每个产生的类型做出判断时要充分利用四种文法类型之间的包含关系以简化程序。如3型文法和2型文法的产生前端都为一个非终端符我们可以先利用这个特点先判断一个产生式是否

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值