1. 前言
前面说了那么多BNF的相关理论知识,实际上就是为了一个目的:
描述语法规则
描述语法规则是一切的开始。最终,还是要用代码来实现。
如果对于BNF仍然是一头雾水,也没关系,因为我们的最终目的是编写解析器,从现在开始,我们的重点应该放到编码上。
编写代码需要注意的问题,以及编写思路,并不是一个公式就能描述的,有非常多的细节需要处理,编码实现是理论知识的一个升级。在编写代码的过程中,我们可以加强对理论的理解,加强理论理解同时又能编写复杂的解析代码,正所谓:“理论要联系实际”。
2. 编码实现
在上一篇文章 【编译原理】四、编写简单四则运算的EBNF 中,我们编写出了基本的加减乘除四则运算的EBNF,现在我们就基于此生成式进行代码实现。
2.1 项目地址
https://gitee.com/pivotfuture/four-arithmetic
此项目为Qt项目,没有别的原因,就是因为Qt好用,开发效率高,不用复杂配置即可使用。
2.2 实现逻辑
上述项目实现逻辑的图解如下所示:
此项目使用C++面向对象的方法进行代码组织,并不是使用纯C开发。个人认为纯C开发虽然效率可能比较高,但是众多的全局变量,众多的函数,看起来比较零散,没有非常清晰的结构,理解上比较困难。
3. 总结
本文主要讲了简单四则运算的代码实现,还是要亲自阅读和调试代码才可以更加深入的理解。在有一定的理解以后,非常建议读者能从0开始编写,这样会加深理解,同时非常有成就感。