【设计模式】解释器模式

1 简介

        解释器模式(Interpreter Pattern)定义:定义语言的语法,并建立一个解释器来解释该语言中的句子,这里的“语言”指使用规定格式和语法的代码。它用于描述如何构成一个简单的语言解释器,主要应用于使用面向对象语言开发的编译器和解释器设计。

2 代码

        (1)环境类(Context)

import java.util.HashMap;

public class Context {
	//存储公共信息,用于在进行具体的解释操作时从中获取相关信息
	private HashMap<String,Object> map=new HashMap();
	
	public void assign(String key,String value) {
		//往环境类中设值
	}
	
	public Object lookup(String key) {
		//获取存储在环境中的值
		return map.get(key);
	}
}

        (2)抽象表达式

public abstract class Expression {
	public abstract void interpret(Context ctx);
}

        (3)终结符表达式

public class TerminalExpression extends Expression {

	@Override
	public void interpret(Context ctx) {
		//对终结表达式的解释操作
	}
}

        (4)非终结符表达式

public class NonterminalExpression extends Expression {
	private Expression left;
	private Expression right;
	
	NonterminalExpression(Expression left,Expression right){
		this.left=left;
		this.right=right;
	}

	@Override
	public void interpret(Context ctx) {
		//递归调用每一个组成部分的 interpret() 方法
		//在递归调用时指定组成部分的连接方式,即非终结符的功能
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

little_fat_sheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值