PHPインタープリタモード(インタプリタパターン)

...

<?PHP
 / * 
インタプリタパターンは、言語の文法や表現を評価する方法を指定します。
私たちは、通訳と一緒に言語の文法の表現を定義します。
言語の文法の表現は、ルールが複合クラス階層、使用する
クラスにマッピングされています。インタプリタは、解釈する表現を使用して
、言語で表現します。
* / 

界面MathExpression {
     パブリック 関数は(解釈配列 $値)。
} 

クラス変数は実装しMathExpression {
     プライベート $の文字を
    
    公共の 機能__construct($ CHAR ){
         $この - >チャー= $ CHAR 
    } 
    
    パブリック 関数は(解釈配列 $値){
         返す $値 [ $この - > CHAR]。
    } 
} 

クラスリテラルが実装MathExpression {
     プライベート $値を
    
    パブリック 関数 __construct($値){
         $この - >値= $値
    } 
    
    パブリック 関数は(解釈します配列 $値){
         戻り $この - > 値を、
    } 
} 

クラスの合計は、実装MathExpression {
     プライベート $ xをプライベート $ yを
    
    パブリック 関数 __construct(MathExpression $ Xを 
        MathExpression の$ Y ){
         $この - > X = $ Xをこの$ > Y = - $ yを
    } 
    
    パブリック 関数は(解釈配列 $値){
         リターン これは、$ - > X->(解釈$値)+ 
             $この - > Y->は(解釈$値)。
    } 
} 

クラスの製品は、実装MathExpression {
     プライベート $ xをプライベート $ yを
    
    パブリック 関数 __construct(MathExpression $ Xを 
        MathExpression の$ Y ){
         $この - > X = $ Xをこの$ > Y = - $ yを
    } 
    
    パブリック 関数は解釈(配列 $値){
         返す $これを - > X->(解釈$値)*
             $この - > Y->(解釈$値)。
    } 
} 

$式 = 製品(
     新しいリテラル(5)、
     新しい合計(
         新しい変数( 'C')、
         新たなリテラル(2 
)。

エコー $表現を - >(解釈配列( 'C' => 3 ));
?>

おすすめ

転載: www.cnblogs.com/aguncn/p/11184376.html