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

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

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

通过这次实验,我更深刻的理解了词法分析的原理,词法分析是编译程序

的基础,是为学习语法分析、语义分析以及代码生成打基础。在实验过程中,遇到了许多概念理解不深刻的问题,我重新翻阅了课本,从而更深刻的理解了词法分析的原理, 发现自己的不足之处,在今后的学习中将会有更加明确的目标.虽然只是读程序,但是我觉得还是有一定难度的,需要花一定的时间去理解写程序人的思路和每个函数的意思。

九、源代码

#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,\

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