编译原理5000字
编译原理报告 (2)

课程实验报告课程名称:《编译原理》专业班级:信息安全1302学号:姓名:指导教师:报告日期:2015年11月6日计算机科学与技术学院目录目录 (2)1 实验一词法分析 (3)1.1实验目的 (3)1.2实验要求 (3)1.3算法思想 (4)1.4实验程序设计说明 (5)1.5词法分析实现 (6)1.6词法实验结果及结果分析 (11)2 实验二语法分析 (12)2.1 实验目的 (12)2.2 实验要求 (12)2.3 算法思想 (12)2.4 实验程序设计说明 (14)2.5 语法分析实现 (14)4 实验中遇到的问题及解决 (22)参考资料 (23)1 实验一词法分析1.1 实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。
1.2 实验要求1、待分析的简单的词法(1)关键字:main int char if else for while所有的关键字都是小写。
(2)运算符和界符:= + -* / < <= <> > >= = == != ; ( ) [ ] { } #(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:ID = letter (letter | digit)*NUM = digit digit*(4)空格有空白、制表符和换行符组成。
空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
2、各种单词符号对应的种别码:表1 各种单词符号对应的种别码3、词法分析程序的功能:输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。
其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。
例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:(1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)……1.3 算法思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。
编译原理报告

课程实验报告课程名称:编译原理(词法分析、语法分析)专业班级:信息安全1302班学号:姓名:指导教师:报告日期:2015/11/8计算机科学与技术学院目录实验一:词法分析 (1)1.1实验目的 (1)1.2实验要求 (1)1.2.1 待分析的简单的词法 (1)1.2.2 各种单词符号对应的种别码: (1)1.3 词法分析程序的算法思想: (2)1.3.1主程序示意图 (2)1.3.2 扫描子程序的算法思想: (2)1.4 实验结果 (4)1.5 实验小结 (5)实验二:语法分析 (5)2.1 实验目的 (5)2.2 实验要求 (5)2.2.1 待分析的简单的语法 (5)2.2.2 语法分析程序的功能 (6)2.3 词法分析程序的算法思想 (6)2.4 实验结果 (11)2.5 实验小结 (11)实验一:词法分析1.1实验目的按<<>编译原理>课程的要求,根据词法分析器的基本原理,设计、编制并试一个词法分析程序,加深对词法分析原理的理解。
1.2实验要求1.2.1 待分析的简单的词法1)关键字:begin if then while do end2)运算符和界符::= + - * / < <= <> > >= = ; ( ) #3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:ID = letter (letter | digit)*NUM = digit digit*4)空格有空白、制表符和换行符组成。
空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
1.2.2 各种单词符号对应的种别码:表1.1 各种单词符号对应的种别码1.3 词法分析程序的算法思想:算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。
1.3.1主程序示意图主程序示意图如图1.1所示。
编译原理----词法分析程序----C语言版

编译原理----词法分析程序----C语⾔版#include<stdio.h>#include<string.h>#include<stdlib.h>char KeyWord[20][100]={"begin","end","if","while","var","procedure","else","for","do","int","read","write"};char yunsuanfu[]="+-*/<>%=";char fenjiefu[]=",;(){}:";int main(){char test[]="var a=10;\nvar b,c;\nprocedure p; \n\tbegin\n\t\tc=a+b\n\tend\n";int len_yunsuanfu=strlen(yunsuanfu);int len_fenjiefu=strlen(fenjiefu);puts(test);int length=strlen(test),i,j,k;for(i=0;i<length;i++){if(test[i]==' '||test[i]=='\n'||test[i]=='\t')continue;int tag=0;for(j=0;j<len_fenjiefu;j++){if(fenjiefu [j]==test[i]){printf("分界符\t%c\n",test[i]);tag=1;break;}}if(tag==1)continue;tag=0;for(j=0;j<len_yunsuanfu;j++){if(yunsuanfu[j]==test[i]){printf("运算符\t%c\n",test[i]);tag=1;break;}}if(tag==1)continue;if(test[i]>='0'&&test[i]<='9'){printf("数字\t");while(test[i]>='0'&&test[i]<='9'){printf("%c",test[i]);i++;}printf("\n");continue;}char temp[100];j=0;while(test[i]>='0'&&test[i]<='9'||test[i]>='a'&&test[i]<='z'||test[i]>='A'&&test[i]<='Z'||test[i]=='_') {temp[j++]=test[i];i++;}i--;temp[j++]='\0';tag=0;for(j=0;j<20;j++){if(strcmp(temp,KeyWord[j])==0){tag=1;printf("关键字\t%s\n",temp);break;}}if(tag==0)printf("标识符\t%s\n",temp);}}。
编译原理_P1003

编译原理_P10031. 语法分析1.1 上下⽂⽆关⽂法的定义---- 正规式能定义⼀下简单的语⾔,能表⽰给定结构的固定次数的重复或者没有指定次数的重复 例如:a(ba)5,a(ba)*---- 正规式不能⽤于描述配对或嵌套的结构 例如1:配对括号串的集合 例如2:{wcw|w是a和b的串}1.2 上下⽂⽆关⽂法是四元组(V T,V N,S,P) 终结符集合 ⾮终结符集合 开始符号,⾮终结符中的⼀个 产⽣式集合,产⽣式形式:A→α分析树⼆义性对结构有两种不同的观点2. 语⾔和⽂法* ⽂法的优点---- ⽂法给出了精确的,易于理解的语法说明----- ⾃动产⽣⾼效的分析器----- 可以给出语⾔定义出层次结构----- 以⽂法为基础的语⾔的实现便于语⾔的修改* ⽂法的问题---- ⽂法只能描述编程语⾔的⼤部分语法,不能描述语⾔中上下⽂有关的语法特征2.1 正规式和上下⽂⽆关⽂法的⽐较2.2 分离词法分析器理由* 为什么要⽤正规式定义词法---- 词法规则⾮常简单,不必⽤上下⽂⽆关⽂法---- 对于词法记号,正规式描述简介且易于理解从软件⼯程⾓度看,词法分析和语法分析的分离有如下好处---- 简化设计----- 编译器的效率会改进---- 编译器的可移植性加强---- 便于编译器前段的模块划分* 是否把词法分析并与语法分析中,直接从字符流进⾏语法分析---- 若把词法分析和语法分析合在⼀起,则必须将语⾔的注释和空⽩的规则反应在⽂法中,⽂法将⼤⼤复杂---- 注解和空⽩由⾃⼰来处理的分析器,⽐注解和空格已由词法分析器删除的分析器要复杂得多2.3 验证⽂法产⽣的语⾔2.4 适当的表达式⽂法2.5 消除⼆义性2.6 消除左递归。
编译原理总结2词法

02
单词符号识别与分类
单词符号类型及特点
标识符
用户自定义的变量名、函数名 等,通常以字母或下划线开头, 后跟字母、数字或下划线。
运算符
用于进行各种运算的符号,如 +、-、*、/等。
关键字
具有固定含义的预定义单词, 如if、else、while等。
常量
程序中使用的固定值,如数字 常量、字符常量等。
案例分析:不同类型单词符号识别
关键字的识别
通过预先定义的关键 字表进行匹配,识别 出源程序中的关键字。
标识符的识别
根据标识符的命名规 则,使用正则表达式 或有限自动机进行识 别。
常量的识别
根据常量的表示形式, 如数字常量、字符常 量等,使用相应的识 别方法进行识别。
运算符的识别
通过预先定义的运算 符表进行匹配,识别 出源程序中的运算符。
词法分析算法
讲解了词法分析中常用的算法,如状 态转换图、预测分析表等,以及它们 在实际应用中的优缺点。
典型词法分析器实现
通过实例分析了典型词法分析器的实 现过程,包括词法单元的识别、错误 处理等关键技术。
未来发展趋势预测
智能化词法分析
随着人工智能技术的发展,未来词法分析器可能 会更加智能化,能够自动学习和优化词法规则, 提高编译器的自适应能力。
案例分析:扫描器构造实例
3. 将正则表达式转换为有限自动 机,作为扫描器的核心部分。
4. 编写扫描器代码,实现输入流 的读取、单词的识别和分类等功 能。
优化与改进:为了提高扫描器的 性能和准确性,可以采用一些优 化措施,如使用更高效的正则表 达式算法、优化有限自动机的状 态转移等。同时,还可以根据实 际需求对扫描器进行扩展和改进, 如支持更多的语言特性、提高错 误处理能力等。
编译原理

1词法分析
词法分析是编译器前端设计的基础阶段,在这一阶段,编译器会根据设定的语法规则,对源程序进行标记,在标 记的过程中,每一处记号都代表着一类单词,在做记号的过程中,主要有标识符、关键字、特殊符号等类型,编译器 中包含词法分析器、输入源程序、输出识别记号符,利用这些功能可以将字号转化为熟悉的单词。
谢谢观看
2语法分析
语法分析是编译过程的第二个阶段。这阶段的任务是在词法分析的基础上将识别出的单词符号序列组合成各 类语法短语,如“语句”, “表达式”等.语法分析程序的主要步骤是判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。而一个语法规则又称为文法,乔姆斯基将文法根据施加不同的限制分为0型、1型、2型、 3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法,限 制条件依次递增。
计算机类专业本科生学习本专业的第一门语言课程是C语言。C语言由于其类型不安全性,容易出现一些难以 捉摸的错误,使得学生难以定位和解决问题。如果能让学生根据编译器提供的提示信息,精确定位程序中的错误类 型和位置,把编译原理中所学用于实际C语言编程需求,这既完成了课程的教学内容,也提升了学生的软件编程和系 统分析的能力。
发展
在早期冯诺依曼计算机时期 (20世纪40年代)程序都是以机器语言编写,机器语言就是实际存储的01代码,编 写程序是十分枯燥乏味的。后来汇编语言代替机器语言一符号形式该处操作指令和编码。但汇编语言仍有许多缺 点,阅读理解起来很难,而且必须依赖于特定的机器,如果想使编写好的程序在另一台计算机上运行必须重写。在 20世纪50年代IBM的John Backus带领一个研究小组对FORTRAN高级语言及其编译器进行开发。编译程序的自动生 成工具初现端倪,现在很多自动生成工具已经广泛使用例如语法分析工具LEX,语言分析程序YACC等。在20世纪60 年代人们不断的用自编译技术构造编译程序,即用被编译的语言本身来实现该语言的编译程序,但其基本原理和结 构大体相同。经过不断发展现代编译技术已经较为成熟,多种高级语言发展迅速都离不开编译技术的进步。
编译原理 assign
编译原理 assign在编译过程中,assign是一个非常重要的操作,它涉及到变量的定义、初始化和使用。
编译器会将源代码中的变量声明和赋值语句识别出来,并根据语法规则生成相应的目标代码。
在源代码中,变量的声明通常是在使用之前进行的。
声明变量的语句会告诉编译器该变量的数据类型和名称。
编译器会在符号表中记录该变量的信息,以便之后的引用。
在变量声明之后,程序可以使用assign语句将一个值赋给这个变量。
在编译过程中,assign语句需要经过词法分析、语法分析和语义分析等步骤。
首先,词法分析器会将assign语句分解成一个个的词法单元,如变量名、赋值符号和值。
然后,语法分析器会根据语法规则判断assign语句的结构是否正确。
最后,语义分析器会检查变量的类型是否匹配,以及是否存在未定义的变量。
在目标代码生成阶段,编译器会将assign语句转化为一系列的机器指令。
例如,对于C语言中的assign语句“某= y + 1”,编译器会将其翻译为三条目标代码指令:加载变量y的值到寄存器,将寄存器中的值加1,将结果存储到变量某中。
除了简单的赋值操作,assign语句还可以包含其他复杂的表达式。
例如,“某 = (y + z) 某2”,编译器会根据运算的优先级和结合性确定操作的顺序,并生成相应的目标代码。
总结来说,assign是编译原理中的一个重要概念,它涉及到变量的定义、初始化和使用。
编译器会将assign语句转化为目标代码,以便在程序运行时进行赋值操作。
编译器在处理assign语句时会进行词法分析、语法分析和语义分析等步骤,以确保assign语句的结构正确且类型匹配。
编译原理中的assign是理解和学习编译技术的基础之一。
编译原理总结-编译原理-10-(一)
T的过程调 lookhead:当前符号 当前符号等 处理终结符+ T的过程调用
29
5
自底向上语法分析
思想 从输入串出发,反复利用产生式进行归约,如果最 后能得到文法的开始符号,则输入串是句子,否则 输入串有语法错误 核心 寻找句型中的当前归约对象——“句柄”进行归约, 用不同的方法寻找句柄,就可获得不同的分析方法 方法
栈内栈外、优先函数
算符优先文法
素短语和最左素短语
句型#N1a1 N2a2… Nnan #的最左素短语是满足下列条件 的最左子串 Niai Ni+1ai+1… Njaj Nj+1 其中:ai-1≮ai≡ai+1≡…≡aj-1≡aj≯aj+1
33
LR 分析法
关键概念 规范句型活前缀——规范句型(右句型)的不
2
“编译原理”是一门非常好的课程
掌握“编译原理”中的基本概念、基本理论、
基本方法,在系统级上再认识程序和算法, 提升计算机问题求解的水平,增强系统能 力,体验实现自动计算的乐趣 实验情况
递归子程序、LL(1)、SLR(1)、LR(1) 多种形式的输入 LR(1)分析表的自动生成 错误处理与续编译
→ε →ε
→*FT' *FT →(E)
26
→ε
→ε
→ε
4
语法图
自顶向下语法分析
简化语法图 递归子程序法 为每个语法变量编写一个处理子程序
27
+ E T * T F
E→T(+T)*
简化的语法图
T→F(*F)*
F
(
E id
)
F→(E)|id
简单算术表达式的分析器
《编译原理基础知识》word版
编译原理基础知识引用Elly的编译原理基础知识编译是将计算机高级语言如C++、Java、C#编写的源程序翻译成可以在计算机上执行的机器语言的翻译过程。
编译过程中分:词法分析、语法分析、语义分析、源代码优化、代码生成和目标代码优化几个过程。
ANTLR 解决的是词法分析和语法分析的问题,下面介绍一下编译原理中有关词法分析和语法分析的基本知识。
词法分析是对源程序一个一个字符地读取,从字符中识别出标识符、关键字、常量等相对独立的记号(token,也叫符号或单词),形成记号序列记号流的过程。
如c、l、a、s、s五个字符构成了关键字class,2、3构成了一个整型数23。
词法分析过程中会滤掉源程序中的空格、换行符和注释等不属于源程序的字符,还可以将记号归类,哪些记号属于标识符,哪些记号属于关键字、整数、浮点数等。
记号流是语法分析的基础。
语法分析是根据词法分析输出的记号流,分析源程序的语法结构,并添加代表语法结构的抽象单词(如:表达式、类、方法等),按照语法结构生成语法树的过程。
前面讲的词法分析后形成的记号序列是描述程序的直接标识符序列,是线性的。
它没有反映出源程序的结构。
而语法分析后生成的语法树是可以表示源程序结构的数据结构,语法树的叶子节点就是记号。
下面举一个简单的例子说明词法分析和语法分析之关的系统,有如下的源程序:class T{string Name;//name of Tobject GetValue(){}}进行词法分析后形成记号流:class T{string Name;object GetValue(){}}。
进行语法分析后形成语法树:我们这里不介绍编译原理的其它部分,因为ANTLR只涉及到了词法分析和语法分析这两个部分。
读者可以去参考原理的书籍。
了解ANTLR在编译过程中所处的位置后。
我们来详细学习一下有关词法分析和语法分析的基础概念。
2.1什么是文法一种程序设计语言的语法是规定源程序的写法是否合法的规则,它存在于词法分析和语法分析两个阶段。
编译原理一:想初步了解编译原理?看这篇文章就够了
编译原理一:想初步了解编译原理?看这篇文章就够了为什么要学习编译原理作为程序员,不管是前端开发工程师还是后端开发工程师,编译技术都与我们的工作息息相关。
在实际工作中也经常会碰到需要编译技术的场景。
比如,前端开发工程师想要了解TypeScript是如何把一门语言翻译成另一门语言的,以及babel是如何编译JavaScript的等等。
学习编译技术有助于提升我们的职场竞争力,更有助于程序员在技术的道路上走的更远。
那么学习完本篇文章你会对编译原理有个初步的认识,比如:•知道为什么要学习编译•了解编译原理和我们日常开发中使用的开发语言的关系•了解编译在语言系统中所处的位置及编译系统的结构•了解词法分析、语法分析、语义分析这些我们工作中经常听到的概念等等•更重要的是知道我们编写的代码是如何被计算机识别并执行的。
什么是编译原理编译原理是介绍如何将高级程序设计语言转换成计算机硬件能识别的机器语言,以便计算机进行处理编译与计算机程序设计语言的关系日常开发过程中我们使用的语言一般都是高级语法比如JAVA、Python、PHP、JavaScript等等,但是计算机只能识别0、1这样的机器码。
那么这些高级语言是如何翻译成机器能识别的0、1等呢?这就用的了编译,首先我们通过下面这幅图看下编译与计算机程序语言的关系,有助于我们直观的了解编译的作用。
注意:每种机器都对应一种汇编语言程序设计语言的转换方式翻译:指把某种语言的源程序,在不改变语义的条件下,转换成另一种语言程序即目标语言程序真正的实现有两种方式,编译及解释•编译:专指由高级语言转换为低级语言,整个程序翻译。
常用的例如:c、c++,delphi,Fortran、Pascal、Ada•解释:接受某种高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这个句子的执行结果,然后再接受下一个语句。
类似口译,一句一句进行解释。
常用的例如:python 解释以源程序作为输入,不产生目标程序,一边解释一边执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理5000字
“编译原理”课程是计算机专业必修的一门重要的专业基础课程,也是计算机
系统软件中非常重要的一个分支,任何计算机语言的实现都离不开编译技术,
因而,作为计算机专业的学生,学习和掌握编译程序的基本构造原理和实现技
术,对今后进一步的学习、研究和工作奠定坚实的专业理论基础是十分必要
的。
吉林大学计算机科学与技术学院软件教研室多年来一直从事计算机本科生“编
译原理”课程的教学与科研工作,积累了丰富的教学、科研经验,并取得了多
项与编译课程相关的教学、科研成果,“编译原理”课程先后被评为吉林大学
精品课程、吉林省精品课程和“教育部-微软精品课程”。
一、注重理论教学
编译程序不同于一般的应用程序,是一个十分庞大和复杂的系统软件,它所包
含的算法和思想比较特殊,理论性较强,抽象度也较高。学习编译程序的构造
原理和实现技术,不仅可以掌握编译程序本身的实现技术,同时也能够提高对
程序设计语言的理解,提高语言的设计能力,提高元级程序的设计能力,提高
开发大型软件的能力,能够培养学生的抽象思维能力和形式化描述能力。吉林
大学计算机学院软件教研室在“编译原理”课程的教学过程中,注重学生对原
理的理解,使学生不仅要做到知其然,更要做到知其所以然。
(1)科学引导,启发学生积极思维
从知识体系的内部结构入手,抓住编译过程各个功能阶段的内在联系和规律,
通过有目的地设计问题,有意义地提出问题,引导学生的积极思维。把编译原
理中的理论难点、抽象概念通过问题引导呈现出来,学生通过回答问题,从不
同的角度寻求解决问题的原则、途径和方法,从而引导学生独立分析问题和解
决问题,加深对编译理论和技术的理解。
(2)从知识体系的内部结构入手,培养学生的自学能力
教师通过精心备课,掌握知识的内在联系,对编译过程的各个功能阶段进行归
纳总结。讲授时,让学生掌握编译原理各个阶段的基本概念,基本法则以及它
们之间的内在联系和规律,抓住知识体系的主线,掌握规律性的知识,授之以
法,培养学生的自学能力。
(3)实施多媒体辅助教学形式
“编译原理”是一门理论性强的课程,为了使抽象问题形象化,便于学生对知
识点的理解和运用,利用多媒体手段,把原理性的重点知识以动画、图形形式
呈现给学生,把知识讲解化静为动,寓教于乐,培养和激发学生的学习兴趣。
(4)设计课程辅助教学软件
教研室设计和开发了编译原理CAI课件-PCMCAI、SNL编译实例等编译原理
教学辅助软件,教师在上课时使用这些课件来演示部分关键算法和难点,提高
了教学效果,学生在课下利用这些课件自动生成各个分析程序,进一步理解基
本原理和实现算法。
二、开拓教学内容、扩展学生视野
在“编译原理”课程的讲授过程中,教学队伍一直坚持教学和科研相结合、理
论和实践相结合、课内和课外相结合,融知识传授、能力培养、素质教育于一
体,将最新教改和科研成果引入教学。
教研室先后承担了Algol60编译器、Fortran编译器、Algol60到Fortran的
转换器等与编译原理相关的科研项目,目前教研室正在进行ATLAS编译器项目
的设计与开发工作。在教学过程中将这些科研项目中的新思想、新方法、新技
术融入到课堂讲授当中,不仅加深了学生对编译基本原理的掌握,而且促进了
学生对传统内容与最新技术成果的理解。例如,在讲授语法分析时,传统的Ea
rly算法受当时硬件条件限制,它仅仅是一个理论上的语法分析方法;随着技术
进步,结合ATLAS编译器项目的设计与实现,Early语法分析方法便成为一个
实用、有效的语法分析方法。通过这些内容的讲述,将经典编译理论与现代编
译技术有机地结合起来,激发了学生对编译新技术的学习兴趣。
三、重视实践能力培养
编译程序以程序作为操作对象,是一个元级处理程序,它所包含的算法和思想
理论性较强,抽象度也较高,并且一个编译器是由多个完成不同功能、执行在
不同阶段的子程序组成的,各个阶段具有不同的特点,采用比较经典的方法来
完成各自不同的功能,即使学生理解了不同阶段的各个子程序的功能和特定方
法,但如何衔接各个子程序,如何组成一个完整的编译器,对学生来讲,仍可
能是一件比较困难的事情。基于此,我们开设了编译原理实践课程,培养学生
的实践能力。
实践性教学的设计思想是使学生透彻地理解编译程序的原理和思想,系统全面
地掌握编译技术,使学生通过课堂学习,理解编译原理的同时,注重学生实践
能力的培养,进一步巩固对知识的理解,通过实际的锻炼,掌握编译技术,进
而能够独立地进行编译器的设计。
通过多年来的教学实践以及近五年来关于编译原理实践课程的建设,我们取得
了一些成效。开设的编译原理实践课程,以实际上机实习为主,教师指导为
辅,学生在实践课程中,通过实际动手,把原理性的抽象理论知识具体化和形
象化,消化了课堂上、书本中难于理解的概念和方法,全面系统地掌握了编译
器的构造过程。同时,也激发了学生的学习兴趣,提高了学生进行更深入学习
的主动性。通过一个学期的实习,大部分学生对编译器的整个过程有了较清晰
的理解,灵活地掌握了编译程序的构造方法和技术,部分学生可以独立地设计
和实现自定义的模型语言,达到了预计的效果。
四、精品课网站建设
针对目前学生人数增多,教学资源不足,学生质量参差不齐,教学质量和效率
得不到保证的情况,我们充分利用Internet网络,建立和实施了网络课程体
系,利用Internet网在信息制造、贮存和递送方面的优势,克服了资源不足的
缺点,同时也为学生提供了完全个性化的学习环境,发挥网络教学优势。具体
网址为。
目前已经完成了编译网络课程体系的基本功能模块,构造和实现了一个网络课
程资源系统,具体包括:
(1)“编译原理”网络课程内容教学体系
将“编译原理”的课程概况、课程内容、习题解答、教学录像、参考资料、实
践课题、编译实例库以及CAI课件等内容上网,为校内外学生学习和实践编译
原理与技术提供理论知识和范例。
(2)完成学生练习系统的构造
通过电子黑板,BBS为学生提供开放的学习时间和空间,促进教师与学生,学
生与学生间的相互交流,激发学生学习的主动性,提高学生的实践能力,更深
入地理解和掌握课程内容。
(3)设计实现辅助工具系统
提供电子笔记本,对学生学习情况进行记录,教师通过对记录的分析,反馈和
改进课程网络系统,有利于今后的维护工作。
(4)构造网络管理系统
通过网络登陆验证,维护网络安全,以保证网络课程体系运行良好。
五、教师队伍建设
长期以来,教研室一直注重把精品课程建设与高水平教师队伍建设相结合。
“编译原理”课程已形成一支教师职称结构、年龄结构、学历结构、学位结构
合理,人员稳定,教学水平高的教学队伍。教学队伍成员具有良好的师德,学
术造诣高,教学能力强,教学经验丰富,教学特色鲜明。
编译课程负责人刘磊教授1997年获宝钢优秀教师奖,2005年被评为吉林大学
十佳优秀教师,并在学校的教学评估中,多次被评为优秀,受到学校的表彰奖
励,先后主编出版了多部教材,在各级学术期刊和国际会议上发表学术论文60
余篇。
六、教材建设
教研室一直注重编译教材建设,先后在科学出版社、高等教育出版社和机械工
业出版社出版了编译原理方面的著作7部,例如:《Algol60编译方法》上下
册(1983年,科学出版社)、《编译方法》(1984年,高等教育出版社)、
《编译原理与实现》(1989年,高等教育出版社)、《编译程序构造原理和实
现技术》(2000年,高等教育出版社)、《编译程序的设计与实现》(2004
年,机械工业出版社)、《编译原理及实现技术》(2005年,机械工业出版
社)等。
目前在编著的由国家“九五”规划出版的面向二十一世纪教材《编译程序构造
原理和实现技术》基础上,教研室又新推出了《编译程序设计与实现》教材,
作为“编译原理”实践课程教材,也是“编译原理”课程的配套教材。该教材
以实践培养为重点,针对一个教学语言模型,详细地介绍了该模型语言编译器
的设计和具体的实现方法。同时,为学生提供国内外先进的编译教材,供学生
选读。
这些教材一直是高等院校计算机专业普遍使用的教材,也是计算机软件相关专
业的重要参考书籍,至今许多著作经过了多次重印,在国内占有重要的地位。
七、总结
教研室始终坚持吸收最新研究成果和保持自己特色的原则,保证“编译原理”
课程教材内容的先进性和实用性,注重教学方法和教学手段改革,至今,教研
室已先后出版编译相关教材7部,承担并圆满完成了多项省部级重点教改项
目,发表了多篇教改教研论文,研制了课程教辅软件,使吉林大学在“编译原
理”课程、教材和教学梯队建设,以及课程的教学组织管理和学生系统软件分
析能力的严格训练等方面居国内领先行列。