编译原理课程设计报告-语法高亮转换.docVIP

编译原理课程设计报告-语法高亮转换.doc

  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中显示出来 设计思想和实现方法 程序分析 词法分析是编译的第一个阶段,它的主要任务是从左到右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。 词法分析工作可以是独立的一遍,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件做为语法分析程序的输入而继续编译过程。然而,更一般的情况,常将词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,则调用该子程序。词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或说直到下一个单词的第一个字符为止。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.cpp | cpp xxx.html的方式得到加亮功能的html文件。下图是所生成的html文件 (命名为www.html)”/”和”*”的任意字符 ,F为接受状态 多行注释是以“/*”作为开始标记的,当分析器读到“/*”时,可以执行相应动作(见源代码)。 对多行注释的识别是本程序的一个难点,所以可以先定义好其它的操作动作,将各部分操作先行测试,直到实现功能,以下是未对多行注释颜色显示的结果: 注:其中的多行注释内容未高亮显示,高亮显示见结果图。 存在问题及分析 在cpp源文件中,有“”“”两个普通的比较运算符,但经分析器的翻译却未能正确显示。 分析后得出:在HTML语言中,存在着一些转义的特殊字符,例如“”,“”,“”,“"”,空格符等,因此,在Lex源程序中就必须有相应处理的操作代码,这样才能在HTML文件中正确的显示出来。以下是操作中对特殊字符的翻译规则: {printf(lt;);} {printf(gt;);} {printf(amp;);} \ {printf(quot;);} {printf(nbsp;);} 总结 编译原理是一门很重要的课程。我们平常写小的C++语言程序都会感到很困难,而编译原理则是关于编写编译器的技术,难度非常的大。因此,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成。通过设计编制调试一个具体的词法分析程序,词法分析原理的理解掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。同时通过此程序提高分析问题,解决问题的实际能力,进一步的掌握分析调试程序的方法。并通过此程序的编制,为以后设计更加复杂的程序打下基础。陈意云 张昱李建中 姜守旭编译原理机械工业出版社 ??Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman,《编译原理技术与工具 CompilersPrinciples,Techniques and Tools》,人民邮

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档