我试图解析一小部分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与命令名分开,这样我就可以轻松扩展命令,而不必担心为每个命令转义@
或\
。