我接到一项任务,必须为简单的类 C 语言创建一个解析器。我可以使用任何我希望创建解析器的编程语言和工具,但我同时正在学习 Python,所以它是我的首选。
我的解析器必须遵循一些限制。首先,它必须能够读取包含以下信息的文本文件:
kind1 : spelling1
kind2 : spelling2
kind3 : spelling3
.
.
.
kindn : spellingn
其中每种类型和拼写均指该语言的标记类型和值。该文件是通过语言的词法分析器放置代码示例的结果。
其次,我必须能够自定义解析器的输出。理想情况下,我想输出一个文件,该文件已将 kind:spelling 列表转换为另一个标记序列,该序列将传递给语言的编译器以转换为 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 解析器生成器向我提供建议,并且我能够实现我在上面的示例中寻找的那种东西,那将是一个很大的帮助。
Py解析 https://github.com/pyparsing/pyparsing是一个用于生成解析器的Python工具。有一个很多有趣的例子 https://github.com/pyparsing/pyparsing/tree/master/examples.
易于上手:
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 )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)