如何使用Python3和ANTLR4修改java源代码?

如何使用Python3和ANTLR4修改java源代码?,python,antlr4,Python,Antlr4,我有一套Java源代码,我需要修改这些。Java文件(删除空格、注释等)为此,我从存储库下载了Java lexer和解析器文件,并使用antlr-4.7.2-complete.jar进行编译。我还使用pip安装了antlr4-python3-runtime 我尝试用下面的代码删除示例HelloWorld程序中的多行注释,但得到了以下回溯。我如何解决这个问题 对于编译lexer和解析器: java -jar [path_to_antlr-4.7.2-complete.jar] -Dlanguage

我有一套Java源代码,我需要修改这些。Java文件(删除空格、注释等)为此,我从存储库下载了Java lexer和解析器文件,并使用antlr-4.7.2-complete.jar进行编译。我还使用pip安装了antlr4-python3-runtime

我尝试用下面的代码删除示例HelloWorld程序中的多行注释,但得到了以下回溯。我如何解决这个问题

对于编译lexer和解析器:

java -jar [path_to_antlr-4.7.2-complete.jar] -Dlanguage=Python3 [path_to_lexer_file]
java -jar [path_to_antlr-4.7.2-complete.jar] -Dlanguage=Python3 [path_to_parser_file]

示例java文件:

public class HelloWorld {

    public static void main(String[] args){
        /*
        System.out.println("Hello World");
        */
    }

}

用于更改文件的Python代码:

source = open("./HelloWorld.java", "r")
codeStream = InputStream(source.read())
lexer = JavaLexer.JavaLexer(codeStream)
token_stream = CommonTokenStream(lexer)
token_stream.fill()
rewriter = TokenStreamRewriter.TokenStreamRewriter(token_stream)
for token in token_stream.tokens:
    if token.type == JavaLexer.JavaLexer.COMMENT:
        rewriter.deleteToken(token)

回溯(最近一次呼叫最后一次):
文件“/home/alp/PycharmProjects/JavaParsingTutorial/parser.py”,第31行,在
rewriter.deleteToken(令牌)
deleteToken中的文件“/usr/local/lib/python3.6/dist packages/antlr4/TokenStreamRewriter.py”,第80行
self.delete(self.DEFAULT\u程序名称、令牌、令牌)
文件“/usr/local/lib/python3.6/dist packages/antlr4/TokenStreamRewriter.py”,第88行,删除
self.replace(程序名,从\u idx到\u idx,无)
文件“/usr/local/lib/python3.6/dist packages/antlr4/TokenStreamRewriter.py”,第71行,替换
如果有((从_idx>到_idx,从_idx<0到_idx<0,到_idx>=len(self.tokens.tokens)):
TypeError:“CommonToken”和“CommonToken”的实例之间不支持“>”
请提供一个
Traceback (most recent call last):
  File "/home/alp/PycharmProjects/JavaParsingTutorial/parser.py", line 31, in <module>
    rewriter.deleteToken(token)
  File "/usr/local/lib/python3.6/dist-packages/antlr4/TokenStreamRewriter.py", line 80, in deleteToken
    self.delete(self.DEFAULT_PROGRAM_NAME, token, token)
  File "/usr/local/lib/python3.6/dist-packages/antlr4/TokenStreamRewriter.py", line 88, in delete
    self.replace(program_name, from_idx, to_idx, None)
  File "/usr/local/lib/python3.6/dist-packages/antlr4/TokenStreamRewriter.py", line 71, in replace
    if any((from_idx > to_idx, from_idx < 0, to_idx < 0, to_idx >= len(self.tokens.tokens))):
TypeError: '>' not supported between instances of 'CommonToken' and 'CommonToken'