- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文法判别实验报告
编译原理实验报告
实验名称 文法类型的判别
学号 xxxxxxxxx
姓名 xxx
文法类型的判别
1.实验目的
输入一组文法规则,判定它是哪一种文法。
2.实验原理
乔姆斯基(Chomsky)于1956年建立形式语言的描述
他把文法分成:0型、1型、2型、3型
1)、0型文法——短语文法
设G=(VN,VT,P,S),如果它的每个产生式α β是这样一种结构:α∈(VN∪VT)*且α至少包含一个非终结符, β∈(VN∪VT)*,则G是一个0型文法(短语结构文法、无限制文法),简称PSG。
2)、1型文法——上下文有关文法
设G=(VN,VT,P,S),如果它的每个产生式α β均满足:|β| ≥ |α|,仅仅S ε除外,则文法G是1型文法(上下文有关文法,上下文敏感文法),简称CSG。
3)、2型文法——上下文无关文法
设G=(VN,VT,P,S),如果它的每个产生式α β均满足:α是一个非终结符,β∈V*,则文法G是2型文法(上下文无关文法),简称CFG。
有时将2型文法的产生式表示为A β的形式,其中A∈VN,也就是用β取代非终结符A时,与A所在的上下文无关,因此取名为上下文无关。
4)、3型文法——正规文法
设G=(VN,VT,P,S),如果它的每个产生式A αB或A α(A Bα或A α),其中A和B都是非终结符,α∈VT*,则文法G是3型文法(正规文法,正则文法,有穷状态文法),简称RG。
若文法中所有的产生式均为A αB或A α形式,则此文法为右线性的
若文法中所有的产生式均为A Bα或A α形式,则此文法为左线性的
四个文法类的定义是逐渐增加限制的
可以看出上述4类文法,从0型到3型,产生式的限制越来越强,其后一类都是前一类的子集,而描述语言的功能越来越弱,四类文法之间的关系可表示为:0型1型2型3型
因此,每一种正规文法(3型)都是上下文无关的,每一种上下文无关文法(2型)都是上下文有关的,而每一种上下文有关文法(1型)都是0型文法。各类文法对应的语言叫各类文法语言。
例3.5-2:文法G[S]:
S 0A|1B|0
A A0|B1|0S
B B1|1|0
第一,左边有非终结符,所以此文法是0型文法;
第二,左边符号串长度不大于右边,所以此文法是1型文法;
第三,左边只有一个非终结符,所以此文法是2型文法;
第四,由于文法中既有左线性文法又有右线性文法,所以此
文法不是3型文法;
综上所述,此文法是2型文法。
3.实验内容
1)、输入文法的终结符(小写字母或数字)和非终结符(大写字母)以及确定识别符(规定第一输入的非终结符为识别符)
2)、输入文法的产生式的个数以及各个产生式(左部-右部)
3)、判断文法类型
4.实验代码与结果
1)、实验代码
#define _CRT_SECURE_NO_WARNINGS
#include iostream
#include string
#include vector
#include set
#include algorithm
#include cassert
using namespace std;
const int STRING_MAX_LENGTH = 10;
/*一条规则*/
struct Principle {
string left;
string right;
Principle(const char *l, const char *r) : left(l), right(r) {}
};
/*文法的四元组形式,同时将该文法类型也作为其属性*/
struct Grammer {
setchar Vn;
setchar Vt;
vectorPrinciple P;
char S;
int flag; // 文法类型
Grammer(void) : flag(-1) {}
};
/*输入规则*/
void input(vectorPrinciple principleSet) {
char left[STRING_MAX_LENGTH];
char right[STRING_MAX_LENGTH];
while (EOF != scanf(%[^-]-%s, left, right))
{
getchar();
principleSe
您可能关注的文档
最近下载
- 大疆(M400)无人机与妙算3机载算力盒子组合的旗舰解决方案.pdf VIP
- 体育赛事组织管理方案与执行要点.docx VIP
- 机械式停车设备安全评估实例介绍.pptx
- QC∕T 1067.1-2017 汽车电线束和电气设备用连接器 第1部分:定义、试验方法和一般性能要求.pdf
- (高清版)B/T 42755-2023 人工智能 面向机器学习的数据标注规程.pdf VIP
- T /GDNAS 065—2025 经鼻气管插管全麻手术患者鼻压力性损伤预防技术规范.pdf VIP
- 论农产品质量安全现状及对策.doc VIP
- 机械加工工时定额标准计算手册(total-187页).docx VIP
- 公司参与期权交易的内部控制及风险管理制度.pdf VIP
- 动词三单变化专项练习.docx VIP
原创力文档


文档评论(0)