Interpreterパターンのサンプルコードをまとめようと思ったのですが・・・
うまくまとまりませんでした。
Interpreterパターンは言語解析の用途に使用されます。
クラス図にするとこんな感じです。
https://www.techscore.com/tech/DesignPattern/Interpreter.html/
package org.example.interpreter;
public abstract class AbstractExpression {
public abstract void interpret(String context);
}
package org.example.interpreter;
import java.util.ArrayList;
public class NonTerminalExpression extends AbstractExpression{
@Override
public void interpret(String context) {
String[] contexts = context.split(",");
for(int i = 0; i < contexts.length; i++)
{
AbstractExpression child = new TerminalExpression();
child.interpret(contexts[i]);
}
}
}
package org.example.interpreter;
public class TerminalExpression extends AbstractExpression{
@Override
public void interpret(String context) {
}
}
package org.example.interpreter;
public class Main {
public static void main(String args[])
{
AbstractExpression child = new NonTerminalExpression();
child.interpret(args[0]);
}
}
言語を文節に分けるのはNonTerminalExpression、実際に解析を行うのはTerminalExpressionで処理を行います。
NonTerminalExpressionでは必要に応じて次のNonTerminalExpressionやTerminalExpressionをインスタンス化して使用されます。