blob: 98003a21bd0b9db83ad59c6e0dc4d701dfb3b443 [file]
#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import sys
from google.appengine._internal.antlr3 import *
from google.appengine._internal.antlr3.compat import set, frozenset
from google.appengine._internal.antlr3.tree import *
HIDDEN = BaseRecognizer.HIDDEN
DOLLAR=31
LT=7
EXPONENT=26
LSQUARE=19
ASCII_LETTER=29
FLOAT=23
NAME_START=27
EOF=-1
LPAREN=17
INDEX=5
RPAREN=18
NAME=22
PLUS=13
DIGIT=25
EQ=11
NE=12
T__42=42
T__43=43
T__40=40
GE=10
T__41=41
T__44=44
UNDERSCORE=30
INT=20
FN=6
MINUS=14
RSQUARE=21
PHRASE=24
T__32=32
T__33=33
WS=28
T__34=34
T__35=35
T__36=36
T__37=37
T__38=38
T__39=39
NEG=4
GT=9
DIV=16
TIMES=15
LE=8
tokenNames = [
"<invalid>", "<EOR>", "<DOWN>", "<UP>",
"NEG", "INDEX", "FN", "LT", "LE", "GT", "GE", "EQ", "NE", "PLUS", "MINUS",
"TIMES", "DIV", "LPAREN", "RPAREN", "LSQUARE", "INT", "RSQUARE", "NAME",
"FLOAT", "PHRASE", "DIGIT", "EXPONENT", "NAME_START", "WS", "ASCII_LETTER",
"UNDERSCORE", "DOLLAR", "'.'", "','", "'abs'", "'count'", "'if'", "'kilometers'",
"'len'", "'log'", "'max'", "'miles'", "'min'", "'pow'", "'snippet'"
]
class ExpressionParser(Parser):
grammarFileName = "blaze-out/host/genfiles/apphosting/api/search/genantlr/Expression.g"
antlr_version = version_str_to_tuple("3.1.1")
antlr_version_str = "3.1.1"
tokenNames = tokenNames
def __init__(self, input, state=None):
if state is None:
state = RecognizerSharedState()
Parser.__init__(self, input, state)
self.dfa6 = self.DFA6(
self, 6,
eot = self.DFA6_eot,
eof = self.DFA6_eof,
min = self.DFA6_min,
max = self.DFA6_max,
accept = self.DFA6_accept,
special = self.DFA6_special,
transition = self.DFA6_transition
)
self._adaptor = CommonTreeAdaptor()
def getTreeAdaptor(self):
return self._adaptor
def setTreeAdaptor(self, adaptor):
self._adaptor = adaptor
adaptor = property(getTreeAdaptor, setTreeAdaptor)
def mismatch(input, ttype, follow):
raise MismatchedTokenException(ttype, input)
def recoverFromMismatchedSet(input, e, follow):
raise e
class expression_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def expression(self, ):
retval = self.expression_return()
retval.start = self.input.LT(1)
root_0 = None
EOF2 = None
cmpExpr1 = None
EOF2_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_cmpExpr_in_expression92)
cmpExpr1 = self.cmpExpr()
self._state.following.pop()
self._adaptor.addChild(root_0, cmpExpr1.tree)
EOF2=self.match(self.input, EOF, self.FOLLOW_EOF_in_expression94)
EOF2_tree = self._adaptor.createWithPayload(EOF2)
self._adaptor.addChild(root_0, EOF2_tree)
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class cmpExpr_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def cmpExpr(self, ):
retval = self.cmpExpr_return()
retval.start = self.input.LT(1)
root_0 = None
addExpr3 = None
cmpOp4 = None
addExpr5 = None
try:
try:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_addExpr_in_cmpExpr107)
addExpr3 = self.addExpr()
self._state.following.pop()
self._adaptor.addChild(root_0, addExpr3.tree)
alt1 = 2
LA1_0 = self.input.LA(1)
if ((LT <= LA1_0 <= NE)) :
alt1 = 1
if alt1 == 1:
pass
self._state.following.append(self.FOLLOW_cmpOp_in_cmpExpr110)
cmpOp4 = self.cmpOp()
self._state.following.pop()
root_0 = self._adaptor.becomeRoot(cmpOp4.tree, root_0)
self._state.following.append(self.FOLLOW_addExpr_in_cmpExpr113)
addExpr5 = self.addExpr()
self._state.following.pop()
self._adaptor.addChild(root_0, addExpr5.tree)
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class cmpOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def cmpOp(self, ):
retval = self.cmpOp_return()
retval.start = self.input.LT(1)
root_0 = None
set6 = None
set6_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
set6 = self.input.LT(1)
if (LT <= self.input.LA(1) <= NE):
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set6))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class addExpr_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def addExpr(self, ):
retval = self.addExpr_return()
retval.start = self.input.LT(1)
root_0 = None
multExpr7 = None
addOp8 = None
multExpr9 = None
try:
try:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_multExpr_in_addExpr171)
multExpr7 = self.multExpr()
self._state.following.pop()
self._adaptor.addChild(root_0, multExpr7.tree)
while True:
alt2 = 2
LA2_0 = self.input.LA(1)
if ((PLUS <= LA2_0 <= MINUS)) :
alt2 = 1
if alt2 == 1:
pass
self._state.following.append(self.FOLLOW_addOp_in_addExpr174)
addOp8 = self.addOp()
self._state.following.pop()
root_0 = self._adaptor.becomeRoot(addOp8.tree, root_0)
self._state.following.append(self.FOLLOW_multExpr_in_addExpr177)
multExpr9 = self.multExpr()
self._state.following.pop()
self._adaptor.addChild(root_0, multExpr9.tree)
else:
break
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class addOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def addOp(self, ):
retval = self.addOp_return()
retval.start = self.input.LT(1)
root_0 = None
set10 = None
set10_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
set10 = self.input.LT(1)
if (PLUS <= self.input.LA(1) <= MINUS):
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set10))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class multExpr_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def multExpr(self, ):
retval = self.multExpr_return()
retval.start = self.input.LT(1)
root_0 = None
unary11 = None
multOp12 = None
unary13 = None
try:
try:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_unary_in_multExpr211)
unary11 = self.unary()
self._state.following.pop()
self._adaptor.addChild(root_0, unary11.tree)
while True:
alt3 = 2
LA3_0 = self.input.LA(1)
if ((TIMES <= LA3_0 <= DIV)) :
alt3 = 1
if alt3 == 1:
pass
self._state.following.append(self.FOLLOW_multOp_in_multExpr214)
multOp12 = self.multOp()
self._state.following.pop()
root_0 = self._adaptor.becomeRoot(multOp12.tree, root_0)
self._state.following.append(self.FOLLOW_unary_in_multExpr217)
unary13 = self.unary()
self._state.following.pop()
self._adaptor.addChild(root_0, unary13.tree)
else:
break
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class multOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def multOp(self, ):
retval = self.multOp_return()
retval.start = self.input.LT(1)
root_0 = None
set14 = None
set14_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
set14 = self.input.LT(1)
if (TIMES <= self.input.LA(1) <= DIV):
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set14))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class unary_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def unary(self, ):
retval = self.unary_return()
retval.start = self.input.LT(1)
root_0 = None
MINUS15 = None
atom16 = None
atom17 = None
MINUS15_tree = None
stream_MINUS = RewriteRuleTokenStream(self._adaptor, "token MINUS")
stream_atom = RewriteRuleSubtreeStream(self._adaptor, "rule atom")
try:
try:
alt4 = 2
LA4_0 = self.input.LA(1)
if (LA4_0 == MINUS) :
alt4 = 1
elif (LA4_0 == LPAREN or LA4_0 == INT or (NAME <= LA4_0 <= PHRASE) or (34 <= LA4_0 <= 44)) :
alt4 = 2
else:
nvae = NoViableAltException("", 4, 0, self.input)
raise nvae
if alt4 == 1:
pass
MINUS15=self.match(self.input, MINUS, self.FOLLOW_MINUS_in_unary251)
stream_MINUS.add(MINUS15)
self._state.following.append(self.FOLLOW_atom_in_unary253)
atom16 = self.atom()
self._state.following.pop()
stream_atom.add(atom16.tree)
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.create(NEG, "-"), root_1)
self._adaptor.addChild(root_1, stream_atom.nextTree())
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt4 == 2:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_atom_in_unary268)
atom17 = self.atom()
self._state.following.pop()
self._adaptor.addChild(root_0, atom17.tree)
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class atom_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def atom(self, ):
retval = self.atom_return()
retval.start = self.input.LT(1)
root_0 = None
LPAREN22 = None
RPAREN24 = None
var18 = None
num19 = None
str20 = None
fn21 = None
addExpr23 = None
LPAREN22_tree = None
RPAREN24_tree = None
stream_RPAREN = RewriteRuleTokenStream(self._adaptor, "token RPAREN")
stream_LPAREN = RewriteRuleTokenStream(self._adaptor, "token LPAREN")
stream_addExpr = RewriteRuleSubtreeStream(self._adaptor, "rule addExpr")
try:
try:
alt5 = 5
LA5 = self.input.LA(1)
if LA5 == NAME:
alt5 = 1
elif LA5 == INT or LA5 == FLOAT:
alt5 = 2
elif LA5 == PHRASE:
alt5 = 3
elif LA5 == 34 or LA5 == 35 or LA5 == 36 or LA5 == 37 or LA5 == 38 or LA5 == 39 or LA5 == 40 or LA5 == 41 or LA5 == 42 or LA5 == 43 or LA5 == 44:
alt5 = 4
elif LA5 == LPAREN:
alt5 = 5
else:
nvae = NoViableAltException("", 5, 0, self.input)
raise nvae
if alt5 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_var_in_atom281)
var18 = self.var()
self._state.following.pop()
self._adaptor.addChild(root_0, var18.tree)
elif alt5 == 2:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_num_in_atom287)
num19 = self.num()
self._state.following.pop()
self._adaptor.addChild(root_0, num19.tree)
elif alt5 == 3:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_str_in_atom293)
str20 = self.str()
self._state.following.pop()
self._adaptor.addChild(root_0, str20.tree)
elif alt5 == 4:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_fn_in_atom299)
fn21 = self.fn()
self._state.following.pop()
self._adaptor.addChild(root_0, fn21.tree)
elif alt5 == 5:
pass
LPAREN22=self.match(self.input, LPAREN, self.FOLLOW_LPAREN_in_atom305)
stream_LPAREN.add(LPAREN22)
self._state.following.append(self.FOLLOW_addExpr_in_atom307)
addExpr23 = self.addExpr()
self._state.following.pop()
stream_addExpr.add(addExpr23.tree)
RPAREN24=self.match(self.input, RPAREN, self.FOLLOW_RPAREN_in_atom309)
stream_RPAREN.add(RPAREN24)
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_addExpr.nextTree())
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, e:
reportError(e)
raise e
finally:
pass
return retval
class var_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def var(self, ):
retval = self.var_return()
retval.start = self.input.LT(1)
root_0 = None
name25 = None
name26 = None
index27 = None
stream_index = RewriteRuleSubtreeStream(self._adaptor, "rule index")
stream_name = RewriteRuleSubtreeStream(self._adaptor, "rule name")
try:
try:
alt6 = 2
alt6 = self.dfa6.predict(self.input)
if alt6 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_name_in_var326)
name25 = self.name()
self._state.following.pop()
self._adaptor.addChild(root_0, name25.tree)
elif alt6 == 2:
pass
self._state.following.append(self.FOLLOW_name_in_var332)
name26 = self.name()
self._state.following.pop()
stream_name.add(name26.tree)
self._state.following.append(self.FOLLOW_index_in_var334)
index27 = self.index()
self._state.following.pop()
stream_index.add(index27.tree)
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.create(INDEX, ((index27 is not None) and [self.input.toString(index27.start,index27.stop)] or [None])[0]), root_1)
self._adaptor.addChild(root_1, stream_name.nextTree())
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, e:
reportError(e)
raise e
finally:
pass
return retval
class index_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def index(self, ):
retval = self.index_return()
retval.start = self.input.LT(1)
root_0 = None
x = None
LSQUARE28 = None
RSQUARE29 = None
x_tree = None
LSQUARE28_tree = None
RSQUARE29_tree = None
stream_INT = RewriteRuleTokenStream(self._adaptor, "token INT")
stream_LSQUARE = RewriteRuleTokenStream(self._adaptor, "token LSQUARE")
stream_RSQUARE = RewriteRuleTokenStream(self._adaptor, "token RSQUARE")
try:
try:
pass
LSQUARE28=self.match(self.input, LSQUARE, self.FOLLOW_LSQUARE_in_index356)
stream_LSQUARE.add(LSQUARE28)
x=self.match(self.input, INT, self.FOLLOW_INT_in_index360)
stream_INT.add(x)
RSQUARE29=self.match(self.input, RSQUARE, self.FOLLOW_RSQUARE_in_index362)
stream_RSQUARE.add(RSQUARE29)
retval.tree = root_0
stream_x = RewriteRuleTokenStream(self._adaptor, "token x", x)
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_x.nextNode())
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, e:
reportError(e)
raise e
finally:
pass
return retval
class name_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def name(self, ):
retval = self.name_return()
retval.start = self.input.LT(1)
root_0 = None
NAME30 = None
char_literal31 = None
NAME32 = None
NAME30_tree = None
char_literal31_tree = None
NAME32_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
NAME30=self.match(self.input, NAME, self.FOLLOW_NAME_in_name380)
NAME30_tree = self._adaptor.createWithPayload(NAME30)
self._adaptor.addChild(root_0, NAME30_tree)
while True:
alt7 = 2
LA7_0 = self.input.LA(1)
if (LA7_0 == 32) :
alt7 = 1
if alt7 == 1:
pass
char_literal31=self.match(self.input, 32, self.FOLLOW_32_in_name383)
char_literal31_tree = self._adaptor.createWithPayload(char_literal31)
root_0 = self._adaptor.becomeRoot(char_literal31_tree, root_0)
NAME32=self.match(self.input, NAME, self.FOLLOW_NAME_in_name386)
NAME32_tree = self._adaptor.createWithPayload(NAME32)
self._adaptor.addChild(root_0, NAME32_tree)
else:
break
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class num_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def num(self, ):
retval = self.num_return()
retval.start = self.input.LT(1)
root_0 = None
set33 = None
set33_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
set33 = self.input.LT(1)
if self.input.LA(1) == INT or self.input.LA(1) == FLOAT:
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set33))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class str_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def str(self, ):
retval = self.str_return()
retval.start = self.input.LT(1)
root_0 = None
PHRASE34 = None
PHRASE34_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
PHRASE34=self.match(self.input, PHRASE, self.FOLLOW_PHRASE_in_str420)
PHRASE34_tree = self._adaptor.createWithPayload(PHRASE34)
self._adaptor.addChild(root_0, PHRASE34_tree)
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
class fn_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def fn(self, ):
retval = self.fn_return()
retval.start = self.input.LT(1)
root_0 = None
LPAREN36 = None
char_literal38 = None
RPAREN40 = None
fnName35 = None
cmpExpr37 = None
cmpExpr39 = None
LPAREN36_tree = None
char_literal38_tree = None
RPAREN40_tree = None
stream_RPAREN = RewriteRuleTokenStream(self._adaptor, "token RPAREN")
stream_33 = RewriteRuleTokenStream(self._adaptor, "token 33")
stream_LPAREN = RewriteRuleTokenStream(self._adaptor, "token LPAREN")
stream_fnName = RewriteRuleSubtreeStream(self._adaptor, "rule fnName")
stream_cmpExpr = RewriteRuleSubtreeStream(self._adaptor, "rule cmpExpr")
try:
try:
pass
self._state.following.append(self.FOLLOW_fnName_in_fn433)
fnName35 = self.fnName()
self._state.following.pop()
stream_fnName.add(fnName35.tree)
LPAREN36=self.match(self.input, LPAREN, self.FOLLOW_LPAREN_in_fn435)
stream_LPAREN.add(LPAREN36)
self._state.following.append(self.FOLLOW_cmpExpr_in_fn437)
cmpExpr37 = self.cmpExpr()
self._state.following.pop()
stream_cmpExpr.add(cmpExpr37.tree)
while True:
alt8 = 2
LA8_0 = self.input.LA(1)
if (LA8_0 == 33) :
alt8 = 1
if alt8 == 1:
pass
char_literal38=self.match(self.input, 33, self.FOLLOW_33_in_fn440)
stream_33.add(char_literal38)
self._state.following.append(self.FOLLOW_cmpExpr_in_fn442)
cmpExpr39 = self.cmpExpr()
self._state.following.pop()
stream_cmpExpr.add(cmpExpr39.tree)
else:
break
RPAREN40=self.match(self.input, RPAREN, self.FOLLOW_RPAREN_in_fn446)
stream_RPAREN.add(RPAREN40)
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.create(FN, ((fnName35 is not None) and [self.input.toString(fnName35.start,fnName35.stop)] or [None])[0]), root_1)
if not (stream_cmpExpr.hasNext()):
raise RewriteEarlyExitException()
while stream_cmpExpr.hasNext():
self._adaptor.addChild(root_1, stream_cmpExpr.nextTree())
stream_cmpExpr.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, e:
reportError(e)
raise e
finally:
pass
return retval
class fnName_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def fnName(self, ):
retval = self.fnName_return()
retval.start = self.input.LT(1)
root_0 = None
set41 = None
set41_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
set41 = self.input.LT(1)
if (34 <= self.input.LA(1) <= 44):
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set41))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
retval.stop = self.input.LT(-1)
retval.tree = self._adaptor.rulePostProcessing(root_0)
self._adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop)
except RecognitionException, e:
reportError(e)
raise e
finally:
pass
return retval
DFA6_eot = DFA.unpack(
u"\6\uffff"
)
DFA6_eof = DFA.unpack(
u"\1\uffff\1\4\3\uffff\1\4"
)
DFA6_min = DFA.unpack(
u"\1\26\1\7\1\26\2\uffff\1\7"
)
DFA6_max = DFA.unpack(
u"\1\26\1\41\1\26\2\uffff\1\41"
)
DFA6_accept = DFA.unpack(
u"\3\uffff\1\2\1\1\1\uffff"
)
DFA6_special = DFA.unpack(
u"\6\uffff"
)
DFA6_transition = [
DFA.unpack(u"\1\1"),
DFA.unpack(u"\12\4\1\uffff\1\4\1\3\14\uffff\1\2\1\4"),
DFA.unpack(u"\1\5"),
DFA.unpack(u""),
DFA.unpack(u""),
DFA.unpack(u"\12\4\1\uffff\1\4\1\3\14\uffff\1\2\1\4")
]
DFA6 = DFA
FOLLOW_cmpExpr_in_expression92 = frozenset([])
FOLLOW_EOF_in_expression94 = frozenset([1])
FOLLOW_addExpr_in_cmpExpr107 = frozenset([1, 7, 8, 9, 10, 11, 12])
FOLLOW_cmpOp_in_cmpExpr110 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_addExpr_in_cmpExpr113 = frozenset([1])
FOLLOW_set_in_cmpOp0 = frozenset([1])
FOLLOW_multExpr_in_addExpr171 = frozenset([1, 13, 14])
FOLLOW_addOp_in_addExpr174 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_multExpr_in_addExpr177 = frozenset([1, 13, 14])
FOLLOW_set_in_addOp0 = frozenset([1])
FOLLOW_unary_in_multExpr211 = frozenset([1, 15, 16])
FOLLOW_multOp_in_multExpr214 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_unary_in_multExpr217 = frozenset([1, 15, 16])
FOLLOW_set_in_multOp0 = frozenset([1])
FOLLOW_MINUS_in_unary251 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_atom_in_unary253 = frozenset([1])
FOLLOW_atom_in_unary268 = frozenset([1])
FOLLOW_var_in_atom281 = frozenset([1])
FOLLOW_num_in_atom287 = frozenset([1])
FOLLOW_str_in_atom293 = frozenset([1])
FOLLOW_fn_in_atom299 = frozenset([1])
FOLLOW_LPAREN_in_atom305 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_addExpr_in_atom307 = frozenset([18])
FOLLOW_RPAREN_in_atom309 = frozenset([1])
FOLLOW_name_in_var326 = frozenset([1])
FOLLOW_name_in_var332 = frozenset([19])
FOLLOW_index_in_var334 = frozenset([1])
FOLLOW_LSQUARE_in_index356 = frozenset([20])
FOLLOW_INT_in_index360 = frozenset([21])
FOLLOW_RSQUARE_in_index362 = frozenset([1])
FOLLOW_NAME_in_name380 = frozenset([1, 32])
FOLLOW_32_in_name383 = frozenset([22])
FOLLOW_NAME_in_name386 = frozenset([1, 32])
FOLLOW_set_in_num0 = frozenset([1])
FOLLOW_PHRASE_in_str420 = frozenset([1])
FOLLOW_fnName_in_fn433 = frozenset([17])
FOLLOW_LPAREN_in_fn435 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_cmpExpr_in_fn437 = frozenset([18, 33])
FOLLOW_33_in_fn440 = frozenset([14, 17, 20, 22, 23, 24, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44])
FOLLOW_cmpExpr_in_fn442 = frozenset([18, 33])
FOLLOW_RPAREN_in_fn446 = frozenset([1])
FOLLOW_set_in_fnName0 = frozenset([1])
def main(argv, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr):
from google.appengine._internal.antlr3.main import ParserMain
main = ParserMain("ExpressionLexer", ExpressionParser)
main.stdin = stdin
main.stdout = stdout
main.stderr = stderr
main.execute(argv)
if __name__ == '__main__':
main(sys.argv)