in src/google/appengine/api/search/ExpressionParser.py [0:0]
def fn(self, ):
retval = self.fn_return()
retval.start = self.input.LT(1)
root_0 = None
LPAREN48 = None
COMMA50 = None
RPAREN52 = None
fnName47 = None
condExpr49 = None
condExpr51 = None
LPAREN48_tree = None
COMMA50_tree = None
RPAREN52_tree = None
stream_COMMA = RewriteRuleTokenStream(self._adaptor, "token COMMA")
stream_LPAREN = RewriteRuleTokenStream(self._adaptor, "token LPAREN")
stream_RPAREN = RewriteRuleTokenStream(self._adaptor, "token RPAREN")
stream_fnName = RewriteRuleSubtreeStream(self._adaptor, "rule fnName")
stream_condExpr = RewriteRuleSubtreeStream(self._adaptor, "rule condExpr")
try:
try:
pass
self._state.following.append(self.FOLLOW_fnName_in_fn619)
fnName47 = self.fnName()
self._state.following.pop()
stream_fnName.add(fnName47.tree)
LPAREN48=self.match(self.input, LPAREN, self.FOLLOW_LPAREN_in_fn621)
stream_LPAREN.add(LPAREN48)
self._state.following.append(self.FOLLOW_condExpr_in_fn623)
condExpr49 = self.condExpr()
self._state.following.pop()
stream_condExpr.add(condExpr49.tree)
while True:
alt13 = 2
LA13_0 = self.input.LA(1)
if (LA13_0 == COMMA) :
alt13 = 1
if alt13 == 1:
pass
COMMA50=self.match(self.input, COMMA, self.FOLLOW_COMMA_in_fn626)
stream_COMMA.add(COMMA50)
self._state.following.append(self.FOLLOW_condExpr_in_fn628)
condExpr51 = self.condExpr()
self._state.following.pop()
stream_condExpr.add(condExpr51.tree)
else:
break
RPAREN52=self.match(self.input, RPAREN, self.FOLLOW_RPAREN_in_fn632)
stream_RPAREN.add(RPAREN52)
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(stream_fnName.nextNode(), root_1)
if not (stream_condExpr.hasNext()):
raise RewriteEarlyExitException()
while stream_condExpr.hasNext():
self._adaptor.addChild(root_1, stream_condExpr.nextTree())
stream_condExpr.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 e:
self.reportError(e)
raise e
finally:
pass
return retval