in src/google/appengine/api/search/QueryParser.py [0:0]
def factor(self, ):
retval = self.factor_return()
retval.start = self.input.LT(1)
root_0 = None
term13 = None
orOp14 = None
term15 = None
stream_orOp = RewriteRuleSubtreeStream(self._adaptor, "rule orOp")
stream_term = RewriteRuleSubtreeStream(self._adaptor, "rule term")
try:
try:
pass
self._state.following.append(self.FOLLOW_term_in_factor342)
term13 = self.term()
self._state.following.pop()
stream_term.add(term13.tree)
alt11 = 2
alt11 = self.dfa11.predict(self.input)
if alt11 == 1:
pass
retval.tree = root_0
if retval is not None:
stream_retval = RewriteRuleSubtreeStream(self._adaptor, "token retval", retval.tree)
else:
stream_retval = RewriteRuleSubtreeStream(self._adaptor, "token retval", None)
root_0 = self._adaptor.nil()
self._adaptor.addChild(root_0, stream_term.nextTree())
retval.tree = root_0
elif alt11 == 2:
pass
cnt10 = 0
while True:
alt10 = 2
alt10 = self.dfa10.predict(self.input)
if alt10 == 1:
pass
self._state.following.append(self.FOLLOW_orOp_in_factor374)
orOp14 = self.orOp()
self._state.following.pop()
stream_orOp.add(orOp14.tree)
self._state.following.append(self.FOLLOW_term_in_factor376)
term15 = self.term()
self._state.following.pop()
stream_term.add(term15.tree)
else:
if cnt10 >= 1:
break
eee = EarlyExitException(10, self.input)
raise eee
cnt10 += 1
retval.tree = root_0
if retval is not None:
stream_retval = RewriteRuleSubtreeStream(self._adaptor, "token retval", retval.tree)
else:
stream_retval = RewriteRuleSubtreeStream(self._adaptor, "token retval", None)
root_0 = self._adaptor.nil()
root_1 = self._adaptor.nil()
root_1 = self._adaptor.becomeRoot(self._adaptor.createFromType(DISJUNCTION, "DISJUNCTION"), root_1)
if not (stream_term.hasNext()):
raise RewriteEarlyExitException()
while stream_term.hasNext():
self._adaptor.addChild(root_1, stream_term.nextTree())
stream_term.reset()
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException as re:
self.reportError(re)
self.recover(self.input, re)
retval.tree = self._adaptor.errorNode(self.input, retval.start, self.input.LT(-1), re)
finally:
pass
return retval