编译原理课程总结

编译原理课程总结

   编译原理是计算机专业的一门重要专业课,介绍编译程序构造的一般原理和基本方法。编译程序是把高级语言写成的源程序经过翻译转化成面向机器的代码,编译程序的工作主要分为五个阶段,包括词法分析、语法分析、语义分析和中间代码生成、代码优化和目标代码生成

编译原理课程总结_第1张图片

   词法分析的主要任务是输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个基本字、标识符、算符和界符等单词符号。词法分析遵循词法规则,词法规则由正规式和有限自动机描述。语法分析主要任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成短语、句子、句柄等语法单位,确定输入串是否能构成语法上正确的程序,通常遵循上下文无关文法作为语法规则。语义分析与中间代码产生的主要任务是对语法分析所识别的各种语法范畴,分析其含义,并进行初步翻译,通常包括两方面工作即对每种语法范畴进行静态语义检查和中间代码的翻译,遵循属性文法描述的语义规则。从这一阶段开始真正涉及到翻译。将字符串生成为三地址码、三元式、四元式等中间代码。优化阶段的主要任务是对前面生成的中间代码依据程序的等价变换规则进行加工变换,以便下一阶段生成更为高效的目标代码,包括公共子表达式的提取、循环优化、删除无用代码。目标代码生成阶段主要是把中间代码变换成特定机器上的低级语言代码。

   编译程序的处理虽然只分五个阶段,但是每个阶段的内容都很多,理解起来也有一定难度。编译原理的理论性比较强,概念比较多,而且各部分联系比较紧密,比如说第二章语法描述那提出的短语句子等概念在后面词法分析语法分析等部分也都有使用。在词法分析部分的正规式与有限自动机的转换、语法分析部分的LL(1)文法、算符优先算法和LR(0)算法都步骤都比较多,而且有的算法步骤还比较相似,理解不好就容易混淆。语法分析的翻译部分尤其难懂,不管学习的时候还是做题的时候都感觉不是那么通透,学起来感觉很费劲。每一章单独学起来的时候感觉还好,但是最后总体在一起复习的时候就感觉很吃力,总是有似懂非懂的感觉,而且编译原理不像别的学科学会一道例题相关的题就都会做了,虽然上课跟着老师学的时候会做,但是自己碰到题目做起来就不那么顺畅了,而且很容易忘。通过复习的时候也发现了自己前期对于这门课的学习没有给与充足的时间,所以自己复习的时候进度很慢,理解起来很费劲,而且效率和质量也不高,有对于这个课程应该在课下多花时间自己学一学的,如果说当时学习的时候能自己把代码实现出来,对这些内容的理解应该会比现在好很多。

你可能感兴趣的:(编译原理)