欢迎来到天天文库
浏览记录
ID:33591852
大小:241.23 KB
页数:4页
时间:2019-02-27
《类高级语言编译器的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、万方数据第16期总第194期2009年8月内蒙古科技与经济InnerMongoliaScienceTechnology&EconomyNo.16,the194thissueAug.2009类高级语言编译器的设计与实现张岚,武保锭(内蒙古财经学院计算机信息管理学院,内蒙古呼和浩特010051)摘要:编译器的设计与实现是一个极其复杂的过程。为了说明编译器的基本原理,文章采用了一种类高级语言的高级语言,定义了它的规则,设计实现了该语言的编译器前端,并分别从词法分析、语法分析和语义分析等几个方面进行了设
2、计。关键词:词法分析,语法分析;语义分析中图分类号:TP391文献标识码:A文章编号;1007--6921(2009)16一0075一03编译原理是计算机科学与技术专业的一门专业主干课程,在大学教学中占有很重要的地位。但该课程中会涉及很多诸如自动机等抽象概念,学生在学习是很难理解,也影响了他们对该课程的兴趣。在教学过程中引入实验教学不仅能提高学生的动手能力,也能很好的辅助编译原理课程教学。很多高校都开设了编译原理的相应实验,但大部分以小实验为主,综合性试验比较少,对于开设了综合实验(一般为设计一
3、个小型的编译器)的学校,由于实验对学生的综合能力要去较强,实现起来很困难。但对于想要了解编译软件制作和设计的人员来说,设计时考虑到的相关因素太多,设计实现过于复杂,设计过程中由于考虑到了很多相关的上下文内容,并且在实现过程中使用了很多的优化技巧,大部分人理解不了。考虑到以上的因素,笔者准备设计一个类高级语言的编译器,此编译器对编译的高级语言做了一定程度的简化,可以很好地了解编译的整个过程。也可以在此编译器的基础上通过增加一些功能来逐步完善编译器,最终掌握全部的编译技术。笔者采用的类高级语言为类高
4、级语言。它拥有高级语言所拥有的一些基本数据类型。能满足用户的大部分需求。1类高级语言描述该类高级语言包括整型、字符类型、布尔类型这些基本的数据类型,为了简化设计本语言中没有数组类型、指针类型、文件和集合。该语言的文法如下。K一>main()PprocedureL.P一>intD;P’P一>charDIP’P一>bootD,P’P’一>PP’P,一>eD一>idD’D’一>·idD’D’>£L>SL’L’>‘SL’L’>£S2>id==ES>ifBthenSelseSS一>begin(hum)Se
5、ndS>{L)S>whileBdoSE>TE’E’>+TE’E’>一TE’E’>eT>FT’T’>*FT’T’>/FT’T’>£F>(E)F>id.F>humB>RB’B’>8,-RB’B’一>
6、
7、RB’R>IZZ>(B)Z>trueZ>falseZ一>idrelopErelop一><=relop一>=一relop一>J一2编译器设计2.1编译器前端整体设计思想编译器设计我们以编译器前端为主。具体包括如下几个逻辑部分的设计;词法分析部分、语法分析收稿日期:2009一04—12作者
8、简介:张岚(1979一),女,内蒙古呼和浩特市人,内蒙古财经学院讲师。·75·万方数据总第194期内蒙古科技与经济部分、语义分析部分和中间代码生成部分。各个部分完成一定的功能。编译程序结构图如图1。苏盯序粥蠢蹲涵滟潦词法分析程序讲法语义分析程j}中问代码生成围1编译程序结构图2.2各逻辑部分的功能2.2.1词法分析词法分析阶段主要是对输入的源程序进行单此级别的处理,将原程序的输入串形式转化为计算机可以理解的单词形式。这个部分主演完成的功能如下:删除空格、注释和无用符号;建立各类符号表,为词法分析
9、和语法、语义分析服务;给出词法错误。2.2.2语法分析语法分析阶段是编译器前端设计的一个主要部分。它完成对单词的语法结构的分析。该阶段以词法分析的结果作为输入,分析完成后,生成语法树。该阶段的主要任务为:与单词相关的信息记录到符号表中;类型检查;错误处理。2.2.3语义分析语义分析阶段主要检查源程序的语义是否正确。同时,为代码阶段生成一些类型信息。2.3各逻辑部分具体的设计2.3.1词法分析词法分析的输入为源程序,输出为计算机的内部表示形式单词序列,该单词序列可以被计算机识别,为以后的语法分析和
10、语义分析服务。为了完成词法分析阶段的功能,在此部分我们设计了多张表格,包括用来存储单词的符号表和关键字表。词法分析阶段的单词可以分为下面几类:标识符、关键字、数字、运算符和界符。对于标识符设立一张标识符表,该表可以设计为结构体类型,具体设计为,由于关键字和标识符的定义都符合标识符的定义(字母开头的字母数字序列),为了区别这两者,特别设置了关键字表,表中存储所有的关键字,当一个单词被识别为标识符时,可以再查一下关键词表,如果该单词在关键词表中,这说明该但此时关键词而不是标识符,反之,该但此为标识符
此文档下载收益归作者所有