我有一个递归语句下面的代码片段从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