使用我的语法中的斜杠转义关键字

时间:2014-10-28 10:35:03

标签: python pyparsing

我试图解析一小部分Doxygen。

在doxygen中,您可以通过将\添加到命令来转义命令。因此@brief是一个命令,\@brief显示在文本中。

但是我无法识别逃逸序列。

我已将我的规则定义为:

beginSlash = Combine((~Literal('\\').suppress() | WordStart()) + Literal('\\') + ~FollowedBy(oneOf(r'\ @')))
beginAt = Combine(~Literal('\\').suppress() + '@')
beginMarker = (beginAt | beginSlash).setName('BeginMarker')

body = SkipTo(beginMarker | StringEnd()).setResultsName('body')

现在尝试匹配它时不起作用

assert body.parseString('this is \@brief').body == 'this is @brief'

返回

>       assert body.parseString('this is a \\@brief').body == 'this is @brief'
E       assert 'this is a \\' == 'this is @brief'
E         - this is a \\
E         + this is @brief

任何人都可以向我提供一些关于我的思维过程在哪里出错的见解吗?

我选择将beginmarkers与命令名分开,这样我就可以轻松扩展命令,而不必担心为每个命令转义@\

0 个答案:

没有答案