程序设计语言——编译原理 总结

程序设计语言——编译原理  总结

编译原理介绍编译程序构造的原理与方法,了解编译程序是如何运行。我们将程序用高级语言写出来通过编译程序将其翻译为机器能识别的语言从而执行。我主要学了前七章。编译原理可由一张图可以概括。

程序设计语言——编译原理 总结_第1张图片

高级语言如何转换为机器能识别的机器语言大致要经过五个过程。以下是我个人的理解,有错误请见谅。

1.代码要起到什么作用,可以通过分析其成分来得出其作用。于是第一阶段就是识别单词,将单词分类以便后续处理。但高级语言有多种,每种有其自己的特色,也不尽相同。我觉得这也是文法的由来。文法用来描述语言,但语言的又有区分,从而有文法的分类与不同。最好的是0型文法。但符合这样文法的语言不多,这也是不同编译程序产生的原因。有了文法就可以识别单词是否符合该文法。理解编译程序如何运行就可通过语法分析树。

2.词法分析是将句子里的单词识别并判断其组合是否符合文法结构。主要介绍了词法分析器的设计,介绍了正规式与正规文法,有限状态自动机,有限状态自动机之间的转换,正规文法与有限状态自动机之间的转换。

3.语法分析是将有词法分析传递过来的结果进行处理分析,判断是否符合语法要求。分为自上而下分析与自下而上分析,自上而下分析主要讲了LL(1)分析法。运用消除左递归,first集,follow集,预测分析表。自下而上分析讲了两种方法——算符优先与LR分析法。算符优先介绍了算符优先文法,及其判定,算法优先表。LR分析法介绍LR(0)项目族集,与分析表的构造。SLR分析表与LR(1)分析表。

4.当句子符合语法后,还要判断其语义问题。包含属性文法与语法制导翻译,综合属性,继承属性,S-属性文法及计算,L-文法及翻译,依赖图,遍历。

5.符合语义后即可产生中间代码,中间代码的表示,逆波兰式,图表示法,三地址代码。运用这些对赋值,控制,说明,布尔表达式••••••语句进行翻译,主要是运用四元式,涉及回填。

编译原理的学习已经告一段落。感觉自己学的挺不错的,但考试结果却不尽人意,感觉自己平时下的功夫还不到,有些地方学的不尽人意,在考试中就体现出来;有些地方就经得起考验。自己理解的还是不深刻,课后题在学习完后,做完,那时候的对知识的印象还深刻,题目可以轻松做出。再后来没有及时复习以前的知识,做过的题目感觉像没见过的新题,有的题目则不是。还是在前期对知识的理解不够。应该多花功夫,对将来也有好处。老师说将它的代码写出来,能加深对编译原理的理解,这对我们来说也是一个能拿得出手的项目。

你可能感兴趣的:(程序设计语言——编译原理)