高亮转换编译原理课程设计报告.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文档。上传文档
查看更多
高亮转换-编译原理课程设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 编译原理 课程设计报告 题目名称 高亮转换 班 级 学 号 姓 名 编写时间 课程设计题目名称 语法高亮转换 课程设计任务目的与任务 用词法分析器的自动生成器Flex编写一个语法高亮转换软件,要求该软件能将 C++源代码文件(后缀为cpp的文件)转换成网页文件(后缀为html的文件)。 转换成的目标文件与源文件代码格式不得改变,并且在网页中能高亮显示C++源代码。 源文件中的关键字、多行注释、单行注释、编译预处理、变量等不同局部用不同种颜色在html中显示出来 设计思想和实现方法 程序分析 词法分析是编译的第一个阶段,它的主要任务是从左至右地逐个字符地对源程序进展扫描,按语言的词法规那么,识别出各类单词符号从左到右逐个字符地对源程序进展扫描,产生一个个单词序列,用以语法分析。 词法分析工作可以是独立的一遍,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件做为语法分析程序的输入而继续编译过程。然而,更一般的情况,常将词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,那么调用该子程序。词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或说直到下一个单词的第一个字符为止。 设计思想 词法分析器的源程序实际上是一个字符序列,词法分析器读取该序列并根据构词规那么将其转换为记号流。词法分析器至少需要完成以下三个任务: 〔1〕 滤掉源程序中的注释和无用成分〔空格、TAB等〕; 〔2〕 输出记号,供语法分析器使用; 〔3〕 识别非法输入,并将非法输入作为出错记号提供应语法分析器,以便出错处理。 在开场状态,首先要读进一个字符,这可以通过调用一个读字符子程序来完成。假设读入的是一个空格〔包括blank,TAB,newline〕就跳过它,再继续读字符,直到读进一个非空字符为止。接下去的工作是根据所读进的非空字符转相应的程序段进展处理。在标识符状态,识别并组合出一个标识符之后,还必须参加一些动作,以便查保存字表,确定识别出的单词符号是保存字,还是用户自定义标识符,并输出相应的记号。本程序设计中包括的cpp文件保存字有:数字、数、字母、标识符、空格、换行、关键字、引号引用、预处理关键字、单行注释标志//、运算符等。 实现方法 Lex程序包括声明、翻译规那么、辅助过程三个局部,程序中的保存字可以都声明中用正规式定义。本词法分析器实现的功能是保持源cpp文件格式并高亮显示各属性代码,因此,当词法分析读到注释、引用、关键字、预处理时需在html文件中前后参加相应的字符显示格示〔即颜色的不同〕,这一要求的实现只要在翻译规那么中应参加相应操作代码即可。 程序说明 1〕声明局部 声明中包涵了头文件、常量、过程声明及正规定义,对于数字、数、字母、标识符、空格、换行等可以定义成如下: NUMBER {DIGIT}+ LETTER [a-zA-Z] WORD {LETTER}+ WHITESPACE [ \t]+ DELIMITER [,(){}[]-+*%/=~!|?:;.#] NL \r?\n 其它的正规定义可以参看附录中的Lex源代码。 2〕翻译规那么局部 本词法分析器需高亮显示的主要包括多行注释、单行注释、引号引用、编译预处理、关键字五个方面的内容,其它的按网面默认颜色显示。而翻译规那么中最复杂的局部就是多行注释的识别,其它的显示只需在前后用printf输出涵数输出相应的颜色控制即可。 3〕辅助过程局部 在主程序的实现局部还应该在开头和结尾参加html语言的代码标记,如htmlheadbody等标记,中间嵌插yylex()实别源cpp文件。 程序运行结果 首先用flex根据123.lex生成一个lex.yy.c文件,用gcc〔Dev-c++的编译器〕编译成a.exe , 然后用type xxx的方式得到加亮功能的html文件。〕在浏览器中翻开的颜色加亮图,图中可以观察的出源码cpp文件格式未变,对于多行注释、单行注释、引号引用、编译预处理和关键字以不同种颜色高亮显示出来了。

文档评论(0)

iphone0b + 关注
官方认证
文档贡献者

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

认证主体如皋市辰森技术服务工作室
IP属地江苏
统一社会信用代码/组织机构代码
92320682MA278Y740Q

1亿VIP精品文档

相关文档