Here are some tips on how to debug what is happening on the transition from groovy source code into the generated bytecode.
artifact | transformation | artifact |
|---|---|---|
source (hello.groovy) | GroovyLexer | antlr tokens |
antlr tokens | GroovyRecognizer | antlr ast |
antlr ast | AntlrParserPlugin | groovy ast |
groovy ast | AsmClassGenerator | bytecode (hello.class) |
Note1 groovy.g is used to generate GroovyLexer and GroovyRecognizer
Note2 GroovyRecognizer is sometimes easier to understand in its syntax diagram form
Note3 AntlrParserPlugin source available.
Example
For these examples let's assume the file hello.groovy contains
GroovyLexer (viewing Antlr Tokens)
To view the antlr tokens that the source code has been broken into you need to do the following in groovy-core subdirectory

GroovyRecognizer (viewing Antlr AST)
To view the antlr AST that the recognized tokens have built

AntlrParserPlugin (viewing Groovy AST)
To view the Groovy AST that is one step closer to the generated bytecode you can generate hello.groovy.xml using these unix commands.
This can be generated by changing the groovy.ast system property. By doing this we can diff the generated Groovy AST artifacts for debugging and migration purposes.

Viewing Bytecode
One interesting bytecode viewer is jclasslib which renders hello.class in this manner...

Decompiling bytecode back to Java
If, however, you are bamboozled by bytecode... The easiest to grok mechanism for reading the compiled code is to use a tool like JAD to decompile the hello.class into a readable hello.java

1 Comment
Hide/Show CommentsJun 07, 2011
Marisol Vaughan
When you're in not good state and have got no money to move out from that, you will have to take the mortgage loans. Because it should help you unquestionably. I take commercial loan every time I need and feel myself great just because of this.