
解譯器(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);
}
}
結語
解譯器模式在實務上很少會使用上,自己比較常用正規表示式的語法去解析字串,除了效率比較好,在維護上也有很多資源可以參考。
以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。
發佈留言