Python解析器模块教程

时间:2011-03-19 00:57:19

标签: python parsing

我正在编写一个应用程序,它读取一个当前有自己语法的输入文件,由lex / yacc处理。

我正在修改这个以便使这个输入文件成为Python脚本,并且想知道是否有人可以指向我在Python中使用解析器模块的初学者指南。我对Python本身很陌生,但已经完成了大量的在线教程。

根据我的研究,我知道有一些选项(例如pyparsing)可以让我保留现有的语法并使用Pyparsing作为lex / yacc的替代品。但是,我很想更详细地学习Python解析器模块并探索它的可行性。

感谢。

3 个答案:

答案 0 :(得分:3)

你的意思是the parser module?它只是Python源代码的解析器,而不是通用解析器。你不能用它来解析其他任何东西。

答案 1 :(得分:2)

正如Jochen所说,perser模块用于解析Python代码。我认为你最好退房Ned Batchelder's list of parsers。 PyParsing与Lex和Yacc的做法完全不同,所以我不确定为什么你认为你可以保留现有的语法和词法分析器。更好的选择可能是David Beazley的PLY工具包。它结实且具有出色的文档。

答案 2 :(得分:2)

我建议您查看https://github.com/erezsh/lark

对于新手解析非常有用:它可以解析所有无上下文的语法,它会自动构建一个AST(带行和列号),并接受EBNF格式的语法,这被认为是标准,非常容易写。