in src/google/appengine/api/search/QueryParser.py [0:0]
def expression(self, ):
retval = self.expression_return()
retval.start = self.input.LT(1)
root_0 = None
sequence7 = None
andOp8 = None
sequence9 = None
stream_sequence = RewriteRuleSubtreeStream(self._adaptor, "rule sequence")
stream_andOp = RewriteRuleSubtreeStream(self._adaptor, "rule andOp")
try:
try:
pass
self._state.following.append(self.FOLLOW_sequence_in_expression185)
sequence7 = self.sequence()
self._state.following.pop()
stream_sequence.add(sequence7.tree)
alt6 = 2
alt6 = self.dfa6.predict(self.input)
if alt6 == 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_sequence.nextTree())
retval.tree = root_0
elif alt6 == 2:
pass
cnt5 = 0
while True:
alt5 = 2
alt5 = self.dfa5.predict(self.input)
if alt5 == 1:
pass
self._state.following.append(self.FOLLOW_andOp_in_expression222)
andOp8 = self.andOp()
self._state.following.pop()
stream_andOp.add(andOp8.tree)
self._state.following.append(self.FOLLOW_sequence_in_expression224)
sequence9 = self.sequence()
self._state.following.pop()
stream_sequence.add(sequence9.tree)
else:
if cnt5 >= 1:
break
eee = EarlyExitException(5, self.input)
raise eee
cnt5 += 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(CONJUNCTION, "CONJUNCTION"), root_1)
if not (stream_sequence.hasNext()):
raise RewriteEarlyExitException()
while stream_sequence.hasNext():
self._adaptor.addChild(root_1, stream_sequence.nextTree())
stream_sequence.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