概念:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
解释器结构图
java代码
public class InteroreterTest {
public static void main(String[] args) {
List<AbstractExpression> list = new ArrayList<>();
list.add(new TerminalExpression());
list.add(new NonterminalExpression());
list.add(new TerminalExpression());
list.add(new NonterminalExpression());
Context context = new Context();
for (AbstractExpression abstractExpression : list) {
abstractExpression.Interpret(context);
}
System.out.println(context.getInput());
}
}
public class Context {
private String input = "";
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
}
//解释器抽象类
public abstract class AbstractExpression {
public abstract void Interpret(Context context);
}
//解释器实现类
public class NonterminalExpression extends AbstractExpression {
@Override
public void Interpret(Context context) {
context.setInput(context.getInput() + "非终端解释器");
}
}
//解释器实现类
public class TerminalExpression extends AbstractExpression {
@Override
public void Interpret(Context context) {
context.setInput(context.getInput() + "终端解释器");
}
}