




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一:词法分析实验识别程序的设计与实现1.实验目的:掌握简单识别程序的分析、设计与实现的基本技术与一般方法。2.实验内容:假设某种语言标识符(Identifier)由下划线或字母开头的字母数串,编写它的识别程序。对它的其所有字符进行逐个判断,分别输出标识符和非标识符。3.实验步骤: (1)分析:程序输入一个字符串,对它的其所有字符进行逐个判断,分别输出标识符和非标识符。 (2)程序流程图:代码实现VC代码(VS2010编程,同样适用于VC6.0)#include#includeusing namespace std;int main() int i=0; int k=0; int m=0; int n=0; int p=0; char a50=0; /存初始化后的字符串 char b50=0; /存放是除下滑线外的标志符的字符 char c50=0; /存放数字,单个数字是标示符 char d50=0; /存放下划线,单个下划线是标示符 char e50=0; /存放是除数字外的非标识符的字符 cout初始化字符串s,right=1.endl; cout请输入字符串(以#号结束,字符串中请不要含有#号,有#号的话就可判断为非标示符):endl; for(int i=0;iai; if(ai=#) break; if(a0=a&a0=A&a0=Z)|a0=_) /判断第一个字符是否是字母或者下划线 for (int t=0;t=a&at+1=A&at+1=0)&(at+1=9) /识别是非标识符单个数字的字符 cm=at+1; /存放是单个数字的字符 m+; else if(at+1=_) /识别是非标识下划线符单个数字的字符 dn=at+1; /存放是下划线的字符 n+; else ep=at+1; /存放是非标识符的字符 p+; cout-判断结果-endl; cout是标识符的字符:a0; for (int i=0;i50;i+) coutbidi; coutendl; cout是非标识符的字符:; for (int i=0;i50;i+) coutciei; coutendl; if(e0=#&d0!=_) cout该字符串是标示符!endl; cout输出该标示符:; for (int i=0;i50;i+) coutai; coutendl; else cout该字符串不是标示符!endl; cout输出该非标示符:; for (int i=0;i50;i+) coutai; coutendl; cout-字符串判断完毕-endl; else cout出错right=0endl; for (int t=0;t=a&at+1=A&at+1=0)&(at+1=9) /识别是非标识符的字符 cm=at+1; /存放是单个数字的字符 m+; else ep=at+1; /存放是非标识符的字符 p+; cout-判断结果-endl; cout是标识符的字符:; for (int i=0;i50;i+) coutbi; coutendl; cout是非标识符的字符:a0; for (int i=0;i50;i+) coutciei; coutendl; cout该字符串不是标示符!endl; cout输出该非标示符:; for (int i=0;i50;i+) coutai; coutendl; cout-字符串判断完毕-endl; system(pause);return 0; Vc6.0新建空工程+源文件新建,工程,win32 console application,命名,空工程。新建,文件,C+Source File,命名,确定。Vc6.0编程VC代码以下为参考代码VC6代码:#include using namespace std;int main() int k=0; int m=0; char a50=0; /存放字符串 char b50=0; /存放标志符 char d50=0; /存放非标识符 cout请输入字符串(以$结束):endl; for(int i=0;iai; if(ai=$) break; if(a0a&a0A&a0Z)|a0=_) /判断第一个字符是否是字母或者下划线 for (int t=0;t=a&at+1=A&at+1=0)&(at+1=9) /识别标识符 bk=at+1; k+; /break; else /非标识符 dm=at+1; m+; cout-判断结果-endl; cout标识符是:a0; for (i=0;i50;i+) coutbi; coutendl; cout非标识符是:; for (i=0;i50;i+) coutdi; coutendl; cout-字符串判断完毕-endl; else cout数据输入有误!endl; return 0;有小bug,可以完善。用C+写一个吧. #include int parse( std:string init ) std:string S = init; int right = 1; if ( S0 = a & S0 = A & S0 = a & Si = A & Si = 0 & Si =9 ) ) right = 0; break; while( Si+ ); else right = 0; return right;以上是按你的流程图写的代码,不过你的流程图是有问题的,当初始化的字符串只有一个字符时,程序执行结果可能不是你期望的结果.以下是修改后的代码,但与图程图不完全一至. #include int parse( std:string init ) std:string S = init; int right = 1; if ( S0 = a & S0 = A & S0 = a & Si = A & Si = 0 & Si =9 ) ) right = 0; break; else right = 0; return right;C语言在编一个#includevoid main()int m=0;int i=0;char S50=0 ;char S150=0;char S250=0;printf(输入语言标示符序列:);for(i=0;i=a&S0=A&S0=Z)|(S0=_)for(int i=0;i=a&Si=A&Si=0&Si=9) S1i=Si; else S2i=Si; m=i;if(S20!= ) p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑施工材料现场验收方案
- 宿舍楼内部通道与防火设计方案
- 建筑工程项目机电设备调试与运行方案
- 影视艺术综论学习材料12课件
- 水电基本知识培训总结课件
- 二零二五年彩钢构件加工及施工总承包协议
- 二零二五年度商业地产融资居间服务专项合同
- 二零二五年度抵债协议书(债权重组)专业版
- 2025版电梯设备采购与安全监管协议
- 二零二五年度建筑钢筋焊接技术指导与施工合同
- 2022年高校教师资格证(高等教育心理学)考试题库深度自测300题加下载答案(四川省专用)
- 地基基础工程施工方法及基础知识课件
- 金风15兆瓦机组变流部分培训课件
- 2017年9月国家公共英语(三级)笔试真题试卷(题后含答案及解析)
- 膀胱镜检查记录
- 2021年西安陕鼓动力股份有限公司校园招聘笔试试题及答案解析
- 化工装置静设备基本知识
- 电脑节能环保证书
- 江西师范大学研究生院非事业编制聘用人员公开招聘1人(专业学位培养办公室助理)(必考题)模拟卷
- 2021社会保险法知识竞赛试题库及答案
- 罐头食品加工工艺课件
评论
0/150
提交评论