`
raymond.chen
  • 浏览: 1437045 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解析器模式(Interpreter Pattern)

阅读更多

定义语言的文法,并且建立一个解释器来解释该语言中的句子。

 

为某种语言定义一个文法,并用该文法解释语言中的语句,当一个程序要处理许多不同,但又有些类似的问题时,用一种简单的语言描述这些问题,然后让程序解释该语言。

 

在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。

 

Interpreter模式比较适合简单的文法表示,对于复杂的文法表示,Interpreter模式会产生比较大的类层次结构,需要求助于语法分析生成器这样的标准工具。

 


抽象表达式类:

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

 

终结符表达式类:

public class TerminalExpression extends AbstractExpression{
	public void interpret(Context ctx) {
		System.out.println("TerminalExpression interpret");
	}
}

 

非终结符表达式类:

public class NonterminalExpression extends AbstractExpression {
	private AbstractExpression successor;
	
	public AbstractExpression getSuccessor() {
		return successor;
	}

	public void setSuccessor(AbstractExpression successor) {
		this.successor = successor;
	}

	public void interpret(Context ctx) {
		System.out.println("NonterminalExpression interpret start");
		if(successor!=null){
			successor.interpret(ctx);
		}
		System.out.println("NonterminalExpression interpret end");
	}
}

 

测试类:

public class Client {
	public static void main(String[] args) {
		Context ctx = new Context();
		NonterminalExpression e1 = new NonterminalExpression();
		AbstractExpression e2 = new TerminalExpression();
		e1.setSuccessor(e2);
		e1.interpret(ctx);
	}
}

 

  • 大小: 29.4 KB
0
0
分享到:
评论

相关推荐

    设计模式之解释器模式(Interpreter Pattern)

    **设计模式之解释器模式(Interpreter Pattern)** 解释器模式是一种行为设计模式,它提供了一种方式来表示语言的语法,并实现一个解释器用于解析这种语法的语句。这种模式通常用于小型、特定领域的语言(DSL)实现,...

    InterpreterPattern.rar

    本项目“InterpreterPattern.rar”是基于Qt C++框架开发的一个计算器应用程序,巧妙地融合了解析器模式和状态机模式,旨在帮助开发者更好地理解和应用这两种设计模式。 首先,让我们深入解析器模式(Interpreter ...

    c++-设计模式之解释器模式(Interpreter)

    解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言的句法定义一个解释器。它通过定义一个语言的文法表示以及解释器的实现来解析和执行表达式。这种模式通常用于设计语言、脚本或规则引擎。 ...

    解释器模式(Interpreter)原理图

    解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一个语言的文法,并解析语言中的表达式。具体来说,解释器模式通过定义一个解释器来解释语言中的表达式,从而实现对语言的解析和执行。 在解释...

    C++设计模式课件25_Interpreter.pdf

    从提供的文件信息中,我们可以推断该课件《C++设计模式课件25_Interpreter.pdf》是关于C++语言实现设计模式中的解释器模式(Interpreter Pattern)的一部分教学资料。文件中出现的网站***和网易云课堂是指两个在线...

    设计模式----解释器模式

    解释器模式(Interpreter Pattern)是25种经典设计模式之一,主要应用于创建一个解析语言或者表达式的方式。在本篇文章中,我们将深入探讨解释器模式的概念、结构以及其在实际开发中的应用。 解释器模式是一种行为...

    [行为型模式] 解释器模式的理解

    首先,我们来看`InterpreterPattern.cpp`和`InterpreterPattern.h`这两个文件,它们很可能是实现解释器模式的核心代码。`InterpreterPattern.h`可能包含了模式的主要接口定义,而`InterpreterPattern.cpp`则实现了...

    design-pattern-java.pdf

    请求发送者与接收者解耦——命令模式(六) 解释器模式-Interpreter Pattern 自定义语言的实现——解释器模式(一) 自定义语言的实现——解释器模式(二) 自定义语言的实现——解释器模式(三) 自定义语言的实现...

    C++面向对象23种设计模式实现源码DesignPattern.zip

    1. **解释器模式(Interpreter Pattern)**:解释器模式主要用于创建一个解析特定语言的解释器。在23.解释器模式Interpretor中,可以看到如何通过组合简单元素来构建复杂的表达式解析过程,这在需要自定义语法或...

    设计模式解析_DesignPattern.zip

    - 解释器模式(Interpreter):提供一种语言的文法表示,并定义了如何解释该文法中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而不暴露其底层表示。 - 中介者模式(Mediator):...

    php设计模式 Interpreter(解释器模式)

    解释器模式(Interpreter Pattern)是一种行为设计模式,它允许我们定义一种语言的文法,并创建一个解释器来解析该语言的实例。在PHP中,解释器模式常用于处理简单的语言结构,例如计算表达式或者将特定格式的字符串...

    java设计模式.txt

    解释器模式(Interpreter Pattern) 解释器模式定义了一个语言的文法,并定义了一个解释器来解释该语言中的句子。这里的“语言”是指使用规定格式和语法的代码。 #### 23. 享元模式(Flyweight Pattern) 享元模式...

    java 23中设计模式 精华版

    14. 解释器模式(Interpreter Pattern):给定一种语言,定义它的文法表示,并提供一个解释器,用于处理这种语言中的句子。 15. 迭代器模式(Iterator Pattern):提供一种方法顺序访问聚合对象的元素,而又不暴露...

    Java设计模式demo

    - 解释器模式(Interpreter Pattern):提供一个语言的解析器,用于处理简单的语言或表达式。 - 迭代器模式(Iterator Pattern):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 解释器模式(Interpreter):提供一个语言的解析器,解释特定语言的结构和语法规则。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式(Observer):定义...

    設計模式速查表

    8. 解释器模式(Interpreter Pattern) 解释器模式为特定问题定义一个语言的文法,并为该文法提供一个解释器。解释器模式提供了一个解释句子含义的方式,适用于简单的语言解析场景。 9. 责任链模式(Chain of ...

    C# 23种设计模式汇总

    22. **解释器模式(Interpreter Pattern)** - 解释器模式给出一个语言的文法,并且建立一个解释器来解释由该文法构成的语言中的句子。 23. **访问者模式(Visitor Pattern)** - 访问者模式表示一个作用于某对象...

    Android编程设计模式之解释器模式详解

    解释器模式(Interpreter Pattern)是设计模式中的一种行为模式,主要用于解析特定语言或表达式。在Android开发中,尽管不常见,但当需要自定义简单的语言或者表达式解释执行时,解释器模式就显得尤为重要。 一、...

    设计模式解析.pdf

    例如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链...状态模式(State)、访问者模式(Visitor)和解释器模式(Interpreter)...

    C#设计模式(23种设计模式)

    解释器模式(Interpreter Pattern) 解释器模式提供了一种方法来定义语言的语法及其解释器。这种模式非常适合于处理文法解析的问题。在C#中,可以通过定义抽象语法树节点和解释器来实现解释器模式。 #### 18. ...

Global site tag (gtag.js) - Google Analytics