学习笔记——解释器模式Interpreter

解释器模式,其实就是编译原理中的语法解释器,如果用在项目中,可以用于实现动态脚本的解析,也就是说项目可以支持用户脚本扩展。

但实际上,这种运行时解释,效率很慢,如果不是很需要的话,不建议使用。

一种简单实现:

Context是上下文场景,比如做一个计算器,那这个Context可以作为一个Calculator类,可以在构造函数中用于接受待解析的表达式(如 a+b-c),以及执行相应的解释。

Expression代表不同的symbol的操作,比如:

1.+对应的Expression,操作是:将+的左结点出栈后,和右结点生成+表达式对象压栈(也可以是其他存储结构)

2.具体数字的Expression就只是把数字作为结点存储后压栈

等。

最后在表达式解释完成后,将根结点表达式出栈待用。

Context执行Run,将表达式(a+b-c)中abc的真实值传入,计算得到最后结果。

实现一个较好的解释器需要编译原理知识,可以学习vczh的博客http://www.cppblog.com/vczh/

posted on 2014-12-24 09:34  阿呜的边城  阅读(149)  评论(0编辑  收藏  举报

导航