解析器模式
解析器模式定义语言的文法,并且建立一个解析器来解释该语言(规定格式和语法的代码)中的句子。它包含抽象表达式,终结符表达式,非终结符表达式,Context环境类。
解析器模式实例之数学运算解析器
Calculator类关联了一个抽象Node类,Node类比较复杂,需要通过Calculator中的build函数进行构建,Node类的构建是通过栈来进行联系的,通过栈可以维护比较复杂的上下文关系,比如说常用的简单的数学加减乘除解析器,也是用的栈结构来解析的。
下面是c++版本的实现
抽象表达式类Node(抽象节点)
//抽象表达式类Node(抽象节点)
class Node {
public:
virtual int interpret() = 0;
};
终结符表达式类ValueNode(值节点类)
//终结符表达式类ValueNode(值节点类)
class ValueNode : public Node {
public:
ValueNode(int value) {
this->value = value;