1、 1 课程设计任务书课程设计任务书 学生姓名:学生姓名:_ _ 专业班级:专业班级: 指导教师:指导教师:_ _ 工作单位:工作单位:计算机科学与技术学院计算机科学与技术学院 题目题目: IF: IF- -ELSEELSE 条件语句的翻译程序设计(简单优先法、输出四元式)条件语句的翻译程序设计(简单优先法、输出四元式) 初始条件:初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行 设计。 要求完成的主要任务要求完成的主要任务: : (包括课程设计工作量及其技术要求, 以及说明书撰写等具体要求) (1) 写出符合
2、给定的语法分析方法的文法及属性文法。 (2) 完成题目要求的中间代码四元式的描述。 (3) 写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。 (4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述) ; 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码) ; 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评
3、价、特点、不足、收获与体会等) ; 9 参考文献(按公开发表的规范书写) 。 时间安排:时间安排: 设计安排一周:周 1、周 2:完成系统分析及设计。 周 3、周 4:完成程序调试及测试。 周 5:撰写课程设计报告。 设计验收安排:设计周的星期五第 1 节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午 10 点。 指导教师签名:指导教师签名: 20122012 年年 1010 月月 2323 日日 系主任(或责任教师)签名:系主任(或责任教师)签名: 20122012 年年 1010 月月 2323 日日 2 IF-ELSE 条件语句的翻译程序设计 (简单优先法、输出
4、四元式) 1 系统描述 1.1 实验目的 对条件语句:IF THEN ELSE (1) 按给定的题目写出符合语法分析方法要求的文法和属性文法描述。 (2) 按给定的题目给出语法分析方法的思想及分析表的设计。 (3) 按给定题目给出中间代码序列的结构设计。 (4) 完成相应的词法分析、语法分析和语义分析程序设计。 (5) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 1.2 开发平台 Visual C+ 6.0、Windows XP 2 文法及属性文法的描述 2.1 文法描述 (1) S-if E then B else B (2) E-(AA) (3) E-(A(A) (5
5、) A-d (6) A-num (7) B-d=C (8) C-A+A (9) C-A-A (10) C-A*A (11) C-A/A (12) C-A 其中,d 代表变量,num 代表常量(这里仅限数字),E 布尔表达式,B 为赋值表达 式,C 为算术表达式 2.2 属性文法描述 (1)E-A rop A E.true=nextstat; E.codebegin=nextstat; E.false=nextstat+1; emit(“if” A.place “rop” A.place “goto” -); emit(“goto” -) (2)E-(A) E.place=A.place 3 (
6、3)A-id p=lookup(id.name); if p!=null then A.place=p else error (4)B-d=C d.place=C.place (5)C-A op A C.place=newtemp; emit(C.place “=” A.place “op” A.place) (6)C-A C.place=A.place 注:rop 为或Y 表示 X 的优先性比 Y 的优先性大 XXY (2)XY 当且仅当 G 中存在产生式规则 A-XB,B=Y,BY (3)XBD,B=X,BX,D=Y 3.2 简单优先文法定义 若一个文法是简单优先文法必须满足以下条件: (1) 在文法符号集 V 中,任意两个符号之间最多只有一种优先关系成立 (2) 在文法中任意两个产生式没有相同的右部 其中第一条是必须满足的,第二条若不满足则会导致规约不唯一。 3.3 简单优先文法的算法步