西南交大-编译原理课程设计二-赋值语句的解释程序设计.docVIP

西南交大-编译原理课程设计二-赋值语句的解释程序设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE32

《编译原理》

课程设计

赋值语句的解释程序设计

姓名:汤朋

学号:2014112217

班级:软件四班

时间:2017/6/13

学期:2016-2017第一学期

设计题目:赋值语句的解释程序设计

设计内容:

用算符优先分析方法设计一个分析解释程序,对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中:若存在错误,提示错误相关信息。

设计目的:

了解掌握算符优先分析的基本方法、内容

学会科学思考并解决问题,提高程序设计能力

实现环境

电脑:

Windows10家庭中文版

型号:雷神

处理器:Intel(R)Core(TM)i7-6700HQCPU@2。60GHz

RAM:16。0GB(15。9GB可用)

系统类型:64位操作系统,基于x64的处理器

实现语言及环境:Java,JDK1.8?IDE:Ecpliseneon.1

概要设计文法表示:S?v=E|E?|clear

E?E+T|E—T|T

T?T*F|T/F|F

F?(E)|v|c归约规则:

N?v=N|N?|clear

N?N+N|N-N|N

N?N*N|N/N|N

N?(N)|v|c

种别码设计:

单词符号

种别码

1

2

+

3

-

4

*

5

/

6

(

7

)

8

v

c

10

clear

11

#

12

N

13

优先关系表

2

3

4

6

7

8

9

10

11

12

+

*

/

)

c

clear

1

=

?

3

+

-

5

*

6

7

(

8

v

=

10

c

11

clear

12

#

程序流程图

详细设计单词符号二元组使用下面的类来表示:publicclassWordSymbol{

publicstaticfinalintTYPE_NULL=0;//无值

publicstaticfinalintTYPE_INT=1;//整数

publicstaticfinalintTYPE_STRING=2;//字符串

intcode;//种别码

inttype;//单词符号值类型

?Objectvalue;//单词符号的属性值

publicWordSymbol(){

super();

?}

publicWordSymbol(intcode,inttype,Objectvalue){

super();

this.code=code;

this。type=type;

this。value=value;

?}

publicintgetCode(){

returncode;

}

publicvoidsetCode(intcode){

this。code=code;

?}

publicintgetType(){

returntype;

}

publicvoidsetType(inttype){

this.type=type;

publicObjectgetValue(){

returnvalue;

}

publicvoidsetValue(Objectvalue){

this。value=value;

}

@Override

publicStringtoString(){

return”WordSymbol[code=”+code+,type=”+type+”,value=+value+”];

}

}

归约栈:用Java中的栈对象StackWordSymbol〉来表示单词串:用链表对象List〈WordSymbol〉来存放单词串变量表:使用MapString,Integer〉对象来充当变量表,其以键值对的方式存放变量,键可以设为变量名,值存放变量值

变量名

Key

Value

可归约串语义解释:变量归约:N?v,在变量表中查找该变量,若不存在则报错:变量未定义,否则修改非终结符N的属性值为变量v的值,并设N的种别码为13

常量归约:N?c,修改非终结符N的属性值为常量c的值,并设N的种别码为13

运算归约:设运算的操作数为N1,N2;将N1,N2进行相应运算并将运算结果设为N3的属性值,将N3的种别码设为13括号归约:将(N)归约为N赋值归约:在变量表中查找被赋值

文档评论(0)

195****7425 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档