第一篇:编译原理5、6、7章解题小结
第5、6、7章小结
几种语法分析方法
• 自上而下
– 递归下降分析法
– 预测(LL(1))分析法
• 自下而上
– 算符优先分析法
– LR分析法:LR(0)、SLR(1)、LR(1)、LALR(1)
一、自上而下的语法分析方法
1.不带回溯确定的自上而下分析法
2.对文法的要求:
1)文法非左递归
2)LL(1)文法
i.LL(1)文法的定义:
LL分析表不含多重元素
对AVT,A->|
• FIRST() FIRST()=
• 与至多只有一个为
• 若* ,则FIRST() FOLLOW(A)=
ii.LL(1)文法的两个性质
LL(1)文法不含左递归
LL(1)文法无二义
i.将方法G改写成LL(1)文法的方法:
消去直接左递归
提公共左因子
3.根据文法规则构造
1)递归下降分析程序的方法
2)预测分析表的方法
EX1:已知文法G:
S->aAbDe | d
A->BSD | e
B->Sac | cD |
D->Se |
求:1)每个非终结符的FIRST,FOLLOW集
2)判定是否为LL(1)文法。
解:FIRST(S)={a,e};
FIRST(B)={a,d,c,};
FIRST(D)={a,d,};
FIRST(A)={a,d,c,,e};
FOLLOW(S)={a,e,d,b,#};
FOLLOW(B)={a,e};
FOLLOW(D)={a,e,b};
FOLLOW(A)={b};
FIRST()
EX2:已知 ={a,b},用高级语言编写一个能够识别集合L={ anbn | n0}的程序。
提示:
1、求文法G:S->aSb |
2、判定文法G能用何种方法做。
二、自下而上的语法分析方法
(一)、算符优先分析法
1.算符优先分析法的定义
2.最左素左语
3.确定优先关系,构造优先关系表
EX3:已知文法G:
S->S;D | D
D->D(T)| H
T->T+S | S
H->a |(S)
求:1)求优先关系表
2)判定是否为OG、OPG文法。
3)根据文法和表分析句子(a+a)# 是否为该文法的句子。(答案:不是)
解: FIRSTVT(H)={a,(}
FIRSTVT(T)={+,a,(}
FIRSTVT(D)={a.(}
FIRSTVT(B)={;,a,(}
LASTVT(H)={a,}
LASTVT(T)={+,a,(}
LASTVT(D)={a.(}
LASTVT(B)={;,}
(二)、LR分析技术
1.所有无二义的上下文无关文法都可以用LR分析法
2.过程:
上下文无关文法->识别文法活前缀的DFA->LR
LR(0)
SLR(1)
LR(1)
LALR(1)
1.四类文法的判别方法
1.任何二义性文法都不是LR文法
2.根据项目集中是否含有冲突的项目:
1.LR(0)文法:所有LR(0)项目集中不含任何冲突
2.SLR(1)文法:LR(0)项目集中的冲突能用SLR规则解决。
3.LR(1)文法:若不能解决,则继续求搜索符,求LR(1)项
目集;若搜索符a只对归约冲突起作用,对移进不起作用,则可用以下LALR方法:
4.LALR(1)文法:合并同心集后,不存在归约与归约的冲突。
2.结论:
LR(0)SLR(1) LR(1)LALR(1),反之不成立
EX4:
已知文法G:
S->bASB | bA
A->dSa | 1
B->cAd | c
判定是否为LR(0), SLR(1), LR(1), LALR(1)文法。
分析:B->cAd | c 有移归冲突,不是LR(0)文法。
求{d,1}FOLLOW(B)
={d,1} FOLLOW(S)
= {d,1} (FIRST(B){#,a})
= {d,1} {#,a,c}
=
所以文法为SLR(1), LR(1), LALR(1)文法。
EX5:已知文法G:
S->AS | b
A->SA | a
判定是否为LR(0), SLR(1), LR(1), LALR(1)文法。
分析:对句子abab对应两棵语法树,故为二义文法,所以文法不是LR(0),SLR(1), LR(1), LALR(1)文法。
EX6:已知文法G:
S->SbSe
S->
问:LL(1)与 SLR(1)哪些方法可用?
分析:左递归
S-> ===>S->.不是S->.和S->.EX7:已知文法G:
A->BA |
B->aB | b
(1)证明它是LR(1)文法
(2)求它的LR(1)分析表
(3)列出句子abab的分析过程
第八章
中间代码的几种形式(逆波兰式 四元式 三元式 间接三元式 树)
EX2:A+B*(C-D)+E /(C-D)^N
逆波兰式
ABCD-*+ECD-N^/+
四元式
(1)(-,C,D,T1)
(2)(*,B,T1,T2)
(3)(+,A,T2,T3)
(4)(-,C,D,T4)
(5)(^,T4,N,T5)
(6)(/,E,T5,T6)
(7)(+,T3,T6,T7)
三元式
(1)(-,C,D)
(2)(*,B,(1))
(3)(+,A,(2))
(4)(-,C,D)
(5)(^,(4),N)
(6)(/,E,(5))
(7)(+,(3),(6))
EX2:A+B*(C-D)+E /(C-D)^N
间接三元式
间接三元式系列间接码表
(1)(-,C,D)(1)
(2)(*,B,(1))(2)
(3)(+,A,(2))(3)
(4)(^,(4),N)(1)
(5)(/,E,(5))(4)
(6)(+,(3),(6))(5)
(6)
每生成一条指令,先检查间接三元式系列,若已有,不再生成,只将序号列入间接码表中; 间接码表表明了执行间接三元式序列的顺序
第二篇:编译原理各章小结
1.编译程序是一个翻译程序,将高级语言的源程序翻译成低级语言的程序。
2.整个编译过程可以划分为五个阶段以及编译各阶段的任务;另外还有两个处理过程。
3.不会有很多人会从事设计和编写编译程序的工作的,但编译技术会应用在很多领域。
1.已知文法G,判断VN=?,VT=?,判断某个符号串是否为该文法描述的句子。
2.已知文法G,写出它定义的语言描述;
3.已知文法G,给出其句子的各种形式的推导,会画出语法树;
4.文法二义性的判断——利用语法树:在文法G中去寻找某一个句子,能够给它画出两个不同的语法树。
1.词法分析的任务。
2.单词的概念与单词的分类以及输出方式。
3.弄懂一些重要的概念:
正规文法G、正规式r和确定有限自动机DFA和不确定有限自动机NFA。
4.会画出FA对应的状态转换图。
5.弄懂词法分析器的自动生成原理:
1.语法分析的任务;
2.确定的自顶向下语法分析方法的基本思想,存在的问题是:左递归和回溯;
3.分析方法:预测分析法。
1.自底向上语法分析方法的基本思想;
2.短语、直接短语和句柄底定义,以及如何利用语法树来寻找某个句型的所有的短语、直接短语和句柄;
3.自底向上语法分析方法:
①算符优先分析法:基本原理,识别句柄的方法,最左素短语。
②LR分析法:活前缀,LR(0)项目,LR(0)分析法,SLR(1)分析法。
语义分析与中间代码生成的任务。
弄清属性文法的概念。
弄清语法制导翻译的概念。
掌握常用的中间代码形式:逆波兰式和四元式。
掌握一般语法成分,如赋值语句,条件语句,循环语句和简单说明语句等结构的翻译。
数据空间的内容;
数据空间的三种分配策略;
临时变量的存储分配。
优化的分类;
常用的代码优化技术;
局部优化。
1.目标代码的形式 ;
2.目标机的指令系统;
3.代码生成算法。
第三篇:思考题第5、6、7章
思考题
第五章 建设中国特色社会主义总依据
一、单项选择题
1.现阶段中国最大的实际是()A.生产力水平低,经济发展落后 B.人口数量多,素质不高 C.社会主义市场经济体制还不完善 D.处于并将长期处于社会主义初级阶段
2.在社会主义思想发展史上,最早提到社会主义发展阶段问题的是(A.马克思 B.恩格斯 C.列宁 D3.我国社会主义初级阶段基本路线中确立的奋斗目标是()A.建设成为富强、民主、文明、和谐的社会主义现代化国家 B.建设成为小康社会
C.建设成为农业、工业、国防和科技现代化的国家 D.建设成为人均国民生产总值达到发达国家水平的社会 4.我国社会主义初级阶段的主要矛盾是()A.落后的生产力同先进的生产关系的矛盾
B.人民日益增长的物质文化需要同落后社会生产之间的矛盾 C.商品经济和计划经济的矛盾 D.无产阶级和资产阶级的矛盾 5.我国社会主义初级阶段是指()
A.从社会主义制度建立到基本实现四个现代化 B.从新中国成立到社会主义制度建立
C.从社会主义改造完成到进入小康社会 D.从新中国成立到社会主义现代化基本实现 6.无产阶级政党的最高纲领是()
A.中国特色社会主义 B.和谐的社会主义 C.民族复兴 D.7.我们强调社会主义初级阶段的长期性,下列选项不是原因的是(A.社会主义社会是一个相当长期的.独立的社会形态 B.我国是一个经济文化落后的国家 C.在这个阶段需要对资本主义进行补课 D.要防止急躁、冒进超越社会发展阶段
8.社会主义初级阶段是不可逾越的,这主要取决于()A.市场经济的不可逾越性 B.生产力发展的不可逾越性 C.生产关系发展的不可逾越性 D.文化传统的不可逾越性 9.社会主义社会的基本矛盾是指()
A.人民群众日益增长的物质文化需要与落后的社会生产力之间的矛盾B.先进的社会生产关系与落后的社会生产力之间的矛盾
C.生产关系与生产力之间的矛盾,上层建筑与经济基础之间的矛盾 D.社会主义与资本主义之间的矛盾,无产阶级与资产阶级之间的矛盾10.在我国社会主要矛盾中,矛盾的主要方面是()A.落后的社会生产).毛泽东 共产主义)
B.生产力的组织、经营和管理落后 C.人民物质文化需要的日益增长
D.人口的不断增加和物质文化需要的日益增长
11.党的第八次全国代表大会指出:社会主义制度在我国已经基本上建立起来,国内主要矛盾已经转变为()A.社会主义和资本主义的矛盾 B.工人阶级和资产阶级之间的矛盾
C.人民对于经济文化迅速发展的需要同当前经济文化不能满足人民需要的状况之间的矛盾 D.生产关系和生产力之间的矛盾,上层建筑和经济基础之间的矛盾 12.毛泽东第一次系统地提出社会主义社会矛盾的学说是在()A.《论十大关系》 B.《湖南农民运动考察报告》 C.《关于正确处理人民内部矛盾的问题》 D.《新民主主义论》 13.社会主义社会发展的动力是()
A.阶级斗争 B.改革 C.物质利益原则 D.对外开放 14.解决社会主义初级阶段主要矛盾的根本手段是()A.号召人民生活节俭,抑制社会需求 B.用发购物票的方法计划分配社会产品 C.发展生产力 D.要求企业增加产品数量,减少花色品种
15.现阶段,我国处在社会主义初级阶段,是邓小平同志和我们党对当代中国的()科学判断
A.基本情况 B.基本矛盾 C.基本国情 D.基本任务
16.在党的基本路线中,“一个中心,两个基本点”是最主要的内容,是实现社会主义现代化的()
A.基本途径 B.奋斗目标 C.根本立足点 D.施政纲领 17.坚持党的基本路线不动摇的关键是()A.坚持以经济建设为中心不动摇 B.坚持两手抓.两手都要硬的方针不动摇 C.坚持四项基本原则不动摇 D.坚持改革开放不动摇
18.坚持党的基本路线必须坚持四项基本原则,下列命题中不属于四项基本原则的是()A.坚持中国共产党的领导 B.坚持社会主义道路 C.坚持人民民主专政 D.坚持改革开放
二、多项选择题
1.社会主义初级阶段包括的两层含义是()
A.我国是社会主义社会,我们必须坚持而不能离开社会主义
B.我国社会主义社会还处在初级阶段,我们必须从这个实际出发,而不能超越这个阶段 C.我国是社会主义社会国家,需要通过改革开放以效仿资本主义 D.我国社会主义社会还处在初级阶段,需要加快向共产主义社会发展 2.社会主义初级阶段是()
A.我国最大的实际 B.我国最基本的国情
C.我们党对社会主义和中国国情认识上的一次飞跃 D.我们党制定路线方针政策的基本依据和根本出发点 3.党在社会主义初级阶段的基本路线指出()A.初级阶段的奋斗目标是:建设“富强民主文明和谐的社会主义现代化国家” B.实现目标的基本途径是:“一个中心,两个基本点”
C.实现目标的领导力量和依靠力量是:“领导和团结全国各族人民” D.实现目标的根本立足点是,“自力更生,艰苦创业” 4.社会主义初级阶段理论包含这样几层含义()A.已经是社会主义社会 B.社会主义制度缺乏客观必然性 C.需要补资本主义的课 D.尚属于社会主义初级阶段
三、判断题
1.社会主义初级阶段就是指每个进入社会主义社会的国家都必须经历的起始阶段。2.党在社会主义初级阶段基本路线的中心内容,是坚定不移地坚持四项基本原则。3.社会主义初级阶段具有长期性是由中国进入社会主义的历史条件和建成社会主义所需要的物质基础所决定的。
4.现代化是动态的过程,现代化水平和标准也是不断提高的。5.社会主义初级阶段和过渡时期的经济基础是完全一样的。6.社会主义初级阶段只需要一百年的时间。
7.离开改革开放谈四项基本原则,四项基本原则就会变成僵化的教条。8.社会主义初级阶段的主要矛盾是无产阶级和资产阶级之间的矛盾。9.认清中国国情,最重要的是认清中国的社会的性质和所处的发展阶段。10.社会主义初级阶段和新民主主义社会在性质上是相同的。
11.提出“社会主义初级阶段”这一具有特定内涵的新概念,在马克思主义发展史上是第一次。
12.十一届三中全会以前,党对我国社会主义发展阶段的认识是清醒的。13.社会主义初级阶段是长期性与阶段性统一的动态发展过程。
14.在我国社会的主要矛盾中,人民日益增长的物质文化需要是矛盾的主要方面。15.改革开放是中国近现代历史发展的必然选择,是对党长期以来积累的经验所作出的科学概括,是我们的立国之本。
16.社会主义初级阶段是现阶段中国的最大实际。
第六章 社会主义本质和建设中国特色社会主义总任务
一、单项选择题
1.邓小平揭示社会主义本质的科学内涵是在()
A.1978年 B.1987年 C.1992年 D.1997年
2.新中国成立以来,我们在社会主义建设中所经历的曲折和失误,归根到底就在于没有搞清楚(),而这正是邓小平理论首要的基本的问题 A.社会主义根本任务 B.发展才是硬道理
C.社会主义主要矛盾 D.什么是社会主义,怎样建设社会主义 3.社会主义的根本任务是()
A.发展生产力 B.实现公平正义 C.打败资本主义 D.消灭一切剥削 4.根据“三步走”发展战略,我国到21世纪中叶的战略目标是()A.全面建成小康社会
B.基本实现现代化,达到中等发达国家的水平C.基本接近发达国家水平,生活比较富裕 D.物质文明与精神文明基本协调发展
5.把邓小平“三步走”的发展战略构想确定下来是在()A.党的十二大 B.党的十三大 C.十一届三中全会 D.十三届四中全会
6、“社会主义本质”这个概念是由()提出的。A.邓小平B.毛泽东 C.江泽民 D.胡锦涛
7、邓小平第一次提出“社会主义本质”这个概念是在()。A.1989年 B.1978年 C.1980年 D.1990年
8、邓小平于1980年5月指出:社会主义是一个很好的名词,但是如果搞不好,不能正确理解,不能采取正确的政策,那就体现不出()。A.社会主义的特征 B.社会主义的优越性 C.社会主义的目的 D.社会主义的本质
9、邓小平完整地提出“社会主义本质”的理论是在()。A.党的十二大 B.党的十三大 C.党的十四大 D.1992年南方谈话中
10、“社会主义本质”中的生产力方面的目标是()。A.消灭剥削 B.消除两极分化
C.最终达到共同富裕 D.解放生产力,发展生产力
11、“社会主义本质”的最终目标是()。A.消灭剥削 B.消除两极分化 C.实现共同富裕 D.发展生产力
12、邓小平特别强调:“社会主义与资本主义不同的特点就是(),不搞两极分化”。A.共同富裕 B.平均分配 C.计划经济 D.没有剥削
二、多项选择题
1.社会主义的本质是()。
A.解放生产力,发展生产力 B.消灭剥削,消除两极分化 C.最终达到共同富裕 D.实现公平正义
2.为了大力发展科学技术,党中央从20世纪90年代以来,相继实施了()战略。A.西部大开发 B.“三步走” C.科教兴国 D.人才强国
3、坚持以人为本就要坚持()。A.发展为了人民 B.发展依靠人民 C.发展的成果由人民共享 D.不断推动人的全面发展
4、党的十三大确定的“三步走”发展战略,即()。
A.从1981年到1990年实现国民生产总值比1980年翻一番,解决人民的温饱问题 B.从1991年到20世纪末,使国民生产总值再翻一番,达到小康水平
C.到21世纪中叶,国民生产总值再翻两番,达到中等发达国家水平,基本实现现代化 D.21世纪第一个10年,实现国民生产总值比2000年翻一番,使人民的小康生活更加富裕
5、党的十五大把“三步走”战略的第三步进一步具体化,提出了三个阶段性目标,具体内容是()。
A.21世纪第一个10年,实现国民生产总值比2000年翻一番,使人民的小康生活更加富裕,形成比较完善的社会主义市场经济体制
B.再经过10年的努力,到建党100周年时,使国民经济更加发展,各项制度更加完善 C.到21世纪新中国成立100周年时,基本实现现代化,建成富强民主文明的社会主义国家 D.2030年,实现人均国民生产总值比2000年翻两番,全面进入小康社会
6、党提出的“两个一百年”的奋斗目标是()。A.到社会主义改造完成100年时,基本实现现代化
B.到建党100周年时,使国民经济更加发展,各项制度更加完善 C.到社会主义初级阶段100周年时,进入社会主义高级阶段
D.到新中国成立100周年时,基本实现现代化,建成富强民主文明的社会主义国家
7、中华民族伟大复兴的中国梦包含着丰富的内涵,其中最核心的内容是()。A.经济发达 B.国家富强 C.民族振兴 D.人民幸福
8、实现中国梦必须()。A.坚持中国道路 B.弘扬中国精神 C.凝聚中国力量 D.发扬民族传统
三、判断题
1.社会主义初级阶段不允许剥削制度存在,但允许剥削现象存在。2.中国解决所有问题的关键是要靠自己的发展。
3.社会主义本质理论把我们对社会主义的认识提高到了一个新的科学水平。
4.20世纪末,我国人民生活总体上开始达到小康水平,但这种小康是低水平、不全面、发展很不平衡的小康。
5、解放生产力是为促进生产力的发展开辟道路。
6.实现社会主义现代化和中华民族伟大复兴是建设中国特色社会主义的总任务。
7、建设中国特色社会主义的首要的基本理论问题是“什么是社会主义,怎样建设社会主义”。
8、社会主义的根本任务是实现共同富裕。
第七章 社会主义改革开放理论
一、单项选择题
1.在全面改革中,改革的重点是()
A.经济体制改革 B.政治体制改革 C.科技体制改革 D.卫生体制改革 2.我国建立经济特区,开放沿海城市的目的是()
A.在这些地区实行特殊的经济和政治政策,进行不同社会制度的试验 B.让这些地区在对外开放中发挥基地和窗口作用 C.由这些地区专搞开放,保证其他地区专搞建设 D.根据“一国两制”方针,在这里设立特别行政区 3.在改革、发展、稳定的关系中,前提是()
A.改革 B.发展 C.稳定 D.和谐 4.改革的性质是()
A.自下而上进行的 B.社会主义制度的自我完善与发展 C.计划经济体制的根本性变革 D.建设中国特色社会主义的全新探索 5.我国实行对外开放的立足点是()
A.以我为主 B.以外向经济为主 C.保证国家安全 D.独立自主、自力更生 6.我国对外开放的对象是()
A.所有国家 B.周边国家 C.与中国友善的国家 D.发达国家 7.为了加快社会主义现代化建设,必须利用好的两种资源是() A.自然资源和人力资源 B.生产资源和财力资源 C.国内资源和国际资源 D.自然资源和社会资源 8.把对外开放定为基本国策的依据是邓小平的重要论断()A.现在的世界是开放的世界,中国的发展离不开世界 B.当今时代的主题是和平与发展
C.坚持“引进来”和“走出去”相结合,主动参与国际竞争 D.转变对外贸易增长方式,提高对外贸易效益 9.我国实行对外开放是()
A.长期的基本国策 B.一项特殊政策 C.社会主义初级阶段的一项政策 D.一项权宜之计 10、全面提高对外开放水平,要坚持()相结合。A.粗放型经济与集约型经济 B.改革与对外开放
C.“引进来”与“走出去 ” D.资源节约型与环境友好型社会 11.实行对外开放的基础和前提是()
A.互相帮助,互惠互利
B.公平、公正、公开
C.相互平等,合作共事 D.独立自主,自力更生
12.当前,国际间的经济竞争,实质上是()
A.社会制度竞争
B.科学技术竞争
C.经济资源竞争
D.劳动力素质竞争 13.我国加入世界贸易组织是在()
A.1999年12月 B.2000年12月 C.2001年12月 D.2002年12月 14.中国共产党提出改革决策的理论基础是()A.社会主义社会的基本矛盾理论 B.人类社会基本矛盾理论 C.资本主义社会基本矛盾理论 D.党执政规律的理论 15.下面做法不符合“提高开放型经济水平”这一要求的是()①“引进来”让位于“走出去” ②开放一切领域,优化开放结构
③完善内外联动、互利共赢、安全高效的开放型经济体系 ④创新利用外资方式,优化利用外资结构 A.①② B.③④ C.②③ D.①③
16.坚持改革的正确方向就是要()
A.坚持四项基本原则、坚持社会主义市场经济改革方向 B.坚持经济建设为中心 C.坚持一党执政 D.坚持马列主义为指导
二、多项选择题
1.20世纪70年代末,中国改革首先在农村拉开序幕,农村改革的第一步是()A.废除人民公社 B.改革人民公社 C.发展乡镇企业
D.建立以家庭联产承包为主,统分结合、双层经营的新型集体所有制 2.改革开放后,我国首批设置经济特区的城市是()。
A.珠海、深圳 B.厦门、汕头 C.海南 D.上海浦东
3.改革是一项崭新的事业,如何评价判断改革的成败与是非得失一再成为各种争论的焦点。邓小平在1992年的南方谈话中提出了“三个有利于”的判断标准。内容有()A.是否有利于发展社会主义社会生产力 B.是否有利于增强社会主义国家的综合国力 C.是否有利于提高公有制经济的控制力、影响力 D.是否有利于改善、提高人民的生活水平
4.我们在处理改革、发展和稳定的关系时,必须做到()A.坚持稳定压倒一切的方针
B.把改革的力度、发展的速度和社会可承受度统一起来 C.把不断改善人民生活作为处理三者关系的重要结合点 D.在社会稳定中推进改革和发展
三、判断题
1.全方位的对外开放就是没有任何限制的开放。
2.不能停留在姓“资”还是姓“社”的空泛讨论上,就是指改革的方向和性质上可以不问姓“资”还是姓“社”。
3.我国对外开放是全方位、多层次、宽领域的开放。
4.改革包括经济体制改革、政治体制改革和相应的其他各个领域的改革。5.独立自主就是什么事情都靠自己去完成。
6.社会主义社会不再有生产关系与生产力、上层建筑与经济基础之间的矛盾。7.苏东激进式改革与中国渐进式改革的本质区别在于是否循序渐进地开展。8.改革使社会主义在中国得到了发展,呈现出勃勃生机
9.全面深化改革需要加强顶层设计和整体谋划,注重各项改革的关联性、系统性、可行性
10、党的十一届三中全会以巨大的政治勇气和理论勇气作出了把工作重心转移到经济建设上来、实行改革开放的重大决策
第四篇:编译原理 学习心得
国际学院 0802 杨良燕 200819100227
《编译原理》课程学习心得
《编译原理》是计算机专业的一门重要课程,正如教材
第一章的引论所述,“编译程序是现代计算机系统的基本组成部分之一”。“一个编译程序就是一个语言翻译程序,语言翻译程序把一种语言(源语言)书写的程序翻译成另一种语言(目标语言)的等价程序”。
通过这一学期的学习,我觉得编译原理是一门理论性很强的课程,从文法和语言的概念到LL(1)文法和LR(0)文法的分析,几乎都是对具体问题的抽象。因而,我们需要更多的时间来理解、掌握相关的知识,当然在这一过程中也存在很多问题,比如我们后期学习具体文法的分析方法时,对于文法的概念不够清晰,影响了上课的效率,知道老师再次给我们讲解了文法等基础的知识点,我们才慢慢掌握后面所学的LL(1)文法等,也发现了知识点之间的关联。此外,这门课程的课时被安排得很少,一周只有一次,这样很不利于我们对这门重要课程的理解和掌握。但是我觉得我们很幸运,因为老师在有限的课程中尽量将知识点以比较容易接受的方式给我们讲解,教我们用简单的方法理解记忆不同的知识,对于我们提出的问题,无论课上或是课外,老师一直是不厌其烦,甚至利用课余时间为我们讲解重要的难题。
编译原理这门课程不仅仅在于其本身的理论价值,更在于为我们解决问题提供的思维方式和方法。从LL(1)到LR(0),问题不断被解决的同时,又有一个个新的问题提了出来。对计算机语言世界的知识积累,像滚雪球一样越滚越大。这个逐渐递进,逐渐解决问题的过程对我来说是收获很大的。整个过程好像踏着前人研究编译理论的路线,不断感觉他们遇到的问题,更重要的是他们解决问题的思路。编译原理的课程带给我的不只是如何去编译程序这样的理论知识,相信更重要的是一种如何“自动计算”的思路。通过对相关编译问题的具体分析,让我体会最深的是一种“自动计算”的思想,同时完成编译试验后,更是感到了一种“自动计算”的快乐。”然而我明白自己虽然对编译有了一定的了解,我懂得了文法的分析,学会了构造确定和非确定有限自动机,学会了LL(1)文法和LR(0)文法等,但是并没有完全掌握,对于这些知识点的实质性和其他方面,更是认识不深。作为一名学习计算机科学与技术的学生,我明白编译原理是软件工程的基础,课程的结束并不意味着学习的结束,只有通过以后的学习,才能更深入地了解编译原理。
第五篇:编译原理实验报告
编译原理实验报告
报告完成日期 2018.5.30
一. 组内分工与贡献介绍
二. 系统功能概述;
我们使用了自动生成系统来完成我们的实验内容。我们设计的系统在完成了实验基本要求的前提下,进行了一部分的扩展。增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。
三. 分系统报告;
一、词法分析子系统
词法的正规式:
标识符
<字母>(<字母>|<数字字符>)* 十进制整数
0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 八进制整数 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六进制整数 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和分隔符 +| * | / | > | < | = |(|)| <=|>=|==; 对于标识符和关键字: A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 综上正规文法为: S—〉I1|I2|I3|A4|A5 I1—〉0|A1 A1—〉B1C1|ε C1—〉E1D1|ε D1—〉E1C1|ε
E1—〉0|1|2|3|4|5|6|7|8|9 B1—〉1|2|3|4|5|6|7|8|9 I2—〉0A2 A2—〉0|B2 B2—〉C2D2 D2—〉F2E2|ε E2—〉F2D2|ε
C2—〉1|2|3|4|5|6|7 F2—〉0|1|2|3|4|5|6|7 I3—〉0xA3 A3—〉B3C3 B3—〉0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f C3—〉(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)|C3|ε
A4—〉+ |-| * | / | > | < | = |(|)| <=|>=|==; A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε
状态图
流程图:
词法分析程序的主要数据结构与算法
考虑到报告的整洁性和整体观感,此处我们仅展示主要的程序代码和算法,具体的全部代码将在整体的压缩包中一并呈现
另外我们考虑到后续实验中,如果在bison语法树生成的时候推不出目标的产生式时,我们设计了报错提示,在这个词的位置出现错误提示,将记录切割出来的词在code.txt中保存,并记录他们的位置。
以下是我们的主要代码:
进制的识别:
结果展示:
二、语法分析子系统
根据选择的语法分析方法进行描述
我们使用了递归子程序发,并且对原有的产生式进行了改写,改写后的结果如下: P→LP1|L L→S
S→id=E|{P}|if C then S | if C then S
1else S2 | while C do S1 C→E1C’
C’→>E2| E→int8E’| int10E’| int16E’| idE’|T E’→+T|-T||+TE’|-TE’ T→int8T’| int10T’| int16T’| idT’|F T’→*F|/F|*FT’|/FT’ F→(E)|int8|int10|int16|id 简化的语法图: S的语法图: C的语法图: E的语法图: T的语法图: F的语法图: 流程图: 语法分析子系统的主要数据结构与算法 我们采用了自动生成技术,同样在这里也是展示主要的核心功能代码,全部的代码展示在压缩包中: 我们在设计时,实现了产生式对应的字符串同时标识产生式定义的int值 辅助程序: 生成语法树的程序: 1.树节点: 2.创建新节点 3.创建实数类型新节点 4.创建标识符类型新节点 5.输出语法树 三、三地址码生成器 算法的基本思想: 我们增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。 在报错的时候,我们会呈现类型、作用域和赋值三种的问题的报错信息。 流程图: 算法展示: 四、实验体会 这次实验其实总的来说是让我们更加清晰的理解到了我们所学的内容。有时候我们上课听讲,课下复习写作业的时候,其实看似掌握了所学内容,但实际上并没有亲身体会的操作很难让我们深刻的理解其中的相关意义。通过这次实验,我们能够从根源处了解到了我们所学的内容,并且基于我们理解之后的输出。比如词法分析不能采用空格来区分单词,因为存在加减乘除等运算符和分隔符,使用空格来区分可能会造成错误的分解。又比如我们再在程序设计中,常常体会到效率的重要性。影响词法分析的效率的主要因素是各个状态的分支如何规划。如果每个进来的单词都能在最短的时间和最少的匹配次数内找到其入口,则效率将得到很大程度上的提高。所以由此我们产生了声明变量类型、赋值和作用域的想法,将其放在最后来进行判断,这样可以提高整体的执行效率。 另外,这次小组成员彼此不在一个班级,这样从某一方面来说,也加强了我们互相快速熟识并团结协作的能力,有了这种体验,我想我们在今后的生活中,面对这种情况的时候,将会变得更加有经验。 五、源程序 词法分析器: 输入结果: 输出结果: 语义分析结果: 输入: 第二组数据的输入: 输出: 三地址码的输入: 第二组数据的输入: 输出: