从这里使用Lexer和解析器:
https://raw.githubusercontent.com/antlr/grammars-v4/master/java/JavaLexer.g4
https://raw.githubusercontent.com/antlr/grammars-v4/master/java/JavaParser.g4
使用antlr-4.6生成Python3目标
antlr-4.6-complete.jar语言 /JavaLexer.g4
java-jar/antlr-4.6-完成。jar-Dlanguage=Python3/JavaParser。g4
但是,我无法在生成的解析器上运行compilationUnit()方法。这是错误的说法
IPDB
File "/home/sviyer/onmt-fresh/java/JavaParser.py", line 1063, in compilationUnit
localctx = JavaParser.CompilationUnitContext(self, self._ctx, self.state)
File "/home/sviyer/.conda/envs/allennlp/lib/python3.6/site-packages/antlr4/error/ErrorStrategy.py", line 223, in sync
raise InputMismatchException(recognizer)
antlr4.error.Errors.InputMismatchException: None
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "TestAntlr.py", line 13, in <module>
parser.compilationUnit()
File "/home/sviyer/onmt-fresh/java/JavaParser.py", line 1063, in compilationUnit
localctx = JavaParser.CompilationUnitContext(self, self._ctx, self.state)
File "/home/sviyer/.conda/envs/allennlp/lib/python3.6/site-packages/antlr4/error/ErrorStrategy.py", line 126, in reportError
self.reportInputMismatch(recognizer, e)
File "/home/sviyer/.conda/envs/allennlp/lib/python3.6/site-packages/antlr4/error/ErrorStrategy.py", line 266, in reportInputMismatch
+ " expecting " + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames)
File "/home/sviyer/.conda/envs/allennlp/lib/python3.6/site-packages/antlr4/error/ErrorStrategy.py", line 522, in getTokenErrorDisplay
s = t.text
AttributeError: 'int' object has no attribute 'text'
Lexer工作正常,解析器会解析它。我的代码是:
stream=antlr4。输入流(代码)
JavaLexer(流)
toks=antlr4。通用令牌流(lexer)
parser=JavaParser(流)
你的代码不正确。试试这个:
code = open('sample.java', 'r').read()
codeStream = InputStream(code)
lexer = JavaLexer(codeStream)
# First lexing way
tokensStream = CommonTokenStream(lexer)
parser = JavaParser(tokensStream)
# Second lexing way
'''tokens = lexer.getAllTokens()
tokensSource = ListTokenSource(tokens)
tokensStream = CommonTokenStream(tokensSource)
parser = JavaParser(tokensStream)'''
tree = parser.compilationUnit()
print "Tree " + tree.toStringTree(recog=parser);
此外,使用最新的稳定ANTLR版本(4.7)。
我正在尝试将ANTLR3语法转换为ANTLR4语法,以便在ANTLR4-python2-runtime中使用它。该语法是一个C/C模糊解析器。 转换后(基本上删除树运算符和语义/语法谓词),我使用以下方式生成Python2文件: 并且代码生成时没有任何错误,所以我将其导入我的python项目(我使用PyCharm)进行一些测试: 我的假设是正确的还是在转换语法时犯了一些错误?我们可以做些什么来让解
我使用antlr4使用Python3生成python目标。antlr语法库中的g4语法文件。生成的Python3Lexer。py文件包含我需要翻译成python的Java代码。这里是它输出的两个java段,您也可以在python3语法文件中找到它们 和 我把这些翻译成: 和 这是我的python脚本,用于运行antlr输出,其中包含python而不是java片段。使用命令运行 It错误并打印以下跟
需要一个用作所有函数的返回类型的类型。如果我需要生成一个AST,我应该使用什么返回类型?ANTLR3使用了 对象。 当输入节点时,我可以创建树的一个节点,但应该如何跟踪它的父节点? 关于如何将树重写规则转换为生成AST节点的方法,是否有任何示例?如果不是,是否可以为下面的规则提供一个示例? 下面是(3)的规则:
本文向大家介绍基于python3生成标签云代码解析,包括了基于python3生成标签云代码解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了基于python3生成标签云代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 标签云是现在大数据里面最喜欢使用的一种展现方式,其中在python3下也能实现标签云的效果,贴图如下: ---
我在这里使用的是一步语法,当我运行grun时,它非常有效: 但是,当使用具有以下代码的生成的java解析器运行时: 我得到这个错误:
问题内容: 我正在尝试解析一个较大的fasta文件,并且遇到内存不足的错误。一些建议,以改善数据处理将不胜感激。当前程序正确打印出名称,但是部分通过文件我得到一个MemoryError 这是发电机 这是呼叫者存根,这部分工作后会添加更多 对于那些不熟悉fasta格式的人,这里是一个示例 每个条目均以“>”开头,说明名称等,然后接下来的N行是数据。除了下一行开头有“>”的行以外,没有定义的数据结尾。