实验1 词法分析.doc

上传人:asd****56 文档编号:69709444 上传时间:2023-01-07 格式:DOC 页数:5 大小:70KB
返回 下载 相关 举报
实验1 词法分析.doc_第1页
第1页 / 共5页
实验1 词法分析.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《实验1 词法分析.doc》由会员分享,可在线阅读,更多相关《实验1 词法分析.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验1 词法分析 一、实验目的 通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。 二、实验要求 (1)掌握词法分析的实现方法。 (2)上机调试编出的词法分析程序。 (3)源程序可以从键盘输入也可以事先存在文件中 (4)将源程序中的各个单词读出后可以显示在屏幕中也可以存在文件中(包括单词的类别)三、实验题目 用 C/C+ 语言编写以下 C/C+ 子集的词法分析程序。四、实验代码/*测试数据BEGINVAR A+,2A,A3,A4:INTEGER;A1:=1,A2:=123,A3:=123-12;WHILE A2=A3 DO A4:=2

2、34A*123/45+A1iF A1A2 THEN A1:=A4;ELSE A4:=(A1+A2)*A!;END*/#include#include#includeusing namespace std;int letter(char c)/字母if(c=A & c=0 & c=9)return 1;else return 0;int oper(char c)/运算符if(c=+ | c=- | c=* | c=/)return 1;else return 0;int relation(char c)/关系运算符if(c=|c=)return 1;else return 0;int jiefu

3、(char c)/界符if(c=, | c=: | c=;| c=.| c=(| c=)return 1;else return 0;int border(char c)/单词边界if(c=, | c=: | c=;| c= | c=. | c=(| c=)| c=+ | c=- | c=* | c=/ | c=| c= )return 1;else return 0;int illegal(char *s)/找非法字符int i,l=strlen(s);for(i=0;il;i+)if(!letter(si) & !digit(si)return 1;return 0;int identif

4、ier(char *s)/标识符if(illegal(s)return 0;if( letter(s0) ) return 1;else return 0;int unsigned_word(char *s)/无符号数int i,len=strlen(s);for(i=0;ilen;i+)if(!digit(si)return 0;return 1;int r_word(char *s)/保留字if(illegal(s)return 0;else if(!strcmp(s,INTEGER) return 1;else if(!strcmp(s,WHILE) return 1; else if(

5、!strcmp(s,BEGIN) return 1;else if(!strcmp(s,ELSE) return 1;else if(!strcmp(s,VAR) return 1;else if(!strcmp(s,END) return 1;else if(!strcmp(s,IF) return 1;else if(!strcmp(s,DO) return 1;else if(!strcmp(s,THEN) return 1;else return 0;void judge_word(char *s)/判断单词int len=strlen(s);if(len=0)return ;if(r

6、_word(s)cout保留字: sendl;else if(identifier(s)cout标识符: sendl;else if(unsigned_word(s)cout无符号数: sendl;else cout非法单词: sendl;void main()char s100,word100;while(gets(s)int i,j=0,len=strlen(s);for(i=0;ilen;i+)if(border(si)wordj=0;j=0;judge_word(word);if(si=: & si+1=)cout赋值符:sisi+1 & si+1= | si= & si+1= | si=)cout关系运算符: sisi+1endl;i+;word0=0;continue;else if(relation(si)cout关系运算符: siendl;word0=0;continue;else if(oper(si)cout运算符: siendl;word0=0;continue;else if(jiefu(si)cout界符: siendl;word0=0;continue;elsewordj+=si;if(j)wordj=0;judge_word(word);五、运行结果

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁