- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验报告
学 院: 理学院
专业班级: 07应用数学-01
学生学号: 200713575
学生姓名: 何继胜
指导教师: 李声
2010年 5月4日
一 实验题目 词法分析器的设计
二 实验目的
通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方法。
二 实验内容
使用c++编写的词法分析器
keylist.txt (用来存放关键字)
auto
main
struct
break
else
switch
case
register
typedef
extern
return
const
goto
lable
unsigned
continue
for
printf
scanf
signed
default
sizeof
valatil
do
if
static
while keytpye.txt(用来存放类型)
char
short
int
long
double
temp
float
bool
enum
void
FILE
main.cpp
setstring keytype; //变量的类型 列举了常用的一部分
keytypeassign(keytype); // 初始化变量的类型
mapstring, long keylist; //存放关键字(不包含类型) string是关键字 long表示出现次数
keylistassign(keylist); //初始化关键字
multimapstring, string varlist; //第一个string用来存放类型 第二个string用来存放变量名
multisetstring constlist; //存放文中出现的数字型常量
ifstream fin(input.c, ios::in); //打开要读取的文件
fun(fin, varlist, constlist, keytype, keylist); //执行
fin.close(); //关闭打开的文件
print(varlist, constlist, keytype, keylist); //输出结果到output.txt文件中
main.h
void keytypeassign(setstring keytype);
//把类型写入keytype - set(类型) 中去
void keylistassign(mapstring, long keylist);
//把关键字写入到 keylist - mapstring, long 中去
void print(multimapstring,string varlist,multisetstring constlist,
setstring keytype,mapstring, long keylist ); //输出信息内容
void fun (ifstream fin,multimapstring,string varlist,multisetstring constlist,
setstring keytype,mapstring, long keylist) ; //执行 -
四 实验结果
input.txt
int main(int argc, char *argv[])
{
int i;
int * a;
int b[5];
for (i = 0; i 5; ++i) {
b[i] = i;
}
for (i = 0; i 5; ++i) {
printf(%d, b[i]);
}
}
output.txt
变量类型 变量名称:
char * argv[]
int argc
int i
int b[]
int * a
出现的关键字 次数:
for 2
main 1
printf 2
程序中出现的常量 :
1 : 0 4 : 5 6 : b
2 : 0 5 : 5
3 : 5 6 : b
五 实验中遇到的问题总结
在对判断什么时候是一个词法结束的时候有的时候没有作出正确的判断;
在程序设计之初,没有一个好的规划。
写程序的时候,要适当的多加些注释,一方面方便了别人的阅读,另一方面,也可以理清自己的思路。
六 实验心得体会
1.开始拿到设计要求的时候, 一定要搞搞清楚设计的要求是什么。
2.设计程序的时候,要合理的列出程序
文档评论(0)