好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

2023年编译原理词法分析器实验报告.doc

20页
  • 卖家[上传人]:M****1
  • 文档编号:399210886
  • 上传时间:2023-09-18
  • 文档格式:DOC
  • 文档大小:196KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 北华航天工业学院《编译原理》课程实验报告课程实验题目: 词法分析器实验 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B08512 作 者 学 号: 18 作 者 姓 名 : 李桂丁 指导教师姓名: 李建义 完 成 时 间 : 2023年3月26日 一、实验目的了解词法分析程序的两种设计方法:1.根据状态转换图直接编程的方式;2.运用DFA编写通用的词法分析程序二、实验内容及规定1.根据状态转换图直接编程编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文献输出在此,词法分析程序作为单独的一遍,如下图所示具体任务有:(1)组织源程序的输入(2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文献(3)删除注释、空格和无用符号(4)发现并定位词法错误,需要输犯错误的位置在源程序中的第几行。

      将错误信息输出到屏幕上5)对于普通标记符和常量,分别建立标记符表和常量表(使用线性表存储),当碰到一个标记符或常量时,查找标记符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表标记符表结构:变量名,类型(整型、实型、字符型),分派的数据区地址注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入常量表结构:常量名,常量值2.能对任何S语言源程序进行分析 在运营词法分析程序时,应当用问答形式输入要被分析的S源语言程序的文献名,然后对该程序完毕词法分析任务3.能检查并解决某些词法分析错误词法分析程序能给出的错误信息涉及:总的犯错个数,每个错误所在的行号,错误的编号及错误信息4. 本实验规定解决以下两种错误(编号分别为1,2): 1:非法字符:单词表中不存在的字符解决为非法字符,解决方式是删除该字符,给犯错误信息,“某某字符非法” 2:源程序文献结束而注释未结束注释格式为:/* …… */三、实验程序设计说明1.实验方案设计2.程序源代码#include#include#include#includeusing namespace std;string keywords[20]={"include","void","main","int","char","float","double","if","else","then","break","continue","for","do","while","printf","scanf","begin","end","return"};char aa[99999]=" ";string id[10000];int pp=0;string nu[10000];int =0;void initscanner() //程序初始化:输入并打开源程序文献和目的程序文献,初始化保存字表{ int i=0; FILE *fp; if((fp=fopen("a.txt","r"))==NULL) { printf("Open error!"); exit(0); } char ch=fgetc(fp); while(ch!=EOF) { aa[i]=ch; i++; ch=fgetc(fp); } fclose(fp);}int decide1(char a) //判断是否是字母{ if((a>='a'&&a<='z')||(a>='A'&&a<='Z')) return 1; else return 0;}int decide2(char a) //判断是否是数字{ if(a>='0'&&a<='9') return 1; else return 0;}int isalpha(int st) //辨认保存字和标记符{ char wordbuf[20]=" "; int n=0; for( ; ; ) { wordbuf[n]=aa[st]; st++; n++; if((decide2(aa[st])==1)||(decide1(aa[st])==1)||(aa[st]=='_')) wordbuf[n]=aa[st]; else break; } int flag=0; for(int k=0;k<20;k++) { if(strcmp(keywords[k].c_str(),wordbuf)==0) flag=1; } if(flag==0) { int flagg=-1; for(int t=0;t

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.