了解 DParser for Python
2007-03-29 12:13:45 来源:WEB开发网核心提示: 让我们给出一些短语来运行这个解析器,如下:清单 2. 简单地解析短语$ echo -n "alpha" | ./abc.pyHead:A: alphaTail:echo -n "xavier alpha beta charlie will" | ./
让我们给出一些短语来运行这个解析器,如下:
清单 2. 简单地解析短语
$ echo -n "alpha" | ./abc.py
Head:
A: alpha
Tail:
echo -n "xavier alpha beta charlie will" | ./abc.py
Head: xavier
ABC: alpha beta charlie
Tail: will
$ echo -n "mable delta xavier bruce" | ./abc.py
Traceback (most recent call last): [...]
dparser.SyntaxError:
syntax error, line:1
mable delta xavier bruce[syntax error]
显然,到目前为止,一切都没问题。我的语法当其条件允许时找到了一个 ABC,但是当只能找到 A 或者 AB 时,也能满足于此。
不过说实话,当遇到含糊的短语时,我的语法会有很多问题。在大部分情况下,当 DParser 不能确定如何解析一个短语时,它会陷入一个无限循环(可能是最坏的结果;至少回溯或者报告的错误可以告诉您哪里出现了问题)。有时(至少在我的 Mac OSX 机器上),它会转而生成一个“Bus error”。那些情形我哪个都不喜欢。
处理含糊的短语
由于所有的最终结果都有相同的优先级,所以解析器不能确定如何解析类似如下的内容:
清单 3. 尝试解析一个含糊的短语
$ echo -n "alex bruce alice benny carl" | ./abc.py
AB 在前然后是单词?单词在前然后是 ABC?对于那个问题来说,它是全部都是单词吗(包括五个单词结果),它是不是应该引发一个 dparser.SyntaxError ?我最后会得到一个“Bus error” 或停止了的任务,而不是一个解析。在先前的例子中,含糊的短语碰巧被解析出来的原因在于每个结果的急切性(eagerness);一旦找到一个 ABC,则先导和结尾单词就都各就其位。
- ››Form Reset Function
- ››FOREACH 宏之GCC实现
- ››了解Windows Mobile文件结构
- ››了解 IBM Smart Business Development and Test o...
- ››ForeFront让企业VPN连接高枕无忧
- ››Forefront TMG日志记录功能
- ››了解 Apache Click:使用轻量模型快速编写 Web 应...
- ››了解 IBM Data Studio Version 2 软件打包方式
- ››了解微软Office 2010数字签名的新特性
- ››了解Sybase IQ服务剑桥天文观测台
- ››了解 Eclipse 中的 JFace 数据绑定,第 1 部分: 数...
- ››了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑...
更多精彩
赞助商链接