java interpreter_解释器模式(Interpreter)Java

 2023-09-10 阅读 16 评论 0

摘要:定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。结构图:AbstractExpression解释器模式抽象类package ding.study.designpatterns.interpreter;/**javaeclipsesdk怎么用。

定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

结构图:

0818b9ca8b590ca3270a3433284dd417.png

AbstractExpression解释器模式抽象类

package ding.study.designpatterns.interpreter;

/**

javaeclipsesdk怎么用。* 解释器模式抽象类

* - 声明一个抽象的Interpret方法,抽象语法树中所有的节点都必须实现该抽象方法。

* @author daniel

*

*/

abstract class AbstractExpression {

状态模式?//解释方法

public abstract void interpret(Context context);

}

Context解释器之外的一些全局信息

package ding.study.designpatterns.interpreter;

/**

解释器。* 解释器之外的一些全局信息

* Interpreter方法所需要的信息的容器,该信息对Interpreter而言全局可见。充当几个AbstractExpresssion

* 实例之间的通讯频道。

*

* @author daniel

*

java applet?*/

public class Context {

private String input;

private String output;

/**

* @return the output

java修饰符?*/

public String getOutput() {

return output;

}

/**

* @param output

策略模式?* the output to set

*/

public void setOutput(String output) {

this.output = output;

}

/**

命令模式?* @return the input

*/

public String getInput() {

return input;

}

/**

java编译,* @param input

* the input to set

*/

public void setInput(String input) {

this.input = input;

}

java、}

NonterminalExpression非终端解释器

package ding.study.designpatterns.interpreter;

/**

* 非终端解释器 另外一个实现了AbstractExpression

* 接口的类,用来处理语法树中非末端节点的语法。它含有下一个AbstractExpression(s)的引用,调用它每个子节点的Interpret方法。

java解释器命令是什么,*

* @author daniel

*

*/

public class NonterminalExpression extends AbstractExpression {

@Override

java编译器和解释器。public void interpret(Context context) {

System.out.println("非终端解释器");

}

}

TerminalExpression终端解释器

package ding.study.designpatterns.interpreter;

java python,/**

* 终端解释器

* - 实现和语法中末端符号相关的Interpret方法。

- 在每个句子的末端符号中均需要一个TerminalExpression实例。

* @author daniel

*

java的string类。*/

public class TerminalExpression extends AbstractExpression {

@Override

public void interpret(Context context) {

System.out.println("终端解释器");

}

java和javascript、}

Client  客户端 ZTestMain

package ding.study.designpatterns.interpreter;

import java.util.ArrayList;

import java.util.List;

/**

java字节码解释器。* 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

*

* 输出:

* 终端解释器

非终端解释器

终端解释器

解释器模式?终端解释器

*

* @author daniel

* @email 576699909@qq.com

* @time 2016-5-31 下午2:16:37

*/

public class ZTestMain {

/**

* @param args

*/

public static void main(String[] args) {

Context context = new Context();

List list = new ArrayList();

list.add(new TerminalExpression());

list.add(new NonterminalExpression());

list.add(new TerminalExpression());

list.add(new TerminalExpression());

for (AbstractExpression exp : list) {

exp.interpret(context);

}

}

}

执行结果

0818b9ca8b590ca3270a3433284dd417.png

源代码

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/42687.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息