电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C-minus语言词法分析器实验报告

12页
  • 卖家[上传人]:共***
  • 文档编号:136708118
  • 上传时间:2020-07-01
  • 文档格式:DOC
  • 文档大小:230KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、装订线 编译原理实验报告 题目: C_minus语言词法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 xxxx 指导教师 xxxx 20xx年xx月xx日C_minus语言词法分析器一、实验目的 1.理解词法分析器的设计方法:利用DFA编写相应的程序。2.掌握手工编写词法分析程序的方法。3.复习熟悉以前学过的编程语言 4.通过实验了解编译器词法分析的工作原理二、实验原理 1.文法的概念,DFA的表示方法。 2.词法分析程序的输出和输入:词法分析程序的功能是读入源程序,输出单词符号。单词符号是程序设计语言的比本语法符号,程序设计语言的单词符号一般分为如下几种:关键字,标示符,常数,运算符,界符,单词的输出是二元式的形式,需要知道二元式的表示方法,把得到的二元式写入输出文件。转化图如下:源程序词法分析程序记号文件 3.熟悉单词的描述工具,如正规文法,正规式,以及知道正规文法和正规式的等价性以及他们之间的互相转化。熟悉把正规文法转化为正规式,把正规式转化为NFA以及把NFA转为相应的DFA,最后再把DFA简化,DFA的状

      2、态转化为相应的子程序,最后得到词法分析器4.C语言的基本语法。三、实验要求1、该个词法分析器要求至少能够识别以下几类单词:关键字:elseifintreturnvoidwhile共6个,所有的关键字都是保留字,并且必须是小写;标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID=letter(letter|digit)*;常数:NUM=digitdigit*(.digitdigit*|)(e(+|-|)digitdigit*|),letter=a|.|z|A|.|Z|,digit=0|.|9,包括整数,如123等;小数,如123.45等;科学计数法表示的常数,如1.23e3,2.3e-9等;专用符号:+-*/=!=,()/*/;2、分析器的输入为由上述几类单词构成的程序,输出为该段程序的机内表示形式,即关键字、运算符、界限符变为其对应的机内符,常数使用二进制形式,标识符使用相应的标识符表指针表示。3、词法分析器应当能够指出源程序中的词法错误,如不可识别的符号、错误的词法等。四、实验结果(程序)及分析#include#include#include#defineN10

      3、0typedefstruct charname30; intcode; intaddr;token;/存储刚从文件中读取的字符typedefstructcharname30;intcode;Keyword;typedefstruct charname30;intcode;intaddr;symbol;Keywordkey6=else,1,if,2,int,3,return,4,void,5,where,6;charch;/接受字符FILE*source;/源文件FILE*keytxt;/关键字输出文件FILE*badgetxt;/标识符输出文件FILE*othertxt;/其他单词输出文件FILE*number;interror_count;/错误的个数intaddr_count;/标识符表的指针intlineof;/行号tokencurrent;/暂时存放读入的字符tokenzancun;symbolcurrentsymbol;symbolsymboltableN;/标识符表voiderror(inti);voidmain()voidscan();error_count=0;addr

      4、_count=0;error_count=0;lineof=0;scan();voidscan()inti=0;voidiskeyword();/判断关键字voidisOthers()/判断其他单词voidoutput_1();/关键字输出文件voidoutput_2();/标识符输出文件voidoutput_others();/其他单词输出文件voidIszhushi();voidisnumber();if(source=fopen(Source.txt,r)=NULL)/打开源文件printf(fileopenerror/n);exit(0);if(keytxt=fopen(key.txt,w)=NULL)/打开关键字文件printf(fileopenerror/n);exit(0);if(badgetxt=fopen(badge.txt,w)=NULL)/打开标识符文件printf(fileopenerror/n);exit(0);if(othertxt=fopen(others.txt,w)=NULL)printf(fileopenerrorn);exit(0); if(num

      5、ber=fopen(number.txt,w)=NULL)printf(fileopenerrorn);exit(0); ch=fgetc(source); while(ch!=EOF) for(i=0;i=a&ch=A&ch=0&ch=a)&(ch=A)&(ch0&ch9)current.namei=ch;i+;ch=fgetc(source);zancun=current;for(i=0;i6;i+)for(j=0;j30;j+)if(current.namej=keyi.namej)h=0;elseh=1;break; if(h=0)break;if(h=0) current.code=keyi.code;output_1();elsestrcpy(symboltableaddr_count.name,current.name);symboltableaddr_count.code=10;symboltableaddr_count.addr=addr_count; addr_count+;output_2();voidisOthers()charch1;inti; for(i=0;i30;i+) current.namei=0; switch(ch) case+: current.name0=+; current.code=13; current.addr=-1; output_others(); break; case-: current.name0=-; current.code=14; current.addr=-1; output_others(); break; case*: current.name0=*; current.code=15; current.addr=-1; output_others(); break; case/: current.name0=/; current.code=16;

      《C-minus语言词法分析器实验报告》由会员共***分享,可在线阅读,更多相关《C-minus语言词法分析器实验报告》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.