编译原理课程设计-词法语法分析报告器 下载本文

内容发布更新时间 : 2024/9/29 21:25:57星期一 下面是文章的全部内容请认真阅读。

标准文档

编译原理课程设计

Course Design of Compiling

(课程代码

3273526

半期题目: 词法和语法分析器 实验学期: 大三第二学期 学生班级: 2014级软件四班 学生学号: 2014112218 学生姓名: 何华均

任课教师:丁光耀 信息科学与技术学院

2017.6

课程设计1-C语言词法分析器

1.题目

实用文案

标准文档

C语言词法分析

2.内容

选一个能正常运行的c语言程序,以该程序出现的字符作为单词符号集,不用处理c语言的所有单词符号。

将解析到的单词符号对应的二元组输出到文件中保存 可以将扫描缓冲区与输入缓冲区合成一个缓冲区,一次性输入源程序后就可以进行预处理了 3.设计目的

掌握词法分析算法,设计、编制并调试一个词法分析程序,加深对词法分析原理的理解

4.设计环境(电脑语言环境) 语言环境:C语言 CPU:i7HQ6700 内存:8G

5.概要设计(单词符号表,状态转换图) 5.1 词法分析器的结构 词法分析程序的功能:

输入:所给文法的源程序字符串。

输出:二元组(syn,token或sum)构成的序列。

词法分析程序可以单独为一个程序;也可以作为整个编译程序的一个子程序,当需要一个单词时,就调用此法分析子程序返回一个单词.

为便于程序实现,假设每个单词间都有界符或运算符或空格隔开,并引入下面的全局变量及子程序:

1) ch 存放最新读进的源程序字符 2) strToken 存放构成单词符号的字符串 3) Buffer 字符缓冲区

4)struct keyType 存放保留字的符号和种别 源程序 输入缓冲区

调用 词法分析子程序 5.2 待分析的简单词法 预处理子程序 (1)保留字 数据 break、case、char、const、int、do、while… (2)运算符和界符 返回一个单词 5.3 各种单词符号对应的种别码 单词符号 ID INT auto break 实用文案

= 、+、 -、 * 、/、%、,、;、(、)、?、# 扫描缓冲区1 扫描缓冲区2 种别码 0 1 2 3 单词符号 sizeof static struct switch 种别码 24 25 26 27 标准文档

case char const continue default do double else enum extern float for goto if int long register return short signed 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 typedef union unsigned void volatile while = + - * / % , ; ( ) ? clear # lettet(letter|digit)* dight dight* 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 5.3 状态转换图

实用文案

标准文档

6.详细设计(数据结构,子程序) 算法思想: 首先设置3个变量:①strToken用来存放构成单词符号的字符串;②ch

用来字符;③struct keyType用来存放单词符号的种别码。扫描子程序主要部分流程如下图所示。

子程序结构: 子程序名 GETCHAR() GETBC() CONCAT() 实用文案

功能 读一个字符到 ch 中 读一个非空白字符到ch 中 把CHAR 中字符连接到strToken 之后