2024-01-09 14:22来源:m.sf1369.com作者:宇宇
在编译原理中,语法规则和词法规则不同之处在于:规则主要识别单词,而语法主要识别多个单词组成的句子。
词法分析和词法分析程序:
词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。
语法分析(Syntax analysis或Parsing)和语法分析程序(Parser)
语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.
语义分析(Syntax analysis)
语义分析是编译过程的一个逻辑阶段. 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.
编译原理,说得通俗易懂一些就是:让机器通过某种机制和规则,将一种由人们书写的高级程序代码,经过若干步骤,最终翻译成机器可理解执行的二进制代码。
编译原理技术的具体应用,例如:
(1)、我们用户通常编写的 C/C++ 程序源代码(*.C/*.CPP),通过 Microsoft Visual C++ 编译器,将由人工书写的 C/C++ 语言程序源代码(*.C/*.CPP),最终翻译成机器可执行的二进制代码(*.EXE);
(2)、人工智能领域中的自然语言处理、机器翻译技术(例如:英/汉翻译、日/汉翻译系统等)等,都需要使用到编译原理技术。
软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
软件工程存在于各种应用中,存在于软件开发的各个方面。而程序设计通常包含了程序设计和编码的反复迭代的过程,它是软件开发的一个阶段。
1 引言
计算机语言之所以能由单一的机器语言发展到现今的数千种高级语言,就是因为有了编译技术,编译原理技术是计算机科学中发展的最迅速、最成熟的一个分支,它集中体现了计算机发展成果与精华。
未来计算机工作者,都应该掌握这门基础的专业基础知识,但由于编译原理课程具有很强的理论性和实践性, 编译原理又是计算机专业基础课程,该课程在介绍程序设计语言实现技术的同时,又介绍程序构建的一些相关理论知识,如形式语言、自动机理论、语法制导及代码优化等理论,内容比较抽象难理解,学生在学习过程中,困难重重,作为授课老师,如何让这门课的教学效果得到较大改观是一个需要加以解决主要任务。
2 “编译原理”课程分析
编译原理课程一般利用常用软件如C,Pascal等来构建编译的各部分程序,编译原理的构成包括词法分析,语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。
编译原理课程的学习是学生可以对程序设计语言的设计和实现有深刻的理解,还可以有助于学生快速理解定位和解决在程序编译、测试与运行中出现的问题。
3 教学过程存在问题
在教学过程中,学生理解和掌握这门课有一定难度,出现这种情况的原因存在以下几个方面:
(1)编译程序规模大。由于编译原理是一个极其复杂的系统,程序规模大,导致不可能在一节课或一段时间讲述完,只好将它肢解开来一部分一部分地研究,但是这样容易造成知识体系断裂。不可能在短时间让学生对整个编译系统各部分融会贯通,理清各部分逻辑关系的顺序。学生学习过程中应该注意前后联系,切忌由静止的、孤立的观点看待问题。
(2)理论知识抽象。要完整地构造一个编译系统并不是一件容易的事情,它不仅需要具有较完备的软件知识,并需要掌握现有的软件工具的使用,而且更重要的是要有丰富的实践经验,了解硬件系统结构和操作系统的功能。这些对于刚学完基础知识的学生来讲,简直如同“天书”,理解难度系数相当大。
(3)算法的理解和实现。编译原理这门课包含许多理论知识和算法,这些理论的学习和理解都存在着一定的难度。其中理论知识包括:词法分析器的构造,语法中各种分析器(LR, LL,SLR,LALR等)实现与完成。
4 教学方法改进和实施
针对这种情况,我们分别采取各种不同的策略,策略包括传统教学方法和现代教学理论两方面,我们已经应用这些方法于实际教学中,并已取得良好的教学效果。
4.1 传统教学灵活应用
传统的教学方法是教学成果的精华,但实际的应用难度相当大,如何在现今的教学中灵活应用,也只得我们讨论,常用的方法为:比喻式教学方法、问题式教学方法、范例式教学方法、反思式教学方法。
(1)比喻式教学方法就是用接近我们生活中的例子来近似地表示问题,使问题更容易理解和解决。一般来说大学生的想象能力,逻辑能力比较强,但由于计算机处理问题的过程与日常处理问题有些不同,而且计算机领域中涉及到一些概念比较抽象,所以在讲解时打比方,转换问题的难度,是常采用的方法。
编译原理用来构造计算机语言,那末我们利用自然的文字构造自然语言的各种方法都可以借鉴过来。例如:由文法产生句子,由句子产生语言,伴随着语义的分析等。在这里:经常用如下文法:
〈句子〉→〈主语〉〈谓语〉
〈主语〉→〈形容词〉〈名词〉
〈谓语〉→〈动词〉〈宾语〉
〈宾语〉→〈形容词〉〈名词〉
〈名词〉→flower|girl
〈动词〉→like
〈形容词〉→yong|beautiful
可以产生的句子为:yong girl like beautiful flower
讲解文法的概念,文法的推导,文法的分类以及抽象文法的分析。学生在学习过程会感到与实际联系比较密切。
(2)问题式教学方法可以更好地扩展学生的思维,发挥学生学习的迁移。问题式教学一般分四步:提出问题、引导问题、解决问题、扩充问题。
在分析语法分析器时,首先提出:语法分析的解决问题?常用的语法分析的方法?引导语法分析构造的步骤和过程,在引导过程中,解决语法构造过程的难点,并且扩充问题到,对于同一种语法在用不同的语法分析器中,将产生的结果和基理。语法分析器,让学生在分解问题的过程中得到了理解和应用。
转贴于 中国论文下载中心