编译原理词法分析程序c语言实现,编译原理词法分析实验C语言实现..doc

编译原理词法分析实验C语言实现.

编译原理词法分析器实验报告

2009~2010学年 第二学期 2007级 软件工程专业

班级 学号 姓名:应慧杰

实验目的:

结合课堂上学习的理论知识,通过C++实现词法分析器,更加深入的掌握词法分析;同时也可以更加了解词法分析的原理。

实验过程:

1、主程序分析:

程序一开始要求读入一个文本文件,然后判定该文本文件是否成功打开和读入,然后进行词法分析;

2、词法分析过程:

根据输入单词的第一个有效字符(有时还需读第二个字符),判断单词类,产生类号。对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,比较之后输出结果。

3、实验过程中的问题:

一开始实验很生疏,很难把理论知识融汇到编程上,后来通过多次看PPT和书本内容,渐渐把握到诀窍;

不明确输入输出;这个也是通过PPT解决;

和以前编其他东西很不一样,一开始不知道如何下手;通过网上的成熟代码学习了下。

4、实验代码:

#include

#include

#include

#include

#include

#include

#define NULL 0

FILE *fp;

char ch;

char *keyword[34]={"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", "printf",

"union","unsigned","void","volatile","while","main"};

char *operatornum[6]={"+","-","*","/","++","--"};

char *comparison[8]={"",">=","<>","==","!="};

char *interpunction[8]={",",";",":=",".","(",")","{","}"};

char *biaoshifu[6]={"%","$","^","&","_","#"};//特殊标识符

char *zhushifu[3]={"//","/*","*/"};//注释符

char *luoji[3]={"&&","||","!"};//逻辑运算符

//

bool search(char searchstr[],int wordtype)

{

int i;

switch (wordtype)

{

case 1:for(i=0;i<=33;i++)

{

if(strcmp(keyword[i],searchstr)==0)

return(true);

}

case 2:{

for(i=0;i<=5;i++)

{

if(strcmp(operatornum[i],searchstr)==0)

return(true);

}

break;

}

case 3: {

for(i=0;i<=7;i++)

{

if(strcmp(comparison[i],searchstr)==0)

return(true);

}

break;

}

case 4: for(i=0;i<=7;i++)

{

if(strcmp(interpunction[i],searchstr)==0)

return(true);

}

break;

case 5: for(i=0;i<=5;i++)

{

if(strcmp(biaoshifu[i],searchstr)==0)

return(true);

}break;

case 6: for(i=0;i<=2;i++)

{

if(strcmp(zhushifu[i],searchstr)==0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值