第一范文网 - 专业文章范例文档资料分享平台

编译原理 设计c语言的词法分析器

来源:用户分享 时间:2025/8/22 8:49:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

编译原理课程设计报告

题目: 学院: 教师: 姓名: 学号: 班级:

评分: 签字:

编译原理课程设计一:设计c语言的词法分析器

一、实验目的

了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程,加深对词法原理的理解。

二、实验要求

了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。

三、实验设计 3.1.单词分类及表示

3.1.1 C语言的子集分类

(1)标识符:以字母开头的字母数字串 (2)整数或浮点型。

(3)保留字:for,while,do,else,if,static,int,sizeof,break,continue (4)运算符:+,-,*,/,%,>,<,=,!=,==,<=,>=,!,&,&&,||; (5)界符:\

3.1.2单词二元组(单词分类号、单词自身值)

单词 标识符 整数或浮点型 保留字 运算符 界符 分类号 1 2 3 4 5 3.2 词法分析器的设计

3.2.1算法设计

3.2.1.1概要设计

从文件中逐个读取字符,只要这五大类的状态序列则继续读取,否则回退字符,在对应

类别进行查找,输出单元二次组至另一文件夹。

开始打开txt文件读取c语言代码扫描Y是否读取到相应字符YY常数?标识符保留字运算符界符?记录标号结束

3.2.1.2状态图设计

3.2.2输入输出设计

输入:通过文件指针从文件中一个一个读取字符 输出:输出单词二元组至文件。格式为(种别码,值)

3.2.3主要函数

void Getchar(FILE *fp ) //读入一个字符 void GetBC(FILE *fp)//读入一个非空字符 void contacat()//连接字符 int letter()//判断是否为字母 int digit()//判断是否为字母 void retract(FILE *fp,char *c)//回退 int reserve (char **k)//处理保留字

int sysmbol(identifier *id)//处理标识符,查找符号表并存放位置若没有则添加 int constant(constnumber *con)//存入常数表,并返回它在常数表中的位置 void Tofile(int num, int val, identifier *id, constnumber *con, FILE *fw)//写到文件

void WordAnalyze(char **k,char *c, char **CODE, identifier *id, constnumber *con, FILE *fp, FILE *fw)//词法分析函数

四、结果测试

文件输入 int main() {

int a=1,b=3; if(a>1) b=b-2; }

输出结果:

结论:程序输出结果与期望输出结果相符。

四、收获与感想

通过我本次课程设计掌握了词法分析器设计的基本方法与相关知识。词法分析的关键是明确各类字符的状态转换过程。同时辅助标识符、常量结构体与保留字表用于查找返回值。 同时我也对分析问题解决问题有了更深入全面的认识与理解。面对一个大的问题,需要理清解决的步骤再将其分解成小的模块逐个解决最后再串联在一起,问题就会变得更容易,思路也会更加清晰。

五、实验代码

#include using namespace std; #define LENGTH 10 char ch; char

*CODE[]

=

{

\

*/,\

char *k[] = { \保留字 char token[16];//存放处理后的字符串

//标识符结构体 typedef struct {

typedef struct

char *I[256]; int len;

}identifier;

搜索更多关于: 编译原理 设计c语言的词法分析器 的文档
编译原理 设计c语言的词法分析器.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c95zca4hfye9d31q9p63i6j6mw9sjhs00dnn_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top