実際には、あなたは上司の心インタプリタモードを理解していません

実際には、あなたは上司の心を理解していない27.1

27.2通訳パターン

文法表現を定義し、インタプリタを定義する言語、与えられ、インタプリタ言語で文章を解釈する表現を使用して、

解決すべきInterpreterパターンは、あなたが、通訳をインタプリタを構築することができるように、それは、問題は言語で簡単な文章として表現され、各インスタンス価値があるかもしれ、問題の特定の種類の周波数が発生した場合に十分に高い、ということですこれらの文章を解釈することによって、問題を解決するものであり、例えば、多くの場合、文字列内の文字の一致する文字列を検索するか、当方指定のフォーマットは、通常、どのような手法を使用するかどうかを判断しますか?正規表現、

名前空間解释器模式
{ 
    クラスプログラム
    { 
        静的 ボイドメイン(文字列[]引数)
        { 
            コンテキストコンテキスト = 新しいコンテキスト()。

            IList <AbstractExpression>リスト= 新しいリスト<AbstractExpression> (); 
            list.Add(新しいTerminalExpression()); 
            list.Add(新しいNonterminalExpression()); 
            list.Add(新しいTerminalExpression()); 
            list.Add(新しいTerminalExpression()); 

            foreachの(実験AbstractExpression リスト)
            { 
                exp.Interpret(コンテキスト); 
            } 

            Console.Read(); 
        } 
    } 

    // 抽象表現
     // 宣言抽象の動作を説明するが、このインターフェイスは、すべてのノードが共有する抽象構文木であります、
    抽象 クラスAbstractExpression 
    { 
        パブリック 抽象 ボイド(コンテキスト・コンテキスト)を解釈
    } 

    // ターミネーター発現
     //は文法関連で終端記号の動作を説明達成
     // 主に、インターフェースに必要な抽象表現の実装解釈、方法である
     //は、各端末記号はそれに対応して特定の発現終端を有する文法
    クラス TerminalExpression:AbstractExpressionを
    { 
        公共 オーバーライド 無効解釈(コンテキスト・コンテキスト)
        { 
            Console.WriteLineを(ターミナルインタプリタを); 
        } 
    } 

    // 非終端式
     // 文法非終端記号の動作を説明するために実装し、
     // 各対文法ルールR1、R2、特定のRnが、非終端表現クラスが必要
     // 、抽象表現の方法の動作を説明する解釈実行することによって実現
     // 動作を説明する再帰的に上記のR1、R2の代わりにコール、Rnは各シンボルインスタンス変数、
    クラスNonterminalExpression:AbstractExpression 
    { 
        公共 オーバーライド 無効解釈(コンテキストコンテキスト)
        { 
            Console.WriteLineを(" 非エンドインタプリタ" ); 
        }
    } 

    //は通訳以外のグローバルな情報が含まれ
    たクラスコンテキスト
    { 
        プライベート 文字列の入力を、

        公共の 文字列の入力は
        { 
            GET { 戻る}; INPUTを
             SET {INPUT = 値;} 
        } 

        プライベート 文字列の出力を、

        公共の 文字列が出力は
        { 
            GET { リターン出力;}
             SET {出力= 値;} 
        } 
    } 

}
コードの表示

メリット27.3インタプリタモード

通常、そこに実装言語を説明する必要がある、とあなたはインタプリタモードを使用して、抽象構文木に言語文を表すことができたときに、

Interpreterパターンそれが良い何ですか?インタプリタモードでは、それはあなたが簡単に文法を変更し、拡張することができることを意味し、このモードでは、文法規則を表現するためのクラスを使用しているため、あなたは文法を変更したり、拡大して継承を使用することができ、文法は、抽象構文木のために定義、実装が比較的容易であり、実質的に同様の各ノードのクラスを実装し、これらのクラスは、直接書き込むことが容易であり、

インタプリタパターンは文法は非常に複雑である場合には、例えば、パーサ又は他の技術を用いて、推奨され、また、各ルールが管理し、維持するために、少なくとも1つのクラスを定義し、したがって、困難である可能性が文法の多くのルールが含まれている文法モードを説明するには不十分です処理するためにコンパイラが生成し、

27.4音楽インタプリタ

音楽インタプリタ27.5を達成

27.6 Liaoshirushen

おすすめ

転載: www.cnblogs.com/huangxuQaQ/p/11329141.html