编译原理实验报告分析

2024-05-29

编译原理实验报告分析(精选5篇)

编译原理实验报告分析 篇1

编译原理实验报告

报告完成日期 2018.5.30

一. 组内分工与贡献介绍

二. 系统功能概述;

我们使用了自动生成系统来完成我们的实验内容。我们设计的系统在完成了实验基本要求的前提下,进行了一部分的扩展。增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。

三. 分系统报告;

一、词法分析子系统

词法的正规式:

标识符

<字母>(<字母>|<数字字符>)* 十进制整数

0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 八进制整数 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六进制整数 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和分隔符 +| * | / | > | < | = |(|)| <=|>=|==; 对于标识符和关键字: A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 综上正规文法为: S—〉I1|I2|I3|A4|A5 I1—〉0|A1 A1—〉B1C1|ε C1—〉E1D1|ε D1—〉E1C1|ε

E1—〉0|1|2|3|4|5|6|7|8|9 B1—〉1|2|3|4|5|6|7|8|9 I2—〉0A2 A2—〉0|B2 B2—〉C2D2 D2—〉F2E2|ε E2—〉F2D2|ε

C2—〉1|2|3|4|5|6|7 F2—〉0|1|2|3|4|5|6|7 I3—〉0xA3 A3—〉B3C3 B3—〉0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f C3—〉(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)|C3|ε

A4—〉+ |-| * | / | > | < | = |(|)| <=|>=|==; A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε

状态图

流程图:

词法分析程序的主要数据结构与算法

考虑到报告的整洁性和整体观感,此处我们仅展示主要的程序代码和算法,具体的全部代码将在整体的压缩包中一并呈现

另外我们考虑到后续实验中,如果在bison语法树生成的时候推不出目标的产生式时,我们设计了报错提示,在这个词的位置出现错误提示,将记录切割出来的词在code.txt中保存,并记录他们的位置。

以下是我们的主要代码:

进制的识别:

结果展示:

二、语法分析子系统

根据选择的语法分析方法进行描述

我们使用了递归子程序发,并且对原有的产生式进行了改写,改写后的结果如下: P→LP1|L L→S

S→id=E|{P}|if C then S | if C then S

1else S2 | while C do S1 C→E1C’

C’→>E2|

E→int8E’| int10E’| int16E’| idE’|T E’→+T|-T||+TE’|-TE’

T→int8T’| int10T’| int16T’| idT’|F T’→*F|/F|*FT’|/FT’

F→(E)|int8|int10|int16|id

简化的语法图: S的语法图:

C的语法图:

E的语法图:

T的语法图:

F的语法图:

流程图:

语法分析子系统的主要数据结构与算法

我们采用了自动生成技术,同样在这里也是展示主要的核心功能代码,全部的代码展示在压缩包中:

我们在设计时,实现了产生式对应的字符串同时标识产生式定义的int值 辅助程序:

生成语法树的程序:

1.树节点:

2.创建新节点

3.创建实数类型新节点

4.创建标识符类型新节点

5.输出语法树 三、三地址码生成器

算法的基本思想:

我们增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。

在报错的时候,我们会呈现类型、作用域和赋值三种的问题的报错信息。

流程图:

算法展示:

四、实验体会

这次实验其实总的来说是让我们更加清晰的理解到了我们所学的内容。有时候我们上课听讲,课下复习写作业的时候,其实看似掌握了所学内容,但实际上并没有亲身体会的操作很难让我们深刻的理解其中的相关意义。通过这次实验,我们能够从根源处了解到了我们所学的内容,并且基于我们理解之后的输出。比如词法分析不能采用空格来区分单词,因为存在加减乘除等运算符和分隔符,使用空格来区分可能会造成错误的分解。又比如我们再在程序设计中,常常体会到效率的重要性。影响词法分析的效率的主要因素是各个状态的分支如何规划。如果每个进来的单词都能在最短的时间和最少的匹配次数内找到其入口,则效率将得到很大程度上的提高。所以由此我们产生了声明变量类型、赋值和作用域的想法,将其放在最后来进行判断,这样可以提高整体的执行效率。

另外,这次小组成员彼此不在一个班级,这样从某一方面来说,也加强了我们互相快速熟识并团结协作的能力,有了这种体验,我想我们在今后的生活中,面对这种情况的时候,将会变得更加有经验。

五、源程序

词法分析器: 输入结果:

输出结果:

语义分析结果:

输入:

第二组数据的输入:

输出:

三地址码的输入:

第二组数据的输入:

输出:

编译原理实验报告分析 篇2

随着网络技术的发展, 很多高校都设有计算机专业, 而编译系统是计算机系统的基本组成部分, 是计算机专业学生的必修课。作为一门理论性与实践性较强的课程, 编译原理对学生计算机水平的提高有着重要的作用。但是编译原理的学习的过程中有很多困难, 比如概念性强、逻辑性严密、内容抽象等, 对实践性要求比较高, 学生在学习的过程中不容易把握其知识要点。

1 编译原理实质

编译原理的学习主要是学习其算法, 从编译原理教材中不难发现, 编译原理的学习内容主要是词法分析、语法分析、语义分析、代码生成及优化等。其中语法分析的内容相对比较简单, 编译原理在讲解词法分析的时候, 要把自动机原理与正规表达式融合进来, 然后以较为标准的方式来分析程序的产生;语法分析相对于词法分析就没有这么简单了。目前, 语法分析算法一般有两种, LL自顶向下算法和LR自底向上算法, 特别是LR算法, 一般学生都会觉得比较困难, 甚至放弃自学, 其实LR算法的语法分析器, 一般是采用Yacc来生成的, 不需要自己来实现。而编译原理中编译器需要把程序员写的源程序转换成一种方便处理的数据结构, 这个转换过程是通过语法分析与词法分析来完成的, 只要学生了解简化语法的过程, 就能把词法分析繁琐的工作提出来, 简化学习过程。

2 编译原理课程实验教学现状

在编程原理教学中开展实验教学的内容, 学生的积极性很高, 在实验教学的课堂上学生开动脑筋, 积极发挥自己的聪明才智, 词法分析与语法分析实验完成比较好。可能会在语义分析与代码生成方面遇到一些问题, 对于学生遇到的问题, 教师要积极引导, 使学生认真思考, 强化学生对相关知识的了解。学生在实验过程中遇到的问题主要体现在以下几个方面。

2.1 对实验内容的误解

编译原理在实验教学的过程中, 学生根据实验指导书进行实验步骤的操作, 在实验操作的过程中, 有很多学生由于对基础知识理解不透, 可能会对实验内容产生误解, 从而影响实验效果。比如在测试词法分析程序时, 在实验的过程中可以按照一定的格式输出各类单词符号, 有些学生不理解就把它看做是词法分析程序本身的功能进行实验操作。这样理解的结果会使学生在完成语法分析部分时增加难度, 不能很好将词法分析与语法分析有效的衔接起来。

2.2 对编程实现要求不熟练

在实验学习的过程中, 在教室的指导下虽然有些学生能够理解实验原理和技术, 但是, 在实际实验操作时总是出现错误, 造成这种现象的原因主要是学生在学习过程中, 理论是实践的脱轨。还有些学生在学习的过程中对实验原理理解不够详细, 对原理技术的把握也不准确, 导致学生不能顺利完成实验。

2.3 缺乏规模程序能力

在编程原理的学习过程中, 按照实际完成的符合实验总体任务的编译程序估算, 学生完成的最终编译程序可能在500行左右, 这个编程量才能符合实际学习需求。但是在实际学习过程中, 学生完成的编程量往往与这个数与很大一段的距离。

2.4 利用所学知识解决问题的能力有限

在编程原理实验教学中, 比较难理解的问题一般在语义分析上, 因为它所涉及的数据结构和算法比较多。语义分析没有做好会影响代码生成部分的完成。学生的运用知识解决实际问题的能力不足是造成这种情况出现的重要原因。

3 编译原理课程实验教学改革与探索的措施

编译原理课程是一门理论性的课程, 注重理论知识的讲解, 但是计算机学科本身是一项实践性很强的学科, 只有学生能够学以致用, 才算是真正的学会。在教学的过程中不能使用传统的其他学科的教学方法进行授课, 必须有一套独特的授课方式, 提高学生的实践性。

3.1 分组实验教学

虽然编译原理是一门理论性教学课程, 但是其实验课程的项目也比较重要。通过实验课程学生会将自己在课堂上所学到的知识融会贯通, 运用到实际教学中。在实验课堂上, 首先将学生分为若干个小组, 每组成员各有分工。清晰划分小组成员中每一个人的管理范围, 制定好计划书与可行性分析报告。然后按照实验项目, 小组成员做好实验总结与实践, 这样不仅调动了学生的积极性, 而且能让每一位学生体验一次项目从开始到结束的过程, 培养学生的团队精神。

3.2 竞争式教学

竞争式教学试讲学生按照实验项目分好小组后, 进行小组间的学习竞赛。在完成一个项目的试验后, 教师进行小组评比, 评比时由每个小组的项目负责人阐述整个实验项目的内容、试验方法、实验过程、实验问题以及实验结果等然后对每个小组进行评分, 最终得出排名。这种方法具有很强的趣味性, 能有效的调动学生的学习热情, 使学生在竞争中不断完善自己。

3.3 教学实验的设计与监督

编程原理的实验教学设计要考虑两个个方面的内容:词法分析器设计、语法分析器设计, 通过本课程实验, 使学生理解编译程序设计原理, 培养学生编译程序能力, 加深学生对词法分析器的理解, 使学生熟练掌握语法分析器的设计。同时, 为了提高学生的实验质量, 教师在实验课程中要加强实验结果的监督, 严禁学生在实验中出现抄袭现象。采取先打印实验设计的源程序清单、后进行结果检查的方法。避免试验中的不公平现象。

4 结语

编译原理的实验教学质量的提高, 不仅需要运用有效的实验教学方法, 而且要建立理论联系实际的教学内容和课程体系, 抓住教学重点, 精心设计实验教学内容, 注意调动学生的积极性, 激发学生的学习热情, 使学生在实践中不断提升自我。

摘要:编译原理是计算机专业的主要课程之一, 讲述的内容是程序设计语言编译构造的基本原理以及实现方法。它是一门技术性较强的学科, 在讲课的过程中为了使学生更好的掌握课程内容, 提高学生的学习兴趣, 必须设计一套不同于其它学科的教学方法, 实现教学效果的提高。本文主要从实验教学的问题及现状方面出发, 探讨编译原理教学改革措施。

关键词:编译原理课程,实验教学

参考文献

[1]王改芳, 龚君芳, 李圣文, 张冬梅.编译原理课程实践教学改革探索[J].实验技术与管理2009, 26 (12) :130-131.

[2]吴海涛."编译原理"课程实验教学研究与探索[J].计算机教育2009 (24) :66-67.

[3]朱素英.普通本科院校编译原理教学内容改革探讨[J].电脑知识与技术2010, 6 (12) :3071-3072.

编译原理论文 篇3

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法,在计算机本科教学中占有十分重要的地位。

该课程理论性与实践性都很强,我们在学习是普遍感到内容非常抽象,不易理解,内容多且繁琐,难以完整、全面地掌握编译原理的有关知识,更不用说灵活运用编译原理知识从事相关设计或应用于其他领域。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对我们提供了系统而有效的训练,有利于提高软件人员的素质和能力。

在我们学习编译原理以前,都认为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高。而在后来的学习中,我们逐渐认识到计算机专业的学生,除了要会编写程序语言之外,还应该了解它是如何被计算机所识别,这才是真正并且透彻地学习软件。另外,编译器中每一个模块的编写,都能对我们的编程能力的提高有很大帮助。在今后若从事软件工程,这门课程也能够对编写程序有所帮助。

为了能够系统掌握这门专业课,我们把编译原理分为以下几个模块:①语言和文法;②词法分析;③语法分析;④语义分析和中间代码生成;⑤代码优化和目标代码生成。

在学习的开始,我们需要掌握什么是编译,编译分为哪些阶段,编译程序和解释程序的区别等等。在做好了这些方面的准备后,开始了系统的学习。

语言和文法部分的知识包括文法基本概念及文法的二义性。基本概念有文法定义、推导、句型、句子等等。二义性文法是通过画语法树的方法来证明。

词法分析中的重点是有穷自动机DFA的生成以及DFA和正规式与正规文法的关系。还要熟练掌握NFA转换为DFA的方法及DFA的化简。

语法分析包括自上而下和自下而上分析。自上而下分析着重掌握LL(1)文法,自下而上分析重点掌握算符优先文法和LR(0)、SLR(1)文法。

语义分析重点是其功能,中间代码生成和语法制导翻译定义与方法。

最后,优化分为局部优化和循环优化,重点理解一些关键词,如基本块、流图等,要学会自己画出程序流图。用DAG图进行局部优化是重点。

在学习文法时,对文法的组成,用法都较为明了,而在真正做题时却感到十分吃力。例如给出了一个语言,要求写出它的上下文无关文法,就感到十分棘手,所以今后在这方面要加大练习量,以熟练掌握。

而在之后的词法分析和语法分析中,我感到在看基本原理时十分困难,通常要长时间钻研才能够有所了解,而一旦掌握了基本原理,做题时就感到十分顺畅了。例如,在刚接触到LR(0)文法时,我用了大量的时间去学习它的原理,掌握之后,在列LR(0)分析表和写分析过程时,只要思路清晰,就会比较顺畅,而且不会犯错。

下面是我认为的比较有效的学习编译原理的步骤:

1.先利用ANTLR之类的编译器生成工具,做一个小程序(如上面提到的HTML文件转化成纯文本文件的程序),所需知识只是正则表达式的基本知识和生成工具本身的使用方法(可以看联机帮助和网上教程(tutorial)来掌握).这样做的好处是:

1)可以体会到编译原理的实用性,提高学习兴趣

2)入门容易,消除编译原理学习的畏难情绪.3)获得词法分析器和语法分析器的感性认识,有利于加深对理论的理解.4)获得编译器自动生成工具(compiler compiler)的使用经验,提高解决实际问题的能力.(实际工作很多都不是手编而是利用工具的)

99《编译原理》课程设计 篇4

《编译原理》课程设计

一、课程设计的目的通过课程设计,真正掌握设计和构造编译程序的基本原理和常用的编译技术,具备系统软件调试能力和开能力,培养分析问题和解决问题的能力。

二、课程设计的要求

根据选择的课程设计题目提交一份课程设计报告,内容包括:设计要求,算法描述,程序结构,主要变量说明,程序清单,设计技巧,结果分析,心得体会等。

三、课程设计题目

(一)、编制和调试一个程序,它将用户从键盘上输入的正规式转换为以状态和矩阵形式表示的确定的有穷自动机。

1、将正规式转换为NFA2、把NFA确定化为DFA

 # 号作为输入正规式的终止符。

 考虑复合正规式。

例如,从键盘输入10|(01|1)*0|1*#,输出为矩阵形式表示的DFA和状态

图。

 开始符号为0。

(二)、1、试编写一个程序,用来计算给定文法的全部FIRST集及FOLLOW集,并判定所给文法是否LL(1)方法。

2、试编写一个程序,以给定文法作为输入,由程序自动生成文法的LL(1)分析表M。 确定文法的机内表示。

 确定LL(1)分析表的存放方式。

(三)、1、试编写一个程序,用来计算机给定文法的FIRST集,LASTVT集,并判定所给文法是否算符优先文法。

2、试编写一个程序,以给定的方法作为输入,由程序自动生成文法的优先关系矩阵。 确定文法的机内表示。

 确定优先关系矩阵的存放方式。

(四)、对以下文法,采用算符优先分析法,对G[S]所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。

1、直接输入根据已知文法构造的算符优先关系矩阵。

2、输入已知文法的FIRSTVT集和LASTVT集合,由程序自动生成该文法的算符优先

关系矩阵。

SA

AV := E

EE+T | T

TT * F | F

F(E)| i

Vi

 确定所给文法的机内表示。

 确定算符优先关系矩阵的存放方式。

(五)、设有文法G[P]:

Pbegin Z end

ZZ;S|S

SI:=E | if B then S else S

| while B do S

EE+E | E-E

| E*E

| E/E

|(E)

| I

| C

BE ROP E

ROP< | <= | = | > | >= | <>

IIL | ID | L

LA | B | C |……| X | Y | Z | a | b | c | ……| x | y | z

CCD | D

D0 | 1 | 2 | ……| 9

试采用SLR分析法,对G[P]所定义的语言进行语法分析,并生成四元式(逆波兰式)中间代码。

1、直接输入根据已知文法构造的SLR(1)分析表。

2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自

动生成SLR(1)分析表。

 为便于进行语法制导翻译,对上述文法进行改写。

 确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。

 设置分析栈

 确定文法存放形式。

 词法分析中造标识符表。

(六)、设有如下文法:

SA

AV:=E

EE+T|T

TT*F|F

F(E)|digit

Vi

试采用SLR分析法,对所定义 的赋值语句进行语法分析,并在分析过程中将所输入的赋值语句翻译为伪代码并解释执行。

1、直接输入根据已知文法构造的SLR分析表。

2、输入已知文法的项目集规范族C={I0,I1,……,In}和转换函数G0(Ii,a)=Ij,由程序自动生

成SLR(1)分析表。

 确定文法的机内表示。

 确定SLR(1)分析表的存放形式。包括ACTION部分和GOTO部分。

 伪代码和寄存器个数由自己定。

(七)、根据(六)所给的文法,采用LL(1)分析法对所定义的赋值语句进行语法分析,并在语法分析过程中将所输入 的赋值语句翻译成四元式。

1、直接输入根据已知文法构造的分析表M。

2、输入已知文法的FIRST集和FOLLOW集,由程序自动生成分析表M。

3、输入已知文法,由程序自动生成分析表M。

 文法左递归应改写文法的规则式。

 确定文法的机内表示。

 确定LL(1)分析表的存放方式。

四、参考文献:

1.《编译原理》,陈火旺等,国防工业出版社,1984

2.《编译程序构造方法》,邱玉圃等,科学出版社,1991

3.《数字计算机编译程序构造》,D.格里斯,科学出版社,1976

联系方式:Email:huhuaijin@21cn.com

编译原理知识点总结 篇5

编译原理是大学计算机专业的必修科目,也是计算机的基础知识,学好编译原理,有助于更好的进行编程的操作,下面是编译原理知识点总结,一起来看看吧!

编译原理知识点总结

一 编译器

简单讲,编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器

(preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)

二 工作原理

编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。

也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序

三 编译器的发展史

(1) 20世纪50年代

IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的`有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。

有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。

人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。

当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。

在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。

(2) 国内编译器的研发历史

我国编译器研发工作起步并不算晚,早在60年代初期,董韫美院士和杨芙清院士就分别在中科院和北大领导研究组开发编译器,那时面向的高级语言是ALGOL和FORTRAN,目标机是国产机。

在改革开放前,由于国家需要,中科院、国防科大、江南计算所、北大等单位一直在研制国产计算机,包括大型机和高性能计算机(如向量机、并行机),相应的也在研制高级语言编译器。中科院计算所以董韫美院士领导的研究组先后开发了119机、109机的类 ALGOL语言编译器BCY。国防科大开发了向量编译器和向量识别器。

70年代中科院计算所张兆庆教授研究组(以后称ACTGroup)开始在国产机上研制FORTRAN语言编译器,先后参与了众多的院级和国家级科研攻关项目,主持开发了013,757,KJ8920等国产大型机系统中的FORTRAN语言编译器,所研制的编译器支持了数百万行应用软件的运行。

90年代以来ACTGroup承担科学院重大项目,国家攻关项目,863项目,以及国际合作项目,先后开发了共享内存多处理机的并行识别器,分布式内存多处理机的并行识别器, SIMD芯片和VLIW芯片的并行优化C编译器。将编译技术与图形学结合,ACTGroup还推出了集成化、可视化的并行编程环境。ACTGroup在先进编译技术和并行编程环境方面的研究工作获国内外专家高度评价,国际著名学者评价此研究组居编译领域的世界先进行列。

(3) 研究现状

编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。

在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。

大约在,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

(4)国内编译器开发的现状

90年代以来,国内主要以研制并行机为主,相应的并行编译器研制也在国内开展起来。代表性的成果有:上海复旦大学朱传琪教授研究组研制的面向共享存储并行机的并行优化编译器AFT达到世界领先水平。

上一篇:佛教经典爱情故事下一篇:去实践考察园林自我鉴定