首頁 » 設計模式 » 解譯器(Interpreter)

解譯器(Interpreter)

作者:

分類:

解譯器(Interpreter)

概念

解譯器模式是一種行為型模式,概念是定義一種語言語法解釋的方式,用於解釋語言中的表達式,通常一種規則會對應一個類別,也就是如果邏輯規則多時就會變得很複雜,效率也會是個問題。

範例

//**************
//* author: cian
//* 20231211
//**************

public abstract class AbstractExpression
{
    public abstract void Interpret(Context context);
}

public class TerminalExpression : AbstractExpression
{
    public override void Interpret(Context context)
    {
        //實作終結符表達式
    }
}

public class NonTerminalExpression : AbstractExpression
{
    private AbstractExpression expression1;
    private AbstractExpression expression2;

    public NonTerminalExpression(AbstractExpression exp1, AbstractExpression exp2)
    {
        this.expression1 = exp1;
        this.expression2 = exp2;
    }

    public override void Interpret(Context context)
    {
        //實現非終結符表達式,可能涉及到多個終結符和/或其他非終結符的組合
    }
}

public class Context
{
    // 上下文
}

class App
{
    static void Main(string[] args)
    {
        var context = new Context();
        AbstractExpression expression = new NonTerminalExpression(
            new TerminalExpression(), 
            new TerminalExpression());
        expression.Interpret(context);
    }
}

結語

解譯器模式在實務上很少會使用上,自己比較常用正規表示式的語法去解析字串,除了效率比較好,在維護上也有很多資源可以參考。

以上為學習過程的問題紀錄

如果文章有誤,歡迎前輩留言請不吝指教。

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *