在我的项目中,我使用antlr4来提取javascript文件中的字符串。 我使用开源语法ECMAScript.g4文件(运行时是python2),这个文件的URL是 https://github.com/antlr/grammars-v4/tree/master/ecmascript/Python
使用命令运行g4文件后
antlr4 -Dlanguage = Python2 ECMAScript.g4
我有几个python文件:lexer,listener,tokens等等。 在ECMAScriptListener.py中,我找到了一个函数enterLiteral
def enterLiteral(self,ctx):
在这个函数中我可以得到字符串,因此我添加
print' text:',ctx.getText()
进行测试。 但是我发现一些文件可以正确解析(所有字符串都被打印),而一些文件(如jquery-3.1.1.min.js)会抛出错误,如
第2行:200规则returnStatement失败谓词:{!this.here(ECMAScriptParser.LineTerminator)}?
第2行:250缺失')'在','
最后将打印错误位置之前的字符串,但错误位置之后的字符串不会。我不知道为什么会发生这种情况以及如何解决它。 (对不起,我没有学习编译器,但我的项目必须使用antlr4)所以我正在寻求帮助