




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语法分析源代码分析报告学生:吴艺萍、陈璐、崔旻、刘超群学号:095 、 094 、 101、103时间:2014年06月目录一、概述.1二、词法分析设计与实现.11、相关枚举类型的定义.12、函数.2三、语法、语义分析设计与实现.31、相关数据结构定义.32、函数.3四、中间代码.61、相关数据结构定义.62、相关枚举类型的定义.63、函数.7一、概述 编译原理是在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。现在计算机系统的性能不仅仅取决于它的原始速度,还取决于编译器是否能生成充分利用其特征的代码。在现代计算机体系结构的研究中,在处理器的设计阶段就开发编译器,并将编译生成的代码在模拟器上运行,以评价拟采用体系结构的特征。编译器技术影响计算机体系结构设计的一个著名例子是精简指令集计算机(RISC)的发明。二、词法分析1、相关枚举类型定义(1)SymType的定义/记号类型enum SymTypeOR ,/或AND,/与RELOP,/关系运算符ADDOP,/加减MULOP,/乘除NOT,/非LP,/左括号1RP,/右括号ID,/标志符NUM,/数ASSIGN,/赋值LB,/左大括号RB,/右大括号COMMA,/逗号SEMICOLON,/分号UNDEFINED,/未定义INT,/intIF,/ifELSE,/elseWHILE,/whileRETURN,/returnPRINTF,/printfSCANF,/scanf/(2)AddOp、MulOp、RelType的定义次枚举类型确定了加减乘除运算和关系运算符的符号enum AddOpADD,/加法SUB/减法;/enum MulOpMUL,/乘法DIV,/除法MOD,/取余;/关系运算符类型enum RelTypeGT,/大于GE,/大于等于=EQ,/等于=LT,/小于LE,/小于等于(statementelsestatementexpressionif)(whilestatementexpression)( ;printexpression, ;statementexpression=id ;在paramDeclare.cpp中通过以下函数实现变量申明definition4函数作用static void processOneDeclare()处理一个声明int paramDeclare()申明并在varDeclare.cpp中处理变量和对变量列表的内容进行处理:函数作用void processOneVar()处理一个变量void varDeclare()处理变量列表definition: expression;intid=在expression.cpp中通过ExprNode expression()函数来实现expressionExprNode expression()ExprNode left = andTerm();while(token = OR)changeArithToCondition(&left);getToken();backpatch(left.falselist,csIndex);ExprNode right = andTerm();changeArithToCondition(&right);left.truelist = mergeList(left.truelist,right.truelist);left.falselist = right.falselist;return left;expression:termterm|函数作用static ExprNode andTerm();与项static ExprNode relationTerm();关系项static ExprNode addTerm();和项static ExprNode mulTerm();乘项static ExprNode factor();因子int mergeList(int list1, int list2);合并链表void backpatch(int list, int cx);回填链表ExprNode expression();表达式用以上的函数实现expression中的加减乘除以及关系运算四、中间代码生成器1、数据结构定义(1)Instruction的定义此处用四元式形式作为中间代码,此数据结构来记录中间代码typedef struct int optr;/运算符int arg1;/左操作数的地址int arg2;/右操作数的地址int result; /存放结果的地址Instruction;2、枚举类型定义(1)InstrType的定义此枚举类型出现在四则运算的运算符,为了之后的数据运算/虚拟机指令集enum InstrTypeInsJtrue,/为真则跳转(InsJtrue, arg1, , dest)InsJfalse,/为假则跳转(InsJfalse,arg1, , dest)InsJmp,/无条件跳转(InsJmp, , , dest)InsMov,/数据复制 (InsMov, arg1, ,dest)InsInit,/初始化某单元(InsInit,arg1,num, )InsAdd,/加法(InsAdd, arg1,arg2,dest)InsSub,/减法(InsSub, arg1,arg2,dest)InsMul,/乘法(InsMul, arg1,arg2,dest)InsDiv,/除法(InsDiv, arg1,arg2,dest)InsMod,/取余InsNop,/空操作(InsNop, )InsJlt,/判断是否(InsLt,arg1,arg2,result)InsJle,/判断是否(InsGt,arg1,arg2,result)InsJge,/判断是否=InsJeq,/判断是否=InsJne,/判断是否!=InsOr,/逻辑或运算6InsAnd,/逻辑与运算InsNot,/逻辑非运算InsIn,/读入一个整数到单元dest (InsIn,dest , ,);InsOut,/输出一个整数(InsOut,num, ,);InsUminus,/负数(InsUminus,oprn, ,dest)InsCall,/过程调用(InsCall,des, , ,);InsRet,/过程返回(InsRet,expr, , );InsSetBx,/设置bx指针,指向活动记录首地址(InsSetBx,addr, , )InsAddBx,/bx指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化创意产业资金申请项目申报技巧与实施策略报告
- 2025年行政窗口办事员考试题库及答案
- 工业互联网平台NFV虚拟化网络功能在机器人领域的应用与案例分析报告
- 西安市汉都第一学校招聘笔试真题2024
- 2025-2030港口自动驾驶集卡商业化进程报告
- 鸡西市老干部服务中心招聘笔试真题2024
- 2025-2030气凝胶超级保温材料在绿色建筑中的成本下降曲线与政策红利
- 2024年江西抚州高新区招聘教师真题
- 2025-2030机床企业科创板上市路径与估值逻辑分析
- 2020-2025年初级银行从业资格之初级风险管理提升训练试卷B卷附答案
- 2025年人教版山东省济南市九年级中考英语模拟试卷(含答案无听力音频及原文)
- 水利工程安全生产工作目标与实施方案
- 消毒供应中心培训课件
- 软包安装合同协议
- 教师531行动计划表范文
- 2025年一级建造师《建筑工程管理与实务》试卷真题(附解析)
- 物业薪酬管理办法
- 空调系统的应急预案
- 外场管理制度
- 集团公司新闻宣传工作管理办法
- 金属非金属矿山安全规程的完整性与实施
评论
0/150
提交评论