Python 解析器模块教程
我正在写一个应用程序,它可以读取一个输入文件,这个文件现在有自己的语法,使用的是lex/yacc来处理。
我想把这个输入文件改成一个Python脚本,不知道有没有人能推荐一个适合初学者的Python解析器模块的指南。我对Python还比较陌生,但已经看过不少在线教程。
根据我查到的信息,我知道有一些选项(比如pyparsing),可以让我保留现有的语法,并用Pyparsing替代lex/yacc。不过,我还是想更详细地了解一下Python的解析器模块,看看它是否可行。
谢谢。
3 个回答
2
我建议你去看看 https://github.com/erezsh/lark
这个工具非常适合刚入门的朋友们学习解析(也就是分析代码或文本的结构):它可以解析所有的上下文无关文法,自动生成抽象语法树(AST),而且还会标记行号和列号。此外,它支持用EBNF格式来写文法,这种格式被认为是标准,写起来也非常简单。
3
正如Jochen所说,解析器模块是用来解析Python代码的。我觉得你最好去看看Ned Batchelder的解析器列表。PyParsing的工作方式和Lex、Yacc差别很大,所以我不太明白你为什么认为可以保留你现有的语法和词法分析器。一个更好的选择可能是David Beazley的PLY工具包。这个工具很可靠,而且文档也非常好。
3
你是说解析器模块吗?这个解析器只适用于Python源代码,不是一个通用的解析器。也就是说,你不能用它来解析其他任何东西。