嘿伙计们,这是我在Stack Overflow上的第一个问题,我想知道我是否可以向那些比我更了解Python和Parser Generators的人提出建议.
我被赋予了一个任务,我必须为一个简单的类C语言创建一个解析器.我可以使用任何编程语言和工具,我希望创建解析器,但我同时学习Python,所以这将是我的首选.
我的Parser必须遵循一些限制.首先,它必须能够读入包含以下信息的文本文件:
kind1 : spelling1 kind2 : spelling2 kind3 : spelling3 . . . kindn : spellingn
每种类型和拼写都指代语言的标记类型和值.该文件是通过语言的词法分析器放置代码示例的结果.
其次,我必须能够自定义解析器的输出.理想情况下,我想输出一个已将类型:拼写列表转换为另一个令牌序列的文件,这些令牌将传递给语言的编译器以转换为MIPS汇编代码.这是我希望解析器能够生成的那种事情的一个小例子:
%function int test %variable int x %variable int y %begin %if %id y , %id x > %do %begin %return %num 0 %end %return %num 1 %end
如果有人可以就现有的Python解析器生成器提供建议,并且如果我能够在上面的示例中实现我正在寻找的那种东西,那将是一个很大的帮助.
PyParsing是一个生成解析器的python工具.有很多有趣的例子.
易于上手:
from pyparsing import Word, alphas # define grammar greet = Word( alphas ) + "," + Word( alphas ) + "!" # input string hello = "Hello, World!" # parse input string print hello, "->", greet.parseString( hello )
对我来说,这看起来像一个pyparsing工作.而且它也可以相对容易地操作输出.