编译原理论文范文

2023-09-16

编译原理论文范文第1篇

《编译原理》[1][2]课程是计算机科学与技术专业的重要专业课之一, 编译系统作为计算机系统的一部分, 是专业学生的必修课。该课程是一门理论性与实践性极强的课程, 对学生计算机能力的提高有重要作用。实验课通过帮助学生深入理解概念, 进而提高学生的逻辑思维能力和实践动手能力, 最终提高学生的专业素质。

当前该课程的实验教学通过将一个完整的编译程序拆分成词法分析、语法分析和语义分析等几个阶段[3], 实验内容难度较大, 很多学生会知难而退, 难以达到预期的实验效果[4]。究其原因是实验内容的设计, 学生的自身能力和实际水平两者之间出现了诸多偏差。为了更好地提高该课程的实验教学效果, 需要从实验教学的内容、实验教学的设计以及组织形式方面加以改进。

二、存在的问题及分析

(一) 学生的认知误区

课程内容的强逻辑性和高抽象性特点, 使很多学生对编译原理实验课存在很多认识误区, 如果不及时采取措施改变现状, 会进一步加重学生的畏难情绪, 产生一系列不利于课程学习的消极负面影响[5]。

设计和开发编译器是课程的学习目标, 学习的内容与毕业之后的工作关系不密切, 得出课程无用的错误结论是误区之一。实际上编译原理知识包含诸多计算机科学体系的理论, 学生通过课程的学习站在程序编译的角度审视软件的开发, 有助于开阔学习的眼界, 提高其对系统开发的认识, 对今后从事各种软件的开发都大有益处。

认为课程实验等同于其他课程普通的程序设计实验, 迷失在具体代码实现的细节上是误区之二。本课程与《离散数学》、《算法设计与分析》、《数据结构》等课程密切相关, 是对多门课程知识的综合应用, 对其学习能够进一步增强学生对相关知识的综合运用能力和专业素质的提升。

(二) 实验内容设计太笼统、缺乏层次性

一般地该课程的实验教学设计是根据编译过程的阶段性, 每个阶段分别设计实验题目, 最终形成一个完整的编译程序。该设计的优点是实验练习是与授课内容紧密结合, 模块分解清晰。缺点是尽管对整个程序进行了简化, 每个实验仍然存在许多学生难以跨越的“难度阶梯”, 忽视了不同学生的知识和能力水平的不同, 很难达到预期的效果。

(三) 实验组织形式比较单一

该课程实验的实践形式一般是在机房完成。每个学生操作一台计算机, 从实验的设计阶段到程序代码的实现都由其独立完成。教师在机房进行实验辅导、随时答疑, 根据学生最终提交的程序代码和实验报告给出分数。该实验组织形式的特点是教师主导和成绩评判形式单一, 学生之间的交流不够, 课堂气氛比较沉闷枯燥, 缺少学生团队协作能力的训练。

三、实验教学设计改进

(1) 对实验项目进行分类:调整以前的传统必做题目, 增加源代码预习环节。以验证性为主的传统必做题目学生往往没有思路, 题目过于注重算法, 与实践脱节;通过增加预习环节, 降低了学生的实验难度。通过案例化教学强化学生对程序整体的认识, 采取一个简化的、针对简单语言的完整的编译程序教学案例, 让学生在深入理解该教学案例的基础上对语言进行扩充, 完善编译程序的相关功能。

(2) 扩充实践应用题目为选做题目:结合实际中运用编译技术的比例, 以提高学生的学习兴趣为基础, 使学生明白该课程的知识和技术也可用于系统软件或者应用软件的开发。例如计算器的设计, 实习表达式的分析计算。

(3) 个性化阶梯式教学:实验难度的设计体现层次性, 形成阶梯状的难度层次。针对不同水平的学生设定不同难度的实验题目, 从而激发每个学生的学习兴趣。根据内容的难度实现阶梯化设计, 对学生因材施教, 最大程限度发挥他们的主观能动性, 挖掘学生其学习潜质, 避免出现有的学生吃不了有的学生吃不饱的现象, 提高学生系统开发的整体能力。将实验要求设置基本要求、较高要求和探索性要求三个层次, 所有学生均能完成基本要求, 鼓励成绩较好的学生去完成较高要求, 采用成绩加分等一些激励机制, 鼓励学有余力的同学完成探索性实验。

(4) 实验报告的提交:通过增加设计思路、程序可扩展功能等要求, 尽量避免部分同学抄袭实验报告的现象。要求学生必须将实验心得和个人见解写入实验报告中, 培养学生的独立思考能力和实事求是的工作作风。

四、结论

本文在前期调研的基础上, 应用在2014级本科生的教学过程中, 在有限的学时内, 改进现有的实验教学设计模式, 探讨构建新型实验课程教学模式;使学生掌握不同编译阶段的处理方法, 提高学生编写、调试程序的动手实践能力, 使实验效果有较大改观。可将此项目推广到更多的计算机类专业课程, 从整体上提高本专业的实验教学水平。

摘要:编译技术是计算机科学中重要且独立的研究领域, 《编译原理》课程实践与理论紧密结合。加强实验学习对于理解和掌握编译技术十分重要, 强设计性是该课程实验教学的特点。本文在前期调研的基础上, 在有限的学时内, 改进现有的实验教学设计模式, 探讨构建新型实验教学模式;通过使学生掌握典型的编译处理方法, 提高学生编制、调试程序的动手能力, 使实验效果较之前得到较大改观。

关键词:编译原理,实验教学,教学模式

参考文献

[1] Noaka I., Takeuchi H. The Knowledge Creating:How Japanese Companie Create the Dynamics of Innovation[M].New York:Oxford University Press, 1995.

[2] 张昱, 陈意云, 郑启龙.编译原理课程的教学方法和教材建设[J].中国大学教学, 2005 (7) :61-62.

[3] 张昱.编译原理课程实验方案设计与实施[EB/OL].[2009-7-26], http://staff.ustc.edu.cn/yuzhang/compiler/index.html.

[4] 张昱, 陈意云.编译原理课程实践改革探索[J].计算机教育, 2008 (8) :24-26.

编译原理论文范文第2篇

FATAL严重错误

cannot open file不能打开文件

I/O error closing fileI/O错误 正在关闭文件

I/O error writing fileI/O错误 正在写文件

I/O error reading fileI/O错误 正在读取文件

out of memory缺少内存

assembler limit : macro parameter name table full汇编限制:宏参数名表已满 invalid command-line option无效命令行参数

nesting level too deep嵌套过深

unmatched macro nesting不正确的宏嵌套

line too long行太长

unmatched block nesting不正确的区、段嵌套

directive must be in control block指令必须在控制段

error count exceeds 100; stopping assembly错误数超过100,停止汇编 invalid numerical command-line argument无效命令行参数

too many arguments太多参数、定义、冲突

statement too complex声明太复杂

Internal Assembler Error内部汇编错误

missing source filename找不到源文件名

COFF error writing fileCOFF错误,正在写文件

invalid debug and browser data; file exceeds line limit不能排除故障和浏览数据;文件超过行限制

cannot find link.exe找不到连接程序

cannot find cvpack.exe找不到cvpack.exe

SEVERE严重的错误

memory operand not allowed in context内存操作数无法载入上下文环境 immediate operand not allowed当前操作数无法载入

cannot have more than one ELSE clause per IF blockIF段只能有一个ELSE从句 extra characters after statement附加的字符在声明之后

symbol type conflict符号类型冲突

symbol redefinition符号已经定义

undefined symbol符号没有定义

non-benign record redefinition没有利于记录的定义

syntax error语法错误

syntax error in expression表达式存在语法错误

invalid type expression无效的类型表达式

distance invalid for word size of current segment当前区、段的大小命令无效

PROC, MACRO, or macro repeat directive must precede LOCALPROC, MACRO, 或 macro repeat指令必须在LOCAL之前

.MODEL must precede this directive.MODEL必须在指令之前

cannot define as public or external不能定义为公有或外部的

segment attributes cannot change区、段属性不能更换

expression expected预期表达式

operator expected预期操作数

invalid use of external symbol使用了无效的外部符号

operand must be RECORD type or field操作数必须是RECORD类型或域

identifier not a record没有记录标示符

record constants may not span line breaks连续记录不能超过行间隔

instruction operands must be the same size命令操作数必须是一样的长度

instruction operand must have size命令操作数必须有长度

invalid operand size for instruction操作数长度对于指令无效

operands must be in same segment操作数必须在相同的段

constant expected连续预期

operand must be a memory expression操作数必须是一个内存表达式

expression must be a code address表达式必须是一个代码地址

multiple base registers not allowed不允许多重基础寄存器

multiple index registers not allowed不允许多重标志寄存器

must be index or base register必须是基础或标志寄存器

invalid use of register使用的寄存器无效

invalid INVOKE argument无效的INVOKE符号

must be in segment block必须在区、段、块中

DUP too complexDUP太复杂

too many initial values for structure太多结构的基础资料

statement not allowed inside structure definition声明不允许在结构里面

missing operand for macro operator找不到宏的操作数

line too long

segment register not allowed in context上下文不允许有寄存器

string or text literal too long文本或字符串太长

statement too complex声明太复杂

identifier too long标识符太长

invalid character in file文件里有无效字符

missing angle bracket or brace in literal语句里找不到同样的括弧或框架

missing single or double quotation mark in string找不到单引号或双引号

empty (null) string没有字符串

nondigit in number没有总数

syntax error in floating-point constant不确定的指向中有语法错误

real or BCD number not allowed不允许real或BCD编码

text item required必须的文本项

forced error强制错误

forced error : value equal to 0标准等于零

forced error : value not equal to 0标准不等于零

forced error : symbol not defined符号没有定义

forced error : symbol defined符号已定义

forced error : string blank字符串是空的

forced error : string not blank字符串不是空的

forced error : strings equal字符串是相同的

forced error : strings not equal字符串不是相同的

[ELSE]IF2/.ERR2 not allowed : single-pass assembler[ELSE]IF2/.ERR2不允许单独汇编 expression too complex for .UNTILCXZ.UNTILCXZ表达式太复杂

can ALIGN only to power of 2仅能对齐到2的幂

structure alignment must be 1, 2, 4, 8, or 16结构对齐必须是1,2,4,8或16 expected预定义

incompatible CPU mode and segment size不匹配的CPU模式和段尺寸

LOCK must be followed by a memory operationLOCK指令必须跟在内存操作之后 instruction prefix not allowed不允许的命令前缀

no operands allowed for this instruction指令没有操作数

invalid instruction operands无效的指令操作数

initializer magnitude too large for specified size初始指定尺寸太大

cannot access symbol in given segment or group在特定的段或类不能存取符号

operands have different frames操作数存在不同的结构

cannot access label through segment registers在段寄存器中不能存取标记

jump destination too far跳转目标太远

jump destination must specify a label跳转目标必须指定一个标记

instruction does not allow NEAR indirect addressing指令不允许近间接寻址

instruction does not allow FAR indirect addressing指令不允许远间接寻址

instruction does not allow FAR direct addressing指令不允许远直接寻址

jump distance not possible in current CPU mode跳转距离不适合当前CPU模式

missing operand after unary operator一元运算符之后找不到操作数

cannot mix 16- and 32-bit registers不能结合16位和32位寄存器

invalid scale value无效范围标准

constant value too large连续标准太多

instruction or register not accepted in current CPU mode当前CPU模式不认可的指令或寄存器 reserved word expected预期的保留字

instruction form requires 80386/486指令需要80386/486指示

END directive required at end of fileEND指令必须在文件结尾

too many bits in RECORD太多位在记录里

positive value expected预期的明确的标准

index value past end of string索引标准在字符串结尾之后

count must be positive or zero计数必须是零或明确的

count value too large计数标准太多

operand must be relocatable操作数必须是转移表

constant or relocatable label expected预期的转移表或连续的

segment, group, or segment register expected预期的段,类型或段寄存器 segment expected预期的区段

invalid operand for OFFSETOFFSET操作数无效

invalid use of external absolute由于完全外部的使用无效

segment or group not allowed区段或类型不允许

cannot add two relocatable labels不能增加双重转移表标记

编译原理论文范文第3篇

计算机1302 蔡元昊 1311611517

引言:编译程序构造的原理和技术一直属于最近公布的核心知识领域,已成为计算机科学必备的专业基础知识。而且编译程序的构造是计算机科学中一个非常成功的分支,也是最早获得成功的分支之一,他所建立的理论和技术方法值得人们深入研究和学习。

摘要:编译程序是计算机的核心系统之一,是掌握计算机理论和软件技术的关键知识,编译原理合计数为人们理解计算机语言。创造优秀的软件奠定了理论基础。扩展了视野,开辟了捷径。编译原理和技术可以应用在其他诸如软件建模语言、硬件描述语言。脚本语言等的翻译方面:在集成化软件开发环境以及软件安全一直有着广泛的应用。而且,编译原理的研究有力的推动了计算机科学、计算机工程、软件开发以及人机工程的研究和发展。编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。

一、早期编译技术的发展

编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序(source language) 编写的程序作为输入,而产生用目标语言(target language )编写的等价程序。通常地,源程序为高级语言(high-level language ),如C或C + + ,而目标语言则是目标机器的目标代码 (object code,有时也称作机器代码(machine code )),也就是写在计算机机器指令中的用于运行的代码。这一过程可以表示为: 源程序→编译器 →目标程序

在20世纪40年代,由于冯·诺伊曼在存储-程序计算机方面的先锋作用,编写一串代码或程序已成必要,这样计算机就可以执行所需的计算。开始时,这些程序都是用机器语言 (machine language )编写的。机器语言就是表示机器实际操作的数字代码,例如: C7 06 0000 0002 表示在IBM PC 上使用的Intel 8x86处理器将数字2移至地址0 0 0 0 (16进制)的指令。

但编写这样的代码是十分费时和乏味的,这种代码形式很快就被汇编语言(assembly language )代替了。在汇编语言中,都是以符号形式给出指令和存储地址的。例如,汇编语言指令 MOV X,2 就与前面的机器指令等价(假设符号存储地址X是0 0 0 0 )。汇编程序(assembler )将汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。

汇编语言大大提高了编程的速度和准确度,人们至今仍在使用着它,在编码需要极快的速度和极高的简洁程度时尤为如此。但是,汇编语言也有许多缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。 发展编程技术的下一个重要步骤就是以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。例如,前面的汇编语言代码可以写成一个简洁的与机器无关的形式 x = 2

第一个编译程序的出现是在20世纪50年代早期,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。 随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。 另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展.还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。 在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。 编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。

在九十年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。随着芯片研制,国内还有若干单位也在开展基于GCC生成面向特定芯片的编译器工作。编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变。

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

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高阶语言作为输入,输出也是高阶语言的编译器。例如: 自动并行化编译器经常采用一种高阶语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。 二.编译工具

1.C语言对应的编译器——VS2008 C语言对应的编译器可以用VS200

3、 VS200

5、VS2008 、TC等,以最新版本的Visual Studio 2008为例

Microsoft® Visual Studio® 2008 使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了 Microsoft 开发智能客户端应用程序的构想。借助 Visual Studio 2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用 Visual Studio 2008 快速创建能够利用 Windows Vista™ 和 2007 Office system 的更安全、更易于管理并且更可靠的应用程序。

Visual Studio 2008 在三个方面为开发人员提供了关键改进: 1.快速的应用程序开发 2.高效的团队协作 3.突破性的用户体验

Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。 2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。

Visual Studio 9 目前可以确定的是支持建立于 DHTML 基础上的 AJax 技术,这种微软在

Visual InterDev 时代提出的基于异步的客户端动态网页技术在当年并没有像微软预期中的那么流行起来,反而随着 GMail 等应用而东山再起,渐渐成为主流网络应用之一。同时 Visual Studio 9 会强化对于数据库的支持以及微软新的基于工作流(Workflow)的编程模型。预计为了保持与 Office 系列的统一,Visual Studio 9 的名称为 Visual Studio 2008。

2. C++语言对应的编译器——Microsoft Visual C++ 6.0 Visual C++是一个集成环境的C++编译器,功能很多。还有 Borland C++ Buider C++编译器,比较小巧实用。 C++ Buider 也是C++编译器,是另一个公司的产品。

Microsoft Visual C++ 6.0功能特点:

几乎所有世界级的软件,从业界领先的Web浏览器到面向任务的企业应用,都是使用Microsoft Visual C++开发系统来开发的。要用C++来开发Windows和Web上的高性能应用程序,Visual C++是效率最高的首选工具。Visual C++ 6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来更高水平的生产效率。除了IntelliSense Technology(智能感应技术)和Edit and Continue(即编即调)等显著缩短开发时间的新特性外,Visual C++ 6.0还为Web开发和企业开发提供更良好的支持。Microsoft Visual C++ 6.0专业版的健壮的构件开发、强大的数据库工具和完备的Internet支持将使您从中受益,创建出策略性的商务解决方案来。

有了这些显著缩短开发时间的新特性,您可以享受到一种全新水平的工作效率。编码所费的时间减少了,编译所费的时间减少了,调试所费的时间也减少了,一句话,创建应用程序所费的时间减少了,同时还可以享受到更多的构件重用。 获得令人目眩的速度。本已是速度的标准的Visual C++如今更上一层楼,Visual C++ 6.0在多处进行了最优的调整,这样的结果是:开发者可以创建出可能范围内的最小最快的构件和应用。 3.JAVA语言对应的编译器——eclipse JCreater 、JBuilder、eclipse、myeclipse、netbean这几个是主流,eclipse和myeclipse(eclipse的扩展功能更多)是主流中的主流。

JBudler Eclipse 属于IDE,是集成开发环境(IDE)!IDE是集成了编译,检错,自动查找错误,深度反检查功能的辅助开发工具。就是说,只要属于java的IDE,都会把sun的编译器集成到它里面来。而JBudler与Eclipse 等这些开发工具更多的是体现在对不同层面java开发提供了不同的强大功能。比如:MyEclipse强势在web开发的便捷。JBudler对GUI更强大。 eclipse是一个非常著名的集成开发工具,其自身功能强大而易用。更为重要的是,软件本

身是一个开放源代码的项目,由一个国际组织进行管理,很多大公司都是这个组织的成员,包括IBM和Borland等著名的软件开发商,事实上,eclipse本来是IBM开发的工具,是由IBM将其贡献给开放源代码社区的。正因为如此,任何人都可以免费获得eclipse开发环境,而不需要支付任何费用。

eclipse的另一个非常重要的特点是其提供了非常灵活的扩展能力,事实上,eclipse可以被称作一个开发平台,它提供了丰富的接口可以扩展其本身。eclipse本身是使用Java开发的,开发人员可以简单的按照其规范开发eclipse的插件,就可以在eclipse平台上增加更多的功能。大量的开发人员基于eclipse开发了插件,比如C++开发、UML设计、J2EE开发等都有相应的插件。事实上,包括IBM在内,很多大的软件公司基于eclipse开发了其自己的软件产品,这无疑得益于eclipse良好的结构。

三、编译原理的近期发展 随着大规模集成电路、网络通讯和其它数字信息技术的迅速发展,目前嵌入式系统己经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术等各方面,在人们日常生活中的方方面面到处是嵌入式系统设备的身影,如手机、PDA、智能家电以及汽车电子等。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术和人们的生活结合越来越紧密,人们日常的工作、学习和生活方式终将不可避免地逐步改变,嵌入式产品正在逐步形成时尚,在当今的信息社会中扮演越来越重要的角色。

嵌入式系统一般指的是非PC系统,它包括完全植入嵌入式硬件内部的为特定应用设计的专用计算机系统,以及相应的硬件。嵌入式系统以应用为中心的,它的软硬件可以根据需求进行裁减,以此来适应目标系统对外形尺寸、功能、可靠性、成本、功耗、外部接口等方面的严格要求。简单地说,嵌入式系统集操作系统、应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合要求实时和多任务的应用。

由于嵌入式系统资源有限,一般无法提供编译、汇编、链接等工具,同时也很难提供高级调试功能,因此嵌入式系统的应用软件一般不能直接在嵌入式系统平台上进行开发,而需要在交叉编译环境中开发。也就是说通常是在另外的开发平台上开发的,一般这种开发平台由通用的计算机系统和专用的嵌入式系统软件开发工具组成。

编译实现方式的发展主要分一下五类:手工、机器语言、汇编、系统程序设计语言、自动构造工具lex yacc gcc。推动编译技术发展的因素主要包括:语言范型(计算模式)、计算机体系结构语言范型主要包括:命令式(imperative language) 、应用式(applicative) 、基于规则的(rule-based)、面向对象的(object-oriented)、并行计算(parallel computing)。 体系结构主要包括:万诺曼机体系结构、并行体系结构、嵌入系统。编译程序执行环境主要包括:批处理、交互环境、嵌入系统环境、并行编译技术、交叉编译。 编译程序在一个机器(宿主机)上运行,产生另一个机器(目标机)的汇编语言。嵌入式系统中的应用程序正是借助这样的编译程序生成。 目标处理器MIPSX是MIPS系列芯片的种,属于RISC体系结构,来源于斯坦福大学的MIPS计划。由于该系列CPU不是采用加州大学伯克利分校的RISC窗口技术而是采用消除流水线各级互锁的微处理器MIPS(MicroprocessorWithout Interlocking Pipeline Stage)技术,因此而得名。MIPS是将IBM公司对优化编译程序的研究和加州大学伯克利分校的大规模集成电路的思想结合起来的产品。

由于RISC指令集的简单和整齐,为了达到更好地利用计算机的性能,MIPS系列芯片中很好地应用了流水线策略。流水线是现代各类微处理器都采用的指令执行技巧,即将若干条指令的取指、译码和执行过程部分重叠在流水线中同时执行。以前在CISC计算机中,由于指令多而复杂,处理每条指令的所需时间不固定,当后面指令需要前条指令的结果时,往往造成指令互锁,因此无法实现流水 线。而斯坦福大学的MIPS计划就是在编译的过程中,利用编译程序优化处理器的流水线以求提高处理器流水线的效率。由于采用了硬件连线控制来执行数目不多的简单指令,而且还能重组软件流水线,这样就减少了硬件复杂性。 “编译原理”课程分析编译原理课程一般利用常用软件如C,Pascal等来构建编译的各部分程序,编译原理的构成包括词法分析,语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。编译原理课程的学习可以对程序设计语言的设计和实现有深刻的理解,还可以有助于快速理解定位和解决在程序编译、测试与运行中出现的问题。编译程序规模大。由于编译原理是一个极其复杂的系统,程序规模大,将它肢解开来一部分一部分地研究。理论知识抽象。要完整地构造一个编译系统并不是一件容易的事情,它不仅需要具有较完备的软件知识,并需要掌握现有的软件工具的使用,而且更重要的是要有丰富的实践经验,了解硬件系统结构和操作系统的功能。算法的理解和实现。编译原理这门课包含许多理论知识和算法,这些理论的学习和理解都存在着一定的难度。其中理论知识包括:词法分析器的构造,语法中各种分析器(LR,LL,SLR,LALR等)实现与完成。

在编译原理的不断发展和完善过程中,一本本课程教材接踵而至,其中不乏非常优秀的“名书”。编译领域里程碑式的经典著作——龙书,20年后终于出新版!这是一个延绵30年的故事,这是一部关于龙书的传奇!最新版本,增添三章节内容,使龙书地位更权威! 1977年,Alfred V. Aho 和Jeffrey D. Ullman 出版《Principles of Compiler Design 》,封面是一名骑士和一只恐龙,因此第一次被人称为龙书,但因为那条龙是绿色的,所以称为绿龙书。过了9年,1986年,原来的两位作者加上Ravi Sethi, 升级了前一本书,书名改为《Compilers: Principles, Techniques and Tools》,封面依然沿用骑士和恐龙,那头龙是红色的,因此被叫做龙书二或者是红龙书。又过了一个9年,又一个9年,编译领域的巨无霸--龙书始终都没有升级。终于在2006年年底,龙书升级了。作者又增加了Monica S. Lam,名字沿用《Compilers: Principles, Techniques and Tools》,封面依然保持恐龙和武士的设计,但这次的龙是紫色,因此叫做紫龙书。

本书全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,本书进行了全面的修订,涵盖了编译器开发方面的最新进展。每章中都提供了大量的系统及参考文献。本书是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参考读物。Alfred V. Aho是哥伦比亚大学的Lawrence Gussman计算机科学教授。 Aho教授多次获奖,其中包括哥伦比亚校友会颁发的2003Great Teacher奖和电子与电器工程师协会的Jonh von Neumann奖章。他是美国国家工程院院士,以及ACM和IEEE的会员。Monica S. Lam是斯坦福大学的计算机科学教授。她曾经是Tensilica 的首席科学家,并且是moka5的创建者和首席执行官。她领导了 SUIF项目。该项目开发了最流行的研究性编译器之一,并首创了很多在工业界得到应用的编译技术。Jeffery D.Ullman是Gradiance公司的首席执行官和Standford大学的StanfordcW.Ascherman计算机科学(名誉退休)教授他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础软件的教育技术.他是美国国家工程院的院士,ACM的会员,并且是 Karlstrom奖和Knuth奖的获得者。

我对编译技术发展的总结:

编译原理论文范文第4篇

一、新闻与编译

对于新闻而言, 编译是其中一种重要的信息传播方式。刘其中教授在其著作《英汉新闻翻译》一书中, 对新闻编译的定义如下:新闻编译是通过翻译和编辑的手段, 将用原语写成的新闻转化、加工成为译语语言新闻的翻译方法 (2009:204) 。新闻编译可以视为两种文化之间交流传播的桥梁, 是跨文化交流的形式之一。所以新闻编译对译者的要求, 除了充分考虑目的语的传播效果, 还需要考虑目的语读者的“文化背景和本国文化背景的差异、语言文化使用的区别以及思维方式和价值判断的冲突” (张志成, 2013:103) 。因此, 译者在进行编译时, 需谨记这些因素, 从目的语读者的角度出发, 充分考虑其接受能力, 确保编译译文能达到较好的传播效果。

标题是新闻的重要组成部分, 是其内容的概括, 作用主要是帮助读者对新闻进行选择、阅读和理解。

二、英语新闻标题特点

(一) 省略

刘其中教授认为中英文新闻标题之间的差异主要有两点:其一是由于英文单词所占空间大, 因此用字节省, 而汉字占空间小, 同样的空间汉字可表达内容更为丰富, 信息量更大;其二是英语标题对作用于语法结构的字词能省则省, 以达标题简洁的目的 (2009:208-210) 。

(二) 时态

英语新闻标题的时态很有特点。英语动词运用不同的时态表达时间的差异, 但由于英语标题需要简单明了地表述新闻中心内容, 通常使用一般现在时和现在进行时这两种时态。需要注意的是, 大部分新闻是已经发生了的, 但为了凸显新闻的时效性和及时性, 英语新闻的标题会使用一般现在时表达已发生的新闻。当新闻标题中出现过去分词的形式, 则通常并非表达过去发生的事情, 而是表达被动的含义。因此在汉英新闻编译中, 对新闻中动词形式的选择、时态的选择非常重要。

(三) 用词丰富

与中文标题一样, 英语新闻标题对吸引读者阅读新闻起着至关重要的作用。英语新闻标题同通常善用简单词、小词生动形象地表达新闻的主要内容, 因此在编译过程中需要注意用词的选择。同时, 有些英语单词的意义会随着社会发展产生新的内涵, 既生动形象又吸引读者, 如unicorn原指独角兽, 现在在新闻标题中主要指市值超过10亿美元的初创企业。

三、新闻标题编译的策略

(一) 直译标题

由于原中文标题较为简短, 且能恰当地概括文中主要内容, 笔者初译时直译原文标题, 外籍专家 (下称“外专”) 审校时并未做太大改动。

案例:

中文标题:上海等多省份精子库陆续告急合格率低致库存紧张

初译标题:Sperm banks facing shortage because of low qualified percentage

定稿标题:China’s sperm banks facing dire shortage of quality donations

这篇新闻中文标题的特点是简要概括了文章主要内容, 没有过多的修辞表达。笔者在翻译时选择关键的信息作为标题, 外专对笔者所翻译的标题并未大幅度地修改, 而是进一步对笔者的版本进行润色, 如加入强调新闻发生的地域范围的词China, 以及用更简明的形式来表达标题内容。此外, 外专采用“dire shortage”的表达, 凸显出了“告急”的含义, 同时可以更抓读者眼球。

(二) 更改标题形式

原文新闻标题形式多样, 主要呈现文章内较为吸引读者的内容。因此, 笔者在翻译时保留了中文内容, 但改变了标题的形式。外专在审校时, 考虑到目的语读者的接受情况, 对笔者的初译进行了较大幅度的修改。

案例一:

中文标题:专业预警主要针对办学者考生家长需理性看待

初译标题:To view the majors on the warning list rationally

定稿标题:Waning lessons:Shanghai universities given a list of unworthy degree courses

案例二:

中文标题:一屋一床背后的城市与理想追逐

初译标题:Living in a metropolis of high rental prices—conflicts between the reality and dreams

定稿标题:Shanghai graduates battle to find reason able accommodation

案例三:

中文标题:国债继续遭秒杀上海有网点4分钟售罄, 中老年人是“铁

初译标题:The buying wave of China treasury bonds

定稿标题:Going!Going!Gone!

Crowds rush Shanghai banks to snap up savings bonds

通过对比笔者的初译和外专的定稿, 可见在翻译案例一和三时, 笔者的译文比审校更简单, 但出现了两个明显的问题:题目宽泛、没有吸引力。在案例一的定稿中, “Waning lessons”二字马上吸引了读者眼球, 同时后面的叙述也比笔者一开始的标题更明确。

其一, 这次专业预警来自上海市教委, 因此需要强调是上海的大学;其二, 文章内容其实更强调发布了专业预警而非理性看待问题, 所以外专的题目比笔者更准确表达了文章内容, 且用词简练。案例三的定稿更是吸引眼球。外专擅用英语动词的不同形式来表达不同含义。在此案例中, 外专用“Going!Going!Gone!”简要而清楚地表达出人们匆忙购买国债但国债马上售罄的情景, 后面则是简单说明这三个词所形容的抢购国债事件, 这样的标题不仅引人注目, 同时还生动有趣地表达出文章的主要内容。此外, 外专为标题增加了感叹号, 能增强标题语气, 增添急迫气氛。在案例二中, 笔者翻译时无法脱离原文的牵引, 虽然题目形式改变了, 但标题还是存在表达内容不清晰的问题, 无法直观表达出文章的主要内容就是上海房租对毕业生追梦的影响。而外专的表达则清楚指明文章就是说上海毕业生如何与居高不下的租金斗争的故事。

此外, 这三则新闻标题定稿中动词的时态也值得关注。英语动词的时态应用十分考究, 而在新闻标题中, 虽然描述的都是已经发生了的新闻事件, 但通常使用“一般现在时、现在进行时和将来时来代替过去时态, 这样可以大大增强新闻的新鲜感、现实感和直接感” (刘金龙, 2011:46) 。从以上案例二、三的标题可以看出, 定稿遵循了这一原则, 动词使用了一般现在时, 而案例一由于上海各大高校是“专业预警”的作用对象, 受其影响, 因此标题里的动词采用了过去分词的形式。

四、结语

新闻标题是一篇新闻吸引读者眼球的最重要的一环, 因此, 新闻标题编译的重要性不言而喻。笔者以《环球时报》英文版上海都市版的社会新闻编译实践例子为本文分析的基础, 根据相关的翻译、编译及新闻传播学的理论和原则对所选案例进行分析, 旨在为今后的汉英社会新闻标题的编译提供借鉴。在编译汉英新闻标题时, 虽然可以采取不同策略, 但归根结底, 译者需要从目的语读者的角度进行考量, 推敲其信息需求, 使译文尽可能符合其阅读习惯。在此基础上, 译者制定相应的编译策略, 令其编译的新闻标题能吸引目的语读者阅读, 增加所编译新闻的传播力和影响力。

摘要:中国本土出版的英文报纸是外国人了解国内新闻的重要渠道。此类报刊除了撰写新闻稿件, 还会对部分新闻进行编译, 本文主要关注点为社会新闻标题的编译及其策略。本文将以《环球时报》英文版上海站编译的社会新闻为基础, 通过对比中文标题、初译标题以及外籍专家的最终定稿标题, 结合相关的新闻传播学及编译等方面的理论知识, 分析汉英新闻编译时标题的处理策略。

关键词:新闻标题,编译策略,目的语作者

参考文献

[1] 刘金龙.英语新闻标题中的修辞格及其翻译[J].中国科技翻译, 2011 (24) :45-49.

[2] 刘其中.汉英新闻编译[M].北京:清华大学出版社, 2009.

编译原理论文范文第5篇

把指定的文件插入到预处理命令行所在的位置并取代该命令行,即把指定的文件和当前的源程序文件连接成一个源文件。 #include<文件名>

在文件包含目录中去查找指定的文件,并将该文件添加到源文件中。 一个被包含的文件中可以含有文件包含命令来包含另一个文件。 #include“文件名”

命令中文件名的位置是当前源文件的位置,若在当前目录中未找到该文件,则再到“包含目录”中去查找。

用一个标识符表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时对程序中所有出现的宏名用宏定义中的字符串去代换,这就是宏替换。它是由系统编译程序时自动完成的。

无参宏定义

#define 标识符 字符串 如

#define PI 3.14 使用宏时要注意:

(1) 宏定义是用宏名来表示一个字符串,在宏展开时用字符串取代宏名。

2) 宏定义不是变量定义或语句,在行末不能加分号,如果加上分号则分号也成为字符串的一部分。

(3) 宏定义可以出现在程序的任何地方,其作用域是宏定义命令所在位置开始到源程序结束。如果要终止其作用域可使用#undef命令。

(4) 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时将逐层替换。

(5) #define PI 3.1415926 #define AREA PI*y*y 有参宏定义

#define 宏名(形参表) 字符串

对带参数的宏,在调用中不仅要进行宏展开,而且还要用实参去替换形参。 带参宏调用的语法格式如下: 宏名(实参表); #define M(x) x+1 K=M(3); K=3+1 定义有参宏时要注意以下几点:

(1) 有参宏定义中,宏名和形参表之间不能有空格出现。

(2) 在函数中,调用时要把实参的值赋给形参,进行“值传递”。而在带参宏调用中,只是符号替换,不存在值传递问题。

(3) 宏定义中的形参只能是标识符,而宏调用中的实参可以是表达式。

字符串内的形参通常用括号括起来以避免出错。

在使用宏时不仅要将形式参数用括号括起来,还应将其整体用括号括起来。 #define S(y) ((y)*(y)) 条件编译

条件编译可以按不同的条件去编译不同的程序段。 1#ifdef #ifdef 标识符 程序段1 #else 程序段2 #endif 功能:如果标识符已被#define定义过,则对程序段1进行编译,否则对程序段2进行编译。格式中的#else部分可以没有,即: #ifdef 标识符

程序段 #endif

2、#ifndef 语法格式如下: #ifndef 标识符 程序段1

#else 程序段2 #endif 功能与ifdef形式的功能正好相反。

3、#if 常量表达式 #if 常量表达式 程序段1 #else 程序段2 #endif 功能:如果常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译,因此可以使程序在不同条件下,完成不同的功能。

编译原理论文范文第6篇

关键词:化工原理;教学改革;教学方法

基金项目:吉林农业大学教改示范课校级优秀课《化工原理》

化工原理不仅是化学工程及其相近专业,也是食品、制药、生物、环境、轻化、高分子等专业必修的一门重要专业基础课,是连结基础课与专业课之间的纽带。化工原理又是一门工程学科,它和工程应用的结合非常密切。在培养学生工程学的观点,提高学生工程应用与创新能力方面起着重要作用[1]。但是,学生普遍反映该课程较复杂难以理解,笔者认为这是由《化工原理》课程的特殊性所决定的。

因此,作为《化工原理》课程的授课教师,如何把握课程特点与相关专业特色的统一,使学生学好这门课程就显得尤为重要。笔者通过对不同专业学生的教学研究,总结了自己的一些观点,以供参考。

1 明确教与学的关系与地位

以教师为中心灌输理论知识,教学中只注重知识的传递,忽视动手能力、独立思考能力、自学能力与创造能力的培养理念是教学改革的严重障碍。随着社会的发展这种理念不再适合教学和社会的要求。现在教学的突出特点是,以发展学生智能为出发点,充分发挥教师的主导作用,充分调动学生的学习积极性,尤其注意学生学习方法的研究。确立教学活动中学生的主体地位,发挥学生的主体作用;要有重视实践的观念,应让学生在实践活动中锻炼成长。但是,要想充分发挥学生主体作用,必须发挥教师的主导作用。主导是为主体确立的,而不能削弱、代替或否定主体。发挥主导作用,是为了发挥主体作用。

2 多种教学方法,生动灵活

优化教学方法和手段有利于学生对教学内容的理解,有利于充分调动学生的主观能动性、积极性,有利于培养学生的自学能力、分析能力、总结能力和解决问题的能力。为此,我们在教学中运用了如下的教学方法[2-3]:

2.1 采用多媒体教学

采用现代化教学手段是解决有限的课堂教学时间与丰富教学内容之间矛盾的有效途径。丰富的多媒体课程教学软件开发与运用,将教授的知识以各种音频信息、文本、图像、视频等方式生动、形象地表达, 有利于提供感性知识,启发思维能力,有助于化难为易加深理解,进一步激发学生的学习兴趣。有利于学生对比较复杂、抽象知识的理解,为掌握知识创造有利条件。增强学生的感性知识,引导学生分析、归纳、综合、形成科学概念和思想,掌握事物的本质和发展规律,进一步提高抽象思维能力和概括事物的能力。

2.2 培养学生工程性的意识

《化工原理》是一门实践性和综合性的工程技术课,是从事相关工程生产工作的理论支柱和基本指导。《化工原理》的学习在掌握扎实的理论知识前提下,还要掌握必要的工程知识和实践。一般认为工程概念包括:理论正确性、技术可行性、操作安全性和经济合理性。这四个方面相互关联、相互影响,组成一个有机的整体,理论正确性是前提,技术可行性和操作安全性是关键,经济性是整个概念的核心。

3 知识的衔接与拓展

3.1 基础知识的衔接

教师在教授《化工原理》课程时,要立足于所教授知识内容的来源基础,即采用已学过的知识作为现在所学内容的基础,并在此基础上结合相关知识点进行具体应用。指导学生牢牢把握基础知识和基本技能这一环节。而学生要想学好这门课程必须具有扎实的基础知识和基本技能。基础知识要连成线,穿成串,结成网,形成体。

3.2 拓展与专业相关的知识点

在教学过程中,可以通过提问提出相关专业中某些内容(该内容是其他科目的常见问题或知识点),教师利用正在学习的知识来解释说明这些内容体现的原理。使学生知其然,知其所以然。例如,在微生物摇床培养过程中,摇床转速的大小对微生物生长的影响,主要体现了流体动力学中流体流速对物质传质和传热的影响,即转速越快,传质与传热的效率越高,但是达到一定程度,流体的剪切力对微生物又会产生一定损伤,所以微生物在摇床培养过程中要注意转速的控制。

4 教师自身素质的提高

教师在教学过程中起主导作用,教师在具备本专业扎实地基础理论、基本知识和技能的前提下,为了更好的提高教师自身能力,完善自身的体系只有不断的扩充自身的知识,必须熟悉本专业最新的科研成果和发展前沿;必须了解与《化工原理》课程相关的专业知识;还应该追踪新兴学科知识的进步,及在本专业方面的应用。自身的知识结构要多元化,实现学科交叉,知识互补,活跃学术思想,深入开展学术交流,更大程度的提高和发挥自身的积极性和创造性[4]。

总之,课程教学是一项综合性系统工程, 课程教学方法的改革,是教学研究的永恒的课题,是提高教学质量的关键。教师在鼓励创新精神、培养创造能力的合格人才的同时还要具有全面发展的整体观念,树立以学生为主体的观念、重视实践的观念、教育思想发展的动态观念及教书育人的观念。

参考文献

[1] 王振芳,陆维玮,任晓红,等.化工原理课程建设与改革的几点经验和体会[J].化工高等教育,2006,23(1):46-47.

[2] 李明艳,班书昊. 用多媒体技术提高专业课教学效果探讨[J].现代商贸工业,2010, 22(17):237-238.

[3] 陈蔚萍,陈丹云,毛立群.《化工原理》教学的探讨与实践[J]. 广东化工,2009, 36(5):209-211.

[4] 叶志明. 谈当好一名高等学校教师的基本素质[J]. 中国大学教学,2006,11:1-5.

朱学军(1970-),男,汉族,吉林柳河人,吉林农业大学生命科学学院讲师,吉林大学生物化学与分子生物学博士毕业,研究方向:化工原理、酶工程和酶制剂生产。

上一篇:大学生毕业德育论文范文下一篇:银行业务监管论文范文