【デザインパターン】Interpreterパターン

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をインスタンス化して使用されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください