Groovy 1.7.0

## org.codehaus.groovy.ast.builder
Class AstBuilder

    java.lang.Object
      org.codehaus.groovy.ast.builder.AstBuilder

    class AstBuilder
    extends Object

The AstBuilder provides several ways to build an abstract syntax tree (AST) of Groovy code. You can convert a String into AST using the buildFromString method. You can convert code into AST using the buildFromCode method. You can use the AST DSL with the buildFromSpec method. For more information, see the resources on the Groovy wiki pages.

author:
  Hamlet D'Arcy

Constructor Summary
`AstBuilder()`

Method Summary
`List` | `buildFromCode(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, Closure block)` Builds AST based on the code within the {
`List` | `buildFromSpec(Closure specification)` Builds AST based on the DSL data within the Closure parameter.
`List` | `buildFromString(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, String source)` Builds AST based on the code within the String parameter.

Methods inherited from class Object
wait, wait, wait, hashCode, getClass, equals, toString, notify, notifyAll

Constructor Detail

### AstBuilder

    AstBuilder()

Method Detail

### buildFromCode

    List buildFromCode(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, Closure block)

  Builds AST based on the code within the Closure parameter. This method must be invoked at compile time and never at runtime, because an ASTTransformation must be run to support it. If you receive an IllegalStateException then you most likely need to add stronger typing. For instance, this will not work: `def builder = new AstBuilder() builder.buildFromCode { // some code }` While this code will: `new AstBuilder().buildFromCode { // some code }` The compiler rewrites buildFromCode invocations into AstBuilder#buildFromString(CompilePhase, boolean, String) invocations. An exception raised during AST generation will show a stack trace from AstBuilder#buildFromString(CompilePhase, boolean, String) and not from AstBuilder#buildFromCode(CompilePhase, boolean, Closure) . The compiler saves the source code of the closure as a String within the Java class file. The String source of the closure will be visible and unobfuscated within the class file. If your Closure parameter contains sensitive data such as a hard-coded password then that data is free to be seen by anyone with the class file. Do not store sensitive data within the closure parameter.
  param:
    phase the CompilePhase the AST will be targeted towards. Default is CompilePhase#CLASS_GENERATION
  param:
    statementsOnly when true, only the script statements are returned. WHen false, you will receive back a Script class node also. Default is true.
  param:
    block the code that will be converted
  returns:
    a List of ASTNode .
  throws:
    IllegalStateException this method may not be invoked at runtime. It works via a compile-time transformation of the closure source code into a String, which is sent to the AstBuilder#buildFromString(CompilePhase, boolean, String) method. The buildFromCode() method must be invoked against a strongly typed AstBuilder.

### buildFromSpec

    List buildFromSpec(Closure specification)

  Builds AST based on the DSL data within the Closure parameter.
  param:
    specification the contents to create

### buildFromString

    List buildFromString(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, String source)

  Builds AST based on the code within the String parameter.
  param:
    phase the CompilePhase the AST will be targeted towards. Default is CompilePhase#CLASS_GENERATION
  param:
    statementsOnly when true, only the script statements are returned. WHen false, you will receive back a Script class node also. Default is true.
  param:
    source The source code String that will be compiled.
  returns:
    a List of ASTNode .
  throws:
    IllegalArgumentException if source is null or empty

Copyright © 2003-2009 The Codehaus. All rights reserved.