View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   //
5   // This file is part of MillScript.
6   //
7   // MillScript is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
20  ////////////////////////////////////////////////////////////////////////////////
21  package org.millscript.millscript.expr;
22  
23  import org.millscript.millscript.action.Action;
24  import org.millscript.millscript.action.FnCompAction;
25  
26  /**
27   * This class implements a compound function expression. A compound function
28   * expression has a left and right hand side function, the left hand side is
29   * executed first, then the right hand side is executed with the results of the
30   * left hand side as arguments. e.g.
31   *
32   * <p>
33   * <code>rhs( lhs( args...) )</code>
34   * </p>
35   *
36   * @see FnCompAction
37   */
38  public final class FnCompExpr extends BinaryOpExpr< FnCompAction > {
39  
40      /**
41       * The name of this compound function expression.
42       */
43      private final String name;
44  
45      /**
46       * Creates a new compound function expression with the specified name and
47       * component function expressions.
48       *
49       * @param   n   the name for the compound function expression
50       * @param   a   the left hand side component function expression
51       * @param   b   the right hand side component function expression
52       */
53      public FnCompExpr( final String n, final Expr< ? > a, final Expr< ? > b ) {
54          super( a, b );
55          this.name = n;
56      }
57  
58      /**
59       * @see org.millscript.millscript.expr.BinaryOpExpr#newAction(org.millscript.millscript.action.Action, org.millscript.millscript.action.Action)
60       */
61      @Override
62      public FnCompAction newAction( final Action a, final Action b ) {
63          return new FnCompAction( name, a, b );
64      }
65  
66  }