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

解释器结构图

image.png

java代码

  1. public class InteroreterTest {
  2. public static void main(String[] args) {
  3. List<AbstractExpression> list = new ArrayList<>();
  4. list.add(new TerminalExpression());
  5. list.add(new NonterminalExpression());
  6. list.add(new TerminalExpression());
  7. list.add(new NonterminalExpression());
  8. Context context = new Context();
  9. for (AbstractExpression abstractExpression : list) {
  10. abstractExpression.Interpret(context);
  11. }
  12. System.out.println(context.getInput());
  13. }
  14. }
  15. public class Context {
  16. private String input = "";
  17. public String getInput() {
  18. return input;
  19. }
  20. public void setInput(String input) {
  21. this.input = input;
  22. }
  23. }
  24. //解释器抽象类
  25. public abstract class AbstractExpression {
  26. public abstract void Interpret(Context context);
  27. }
  28. //解释器实现类
  29. public class NonterminalExpression extends AbstractExpression {
  30. @Override
  31. public void Interpret(Context context) {
  32. context.setInput(context.getInput() + "非终端解释器");
  33. }
  34. }
  35. //解释器实现类
  36. public class TerminalExpression extends AbstractExpression {
  37. @Override
  38. public void Interpret(Context context) {
  39. context.setInput(context.getInput() + "终端解释器");
  40. }
  41. }