You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2023/12/15 19:50:00 UTC
[jira] [Closed] (GROOVY-11130) Groovy 4 doesn't have classes from groovy.antlr
[ 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)