[编译原理实验1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[编译原理实验1

编译原理实验报告 姓名:李宏涛 班级:计科(2) 学号: 基于C语言词法分析器的设计 摘要 首先对编译原理进行概括的介绍,1主要是描写设计内容及设计要求,2介绍设计的基本原理,3对程序设计的总体方案及各模块设计做了介绍,4对程序进行测试。 引言: 《编译原理》是国内外各高等院校计算机科学技术类专业,特别是计算机软件专业的一门重要专业课程。该课程系统地向学生介绍编译程序的结构、工作流程及编译程序各组成部分的设计原理和实现技术。由于该课程理论性和实践性都比较强,内容较为抽象复杂,涉及到大量的软件设计算法,因此,一直是一门比较难学的课程。为了使学生更好地理解和掌握编译技术的基本概念、基本原理和实现方法,实践环节非常重要,只有通过上机进行程序设计,才能使学生对比较抽象的教学内容产生具体的感性认识,增强学生综合分析问题、解决问题的能力,并对提高学生软件设计水平大有益处。 编译原理涉及词法分析,语法分析,语义分析及优化设计等各方面。词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行语法分析的程序或者函数被称为词法分析器(Lexical analyzer简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。 词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符接着一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用Lex等工具自动生成。词法分析是所有分析优化的基础,涉及的知识较少,比如状态转换图等,易于实现。本次实验程序设计语言是C语言。 实验内容: 设计一个程序,调试、编译,实现词法分析的功能,识别各单词或字符所属类别,并显示在屏幕上。 (1). 运行词法分析实验一,学习样例程序。 (2). 通过理解正规式、有限自动机原理,编制程序。此程序应具有如下功能: 将样例程序中所有注释字母均大写;(即在注释对/*…*/之间的所有字母。); 将样例程序加行号。 2.设计方法: 词法分析器: 逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行 。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 要求:利用该词法分析器完成对源程序字符串的词法分析。输出形式是源程序的单词符号二元式的代码,并保存到自己命名的文件中。 单词符号及种别编码 单词符号 种别编码 单词符号 种别编码 main 1 变量符号 20 if 2 = 45 int 3 46 for 4 47 while 5 = 48 do 6 = 49 return 7 == 50 … … ! 51 # 40 % 52 + 41 53 - 42 …… …… 单词符号分类: 单词是程序设计语言的基本语法单位和最小语义单位。单词符号一般分为五大类 关键字begin,end,if,then,else,while,write,read, do, call,const,char,until,procedure,repeat等 (2) 运算符:+,-,*,/,=等 (3) 界符:{,},[,],;,,,.,(,),:等 (4) 标识符 (5) 常量 实验结果图: 初始界面: 显示分析结果: out.txt结果: 换行操作: 结果如图: 实现了显示行号和注释大写 实验代码: #include stdio.h #include string.h #include stdlib.h struct keywords //关键字结构体 { char name[10]; int num; }; struct relation //运算符、关系运算符结构体 { char name[4]; int num; }; struct keywords test[18]={ {main,1},{if,2},{int,3},{for,4},{while,5},{do,6}, {retuen,7},{break,8},{continue,9},{stdio.h,10}, {include,11},{case,12},{float,13},{switch,14}, {void,1

文档评论(0)

xiaoyi2013 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档