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

  • 23
  • 0
  • 约1.92万字
  • 约 32页
  • 2018-04-13 发布于湖北
  • 举报

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

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

《编译原理》课程设计赋值语句的解释程序设计姓名:汤朋学号:2014112217班级:软件四班时间:2017/6/13学期:2016-2017第一学期设计题目:赋值语句的解释程序设计设计内容:用算符优先分析方法设计一个分析解释程序,对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中:若存在错误,提示错误相关信息。设计目的:了解掌握算符优先分析的基本方法、内容学会科学思考并解决问题,提高程序设计能力实现环境电脑:Windows10家庭中文版型号:雷神处理器:Intel(R) Core(TM) i7-6700HQ CPU @2.60GHz RAM:16.0GB(15.9GB可用)系统类型:64位操作系统,基于x64的处理器实现语言及环境:Java,JDK 1.8IDE:Ecpliseneon.1概要设计文法表示:S v=E|E?|clearEE+T|E-T|TTT*F|T/F|FF(E)|v|c归约规则:N v=N|N?|clearNN +N |N -N |NNN *N |N /N |NN(N)|v|c种别码设计:单词符号种别码=1?2+3-4*5/6(7)8v9c10clear11#12N13优先关系表123456789101112=?+-*/()vcclear#1=2?3+4-5*6/7(=8)9v=10c11clear12#=程序流程图详细设计单词符号二元组使用下面的类来表示:publicclass WordSymbol {publicstaticfinalintTYPE_NULL = 0; //无值publicstaticfinalintTYPE_INT = 1; //整数publicstaticfinalintTYPE_STRING = 2; //字符串intcode;//种别码inttype;//单词符号值类型Object value;//单词符号的属性值public WordSymbol() {super();}public WordSymbol(intcode, inttype, Object value) {super();this.code = code;this.type = type;this.value = value;}publicint getCode() {returncode;}publicvoid setCode(intcode) {this.code = code;}publicint getType() {returntype;}publicvoid setType(inttype) {this.type = type;}public Object getValue() {returnvalue;}publicvoid setValue(Object value) {this.value = value;}@Overridepublic String toString() {returnWordSymbol [code= + code + , type= + type + , value= + value + ];}}归约栈:用Java中的栈对象StackWordSymbol 来表示单词串:用链表对象ListWordSymbol来存放单词串变量表:使用MapString,Integer对象来充当变量表,其以键值对的方式存放变量,键可以设为变量名,值存放变量值变量名值KeyValue可归约串语义解释:变量归约:Nv,在变量表中查找该变量,若不存在则报错:变量未定义,否则修改非终结符N的属性值为变量v的值,并设N的种别码为13常量归约:Nc,修改非终结符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来描述,其结构如下publicclass Relation {publicstaticfinalintREL_LESS = -1; // 小于publicstaticfinalintREL_EQUAL = 0; // 等于publicstaticfinalintREL_GREATER = 1; // 大于publicstaticfinalintREL_NULL = 2; // 无关系intcodeLeft, codeRight;intrelation;pu

文档评论(0)

1亿VIP精品文档

相关文档