可爱的 Python: 使用 SimpleParse 模块进行解析
2008-11-13 13:16:18 来源:WEB开发网把这种格式扩展到其它输出格式很简单。
结束语
SimpleParse 为含义模糊的 mxTextTools C 模块的基本功能和速度提供了一种简明的并且十分易读的 EBNF 样式的封装器。此外,即使只是顺便学会的,许多程序员也已经相当熟悉 EBNF 语法了。关于什么更容易理解,我不能提供 证明 ― 这一点因各人的直觉而异 ― 但是我可以根据源代码长度给出量化评估。先前手工开发的 mxTypographify 模块的大小如下:
wc mxTypographify.py
199 776 7041 mxTypographify.py
这 199 行中,相当数量的行是注释。这些行中有 18 行是标记函数所包含的正则表达式版本,包含该标记函数是用于计时比较。但是该程序的功能基本上和上面列出的 typographify.py 的功能相同。相比之下,我们的 SimpleParse 程序,包括其支持文件在内,大小如下:
wc typo*.def typo*.py
19 79 645 typographify.def
20 79 721 typographify.py
6 25 205 typo_html.py
45 183 1571 total
换句话说,行数大约只有前者的四分之一。这个版本的注释较少,但是那主要是因为 EBNF 语法的自我描述能力很强。我不希望太过强调代码行数 ― 显然,您可以通过最小化或最大化代码长度做手脚。但是通常对程序员的工作进行研究,少数实际经验结论之一是:“千行代码/人月”相当接近于常数,和语言以及库关系不大。当然,依次地,正则表达式版本是 SimpleParse 版本长度的三分之一 ― 但是我认为其表达式的密度使得它极难维护并且更难编写。总而言之,我认为 SimpleParse 是所考虑的方法中最好的。
更多精彩
赞助商链接