[英]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.