[
https://issues.apache.org/jira/browse/GROOVY-11130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles closed GROOVY-11130.
--------------------------------
Resolution: Information Provided
> Groovy 4 doesn't have classes from groovy.antlr
> -----------------------------------------------
>
> Key: GROOVY-11130
> URL: https://issues.apache.org/jira/browse/GROOVY-11130
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 4.0.0
> Environment: Gradle 7.1
> Java SDK 11
> Groovy 3.0.9 -> Groovy 4.0.2
> Reporter: Dmitry
> Priority: Major
>
> Hi team.
> I tried to resolve this issue in
> https://issues.apache.org/jira/browse/GROOVY-10886. But it was unsuccessful.
> The proposed 'GroovyShell' parser does not perform its functions.
> I tried to update Groovy for 4.0.2 version.
> But org.apache.groovy:groovy-all:4.0.2 doesn't have classes which we use in
> our project.
> AntlrASTProcessor
> SourceBuffer
> UnicodeEscapingReader
> Groovifier
> Java2GroovyConverter
> JavaLexer
> JavaRecognizer
> GroovyLexer
> GroovyRecognizer
> PreOrderTraversal
> SourceCodeTraversal
> Visitor
> SimpleGroovyClassDocAssembler
> In this method we create SimpleGroovyClassDoc. Do you have the same classes
> in Groovy 4?
>
> {code:java}
> import groovyjarjarantlr.RecognitionException
> import groovyjarjarantlr.TokenStreamException
> import groovyjarjarantlr.collections.AST
> import org.codehaus.groovy.antlr.AntlrASTProcessor
> import org.codehaus.groovy.antlr.SourceBuffer
> import org.codehaus.groovy.antlr.UnicodeEscapingReader
> import org.codehaus.groovy.antlr.java.Groovifier
> import org.codehaus.groovy.antlr.java.Java2GroovyConverter
> import org.codehaus.groovy.antlr.java.JavaLexer
> import org.codehaus.groovy.antlr.java.JavaRecognizer
> import org.codehaus.groovy.antlr.parser.GroovyLexer
> import org.codehaus.groovy.antlr.parser.GroovyRecognizer
> import org.codehaus.groovy.antlr.treewalker.PreOrderTraversal
> import org.codehaus.groovy.antlr.treewalker.SourceCodeTraversal
> import org.codehaus.groovy.antlr.treewalker.Visitor
> import org.codehaus.groovy.groovydoc.GroovyClassDoc
> import org.codehaus.groovy.runtime.ResourceGroovyMethods
> import org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc
> import org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDocAssembler
> class App {
> private Map<String, GroovyClassDoc> parseGroovy(String src, String
> packagePath, String file)
> throws RecognitionException, TokenStreamException {
> boolean isJava = file.endsWith(".java")
> println "Groovy version: " + GroovySystem.version
> SourceBuffer sourceBuffer = new SourceBuffer()
> UnicodeEscapingReader unicodeReader = new UnicodeEscapingReader(new
> StringReader(src), sourceBuffer)
> def parser
> if (isJava) {
> JavaLexer lexer = new JavaLexer(unicodeReader)
> unicodeReader.setLexer(lexer)
> parser = JavaRecognizer.make(lexer)
> } else {
> GroovyLexer lexer = new GroovyLexer(unicodeReader)
> unicodeReader.setLexer(lexer)
> parser = GroovyRecognizer.make(lexer)
> }
> parser.setSourceBuffer(sourceBuffer)
> parser.compilationUnit()
> AST ast = parser.getAST()
> if (isJava) {
> // modify the Java AST into a Groovy AST (just token types)
> Visitor java2groovyConverter = new
> Java2GroovyConverter(parser.getTokenNames())
> AntlrASTProcessor java2groovyTraverser = new
> PreOrderTraversal(java2groovyConverter)
> java2groovyTraverser.process(ast)
> // now mutate (groovify) the ast into groovy
> Visitor groovifier = new Groovifier(parser.getTokenNames(), false)
> AntlrASTProcessor groovifierTraverser = new
> PreOrderTraversal(groovifier)
> groovifierTraverser.process(ast)
> }
> Visitor visitor = new SimpleGroovyClassDocAssembler(packagePath,
> file, sourceBuffer, links, properties, !isJava)
> AntlrASTProcessor traverser = new SourceCodeTraversal(visitor)
> traverser.process(ast)
> return ((SimpleGroovyClassDocAssembler)visitor).getGroovyClassDocs()
> }
> }{code}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)