我有一個遞歸語句下面的代碼片段從pyparsing解析器:pyparsing遞歸不會拋出異常
def parse_query(querystr):
# <<other parsing stuff>>
queryexpression = querycondition + ZeroOrMore(Word("and") + querycondition)
try:
return queryexpression.parseString(querystr)
except ParseException as e:
logger.debug("Error parsing '{0}': \n {1}".format(querystr, e))
return None
當我養活這個查詢:
tokens = parse_query("HR:EE > -28.9 and BL:AA = 0 THISISNOTAND KLAS:TT eq true")
print(tokens)
它產生:
[['HR', ':', 'EE', '>', '-28.9'], 'and', ['BL', ':', 'AA', '=', '0']]
只是默默地跳過最後一個條件。拋出異常。
如何捕獲此字符串中的錯誤?
我沒有看到發生遞歸的部分。 –
queryexpression = querycondition + ZeroOrMore(Word(「and」)+ querycondition) – RickyA
這不是遞歸,只是在一個生產中兩次使用同一個非終結符。 – delnan