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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

编译原理词法分析实验一词法分析扫描器的设计实现.docx

1、编译原理词法分析实验一词法分析扫描器的设计实现编译原理程序设计实验报告实验题目班级:计算机1306 姓名: 学号:289实验目标:词法分析扫描器的设计实现实验内容:1. 概要设计1) 主函数:每次从文件中读取一个字符,不是#,继续判断其是否是09数字,是进入isnumber()函数,否继续判断其是否是az或AZ,是进入isalpha()函数,否继续判断是否是空格或换行符,是继续读下一个字符,否进入isother()函数。2) Isnumber():读字符,将数字(包括小数点)全部接收,并存入常数表。3) Isalpha():读字符,将az或AZ(包括下划线)全部接收,与关键字表比较,匹配,输出

2、序号,否则存入标识符表。4) Isother():读字符,将符号都接受,与界符表比较,匹配输出序号,遇到”或分别存入字符表和字符串表。2. 流程图 T F T F T F F3. 关键函数void IsNumber(); /读的是数字void IsAlpha(); /读的是关键字和标示符int IsOther();/读字符、字符串、界符源程序代码:(加入注释)#include#include#include #include using namespace std;/*定义结构体*/typedef struct Token char name20; int state; /状态,为0是标识符,

3、为1是字符,为2是字符串,为3是数字,为4是关键字,为5是界符 Token;typedef struct STR / char name20; int code;STR;STR iT10;STR cT20;STR sT20;STR CT20;STR KT10=int,4,main,5,void,6,if,7,else,8,char,9;STR PT30=,10,14,15,+,16,-,17,*,18,/,19, ,20,21,22,;,23,(,24,),25, ,26,27;/*全局变量声明*/Token CurrentToken; /正在读的tokenToken token200;FIL

4、E *fp; /源文件指针char ch; /读取字符int state=0;/0表示标识符,1表示字符,2表示字符串int iT_i=0;/iT结构体数组下标int cT_i=0;int sT_i=0;int CT_i=0;int index=0;/token的下标/*函数声明*/void IsNumber(); /读的是数字void IsAlpha(); /读的是字母,关键字和标示符int IsOther();/,;+-/*主函数*/int main() int i =0; if(fp=fopen(source.txt,r)=NULL) coutcan not open the sourc

5、e file!nendl; exit(1); ch=fgetc(fp); /文件中读一个字符 while(ch!=#) for(i=0; i=0)&(ch=a)&(ch=A)&(ch=Z)|(ch=_) /关键字和标识符 IsAlpha(); else if(ch= |ch=n) ch=fgetc(fp); else IsOther(); coutendl; for(i=0;i=index;i+) couttokeni.name ; coutendl; coutfinish=0)&(ch=9) CurrentToken.namek+=ch;/将数字放入单词缓冲区 ch=fgetc(fp); b

6、ool flag=1; if(ch=.) CurrentToken.namek+=ch; ch=fgetc(fp); if(ch9) CurrentToken.namek+=ch; flag=0; else while(ch=0)&(ch=9) CurrentToken.namek+=ch;/将数字放入单词缓冲区 ch=fgetc(fp); if(flag=1) strcpy(CTCT_i+.name,CurrentToken.name); strcpy(tokenindex.name,CurrentToken.name ); tokenindex+.state=3; /coutCurrent

7、Token.name endl; cout ; else coutCurrentToken.name =a)&(ch=A)&(ch=Z)|ch=_)/将完整的单词放入单词缓冲区 CurrentToken.namei+=ch; ch=fgetc(fp); flag=0; /判断是否是关键字 for(i=0;i7;i+) if(strcmp(CurrentToken.name,KTi.name)=0) flag=1; /printf(%s n,CurrentToken.name,KTi.code); strcpy(tokenindex.name,CurrentToken.name); tokeni

8、ndex+.state =4; printf( ,KTi.code); break; if(flag!=1) while(ch=a)&(ch=A)&(ch=0)&(ch=9) CurrentToken.namei+=ch; ch=fgetc(fp); /printf(%s n,CurrentToken.name); printf( ); strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =0; int tag=0; for(int j=0;jiT_i;j+) if(strcmp(CurrentToken.name,iTj.

9、name)=0) tag=1; break; if(tag=0) strcpy(iTiT_i.name,CurrentToken.name); iTiT_i+.code=0; /*其它 */int IsOther() int i; for(i=0; i: CurrentToken.name0=; flag=1; ch=fgetc(fp); if(ch =) CurrentToken.name1=; ch=fgetc(fp); break; else break; case: CurrentToken.name0=a&ch=A&ch=Z) CurrentToken.name1=ch; ch=fg

10、etc(fp); if(ch=) CurrentToken.name2=; cout ; strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =1; int tag=0; for(int j=0;j=cT_i;j+) if(strcmp(cTcT_i.name ,CurrentToken.name )=0) tag=1; if(tag=0) strcpy(cTcT_i+.name,CurrentToken.name); ch=fgetc(fp); return 0; else couterror1; exit(1); els

11、e cout=a&ch=A&ch=Z) CurrentToken.namej+=ch; ch=fgetc(fp); if(ch=) CurrentToken.namej+=; cout ; strcpy(tokenindex.name,CurrentToken.name); tokenindex+.state =1; int tag=0; for(int j=0;j=sT_i;j+) if(strcmp(sTsT_i.name ,CurrentToken.name )=0) tag=1; if(tag=0) strcpy(sTsT_i+.name,CurrentToken.name); ch=

12、fgetc(fp); return 0; else couterror3; exit(1); if(CurrentToken.name0!=0) for(i=0;i20;i+) if(strcmp(CurrentToken.name,PTi.name)=0) /printf(%s n,CurrentToken.name,PTi.code); printf( ,PTi.code); strcpy(tokenindex.name ,CurrentToken.name ); tokenindex+.state =PTi.code; break; if(flag!=1) ch=fgetc(fp); /

13、while(ch= |ch=n) ch=fgetc(fp); return 0;程序运行结果:(截屏)输入:Source.txt文本int main (void) int a=1, d=2,c; if(a=d) c=a; a=d; d=c; char ch10=ok;char x,y=a;c=a+d; #输出:目 录第一章 项目总论 - 1 -1.1项目简介 - 1 -1.2可行性研究的范围 - 2 -1.3编制依据 - 2 -第二章 项目建设背景及必要性 - 3 -2.1橡胶密封件项目提出的背景 - 3 -2.2国家产业政策 - 6 -2.3项目建设的必要性 - 8 -第三章 项目优势 -

14、11 -3.1市场优势 - 11 -3.2技术优势 - 16 -3.3组织优势 - 17 -3.4政策优势:关中天水经济区发展规划 - 17 -3.5区域投资环境优势 - 17 -第四章 产品介绍与技术介绍 - 20 -4.1橡胶密封件产品介绍 - 20 -4.2 产品标准 - 21 -4.3 产品特征及材质 - 21 -4.4产品方案 - 26 -4.5产品技术来源 - 27 -第五章 项目产品发展预测 - 28 -5.1产品行业关联环境分析 - 28 -5.2行业竞争格局与竞争行为 - 33 -5.3竞争力要素分析 - 39 -5.4项目发展预测 - 41 -5.5竞争结构分析及预测 -

15、43 -第六章 项目产品规划 - 47 -6.1项目产品产能规划方案 - 47 -6.2产品工艺规划方案 - 47 -6.3项目产品营销规划方案 - 51 -第七章 项目建设规划 - 58 -7.1项目建设总规 - 58 -7.2项目项目建设环境保护方案 - 61 -7.3项目建设节能方案 - 65 -7.4项目建设消防方案 - 66 -7.5项目建设生产劳动安全方案 - 69 -第八章 项目组织实施情况 - 73 -8.1项目组织 - 73 -8.2项目劳动定员和人员培训 - 74 -8.3项目管理与实施进度安排 - 77 -8.4工程招标 - 80 -第九章 项目财务评价分析 - 82 -9.1项目总投资及资金筹措 - 82 -9.2项目财务评价依据及相关说明 - 83 -9.3 项目总成本费用估算 - 84 -9.4 销售收入、销售税金及附加和增值税估算 - 84 -9.5 利润分配估算 - 85 -9.6 借款偿还计划 - 85 -9.7现金流估算 - 85 -9.8不确定性分析 - 86 -9.9风险分析 - 88 -第十章 项目经济、社会效益评价 - 90 -10.1经济效益评价 - 90 -10.2社会效益评价 - 90 -第十一章 可行性研究结论与建议 - 91 -11.1研究结论 - 91 -11.2建议 - 91 -

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

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