欢迎来到天天文库
浏览记录
ID:38699315
大小:62.50 KB
页数:17页
时间:2019-06-17
《实验指导书-编译原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理实验教学指导书计算机科学与工程学院华南理工大学目录1实验简介32TINY+语言介绍42.1TINY+语言的词法定义42.2TINY+的语法定义52.3TINY+的语义定义72.4用TINY+语言编写的示例程序73实验1:实现TINY+语言的词法分析器93.1实验目的93.2实验要求103.3TINY+的测试程序及词法分析器的输出104实验2:实现TINY+的语法分析器、语义分析器以及中间代码生成器134.1实验目的134.2实验要求144.3TINY+示例程序及其输出14附录:和TINY+文法
2、规则对应的生成三地址中间代码的属性文法161实验简介学生在实验中,构造一个将TINY+高级程序设计语言转换为TINY+虚拟机上的中间代码的编译器。整个实验包括两个部分:实验一完成TINY+编译器的词法分析器部分;实验二完成TINY+编译器的语法分析器部分、语义分析器部分及中间代码生成器部分。每个同学必须独立完成自己的实验,与其他同学的讨论或合作是允许的,但必须是有限度的,可以互相交流想法和方法,但不能抄袭。学术不端将导致成绩为零。TINY+的编译器必须用C语言或C++语言实现(推荐使用Microsof
3、tVisualStudio)。2TINY+语言介绍实验定义了一种叫TINY+的高级程序设计语言,该语言是对TINY语言的一个扩充,TINY+比TINY增加了程序的声明部分,while语句,字符串类型定义等等,在本节的描述中,用蓝色字体标识的是TINY语言原有的词法及语法规定,而用红色字体标识的是TINY+语言扩充的词法及语法规定。本节主要是对TINY+语言的介绍,具体包括:1)TINY+语言的词法定义,包括对TINY+语言的单词(token)的描述;2)TINY+语言语法结构的EBNF描述;3)TIN
4、Y+语言主要的语义描述;4)TINY+的实例程序2.1TINY+语言的词法定义1.TINY+语言的关键字(keyword)包括:orandintboolcharwhiledoifthenelseendrepeatuntilreadwrite所有的关键字是程序设计语言保留使用的,并且用小写字母表示,用户自己定义的标识符不能和关键字重复。2.特殊符号的定义如下:><=>=,'{};:=+-*/()<=1.其他种类的单词包括标识符ID,数字NUM以及字符串STRING,他们的正规表达式的定义如下:ID=le
5、tter(letter
6、digit)*标识符是以字母开头,由字母和数字混合构成的符号串。NUM=digitdigit*TINY+中对数字的定义和TINY相同。STRING='anycharacterexcept''一个字符串类型的单词是用单引号括起来的字符串'…',引号内可出现除了'以外的任何符号。一个字符串不能跨行定义。letter=a
7、…
8、z
9、A
10、…
11、Zdigit=0
12、…
13、9小写和大写字母是不同的。2.空白包括空格、回车以及Tab。所有的空白在词法分析时,被当作单词ID,NUM以及保留字的分隔符,
14、在词法分析之后,他们不被当作单词保留。3.注释是用花括号括起来的符号串{…},注释不能嵌套定义,但注释的定义可以跨行。2.2TINY+的语法定义TINY+的语法用EBNF定义如下:1program->declarationsstmt-sequence2declarations->decl;declarations
15、ε3decl->type-specifiervarlist4type-specifier->int
16、bool
17、char5varlist->identifier{,identifier}6st
18、mt-sequence->statement{;statement}7statement->if-stmt
19、repeat-stmt
20、assign-stmt
21、read-stmt
22、write-stmt
23、while-stmt8while-stmt->whilebool-expdostmt-sequenceend9if-stmt->ifbool-expthenstmt-sequence[elsestmt-sequence]end10repeat-stmt->repeatstmt-sequenceuntilbo
24、ol-exp11assign-stmt->identifier:=exp12read-stmt->readidentifier13write-stmt->writeexp14exp->arithmetic-exp
25、bool-exp
26、string-exp15arithmetic-exp->term{addopterm}16addop->+
27、-17term->factor{mulopfactor}18mulop->*
28、/19factor->(arithmet
此文档下载收益归作者所有