Search in sources :

Example 6 with AntlrASTProcessor

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

the class LineColumnTest method doStuff.

public void doStuff(String input) throws Exception {
    GroovyRecognizer parser;
    SourceBuffer sourceBuffer = new SourceBuffer();
    UnicodeEscapingReader unicodeReader = new UnicodeEscapingReader(new StringReader(input), sourceBuffer);
    GroovyLexer lexer = new GroovyLexer(unicodeReader);
    unicodeReader.setLexer(lexer);
    parser = GroovyRecognizer.make(lexer);
    parser.setSourceBuffer(sourceBuffer);
    String[] tokenNames = parser.getTokenNames();
    parser.compilationUnit();
    AST ast = parser.getAST();
    AntlrASTProcessor snippets = new AntlrASTProcessSnippets();
    ast = snippets.process(ast);
    Visitor visitor = new LineColumnChecker(sourceBuffer, tokenNames);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
}
Also used : AST(antlr.collections.AST) SourceBuffer(org.codehaus.groovy.antlr.SourceBuffer) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) UnicodeEscapingReader(org.codehaus.groovy.antlr.UnicodeEscapingReader) GroovyLexer(org.codehaus.groovy.antlr.parser.GroovyLexer) AntlrASTProcessSnippets(org.codehaus.groovy.antlr.AntlrASTProcessSnippets) StringReader(java.io.StringReader) GroovyRecognizer(org.codehaus.groovy.antlr.parser.GroovyRecognizer)

Example 7 with AntlrASTProcessor

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

the class Java2GroovyProcessor method modifyJavaASTintoGroovyAST.

private static void modifyJavaASTintoGroovyAST(String[] tokenNames, AST ast) {
    // mutate the tree when in Javaland
    Visitor preJava2groovyConverter = new PreJava2GroovyConverter(tokenNames);
    AntlrASTProcessor preJava2groovyTraverser = new PreOrderTraversal(preJava2groovyConverter);
    preJava2groovyTraverser.process(ast);
    // map the nodes to Groovy types
    Visitor java2groovyConverter = new Java2GroovyConverter(tokenNames);
    AntlrASTProcessor java2groovyTraverser = new PreOrderTraversal(java2groovyConverter);
    java2groovyTraverser.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 8 with AntlrASTProcessor

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

the class Java2GroovyProcessor method nodePrinter.

public static String nodePrinter(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 NodePrinter(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) NodePrinter(org.codehaus.groovy.antlr.treewalker.NodePrinter) ByteArrayOutputStream(java.io.ByteArrayOutputStream) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Example 9 with AntlrASTProcessor

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

the class Java2GroovyProcessor method convert.

public static String convert(String filename, String input, boolean withHeader, boolean withNewLines) throws Exception {
    JavaRecognizer parser = getJavaParser(input);
    String[] tokenNames = parser.getTokenNames();
    parser.compilationUnit();
    AST ast = parser.getAST();
    // which is a really nice way of seeing the AST, folding nodes etc
    if ("mindmap".equals(System.getProperty("ANTLR.AST".toLowerCase()))) {
        // uppercase to hide from jarjar
        try {
            PrintStream out = new PrintStream(new FileOutputStream(filename + ".mm"));
            Visitor visitor = new MindMapPrinter(out, tokenNames);
            AntlrASTProcessor treewalker = new PreOrderTraversal(visitor);
            treewalker.process(ast);
        } catch (FileNotFoundException e) {
            System.out.println("Cannot create " + filename + ".mm");
        }
    }
    // 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 SourcePrinter(new PrintStream(baos), groovyTokenNames, withNewLines);
    AntlrASTProcessor traverser = new SourceCodeTraversal(visitor);
    traverser.process(ast);
    String header = "";
    if (withHeader) {
        header = "/*\n" + "  Automatically Converted from Java Source \n" + "  \n" + "  by java2groovy v0.0.1   Copyright Jeremy Rayner 2007\n" + "  \n" + "  !! NOT FIT FOR ANY PURPOSE !! \n" + "  'java2groovy' cannot be used to convert one working program into another" + "  */\n\n";
    }
    return header + new String(baos.toByteArray());
}
Also used : SourcePrinter(org.codehaus.groovy.antlr.treewalker.SourcePrinter) PrintStream(java.io.PrintStream) AST(antlr.collections.AST) PreOrderTraversal(org.codehaus.groovy.antlr.treewalker.PreOrderTraversal) Visitor(org.codehaus.groovy.antlr.treewalker.Visitor) FileNotFoundException(java.io.FileNotFoundException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) MindMapPrinter(org.codehaus.groovy.antlr.treewalker.MindMapPrinter) AntlrASTProcessor(org.codehaus.groovy.antlr.AntlrASTProcessor) FileOutputStream(java.io.FileOutputStream) SourceCodeTraversal(org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal)

Example 10 with AntlrASTProcessor

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

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