最近开始在学习编译原理。原因是这么多年以来,一直做企业信息应用系统方面的开发。对于开发具体的业务功能当然早就驾轻就熟,不过当想进一步开发相对基础的功能,比如报表,模版或者动态表单什么的,就有点力不从心。但是,以现在行业技术的发展来看,已经不可能再停留在开发业务代码的程度上了。尤其是近年来,出现了越来越多的所谓无代码开发平台,如果不能跟进学习,自己恐怕也要被淘汰了。所以,就只能下定决心,由基础开始从头学起,算是补上原来的课吧。
我是在极客时间上,跟着宫文学老师专栏《编译原理之美》学的。刚开始学,了解了些基本概念。
编译技术分为前端技术和后端技术。前端技术是指编译器对程序代码的分析和理解过程。后端技术则是编译器将程序代码生成目标机器可以执行的目标代码的过程。
其中前端技术又分为三个阶段。一, 词法分析 。二,语法分析。三,语义分析。
一,词法分析是指将程序代码进行分词的过程。这个里面涉及到了 正则表达式 和有限自动机的概念。
二,语法分析是将词法分析获得的一个个单词识别出程序的语法结构,组合抽象语法树(AST)。涉及到了 递归下降算法,二元表达式,等概念。
三,语义分析是根据语义规则进行分析判断,将分析判断的结果作为属性标注在抽象语法树上。
基本上学完编译原理的前端技术,应该就可以自己设计一个简单的脚本语言或者简单的模版引擎了。
希望能坚持学下去,做出一个成果出来吧。
联系客服