[英]Pyparsing ignore except
我有一个文件,其中有pythonStyleComments行,例如:
def foo(): # declare
# Simple function
a = 0 # TODO: add random
return a
因此,那么我想将.ignore(pythonStyleComments)添加到pyparsing中,但要处理任何元数据(例如TODO:)。 我知道所有的元词,因此如何排除此注释呢?
也许将注释声明为“#” + Regex(),其中Regex将排除元单词? 还是pyparsing有更优雅的方法?
我建议多次处理。 首先,为您的TODO注释定义一个模式,并使用scanString查找所有这些实例。 然后使用解析器运行第二遍,并将TODO与您所定位元素的位置匹配。
或(完全未经测试),尝试将解析动作附加到pythonStyleComment,然后像往常一样执行并调用parser.ignore(pythonStyleComment)。 如果匹配,并且匹配您的TODO格式,则将有关该注释及其位置的内容保存到一边。 (我不认为忽略的表达式可以运行其解析动作,因此您可能必须采用2遍方法。)
我刚刚宣布comment = Literal('#').suppress() + Optional(restOfLine)
然后将其作为Optional(comment)添加到每个语句的末尾(可能会出现)。 然后加
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)
因此,它对我来说非常理想。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.