需要在pyParsing语法中保留注释

Need to keep comments in pyParsing grammar

我有一个 python pyparsing 语言语法,该语言允许 /*... */ 和 // 样式注释。目前正则表达式在 调用解析器之前 过滤掉注释。

我要解决的问题是想让系统使用注释自动生成类似于Autodoc的文档。我的解决方案是,我不想预先过滤掉评论,而是想将它们添加到 white-space 的 pyParsing 定义中。但是,我将如何检索注释以便将它们与(例如)文本中的 class 或函数定义相关联?

我需要检索 所有 评论,甚至是与 class 或函数无关的评论。有没有办法做到这一点?还是有我没有看到的更好的解决方案?

编辑:通过“添加到白色 space 的定义”,我的意思是使用“ignore(expr)”函数。

将注释作为语法的一部分进行解析的问题在于它们绝对可以任何地方突然出现。如果它们没有被忽略,那么您必须将它们插入到整个解析器中。

你可以做的是使用两次传递,一次用于语法元素,一次用于注释,并使用 locatedExpr 或解析操作捕获每个传递的位置,或者使用 scanString(returns 开始和每个匹配位置的末尾)。然后匹配注释的位置和重要的语法元素。