ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:58.70KB ,
资源ID:15922200      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15922200.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮大三上编译原理词法分析实验报告Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮大三上编译原理词法分析实验报告Word下载.docx

1、通过编写LEX源程序,利用LEX软件工具自动生成词法分析程序。2.检测代码分析1、Hello World简单程序输入:2、较复杂程序输入:3. 异常程序输入检测三, 源代码#include cctypestringvectorcstdiocstdlibcstringfstreamiostreamalgorithmusing namespace std;const int FILENAME=105;const int MAXBUF=82;const int L_END=40;const int R_END=81;const int START=0; /开始指针vector Key; /C保留的关

2、键字表class funtion /词法分析结构public: /变量声明 char filenameFILENAME; /需要词法分析的代码文件名 ifstream f_in; char bufferMAXBUF; /输入缓冲区 int l_end, r_end, forward; /左半区终点,右半区终点,前进指针, bool l_has, r_has; /辅助标记位,表示是否已经填充过缓冲区 vector Id; /标识符表 char C; /当前读入的字符 int linenum, wordnum, charnum; /行数,单词数,字符数 string curword; /存放当前的

3、字符串 /函数声明 void get_char(); /从输入缓冲区读一个字符,放入C中,forward指向下一个 void get_nbc(); /检查当前字符是否为空字符,反复调用直到非空 void retract(); /向前指针后退一位 void initial(); /初始化要词法分析的文件 void fillBuffer(int pos); /填充缓冲区,0表示左,1表示右 void analyzer(); /词法分析 void token_table(); /以记号的形式输出每个单词符号 void note_print(); /识别并读取源程序中的注释 void count_nu

4、mber(); /统计源程序汇总的语句行数、单词个数和字符个数 void error_report(); /检查并报告源程序中存在的所有错误 void solve(char* file); /主调用函数;void welcome() printf(n*n); printf( * Welcome to use LexicalAnalyzer *n* By schnee BUPT Date: 2011/20/10 *n*nnnvoid initKey() Key.clear(); Key.push_back(autobreakcasecharconstcontinueKey.push_back(d

5、efaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizeofstructswitchtypedefunionunsignedvoidvolatilewhilevoid funtion:get_char() C=bufferforward; if(C=EOF)return ; /结束 if(C=n)linenum+; /统计行数和字符数 else if(isalnum(C) charnum+; forward+; if(bufferforward=EOF) if(forward=l_e

6、nd) fillBuffer(1); forward+; else if(forward=r_end) fillBuffer(0); forward=START; get_nbc() while(C= | C=t0) get_char();initial(char* file) Id.clear(); /清空标识符表 l_end=L_END;r_end=R_END; /初始化缓冲区 forward=0; l_has=r_has=false; bufferl_end=bufferr_end=EOF; fillBuffer(0); linenum=wordnum=charnum=0; /初始化行数

7、,单词数,字符数fillBuffer(int pos) if(pos=0)/填充缓冲区的左半边 if(l_has=false) fin.read(buffer, l_end); if(fin.gcount()!=l_end) bufferfin.gcount()=EOF; else l_has=false; else /填充缓冲区的右半边 if(r_has=false) fin.read(buffer+l_end+1, l_end); bufferfin.gcount()+l_end+1=EOF; else r_has=false;retract() if(forward=0) l_has=t

8、rue; /表示已经读取过文件,避免下次再次读取 forward=l_end-1; else forward-; r_add=true; forward-;analyzer() FILE *token_file, *note_file, *count_file, *error_file; token_file=fopen(token_file.txt, w note_file=fopen(note_file.txt count_file=fopen(count_file.txt error_file=fopen(error_file.txt int i; curword.clear(); ge

9、t_char(); get_nbc(); if(C=EOF)return false; if(isalpha(C) | C=_)/关键字和标识符的处理,以字母或下划线开头 curword.clear(); while(isalnum(C) | C= curword.push_back(C); get_char(); retract(); wordnum+; Id.push_back(curword); for(i=0; iKey.size(); i+) if(Keyi=curword) break; /输出每一个单词的标识符 if(iKey.size() /关键字 fprintf(token_file, %8d-%20s %sn, wordnum, KEY WORD, curword); elseIdentifier else if(isdigit(C)/无符号数的处理 while(isdigit(C)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1