...
<?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 )); ?>