第二章 一个简单的语法制导编译器

这章难度陡然增加,说实话看第一遍基本不知道他说啥,至少得看2遍。所谓“书读百遍其义自见”,读2,3遍实在不算啥。

本章是对整个编译器前端技术的一个概括,举了一个最简单的语言——四则运算表达式解析

作为例子来讲解什么是上下文无关文法、 词法分析、符号表、语法分析、语法树、中缀表达式、后缀表达式这些关键概念。 如果没有接触过这些的,会感觉一头雾水,但是只要深入了解,反复阅读,就可以恍然大悟——哦,原来就是这么回事呀! 说实话,只要稍具某种高级语言的开发经验,加上一点点数据结构和算法知识,编译原理入门不难,不像AI或者数据分析需要本科以上的数学基础才可以入门。

好了,讲下编译器前端核心其实很简单,就是——递归算法!。把某种语言的语句最简单比如四则运算表达式,用一种描述方法设置好规则(称之为文法),这个规则是递归定义的,然后一遍遍扫描这个语句,不断用规则替换掉文本,最后得到的不可再替换的结果(称之为终止符)就是编译器前段的输出,一些类似于汇编指令(称之为三地址表达式)的结果。递归一般是形成一棵树去遍历。关键的核心还是文法的定义,这个需要技巧和经验。

实话说,只要定义好文法,剩下的事情基本没有太大差别,所以现在很多开源编译器,只要你定义好文法,他们自动生成中间码,这就是著名开源项目 ANLTR4 做的

本章要点:


语法树只是为了让人好理解


是不是很简单?

你可能感兴趣的:(第二章 一个简单的语法制导编译器)