摘要:解释器模式一解释器模式定义给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子角色抽象表达式接口终结符表达式非终结符表达式上下文环境二具体实现创建抽象接口创建终结符表达式创建非终结符表达式调用输出三
解释器模式
一. 解释器模式 1.1 定义给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.
1.2 角色抽象表达式接口(IExpression).
终结符表达式(TerminalExpression).
非终结符表达式(NonterminalExpression).
上下文环境(Context).
二. 具体实现 1.1 创建抽象接口public interface IExpression { void interpreter(); }1.2 创建终结符表达式
public class TerminalExpression implements IExpression { @Override public void interpreter() { System.out.println("TerminalExpression interpreter ..."); } }1.3 创建非终结符表达式
public class NonterminalExpression implements IExpression { private TerminalExpression terminalExpressionA, terminalExpressionB; public NonterminalExpression(TerminalExpression terminalExpressionA, TerminalExpression terminalExpressionB){ this.terminalExpressionA = terminalExpressionA; this.terminalExpressionB = terminalExpressionB; } @Override public void interpreter() { terminalExpressionA.interpreter(); terminalExpressionB.interpreter(); System.out.println("interpreter terminalExpressionA AND terminalExpressionB ..."); } }1.4 调用
public static void main(String[] args) { TerminalExpression expressionA = new TerminalExpression(); TerminalExpression expressionB = new TerminalExpression(); IExpression expression = new NonterminalExpression(expressionA, expressionB); expression.interpreter(); }1.5 输出
TerminalExpression interpreter ... TerminalExpression interpreter ... interpreter terminalExpressionA AND terminalExpressionB ...三. 优缺点 3.1 优点
灵活性强.
扩展性强.
3.2 缺点每个文法对应一个表达式类,类泛滥.
复杂文法较难实现.
四. 源码https://github.com/Seasons20/DisignPattern.git
END
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69624.html
摘要:该设计模式需要实现一个表达式接口,该接口将会被告知需要解释的特定上下文。实现我们将创建一个接口并且创建实现它的具体类。声明一个具体类,该类将作为主要的问题的内柔解释器。 原文地址译者 smallclover希望对你们有所帮助 设计模式-解释器模式 解释器模式提供一种评估语言语法以及表达式的方式。这种类型的设计模式属于行为型设计模式。该设计模式需要实现一个表达式接口,该接口将会被告知需要...
摘要:函数执行函数执行使用后续遍历的方式来遍历语法树。对于每一个子节点,若其为函数则递归调用执行函数。如果当前方法是运算符方法,则调用该运算符的执行函数,并返回结果如果当前方法是函数,则解析所有形参的值后生产函数作用域,并以改作用域执行当前函数。 前言 昨晚奋斗了一下,终于把这题了解了。今天完善了一下代码,把剩下的部分放上来。目前剩下的有两个主要模块即函数解析与函数执行,以及两个小模块即运算...
摘要:酷睿代在年取代了奔腾,主频远低于此。该词被敏捷开发团队使用较多,含义与形式会略有不同,更改已经开始将垃圾收集器的状态转到解释器,因此每个子解释器将拥有它自己的本该如此。结论死亡了吗对于单线程的应用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原创并首发于公众号【Python猫】,未经授...
摘要:酷睿代在年取代了奔腾,主频远低于此。该词被敏捷开发团队使用较多,含义与形式会略有不同,更改已经开始将垃圾收集器的状态转到解释器,因此每个子解释器将拥有它自己的本该如此。结论死亡了吗对于单线程的应用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原创并首发于公众号【Python猫】,未经授...
阅读 3436·2021-11-08 13:20
阅读 3361·2021-09-30 09:48
阅读 2563·2021-09-29 09:41
阅读 590·2021-09-22 15:04
阅读 2460·2021-08-23 09:44
阅读 3667·2020-12-03 17:26
阅读 1009·2019-08-30 14:10
阅读 1563·2019-08-29 18:34