View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   // Copyright (C) 2005 Kevin Rogers
5   //
6   // This file is part of MillScript.
7   //
8   // MillScript is free software; you can redistribute it and/or modify it under
9   // the terms of the GNU General Public License as published by the Free
10  // Software Foundation; either version 2 of the License, or (at your option)
11  // any later version.
12  //
13  // MillScript is distributed in the hope that it will be useful, but WITHOUT
14  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
16  // more details.
17  //
18  // You should have received a copy of the GNU General Public License along with
19  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
20  // Place, Suite 330, Boston, MA  02111-1307  USA
21  ////////////////////////////////////////////////////////////////////////////////
22  package org.millscript.millscript.syntax;
23  
24  import org.millscript.millscript.expr.Expr;
25  import org.millscript.millscript.expr.LambdaExpr;
26  import org.millscript.millscript.expr.VarExpr;
27  
28  /**
29   * This class implements <code>function</code> syntax.
30   *
31   * @see LambdaExpr
32   * @see VarExpr
33   */
34  public final class FunctionSyntax extends ProcedureSyntax {
35  
36      /**
37       * Creates a function syntax parser instance, with the specified closing
38       * character sequence.
39       *
40       * @param x the closing character seqeunce for this function syntax parser
41       * instance
42       */
43      FunctionSyntax( final String x ) {
44          super( x, true );
45      }
46  
47      /**
48       * @see org.millscript.millscript.syntax.ProcedureSyntax#procedure(org.millscript.millscript.syntax.FunctionHeader, org.millscript.millscript.expr.Expr, org.millscript.millscript.syntax.Parser)
49       */
50      @Override
51      public VarExpr procedure( final FunctionHeader header, final Expr body, final Parser parser ) {
52          return new VarExpr(
53              false,
54              header.getName(),
55              new LambdaExpr(
56                  header.getSymbol(),
57                  header.getArglist(),
58                  null,
59                  body
60              )
61          );
62      }
63  
64  }