欢迎来到天天文库
浏览记录
ID:11799162
大小:258.13 KB
页数:45页
时间:2018-07-14
《赋值语句的解释程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1.设计题目:赋值语句的解释程序设计2.设计内容:用算符优先分析方法设计一个分析解释程序,对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中:若存在错误,提示错误相关信息。3.设计目的:a)了解掌握算符优先分析的基本方法、内容b)学会科学思考并解决问题,提高程序设计能力4.实现环境Ø电脑:lWindows10家庭中文版l型号:雷神l处理器:Intel(R)Core(TM)i7-6700HQCPU@2.60GHzlRAM:16.0GB(15.9GB可用)l系统类型:64位操作系统,基于x64的处理器Ø实现语言及环境:45Java,JDK1.8IDE:Ec
2、pliseneon.11.概要设计文法表示:Sàv=E
3、E?
4、clearEà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种别码设计:单词符号种别码=145?2+3-4*5/6(7)8v9c10clear11#12N13优先关系表123456789101112=?+-*/()vcclear#1=<<<<<<<>452?>3+>>><<<><<>4->>><<<><<>5*>>>>><><<>6/>>>>><><<>7(<<<<<=<<>8)>>>>>>>9v=>>>>>>>10c
19、>>>>>>>11clear>12#<<<<<<<<<<<=45程序流程图451.详细设计单词符号二元组使用下面的类来表示:publicclassWordSymbol{publicstaticfinalintTYPE_NULL=0;//无值publicstaticfinalintTYPE_INT=1;//整数publicstaticfinalintTYPE_STRING=2;//字符串intcode;//种别码inttype;//单词符号值类型Objectvalue;//单词符号的属性值publicWordSymbol(){super();}publicWordSymbol(intcode
20、,inttype,Objectvalue){super();this.code=code;this.type=type;this.value=value;}publicintgetCode(){returncode;}publicvoidsetCode(intcode){this.code=code;}45publicintgetType(){returntype;}publicvoidsetType(inttype){this.type=type;}publicObjectgetValue(){returnvalue;}publicvoidsetValue(Objectvalue){th
21、is.value=value;}@OverridepublicStringtoString(){return"WordSymbol[code="+code+",type="+type+",value="+value+"]";}}归约栈:用Java中的栈对象Stack来表示单词串:用链表对象List来存放单词串变量表:使用Map对象来充当变量表,其以键值对的方式存放变量,键可以设为变量名,值存放变量值45变量名值KeyValue可归约串语义解释:变量归约:Nàv,在变量表中查找该变量,若不存在则报错:变量未定义,
22、否则修改非终结符N的属性值为变量v的值,并设N的种别码为13常量归约:Nàc,修改非终结符N的属性值为常量c的值,并设N的种别码为13运算归约:设运算的操作数为N1,N2;将N1,N2进行相应运算并将运算结果设为N3的属性值,将N3的种别码设为13括号归约:将(N)归约为N赋值归约:在变量表中查找被赋值的变量v,若不存在,则先在变量表中创建该变量,然后再将N的属性值赋值给v,最后将v=N归约为N输出语句:先输出表达式N的属性值,然后将N?归约为N清除语句:将变量表中的所以变量清空,然后clear归约为N运算符之间的关系使用对象Relation来描述,其结构如下publicclassRela
23、tion{publicstaticfinalintREL_LESS=-1;//小于publicstaticfinalintREL_EQUAL=0;//等于publicstaticfinalintREL_GREATER=1;//大于45publicstaticfinalintREL_NULL=2;//无关系intcodeLeft,codeRight;intrelation;publicRelation(){super();
此文档下载收益归作者所有