Search in sources :

Example 16 with AntlrASTProcessor

use of org.codehaus.groovy.antlr.AntlrASTProcessor in project groovy-core by groovy.

the class GroovyRootDocBuilder method parseJava.

private Map<String, GroovyClassDoc> parseJava(String packagePath, String file, String src) throws RecognitionException, TokenStreamException {
    SourceBuffer sourceBuffer = new SourceBuffer();
    JavaRecognizer parser = getJavaParser(src, sourceBuffer);
    String[] tokenNames = parser.getTokenNames();
    try {
        parser.compilationUnit();
    } catch (OutOfMemoryError e) {
        log.error("Out of memory while processing: " + packagePath + "/" + file);
        throw e;
    }
    AST ast = parser.getAST();
    // modify the Java AST into a Groovy AST (just token types)
    Visitor java2groovyConverter = new Java2GroovyConverter(tokenNames);
    AntlrASTProcessor java2groovyTraverser = new PreOrderTraversal(java2groovyConverter);
    java2groovyTraverser.process(ast);
    // now mutate (groovify) the ast into groovy
    Visitor groovifier = new Groovifier(tokenNames, false);
    AntlrASTProcessor groovifierTraverser = new PreOrderTraversal(groovifier);
    groovifierTraverser.process(ast);
    // now do the business     
    Visitor visitor = new SimpleGroovyClassDocAssembler(packagePath, file, sourceBuffer, links, properties, false);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
    return ((SimpleGroovyClassDocAssembler) visitor).getGroovyClassDocs();
}
Also used : AST(antlr.collections.AST) PreOrderTraversal(org.codehaus.groovy.antlr.treewalker.PreOrderTraversal) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) SourceBuffer(org.codehaus.groovy.antlr.SourceBuffer) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) Groovifier(org.codehaus.groovy.antlr.java.Groovifier) JavaRecognizer(org.codehaus.groovy.antlr.java.JavaRecognizer) Java2GroovyConverter(org.codehaus.groovy.antlr.java.Java2GroovyConverter) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Example 17 with AntlrASTProcessor

use of org.codehaus.groovy.antlr.AntlrASTProcessor in project groovy-core by groovy.

the class GroovyRootDocBuilder method parseGroovy.

private Map<String, GroovyClassDoc> parseGroovy(String packagePath, String file, String src) throws RecognitionException, TokenStreamException {
    SourceBuffer sourceBuffer = new SourceBuffer();
    GroovyRecognizer parser = getGroovyParser(src, sourceBuffer);
    try {
        parser.compilationUnit();
    } catch (OutOfMemoryError e) {
        log.error("Out of memory while processing: " + packagePath + "/" + file);
        throw e;
    }
    AST ast = parser.getAST();
    // now do the business
    Visitor visitor = new SimpleGroovyClassDocAssembler(packagePath, file, sourceBuffer, links, properties, true);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
    return ((SimpleGroovyClassDocAssembler) visitor).getGroovyClassDocs();
}
Also used : AST(antlr.collections.AST) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) SourceBuffer(org.codehaus.groovy.antlr.SourceBuffer) GroovyRecognizer(org.codehaus.groovy.antlr.parser.GroovyRecognizer) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Example 18 with AntlrASTProcessor

use of org.codehaus.groovy.antlr.AntlrASTProcessor in project groovy by apache.

the class GroovyRootDocBuilder method parseGroovy.

private Map<String, GroovyClassDoc> parseGroovy(String packagePath, String file, String src) throws RecognitionException, TokenStreamException {
    SourceBuffer sourceBuffer = new SourceBuffer();
    GroovyRecognizer parser = getGroovyParser(src, sourceBuffer);
    try {
        parser.compilationUnit();
    } catch (OutOfMemoryError e) {
        log.error("Out of memory while processing: " + packagePath + "/" + file);
        throw e;
    }
    AST ast = parser.getAST();
    // now do the business
    Visitor visitor = new SimpleGroovyClassDocAssembler(packagePath, file, sourceBuffer, links, properties, true);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
    return ((SimpleGroovyClassDocAssembler) visitor).getGroovyClassDocs();
}
Also used : AST(antlr.collections.AST) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) SourceBuffer(org.codehaus.groovy.antlr.SourceBuffer) GroovyRecognizer(org.codehaus.groovy.antlr.parser.GroovyRecognizer) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Example 19 with AntlrASTProcessor

use of org.codehaus.groovy.antlr.AntlrASTProcessor in project groovy by apache.

the class Java2GroovyProcessor method groovifyFatJavaLikeGroovyAST.

private static void groovifyFatJavaLikeGroovyAST(AST ast, String[] groovyTokenNames) {
    Visitor groovifier = new Groovifier(groovyTokenNames);
    AntlrASTProcessor groovifierTraverser = new PreOrderTraversal(groovifier);
    groovifierTraverser.process(ast);
}
Also used : PreOrderTraversal(org.codehaus.groovy.antlr.treewalker.PreOrderTraversal) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor)

Example 20 with AntlrASTProcessor

use of org.codehaus.groovy.antlr.AntlrASTProcessor in project groovy by apache.

the class Java2GroovyProcessor method mindmap.

public static String mindmap(String input) throws Exception {
    JavaRecognizer parser = getJavaParser(input);
    String[] tokenNames = parser.getTokenNames();
    parser.compilationUnit();
    AST ast = parser.getAST();
    // modify the Java AST into a Groovy AST
    modifyJavaASTintoGroovyAST(tokenNames, ast);
    String[] groovyTokenNames = getGroovyTokenNames(input);
    // groovify the fat Java-Like Groovy AST
    groovifyFatJavaLikeGroovyAST(ast, groovyTokenNames);
    // now output
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Visitor visitor = new MindMapPrinter(new PrintStream(baos), groovyTokenNames);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
    return new String(baos.toByteArray());
}
Also used : PrintStream(java.io.PrintStream) AST(antlr.collections.AST) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) ByteArrayOutputStream(java.io.ByteArrayOutputStream) MindMapPrinter(org.codehaus.groovy.antlr.treewalker.MindMapPrinter) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Aggregations

AntlrASTProcessor (org.codehaus.groovy.antlr.AntlrASTProcessor)22 AST (antlr.collections.AST)16 Visitor (org.codehaus.groovy.antlr.treewalker.Visitor)14 ByteArrayOutputStream (java.io.ByteArrayOutputStream)10 PrintStream (java.io.PrintStream)10 SourceBuffer (org.codehaus.groovy.antlr.SourceBuffer)10 SourceCodeTraversal (org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)10 GroovyRecognizer (org.codehaus.groovy.antlr.parser.GroovyRecognizer)8 PreOrderTraversal (org.codehaus.groovy.antlr.treewalker.PreOrderTraversal)8 StringReader (java.io.StringReader)6 UnicodeEscapingReader (org.codehaus.groovy.antlr.UnicodeEscapingReader)6 GroovyLexer (org.codehaus.groovy.antlr.parser.GroovyLexer)6 List (java.util.List)4 MindMapPrinter (org.codehaus.groovy.antlr.treewalker.MindMapPrinter)4 FileNotFoundException (java.io.FileNotFoundException)2 FileOutputStream (java.io.FileOutputStream)2 Constructor (java.lang.reflect.Constructor)2 ArrayList (java.util.ArrayList)2 Iterator (java.util.Iterator)2 AntlrASTProcessSnippets (org.codehaus.groovy.antlr.AntlrASTProcessSnippets)2