设计模式之解析器模式实例(c++)

本文介绍了解析器模式,通过创建一个解析器来解释特定语言的句子。以数学运算为例,详细阐述了Calculator类与Node类的设计,包括抽象表达式、终结符表达式和非终结符表达式的实现,如ValueNode、SymbolNode、MulNode、DivNode和ModNode。此外,还展示了如何利用栈结构处理复杂的上下文关系,并提供了客户端测试案例。
摘要由CSDN通过智能技术生成

解析器模式

解析器模式定义语言的文法,并且建立一个解析器来解释该语言(规定格式和语法的代码)中的句子。它包含抽象表达式,终结符表达式,非终结符表达式,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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值