前言
几乎每个计算机学院的学生都学习过编译原理,上课的时候面对老师整天挂在口边的语法树绝大多数同学可能都是一脸懵,当然了我也不例外。以致于我在工作后的几年中全然没有感觉到学习这门晦涩难懂的课程有什么意义。直到我在工作中面对一些需求束手无策的时候,通过网上搜索才知道这些完全可以通过课本上的知识来扩展一下即可解决。
重新来学习编译原理此时倒也不算晚,但是毕竟没有上学时那么闲暇,于是只能通过实践来慢慢弥补这方面的知识。
什么是编译?
为了实现一门编程语言,我们需要构建一个程序,读取输入的语句,对其中的词组和输入符号进行正确的处理,这个过程就是编译中重要的一部分——解释。语言由一些列有意义的语句组成,语句由词组构成,词组由更小的子词组或者符号构成。对于java这类高级语言,不光要解释而且还要翻译成计算机可以识别的语言。那么这个过程就是编译中的另一个重要组成部分了—— 翻译。
几个重要的概念:
语法分析器:就想汉语要区分主语谓语宾语一样,程序也需要区分赋值语句还是运算语句。这个过程就是语法分析器的工作
词法分析器:将字符聚集为单词或符号的过程即为词法分析的工作。
语法树:语法分析结束后会产生语法树。
不行了,困死了,后面继续研究…