[ 
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)

Reply via email to