编译原理实验报告——词法分析器和LL文法 下载本文

《编译原理》综合性

实 验 报 告

实验学期 2016 至 2017 学年 第 1 学期 专业 计算机科学与技术 班级 1403 学生姓名 黄世增 学号 1411640305 任课教师 赵曦 实验成绩

1

《编译原理》课程综合性实验报告

开课实验室:C210 2016年 12月 6日 实验题目 词法分析器的设计 一、实验目的 通过设计、编制、调试一个具体的词法分析程序,实现对高级程序设计语言源程序进行扫描, 并将其分解为各种单词的词法分析方法;加深对课堂教学的理解;提高词法分析方法的实践能力。 二、实验要求 任选一种高级程序设计语言编程完成词法分析器。词法分析器应以教材所述分词原理为依据,使用恰当的数据结构和方法,结构清晰、高效。 编制一个读单词过程,源程序保存在文本文件中(也可键盘输入),读取该文件,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分界符五大类。依次输出各个单词的内部单词种别及单词符号自身值,遇到错误时可显示“Eorror”,然后跳过错误部分继续显示。 二、实验设备与环境 1.硬件:PC机Pentium100以上。 2.软件:Win10,VS2010。 三、实验内容 1.正规文法 <关键字>-> int |for| while | do | return | break | continue <运算符和界符>-> |+ | - | * | / |==| < | <= |!= | > | >= | , | ; | ( | ) | {|} <标识符>-> letter (letter | digit)* <整型常数>-> digit digit* 2.算法思想 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼接出相应的单词符号。 2.1 主程序

2

置初值 调用扫描子程序 将结果存入结构体 否 输入串结束 是 输出单词二元组 结束 图1 词法分析主程序示意图 其中初始包括关键字、运算符、界限符的置初值。 2.2 扫描子程序的算法思想: 在词法分析中,先以只读方式读取一个文件,自文件头开始扫描文本,滤去开头的空格、回车符、换行符等。读取的字符送入word。扫描第一个字符,看匹配的类型,并进行相应的类型分析,满足判断类型时,输出其种别码和值。

3