欢迎来到天天文库
浏览记录
ID:58640715
大小:570.50 KB
页数:32页
时间:2020-10-17
《西南交大-编译原理课程设计二-赋值语句的解释程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、......《编译原理》课程设计赋值语句的解释程序设计:汤朋学号:2014112217班级:软件四班时间:2017/6/13学期:2016-2017第一学期v............1.设计题目:赋值语句的解释程序设计2.设计内容:用算符优先分析方法设计一个分析解释程序,对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中:若存在错误,提示错误相关信息。3.设计目的:a)了解掌握算符优先分析的基本方法、内容b)学会科学思考并解决问题,提高程序设计能力4.实现环境Ø电脑:lWindows10家庭中文版l型号:雷神l处理器:Inte
2、l(R)Core(TM)i7-6700HQCPU2.60GHzlRAM:16.0GB(15.9GB可用)l系统类型:64位操作系统,基于x64的处理器Ø实现语言及环境:Java,JDK1.8IDE:Ecpliseneon.15.概要设计文法表示:Sàv=E
3、E?
4、clearv............EàE+T
5、E-T
6、TTàT*F
7、T/F
8、FFà(E)
9、v
10、c归约规则:Nàv=N
11、N?
12、clearNàN+N
13、N-N
14、NNàN*N
15、N/N
16、NNà(N)
17、v
18、c种别码设计:单词符号种别码=1?2+3-4*5/6(7)8v9c10v............clear11
19、#12N13优先关系表123456789101112=?+-*/()vcclear#1=<<<<<<<>2?>3+>>><<<><<>4->>><<<><<>5*>>>>><><<>6/>>>>><><<>7(<<<<<=<<>8)>>>>>>>9v=>>>>>>>10c>>>>>>>11clear>12#<<<<<<<<<<<=v............程序流程图v............1.详细设计单词符号二元组使用下面的类来表示:publicclassWordSymbol{publicstaticfinalintTYPE_NULL=0;//无值publics
20、taticfinalintTYPE_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;}publi
21、cvoidsetCode(intcode){this.code=code;}publicintgetType(){returntype;}publicvoidsetType(inttype){this.type=type;}publicObjectgetValue(){returnvalue;}publicvoidsetValue(Objectvalue){this.value=value;}OverridepublicStringtoString(){v............return"WordSymbol[code="+code+",type="+type
22、+",value="+value+"]";}}归约栈:用Java中的栈对象Stack来表示单词串:用链表对象List来存放单词串变量表:使用Map对象来充当变量表,其以键值对的方式存放变量,键可以设为变量名,值存放变量值变量名值KeyValue可归约串语义解释:变量归约:Nàv,在变量表中查找该变量,若不存在则报错:变量未定义,否则修改非终结符N的属性值为变量v的值,并设N的种别码为13常量归约:Nàc,修改非终结符N的属性值为常量c的值,并设N的种别码为13运算归约:设运算的操作数为
23、N1,N2;将N1,N2进行相应运算并将运算结果设为N3的属性值,将N3的种别码设为13括号归约:将(N)归约为N赋值归约:在变量表中查找被赋值的变量v,若不存在,则先在变量表中创建该变量,然后再将N的属性值赋值给v,最后将v=N归约为N输出语句:先输出表达式N的属性值,然后将N?归约为Nv............清除语句:将变量表中的所以变量清空,然后clear归约为N运算符之间的关系使用对象Relation来描述,其结构如下publicclassRelation{publicstaticfinalintREL_LESS=-1;//小于publicstaticf
24、inali
此文档下载收益归作者所有