欢迎来到天天文库
浏览记录
ID:17816704
大小:157.50 KB
页数:12页
时间:2018-09-06
《编译技术课程设计指导书》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4faee7a0662913adf726534524d49f0e.doc12/12编译技术课程设计指导书题目:L语言编译器的设计与实现院系:计算机学院2010年11月1日4faee7a0662913adf726534524d49f0e.doc12/12第一节概述1课程设计的目的和任务编译技术是一门实践性很强的课程,只有通过实践,才能真正掌握。实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化高级程序设计语言文法的办法,重点针对词法分析、语法分析、语义分析和中间代码生成以及目标代码生成等几个关键环节进行编程和调试
2、训练。每个环节可作为一个独立的实践课题,分别编程调试,然后再连接在一起总调,从而实现一个完整的编译器。2实践方法任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程,故本实践将定义一个简化的类PASCAL语言——L语言作为源语言,设计调试出它的编译程序。因任务具有一定的难度和工作量,且时间有限,因此,分组进行实验,每组2人,分别承担词法分析/目标代码生成以及语法/语义分析两部分中的一个,具体分工由组内协商进行,并且整个代码的链接工作由承担词法分析任务的同学完成。可使用C、VC++等语言编程实现。3实践报告的规范和要求每位学生完成
3、承担任务后写出格式规范的实验报告,包括封面、任务说明、程序设计时考虑的算法和方法、流程图、主要代码说明、运行结果分析等。4L语言定义程序定义:〈程序〉→program〈标识符〉〈程序体〉.〈程序体〉→〈变量说明〉〈复合句〉变量定义:〈变量说明〉→var〈变量定义〉
4、ε〈变量定义〉→〈标识符表〉:〈类型〉;|〈标识符表〉:〈类型〉;〈变量定义〉〈标识符表〉→〈标识符〉,〈标识符表〉|〈标识符〉语句定义:〈复合句〉→begin〈语句表〉end〈语句表〉→〈执行句〉;〈语句表〉|〈执行句〉〈执行句〉→〈简单句〉|〈结构句〉〈简单句〉→〈赋值句〉〈赋值句〉→
5、〈变量〉:=〈表达式〉〈变量〉→〈标识符〉〈结构句〉→〈复合句〉|〈if句〉|〈WHILE句〉〈if句〉→if〈布尔表达式〉then〈执行句〉
6、if〈布尔表达式〉then〈执行句〉else〈4faee7a0662913adf726534524d49f0e.doc12/12执行句〉〈while句〉→while〈布尔表达式〉do〈执行句〉表达式定义:〈表达式〉→〈算术表达式〉|〈布尔表达式〉〈算术表达式〉→〈算术表达式〉+〈项〉|〈算术表达式〉-〈项〉|〈项〉〈项〉→〈项〉*〈因子〉|〈项〉/〈因子〉|〈因子〉〈因子〉→〈算术量〉|(〈算术表达式〉)〈算
7、术量〉→〈标识符〉|〈整数〉|〈实数〉〈布尔表达式〉→〈布尔表达式〉or〈布尔项〉|〈布尔项〉〈布尔项〉→〈布尔项〉and〈布尔因子〉|〈布尔因子〉〈布尔因子〉→not〈布尔因子〉|〈布尔量〉〈布尔量〉→〈布尔常数〉|〈标识符〉|(〈布尔表达式〉)|〈关系表达式〉〈关系表达式〉→〈标识符〉〈关系运算符〉〈标识符〉〈关系运算符〉→〈
8、〈=
9、=
10、〉=
11、〉
12、〈〉类型定义:〈类型名〉→integer|bool
13、real单词定义:〈标识符〉→〈字母〉|〈标识符〉〈字母〉|〈标识符〉〈数字〉〈整数〉→〈数字〉|〈整数〉〈数字〉〈实数〉→〈整数〉.|〈实数〉〈数字
14、〉〈布尔常数〉→true|false字符定义:〈字母〉→A│B│C│D│E│F│G│H│I│J│K│L│M│N│O│P│Q│R│S│T│U│V│W│X│Y│Z│a│b│c│d│e│f│g│h│i│j│k│l│m│n│o│p│q│r│s│t│u│v│w│x│y│z〈数字〉→0│1│2│3│4│5│6│7│8│91源程序书写格式规定(1)单词必须在一行内写完,即:一个单词不能分两行写;(2)源程序语句的书写采用自由格式,即:一行可写多个语句,一个语句也可分多行写;(3)源程序不含注释;(4)语句以“;”结束,“end”前的一个语句的“;”不可以省略。4f
15、aee7a0662913adf726534524d49f0e.doc12/12第二节词法分析1目的通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力;掌握词法分析器作为子程序以及一遍的处理过程。源程序词法分析程序符号表文件token文件2任务(1)能对任何L语言源程序进行分析;(2)采用问答方式输入源程序文件名,然后进行词法分析;(3)分割单词并转换成机内表示形式,形成token文件(单词序列)、符号表文件;(4)删除空格等无用符号;(5)错误处理l给出的错误信息包括:总的出错个数,每个错误所
16、在行号,错误编号及说明;l只处理以下两种错误,其它可不必考虑1.非法字符:删除,即,不写入token文件2.
此文档下载收益归作者所有