一种简单的编译器的设计

一种简单的编译器的设计摘要:基于编译理论与虚拟机技术,经过词法分析、语法分析、语义分析等过程,设计一个简单的编译器,将某一种源程序编译成目标程序,以验证结果的正确性。关键词:编译器;词法分析;语法分析;语义分析中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)33-1508-03TheDesignofaSimpleCompilerCHENGHua(JiangsuFoodScienceCollege,Huaian223003,China)Abstract:BasedoncompiletheoryandVirtualMachinetechnology,totransfersourceprogramintodestinationprogrambyLexicalanalyse,Parse,Semanticanalyse,andtotestandverifytheresults.Keywords:compiler;lexicalanalyse;parse;semanticanalyse1设计背景目前,计算机无纸化考试系统的应用越来越广,选择题、判断题的自动评分基本完善,但对程序修改题、编程题等考题来说,运用简单地看结果或指定行、段等办法评分,不能从根本上达到客观、公正地评阅考生答案。要想让计算机评分具有智能化,就必须让计算机具备“思想”,即让评分系统能“看懂”考生答案,能“感受”设计成果的优越之处与不足所在,能给“过程分”及“设计创新分”,而绝不单纯依赖“运行结果”。本文以此为切入点,基于编译理论与虚拟机技术,自主设计有限元编译系统,分课程、分模块,能自行分析、编译考生答案(如程序代码),进而判断其正确性、合理性及优越性。2编译程序的一般结构编译程序结构框图如图1。3编译器的设计3.1建立符号表及其管理程序建立符号表,收录某种语言(C、PASCAL等)的所有字符集,允许在编译的各个阶段插入或查找名字的相关信息,并且能够反映出名字所在的位置,编制相应的程序来实现对字符表的各种操作,主要操作有:查找操作、插入操作、定位操作、重定位操作。3.2建立一个词法分析器图1核心技术是处理单词符号的种类及内部的编码(需要设计翻译表)、行计数器等,把词法分析器作为语法分析器调用的函数,词法分析器以二进制的形式输出单词符号的类别编码和属性值。词法分析器依据源语言的构词规则对源语言进行分析,依次读入原程序中的每个字符,对构成原程序的字符串进行分解,识别出每个具有独立意义的字符串(相对记号叫做单词),为其构造记号,形成记号流,如果符号表中没有各记号对应的单词,则把单词添加到符号表中,添加时为记号增加一个属性值即一个指针,指向符号表中该记号对应的单词。在词法分析中,还进行词法检查。如果词法分析器从源程序读入不合法的字符要做错误处理,显示或打印错误信息,并跳过这个字符,继续识别和分析下一个字符。3.3建立一个语法分析器先要消除文法中的左递规,从而采用预测分析的方法实现一个语法分析器。把语法分析器设计成层次结构,它把记号流按语言的语法结构层次分组,以形成语法短语,源程序的语法短语用分析树表示。然后根据源语言的语法规则进行语法分析,从源程序记号序列中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成做准备。在分析过程中,分析器采用自顶向下的方法为词法分析器生成的记号序列建立分析树,验证这个记号序列是不是该语言的一个句子,若是,则输出该句子的分析树,若不是,则表明输入的记号序列中存在错误,需要报告错误的性质和位置。3.4建立一个语义分析器该部分要对语句的意义进行检查,以保证程序各部分能够有机的结合在一起,并为以后生成目标代码收集必要的信息。语义分析使用语法分析确定的层次结构来表示各语法成分(比如表达式和语句等),依据源语言的语义规则进行工作。其中一个重要的任务是类型检查,按照语言的类型检查规则检查每个运算符相关的运算对象,看其类型是否一致、合法,如果类型不一致则进行类型转换,可以做显示或隐式转换。3.5中间代码生成及优化经过词法、语法、语义分析(这三个阶段为分析阶段)后,进入综合阶段。这个阶段的任务是根据所制定的源语言到目标语言的对应关系,对分析阶段所产生的中间形式进行综合加工,从而得到与源程序等价的目标程序。经过语法分析和语义分析后将源程序生成一种中间表示形式,也就是中间代码,然后对该中间代码进行优化,使之占用内存少、运行快,从优化...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?