【编译原理】看书笔记
参考书籍:《编译系统透视_图解编译原理》
1. 词法及语法分析
1.1 如何理解上下文无关法?
编译器用生成式来对代码进行词法解析,只需要使用生成式约定的规则,就可以从一串文本中,确定一个符合语法的语句,不需要这条语句前面的内容(即上文),和下面的内容来确定(即下文)。这样公式化的解析方式,实现起来很简单,有利于编译器的设计和实现。
《编译系统透视_图解编译原理》书中的状态转移图相对于生成式更好理解,建议采用书中的状态转移图去画生成式。
生成式在我们前面的文章中有讲解过。简单来说,一条语句的生成式就是:
语句 = 起始符 + 中间内容 + 结束符。其中,中间内容又可以包含其他语句,形成嵌套结构。
根据以上思路去编写代码,只需要:
- 先根据起始符号,判断语句可能是哪种类型,这一步缩小了判断的范围,便于后续的解析;
- 再持续向下解析,进一步判断语句的类型以及获取语句的成分,内容;
- 最后判断解析结束符,明确语句的边界,完成语句解析。
有些教材大篇幅讲BNF,看得头疼。亲自写一写能更好地理解。