【编译原理】五、简单四则运算的代码实现

1. 前言

前面说了那么多BNF的相关理论知识,实际上就是为了一个目的:

描述语法规则

描述语法规则是一切的开始。最终,还是要用代码来实现。

如果对于BNF仍然是一头雾水,也没关系,因为我们的最终目的是编写解析器,从现在开始,我们的重点应该放到编码上。

编写代码需要注意的问题,以及编写思路,并不是一个公式就能描述的,有非常多的细节需要处理,编码实现是理论知识的一个升级。在编写代码的过程中,我们可以加强对理论的理解,加强理论理解同时又能编写复杂的解析代码,正所谓:“理论要联系实际”。

2. 编码实现

在上一篇文章 【编译原理】四、编写简单四则运算的EBNF 中,我们编写出了基本的加减乘除四则运算的EBNF,现在我们就基于此生成式进行代码实现。

2.1 项目地址

https://gitee.com/pivotfuture/four-arithmetic
此项目为Qt项目,没有别的原因,就是因为Qt好用,开发效率高,不用复杂配置即可使用。

2.2 实现逻辑

上述项目实现逻辑的图解如下所示:

【编译原理】五、简单四则运算的代码实现_第1张图片

此项目使用C++面向对象的方法进行代码组织,并不是使用纯C开发。个人认为纯C开发虽然效率可能比较高,但是众多的全局变量,众多的函数,看起来比较零散,没有非常清晰的结构,理解上比较困难。

3. 总结

本文主要讲了简单四则运算的代码实现,还是要亲自阅读和调试代码才可以更加深入的理解。在有一定的理解以后,非常建议读者能从0开始编写,这样会加深理解,同时非常有成就感。

你可能感兴趣的:(编译原理,编译原理)