




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省聊城市2024-2025学年高二下学期期中教学质量检测物理试卷(含解析)
- 河北省邢台市质检联盟2024-2025学年高二下学期4月期中物理试题(含答案)
- 安徽省宿州市2024-2025学年高二下学期4月期中化学试题 (含答案)
- 2025年甘肃省兰州市学府致远学校九年级适应性考试化学试卷(含答案)
- 2024-2025人教版高二下学期期末复习之电磁感应
- 智慧城市安防系统规划保障城市安全的新篇章
- 人造板家具结构创新创业项目商业计划书
- 高效固体制剂造粒机行业跨境出海项目商业计划书
- 自助咖啡机维护服务企业制定与实施新质生产力项目商业计划书
- 网红美妆体验店行业跨境出海项目商业计划书
- 2025年湖南省中考英语试卷真题(含答案)
- 2024年司法局司法辅助岗招聘考试笔试试题(含答案)
- 2025年人力资源管理师考试试卷及答案
- 2025-2030中国空调行业发展分析及发展趋势预测与投资风险研究报告
- 北方华创招聘笔试题库2025
- 储能站施工组织设计施工技术方案(技术标)
- 楼梯 栏杆 栏板(一)22J403-1
- 2024年河南省豫地科技集团有限公司招聘笔试参考题库含答案解析
- 2024年山西焦煤西山煤电集团招聘笔试参考题库含答案解析
- 2023北京第二次高中学业水平合格性考试信息技术试卷试题(答案详解)
- 采油工程课程设计
评论
0/150
提交评论