- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告编译原理
北京科技大学 计算机与通信工程学院
实 验 报 告
实验名称:_________编译原理实验报告_______
学生姓名:_________ ________________
专 业:_________ _________________
班 级:_________ _________________
学 号:_________________________
指导教师:_________ _________________
实验成绩:________________________________
实验地点:________________________________
实验时间:____2015___年___07__月_______日
一、实验目的与实验要求
1、实验目的
通过一个词法分析程序将一段给出的C语言代码的词法部分分析出来;
通过一个语法分析程序将一段给出的C语言代码的语法分析出来。
2、实验要求
二、实验设备(环境)及要求
Win7家庭普通版;Visual Studio 2013;
三、实验内容与步骤
1、实验1
(1)实验内容
对于给定一段代码,通过词法分析程序将程序中的各个类型的字表分析,包括保留字、分隔符表、运算符表、标识符、整型数、浮点类型数、字符类型、字符串类型等表文件。
(2)主要步骤
通过读入程序的文本文件,然后将分析的结果一次保存在本地文本文件。
然后通过指定的命令来将分析的结果读取出来。
附录:源码
#include stdio.h
#include string.h
#include stdlib.h
char *key0[] = { , auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, _Complex, _Imaginary, union, unsigned, void, volatile, while };
/*保留字表*/
char *key1[] = { , (, ), [, ], {, }, ,, ;, };
/*分隔符表*/
char *key2[] = { , +, -, *, /, %, , , ==, =, =, !=, !, , ||, , , ~, |, ^, , =, ?:, -, ++, --, ., +=, -=, *=, /= };
/*运算符表*/
int xx0[35], xx1[10], xx2[31];
int temp_key3 = 0, temp_c40 = 0, temp_c41 = 0, temp_c42 = 0, temp_c43 = 0;
/******* 初始化函数 *******/
void load()
{
int mm;
for (mm = 0; mm = 34; mm++)
{
xx0[mm] = 0;
}
for (mm = 0; mm = 9; mm++)
{
xx1[mm] = 0;
}
for (mm = 0; mm = 30; mm++)
{
xx2[mm] = 0;
}
FILE *floading;
if ((floading = fopen(key0.txt, w)) == NULL)
{
printf(Error! Cant create file : key0.txt);
return;
}
fclose(floading);
/*建立保留字表文件:key0.txt*/
if ((floading = fopen(key1.txt, w)) == NULL)
{
printf(Error! Cant create file : key1.txt);
return;
}
/*建立分隔符表文件:key1.txt*/
if ((floading = fopen(key2.txt, w)) == NULL)
{
printf(Error! Cant create file : key2.txt);
return;
}
fclose(floading);
/*建立运算符表文件:key2.txt*/
if ((floading = fopen(key3.txt, w)) == NULL)
{
printf(Error! Cant create file : key3.
文档评论(0)