|
Groovy 1.7.0 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.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.
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()
Method Detail |
---|
List buildFromCode(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, Closure block)
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.
List buildFromSpec(Closure specification)
List buildFromString(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, String source)
Copyright © 2003-2009 The Codehaus. All rights reserved.