2020年3月18日 下午2:20
编译的过程:词法分析 语法分析 语义分析
- 词法分析:
- 读取的内容是字符,根据词法规则输出token。
- 几乎不涉及语言的语法特性,是编译器的基础。
- 语法分析:
- 读取的内容是token,输出的是语法树AST。
- 语言的表达式等功能由这部分中定义的上下文无关文法来实现。
- 语义分析:
- 操作的对象是AST,输出:给AST节点打上更多的属性信息
- 所谓语义主要完成上下文相关的推理逻辑,如类型问题,定义声明问题等
说说我对编译原理的初次见面感觉:人为定义规则的重要性
- 编译原理相比于其他计算机基础知识而言,他的难主要集中在需要高度的对现实生活规则的抽象能力、逻辑思维能力,否则写不出没问题的上下文无关文法规则,以及无法发现、处理其中蕴含的一些“逻辑坑”,如左递归等问题。
- 而一些其他的知识点,如算法部分,这些其实相比于抽象能力来说,就要简单、通用、好理解的多,更加考验你的编程基础,而不是脑子。