当前位置:首页 > 编译原理词法分析实验报告
通过这次实验,我更深刻的理解了词法分析的原理,词法分析是编译程序
的基础,是为学习语法分析、语义分析以及代码生成打基础。在实验过程中,遇到了许多概念理解不深刻的问题,我重新翻阅了课本,从而更深刻的理解了词法分析的原理, 发现自己的不足之处,在今后的学习中将会有更加明确的目标.虽然只是读程序,但是我觉得还是有一定难度的,需要花一定的时间去理解写程序人的思路和每个函数的意思。
九、源代码
#include\#include\#include\#define keyword 8
char *key[keyword]={\#define yunsuan 9
char yun[yunsuan]=\#define fenge 8 char fen[fenge]=\char ch; int i,k; char buff[20]; void output(int ,char*); void scan(FILE *fp) { int j; ch=fgetc(fp);
while(ch==' '||ch=='\\n'||ch=='\\t') {ch=fgetc(fp);}
if(isalpha(ch)) /*输入的是字母,进行 标识符处理*/ {buff[0]=ch; i=1; ch=fgetc(fp);
while(isalnum(ch)) /*如果是字母数字则组合,否则结束*/ { buff[i]=ch; i++;
ch=fgetc(fp); }
buff[i]='\\0'; /*查找保留字*/ fseek(fp,-1,1); j=0;
while((j if(j>=keyword) { output(2,buff); } else { output(1,buff); } } else if(isdigit(ch)) { buff[0]=ch; ch=fgetc(fp); i=1; while(isdigit(ch)) /*如果是数字则整合数字*/ {buff[i]=ch; i++; ch=fgetc(fp);} buff[i]='\\0'; /*整数整合结束*/ fseek(fp,-1,1); output(3,buff); } else if(strchr(fen,ch)>0) /*判断分隔符*/ {buff[0]=ch; ch=fgetc(fp); buff[1]='\\0'; fseek(fp,-1,1); output(5,buff);} else if(strchr(yun,ch)>0) /*判断运算符*/ {buff[0]=ch; if(ch=='=') /*双运算符*/ {ch=fgetc(fp); if(ch=='=') {output(4,\ else {fseek(fp,-1,1); output(4,\ else if(ch=='>') { ch=fgetc(fp); if(ch=='=') {output(4,\ else {fseek(fp,-1,1); output(4,\ else if(ch=='<') { ch=fgetc(fp); if(ch=='=') {output(4,\ else {fseek(fp,-1,1); output(4,\ else if(ch=='!') { ch=fgetc(fp); if(ch=='=') {output(4,\ else {fseek(fp,-1,1); output(0,\
共分享92篇相关文档