文档详情

哈工大编译原理实验报告.pdf

发布:2017-09-16约1.97万字共20页下载文档
文本预览下载声明
一个小型编译器的设计与实现 学号:XXXXXXXXX 姓名:XXX 一、课程目的和要求: 在该课程中,学生将综合利用汇编语言、高级程序设计语言、数据结构与算 法、计算机原理、操作系统、软件工程、编译原理等课程中学到的原理、技术和 方法,设计并实现一个将高级程序设计语言编写的源程序翻译为可执行文件的较 为完整的小型编译器。该课程将培养学生设计复杂大型软件系统的能力;培养学 生应用知识解决问题的能力;培养学生的实践动手能力;培养学生的系统分析与 设计能力;培养学生的工程素质。 二、源语言的形式描述: 1 S- S 2 S - int main ( ) { declaration_statement statement_list } 3 declaration_statement - decls decl 4 declaration_statement - declaration 5 declaration - type_specifier id_list ; 6 type_specifier - int 7 type_specifier - float 8 id_list - id_list , id 9 id_list - id 10 id_list - id [ digit ] = { digit_list } 11 digit_list - digit_list , digit 12 digit_list - digit 13 statement_list - statement_list statement 14 statement_list - statement 15 statement - return expression ; 16 statement - assign_expression ; 17 statement - iteration_expression 18 statement - selection_statement 19 statement - { statement_list } 20 expression - E 21 E - E + T 22 E - E - T 23 E - T 24 T - T * F 25 T - T / F 26 T - F 27 F - ( E ) 28 F - digit 29 F - id 30 F - id [ expression ] 31 assign_expression - left_value = expression 32 left_value - id 33 left_value - id [ expression ] 34 iteration_expression - for ( assign_expression ; M relation_expression ; M inc_expression ) statement 35 relation_expression - expression relation_op expression 36 relation_op - 37 relation_op - 38 relation_op - = 39 relation_op - = 40 inc_expression - left_value ++ 41 selection_statement - if ( M relation_expression ) statement M else statement 42 statement - printf ( string ) ; 43 statement - printf ( string ,M id_list ) ; 44 statement - scanf ( string , id ) ; 45 M - e 三、词法分析器的设计与实现: 3.1 词法分析阶段目标 对于程序源文件进行词法分析,识别出源程序中的token 字序列,已进行语 法分析。 3.2 词法分析阶段设计 1. 所支持的词法序列 关键字(C 语言的基本关键字) 支持变量名(字母,数字或者下划线构成的字符串) 常数(无符号正整数) 字符串(以”开始,”结束的字符串) 基本算术和逻辑运算符号(+,-,*,/,,=,,) 三种括号((,),[,],{,}) 双目操作符(==,=)
显示全部
相似文档