我有一个文件,其中pythonStyleComments在行中,例如:
def foo(): # declare
# Simple function
a = 0 # TODO: add random
return a因此,我想将.ignore(pythonStyleComments)添加到.ignore解析中,但希望处理任何元(如TODO:)。我知道所有的元单词,所以我如何才能排除这些评论忽略?
也许可以声明注释为'#‘+ Regex(),其中Regex将被排除元单词?还是吡喃解析有更优雅的方法?
发布于 2015-10-06 08:30:07
我刚刚宣布comment = Literal('#').suppress() + Optional(restOfLine)
然后将其作为可选的(注释)添加到每个语句的末尾,在其中它可能会出现。然后添加
def commentHandler(t):
result = []
if "fixed" in t[0]:
result.append("fixed")
if "TODO: " in t[0]:
try:
message = t[0].split("TODO: ")[1].strip()
result.append(message)
except Exception as e:
result.append(t[0])
return result
comment.setParseAction(commentHandler)所以它对我来说是完美的。
发布于 2015-10-05 14:01:53
我建议用多次传球来处理这件事。首先,为TODO注释定义一个模式,并使用scanString定位所有这些实例。然后对解析器进行第二次传递,并将TODO与您定位的元素的位置匹配起来。
或者(这是完全未经测试的),尝试将一个解析操作附加到pythonStyleComment,然后按照通常的方式执行并调用parser.ignore(pythonStyleComment)。如果一个是匹配的,如果它与您的TODO格式相匹配,那么将关于该注释及其位置的内容保存到旁边。(我不确定被忽略的表达式会运行它们的解析操作,所以您可能不得不使用2-pass方法。)
https://stackoverflow.com/questions/32944298
复制相似问题