src/google/appengine/api/search/QueryParser.py (1,888 lines of code) (raw):
#!/usr/bin/env python
#
# Copyright 2007 Google LLC
#
# 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
REWRITE=31
NUMBER_PREFIX=40
UNICODE_ESC=34
TEXT=32
VALUE=15
MINUS=38
BACKSLASH=37
DISJUNCTION=6
OCTAL_ESC=35
LITERAL=11
TEXT_ESC=41
LPAREN=24
RPAREN=25
EQ=22
FUNCTION=8
NOT=28
NE=21
AND=26
QUOTE=33
ESCAPED_CHAR=44
ARGS=4
MID_CHAR=42
START_CHAR=39
ESC=36
SEQUENCE=14
GLOBAL=10
HEX_DIGIT=45
WS=16
EOF=-1
EMPTY=7
GE=19
COMMA=29
OR=27
FUZZY=9
NEGATION=12
GT=20
DIGIT=43
CONJUNCTION=5
FIX=30
EXCLAMATION=46
LESSTHAN=18
STRING=13
LE=17
HAS=23
tokenNames = [
"<invalid>", "<EOR>", "<DOWN>", "<UP>",
"ARGS", "CONJUNCTION", "DISJUNCTION", "EMPTY", "FUNCTION", "FUZZY",
"GLOBAL", "LITERAL", "NEGATION", "STRING", "SEQUENCE", "VALUE", "WS",
"LE", "LESSTHAN", "GE", "GT", "NE", "EQ", "HAS", "LPAREN", "RPAREN",
"AND", "OR", "NOT", "COMMA", "FIX", "REWRITE", "TEXT", "QUOTE", "UNICODE_ESC",
"OCTAL_ESC", "ESC", "BACKSLASH", "MINUS", "START_CHAR", "NUMBER_PREFIX",
"TEXT_ESC", "MID_CHAR", "DIGIT", "ESCAPED_CHAR", "HEX_DIGIT", "EXCLAMATION"
]
class QueryParser(Parser):
grammarFileName = ""
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.dfa4 = self.DFA4(
self, 4,
eot = self.DFA4_eot,
eof = self.DFA4_eof,
min = self.DFA4_min,
max = self.DFA4_max,
accept = self.DFA4_accept,
special = self.DFA4_special,
transition = self.DFA4_transition
)
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.dfa5 = self.DFA5(
self, 5,
eot = self.DFA5_eot,
eof = self.DFA5_eof,
min = self.DFA5_min,
max = self.DFA5_max,
accept = self.DFA5_accept,
special = self.DFA5_special,
transition = self.DFA5_transition
)
self.dfa9 = self.DFA9(
self, 9,
eot = self.DFA9_eot,
eof = self.DFA9_eof,
min = self.DFA9_min,
max = self.DFA9_max,
accept = self.DFA9_accept,
special = self.DFA9_special,
transition = self.DFA9_transition
)
self.dfa8 = self.DFA8(
self, 8,
eot = self.DFA8_eot,
eof = self.DFA8_eof,
min = self.DFA8_min,
max = self.DFA8_max,
accept = self.DFA8_accept,
special = self.DFA8_special,
transition = self.DFA8_transition
)
self.dfa11 = self.DFA11(
self, 11,
eot = self.DFA11_eot,
eof = self.DFA11_eof,
min = self.DFA11_min,
max = self.DFA11_max,
accept = self.DFA11_accept,
special = self.DFA11_special,
transition = self.DFA11_transition
)
self.dfa10 = self.DFA10(
self, 10,
eot = self.DFA10_eot,
eof = self.DFA10_eof,
min = self.DFA10_min,
max = self.DFA10_max,
accept = self.DFA10_accept,
special = self.DFA10_special,
transition = self.DFA10_transition
)
self.dfa14 = self.DFA14(
self, 14,
eot = self.DFA14_eot,
eof = self.DFA14_eof,
min = self.DFA14_min,
max = self.DFA14_max,
accept = self.DFA14_accept,
special = self.DFA14_special,
transition = self.DFA14_transition
)
self._adaptor = CommonTreeAdaptor()
def getTreeAdaptor(self):
return self._adaptor
def setTreeAdaptor(self, adaptor):
self._adaptor = adaptor
adaptor = property(getTreeAdaptor, setTreeAdaptor)
class query_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def query(self, ):
retval = self.query_return()
retval.start = self.input.LT(1)
root_0 = None
WS1 = None
EOF2 = None
WS3 = None
WS5 = None
EOF6 = None
expression4 = None
WS1_tree = None
EOF2_tree = None
WS3_tree = None
WS5_tree = None
EOF6_tree = None
stream_WS = RewriteRuleTokenStream(self._adaptor, "token WS")
stream_EOF = RewriteRuleTokenStream(self._adaptor, "token EOF")
stream_expression = RewriteRuleSubtreeStream(self._adaptor, "rule expression")
try:
try:
alt4 = 2
alt4 = self.dfa4.predict(self.input)
if alt4 == 1:
pass
while True:
alt1 = 2
LA1_0 = self.input.LA(1)
if (LA1_0 == WS) :
alt1 = 1
if alt1 == 1:
pass
WS1=self.match(self.input, WS, self.FOLLOW_WS_in_query122)
stream_WS.add(WS1)
else:
break
EOF2=self.match(self.input, EOF, self.FOLLOW_EOF_in_query125)
stream_EOF.add(EOF2)
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(EMPTY, "EMPTY"), root_1)
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt4 == 2:
pass
while True:
alt2 = 2
LA2_0 = self.input.LA(1)
if (LA2_0 == WS) :
alt2 = 1
if alt2 == 1:
pass
WS3=self.match(self.input, WS, self.FOLLOW_WS_in_query154)
stream_WS.add(WS3)
else:
break
self._state.following.append(self.FOLLOW_expression_in_query157)
expression4 = self.expression()
self._state.following.pop()
stream_expression.add(expression4.tree)
while True:
alt3 = 2
LA3_0 = self.input.LA(1)
if (LA3_0 == WS) :
alt3 = 1
if alt3 == 1:
pass
WS5=self.match(self.input, WS, self.FOLLOW_WS_in_query159)
stream_WS.add(WS5)
else:
break
EOF6=self.match(self.input, EOF, self.FOLLOW_EOF_in_query162)
stream_EOF.add(EOF6)
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_expression.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 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
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
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
class sequence_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def sequence(self, ):
retval = self.sequence_return()
retval.start = self.input.LT(1)
root_0 = None
WS11 = None
factor10 = None
factor12 = None
WS11_tree = None
stream_WS = RewriteRuleTokenStream(self._adaptor, "token WS")
stream_factor = RewriteRuleSubtreeStream(self._adaptor, "rule factor")
try:
try:
pass
self._state.following.append(self.FOLLOW_factor_in_sequence262)
factor10 = self.factor()
self._state.following.pop()
stream_factor.add(factor10.tree)
alt9 = 2
alt9 = self.dfa9.predict(self.input)
if alt9 == 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_factor.nextTree())
retval.tree = root_0
elif alt9 == 2:
pass
cnt8 = 0
while True:
alt8 = 2
alt8 = self.dfa8.predict(self.input)
if alt8 == 1:
pass
cnt7 = 0
while True:
alt7 = 2
LA7_0 = self.input.LA(1)
if (LA7_0 == WS) :
alt7 = 1
if alt7 == 1:
pass
WS11=self.match(self.input, WS, self.FOLLOW_WS_in_sequence298)
stream_WS.add(WS11)
else:
if cnt7 >= 1:
break
eee = EarlyExitException(7, self.input)
raise eee
cnt7 += 1
self._state.following.append(self.FOLLOW_factor_in_sequence301)
factor12 = self.factor()
self._state.following.pop()
stream_factor.add(factor12.tree)
else:
if cnt8 >= 1:
break
eee = EarlyExitException(8, self.input)
raise eee
cnt8 += 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(SEQUENCE, "SEQUENCE"), root_1)
if not (stream_factor.hasNext()):
raise RewriteEarlyExitException()
while stream_factor.hasNext():
self._adaptor.addChild(root_1, stream_factor.nextTree())
stream_factor.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
class factor_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
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
class term_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def term(self, ):
retval = self.term_return()
retval.start = self.input.LT(1)
root_0 = None
primitive16 = None
notOp17 = None
primitive18 = None
stream_primitive = RewriteRuleSubtreeStream(self._adaptor, "rule primitive")
stream_notOp = RewriteRuleSubtreeStream(self._adaptor, "rule notOp")
try:
try:
alt12 = 2
LA12_0 = self.input.LA(1)
if (LA12_0 == LPAREN or (FIX <= LA12_0 <= QUOTE)) :
alt12 = 1
elif (LA12_0 == NOT or LA12_0 == MINUS) :
alt12 = 2
else:
nvae = NoViableAltException("", 12, 0, self.input)
raise nvae
if alt12 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_primitive_in_term410)
primitive16 = self.primitive()
self._state.following.pop()
self._adaptor.addChild(root_0, primitive16.tree)
elif alt12 == 2:
pass
self._state.following.append(self.FOLLOW_notOp_in_term416)
notOp17 = self.notOp()
self._state.following.pop()
stream_notOp.add(notOp17.tree)
self._state.following.append(self.FOLLOW_primitive_in_term418)
primitive18 = self.primitive()
self._state.following.pop()
stream_primitive.add(primitive18.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.createFromType(NEGATION, "NEGATION"), root_1)
self._adaptor.addChild(root_1, stream_primitive.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 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
class primitive_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def primitive(self, ):
retval = self.primitive_return()
retval.start = self.input.LT(1)
root_0 = None
restriction19 = None
composite20 = None
try:
try:
alt13 = 2
LA13_0 = self.input.LA(1)
if ((FIX <= LA13_0 <= QUOTE)) :
alt13 = 1
elif (LA13_0 == LPAREN) :
alt13 = 2
else:
nvae = NoViableAltException("", 13, 0, self.input)
raise nvae
if alt13 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_restriction_in_primitive444)
restriction19 = self.restriction()
self._state.following.pop()
self._adaptor.addChild(root_0, restriction19.tree)
elif alt13 == 2:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_composite_in_primitive450)
composite20 = self.composite()
self._state.following.pop()
self._adaptor.addChild(root_0, composite20.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 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
class restriction_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def restriction(self, ):
retval = self.restriction_return()
retval.start = self.input.LT(1)
root_0 = None
comparable21 = None
comparator22 = None
arg23 = None
stream_comparator = RewriteRuleSubtreeStream(self._adaptor, "rule comparator")
stream_arg = RewriteRuleSubtreeStream(self._adaptor, "rule arg")
stream_comparable = RewriteRuleSubtreeStream(self._adaptor, "rule comparable")
try:
try:
pass
self._state.following.append(self.FOLLOW_comparable_in_restriction467)
comparable21 = self.comparable()
self._state.following.pop()
stream_comparable.add(comparable21.tree)
alt14 = 2
alt14 = self.dfa14.predict(self.input)
if alt14 == 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()
root_1 = self._adaptor.nil()
root_1 = self._adaptor.becomeRoot(self._adaptor.createFromType(HAS, "HAS"), root_1)
self._adaptor.addChild(root_1, self._adaptor.createFromType(GLOBAL, "GLOBAL"))
self._adaptor.addChild(root_1, stream_comparable.nextTree())
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt14 == 2:
pass
self._state.following.append(self.FOLLOW_comparator_in_restriction502)
comparator22 = self.comparator()
self._state.following.pop()
stream_comparator.add(comparator22.tree)
self._state.following.append(self.FOLLOW_arg_in_restriction504)
arg23 = self.arg()
self._state.following.pop()
stream_arg.add(arg23.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(stream_comparator.nextNode(), root_1)
self._adaptor.addChild(root_1, stream_comparable.nextTree())
self._adaptor.addChild(root_1, stream_arg.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 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
class comparator_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def comparator(self, ):
retval = self.comparator_return()
retval.start = self.input.LT(1)
root_0 = None
x = None
WS24 = None
WS25 = None
x_tree = None
WS24_tree = None
WS25_tree = None
stream_NE = RewriteRuleTokenStream(self._adaptor, "token NE")
stream_LESSTHAN = RewriteRuleTokenStream(self._adaptor, "token LESSTHAN")
stream_LE = RewriteRuleTokenStream(self._adaptor, "token LE")
stream_HAS = RewriteRuleTokenStream(self._adaptor, "token HAS")
stream_WS = RewriteRuleTokenStream(self._adaptor, "token WS")
stream_EQ = RewriteRuleTokenStream(self._adaptor, "token EQ")
stream_GT = RewriteRuleTokenStream(self._adaptor, "token GT")
stream_GE = RewriteRuleTokenStream(self._adaptor, "token GE")
try:
try:
pass
while True:
alt15 = 2
LA15_0 = self.input.LA(1)
if (LA15_0 == WS) :
alt15 = 1
if alt15 == 1:
pass
WS24=self.match(self.input, WS, self.FOLLOW_WS_in_comparator534)
stream_WS.add(WS24)
else:
break
alt16 = 7
LA16 = self.input.LA(1)
if LA16 == LE:
alt16 = 1
elif LA16 == LESSTHAN:
alt16 = 2
elif LA16 == GE:
alt16 = 3
elif LA16 == GT:
alt16 = 4
elif LA16 == NE:
alt16 = 5
elif LA16 == EQ:
alt16 = 6
elif LA16 == HAS:
alt16 = 7
else:
nvae = NoViableAltException("", 16, 0, self.input)
raise nvae
if alt16 == 1:
pass
x=self.match(self.input, LE, self.FOLLOW_LE_in_comparator540)
stream_LE.add(x)
elif alt16 == 2:
pass
x=self.match(self.input, LESSTHAN, self.FOLLOW_LESSTHAN_in_comparator546)
stream_LESSTHAN.add(x)
elif alt16 == 3:
pass
x=self.match(self.input, GE, self.FOLLOW_GE_in_comparator552)
stream_GE.add(x)
elif alt16 == 4:
pass
x=self.match(self.input, GT, self.FOLLOW_GT_in_comparator558)
stream_GT.add(x)
elif alt16 == 5:
pass
x=self.match(self.input, NE, self.FOLLOW_NE_in_comparator564)
stream_NE.add(x)
elif alt16 == 6:
pass
x=self.match(self.input, EQ, self.FOLLOW_EQ_in_comparator570)
stream_EQ.add(x)
elif alt16 == 7:
pass
x=self.match(self.input, HAS, self.FOLLOW_HAS_in_comparator576)
stream_HAS.add(x)
while True:
alt17 = 2
LA17_0 = self.input.LA(1)
if (LA17_0 == WS) :
alt17 = 1
if alt17 == 1:
pass
WS25=self.match(self.input, WS, self.FOLLOW_WS_in_comparator579)
stream_WS.add(WS25)
else:
break
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 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
class comparable_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def comparable(self, ):
retval = self.comparable_return()
retval.start = self.input.LT(1)
root_0 = None
member26 = None
function27 = None
try:
try:
alt18 = 2
LA18_0 = self.input.LA(1)
if ((FIX <= LA18_0 <= REWRITE) or LA18_0 == QUOTE) :
alt18 = 1
elif (LA18_0 == TEXT) :
LA18_2 = self.input.LA(2)
if (LA18_2 == EOF or (WS <= LA18_2 <= HAS) or LA18_2 == RPAREN or LA18_2 == COMMA) :
alt18 = 1
elif (LA18_2 == LPAREN) :
alt18 = 2
else:
nvae = NoViableAltException("", 18, 2, self.input)
raise nvae
else:
nvae = NoViableAltException("", 18, 0, self.input)
raise nvae
if alt18 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_member_in_comparable601)
member26 = self.member()
self._state.following.pop()
self._adaptor.addChild(root_0, member26.tree)
elif alt18 == 2:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_function_in_comparable607)
function27 = self.function()
self._state.following.pop()
self._adaptor.addChild(root_0, function27.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 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
class member_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def member(self, ):
retval = self.member_return()
retval.start = self.input.LT(1)
root_0 = None
item28 = None
try:
try:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_item_in_member622)
item28 = self.item()
self._state.following.pop()
self._adaptor.addChild(root_0, item28.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 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
class function_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def function(self, ):
retval = self.function_return()
retval.start = self.input.LT(1)
root_0 = None
LPAREN30 = None
RPAREN32 = None
text29 = None
arglist31 = None
LPAREN30_tree = None
RPAREN32_tree = None
stream_LPAREN = RewriteRuleTokenStream(self._adaptor, "token LPAREN")
stream_RPAREN = RewriteRuleTokenStream(self._adaptor, "token RPAREN")
stream_arglist = RewriteRuleSubtreeStream(self._adaptor, "rule arglist")
stream_text = RewriteRuleSubtreeStream(self._adaptor, "rule text")
try:
try:
pass
self._state.following.append(self.FOLLOW_text_in_function639)
text29 = self.text()
self._state.following.pop()
stream_text.add(text29.tree)
LPAREN30=self.match(self.input, LPAREN, self.FOLLOW_LPAREN_in_function641)
stream_LPAREN.add(LPAREN30)
self._state.following.append(self.FOLLOW_arglist_in_function643)
arglist31 = self.arglist()
self._state.following.pop()
stream_arglist.add(arglist31.tree)
RPAREN32=self.match(self.input, RPAREN, self.FOLLOW_RPAREN_in_function645)
stream_RPAREN.add(RPAREN32)
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(FUNCTION, "FUNCTION"), root_1)
self._adaptor.addChild(root_1, stream_text.nextTree())
root_2 = self._adaptor.nil()
root_2 = self._adaptor.becomeRoot(self._adaptor.createFromType(ARGS, "ARGS"), root_2)
self._adaptor.addChild(root_2, stream_arglist.nextTree())
self._adaptor.addChild(root_1, root_2)
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
class arglist_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def arglist(self, ):
retval = self.arglist_return()
retval.start = self.input.LT(1)
root_0 = None
arg33 = None
sep34 = None
arg35 = None
stream_arg = RewriteRuleSubtreeStream(self._adaptor, "rule arg")
stream_sep = RewriteRuleSubtreeStream(self._adaptor, "rule sep")
try:
try:
alt20 = 2
LA20_0 = self.input.LA(1)
if (LA20_0 == RPAREN) :
alt20 = 1
elif (LA20_0 == LPAREN or (FIX <= LA20_0 <= QUOTE)) :
alt20 = 2
else:
nvae = NoViableAltException("", 20, 0, self.input)
raise nvae
if alt20 == 1:
pass
root_0 = self._adaptor.nil()
elif alt20 == 2:
pass
self._state.following.append(self.FOLLOW_arg_in_arglist680)
arg33 = self.arg()
self._state.following.pop()
stream_arg.add(arg33.tree)
while True:
alt19 = 2
LA19_0 = self.input.LA(1)
if (LA19_0 == WS or LA19_0 == COMMA) :
alt19 = 1
if alt19 == 1:
pass
self._state.following.append(self.FOLLOW_sep_in_arglist683)
sep34 = self.sep()
self._state.following.pop()
stream_sep.add(sep34.tree)
self._state.following.append(self.FOLLOW_arg_in_arglist685)
arg35 = self.arg()
self._state.following.pop()
stream_arg.add(arg35.tree)
else:
break
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()
while stream_arg.hasNext():
self._adaptor.addChild(root_0, stream_arg.nextTree())
stream_arg.reset();
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
class arg_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def arg(self, ):
retval = self.arg_return()
retval.start = self.input.LT(1)
root_0 = None
comparable36 = None
composite37 = None
try:
try:
alt21 = 2
LA21_0 = self.input.LA(1)
if ((FIX <= LA21_0 <= QUOTE)) :
alt21 = 1
elif (LA21_0 == LPAREN) :
alt21 = 2
else:
nvae = NoViableAltException("", 21, 0, self.input)
raise nvae
if alt21 == 1:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_comparable_in_arg706)
comparable36 = self.comparable()
self._state.following.pop()
self._adaptor.addChild(root_0, comparable36.tree)
elif alt21 == 2:
pass
root_0 = self._adaptor.nil()
self._state.following.append(self.FOLLOW_composite_in_arg712)
composite37 = self.composite()
self._state.following.pop()
self._adaptor.addChild(root_0, composite37.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 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
class andOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def andOp(self, ):
retval = self.andOp_return()
retval.start = self.input.LT(1)
root_0 = None
WS38 = None
AND39 = None
WS40 = None
WS38_tree = None
AND39_tree = None
WS40_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
cnt22 = 0
while True:
alt22 = 2
LA22_0 = self.input.LA(1)
if (LA22_0 == WS) :
alt22 = 1
if alt22 == 1:
pass
WS38=self.match(self.input, WS, self.FOLLOW_WS_in_andOp726)
WS38_tree = self._adaptor.createWithPayload(WS38)
self._adaptor.addChild(root_0, WS38_tree)
else:
if cnt22 >= 1:
break
eee = EarlyExitException(22, self.input)
raise eee
cnt22 += 1
AND39=self.match(self.input, AND, self.FOLLOW_AND_in_andOp729)
AND39_tree = self._adaptor.createWithPayload(AND39)
self._adaptor.addChild(root_0, AND39_tree)
cnt23 = 0
while True:
alt23 = 2
LA23_0 = self.input.LA(1)
if (LA23_0 == WS) :
alt23 = 1
if alt23 == 1:
pass
WS40=self.match(self.input, WS, self.FOLLOW_WS_in_andOp731)
WS40_tree = self._adaptor.createWithPayload(WS40)
self._adaptor.addChild(root_0, WS40_tree)
else:
if cnt23 >= 1:
break
eee = EarlyExitException(23, self.input)
raise eee
cnt23 += 1
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
class orOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def orOp(self, ):
retval = self.orOp_return()
retval.start = self.input.LT(1)
root_0 = None
WS41 = None
OR42 = None
WS43 = None
WS41_tree = None
OR42_tree = None
WS43_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
cnt24 = 0
while True:
alt24 = 2
LA24_0 = self.input.LA(1)
if (LA24_0 == WS) :
alt24 = 1
if alt24 == 1:
pass
WS41=self.match(self.input, WS, self.FOLLOW_WS_in_orOp746)
WS41_tree = self._adaptor.createWithPayload(WS41)
self._adaptor.addChild(root_0, WS41_tree)
else:
if cnt24 >= 1:
break
eee = EarlyExitException(24, self.input)
raise eee
cnt24 += 1
OR42=self.match(self.input, OR, self.FOLLOW_OR_in_orOp749)
OR42_tree = self._adaptor.createWithPayload(OR42)
self._adaptor.addChild(root_0, OR42_tree)
cnt25 = 0
while True:
alt25 = 2
LA25_0 = self.input.LA(1)
if (LA25_0 == WS) :
alt25 = 1
if alt25 == 1:
pass
WS43=self.match(self.input, WS, self.FOLLOW_WS_in_orOp751)
WS43_tree = self._adaptor.createWithPayload(WS43)
self._adaptor.addChild(root_0, WS43_tree)
else:
if cnt25 >= 1:
break
eee = EarlyExitException(25, self.input)
raise eee
cnt25 += 1
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
class notOp_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def notOp(self, ):
retval = self.notOp_return()
retval.start = self.input.LT(1)
root_0 = None
char_literal44 = None
NOT45 = None
WS46 = None
char_literal44_tree = None
NOT45_tree = None
WS46_tree = None
try:
try:
alt27 = 2
LA27_0 = self.input.LA(1)
if (LA27_0 == MINUS) :
alt27 = 1
elif (LA27_0 == NOT) :
alt27 = 2
else:
nvae = NoViableAltException("", 27, 0, self.input)
raise nvae
if alt27 == 1:
pass
root_0 = self._adaptor.nil()
char_literal44=self.match(self.input, MINUS, self.FOLLOW_MINUS_in_notOp766)
char_literal44_tree = self._adaptor.createWithPayload(char_literal44)
self._adaptor.addChild(root_0, char_literal44_tree)
elif alt27 == 2:
pass
root_0 = self._adaptor.nil()
NOT45=self.match(self.input, NOT, self.FOLLOW_NOT_in_notOp772)
NOT45_tree = self._adaptor.createWithPayload(NOT45)
self._adaptor.addChild(root_0, NOT45_tree)
cnt26 = 0
while True:
alt26 = 2
LA26_0 = self.input.LA(1)
if (LA26_0 == WS) :
alt26 = 1
if alt26 == 1:
pass
WS46=self.match(self.input, WS, self.FOLLOW_WS_in_notOp774)
WS46_tree = self._adaptor.createWithPayload(WS46)
self._adaptor.addChild(root_0, WS46_tree)
else:
if cnt26 >= 1:
break
eee = EarlyExitException(26, self.input)
raise eee
cnt26 += 1
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
class sep_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def sep(self, ):
retval = self.sep_return()
retval.start = self.input.LT(1)
root_0 = None
WS47 = None
COMMA48 = None
WS49 = None
WS47_tree = None
COMMA48_tree = None
WS49_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
while True:
alt28 = 2
LA28_0 = self.input.LA(1)
if (LA28_0 == WS) :
alt28 = 1
if alt28 == 1:
pass
WS47=self.match(self.input, WS, self.FOLLOW_WS_in_sep789)
WS47_tree = self._adaptor.createWithPayload(WS47)
self._adaptor.addChild(root_0, WS47_tree)
else:
break
COMMA48=self.match(self.input, COMMA, self.FOLLOW_COMMA_in_sep792)
COMMA48_tree = self._adaptor.createWithPayload(COMMA48)
self._adaptor.addChild(root_0, COMMA48_tree)
while True:
alt29 = 2
LA29_0 = self.input.LA(1)
if (LA29_0 == WS) :
alt29 = 1
if alt29 == 1:
pass
WS49=self.match(self.input, WS, self.FOLLOW_WS_in_sep794)
WS49_tree = self._adaptor.createWithPayload(WS49)
self._adaptor.addChild(root_0, WS49_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 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
class composite_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def composite(self, ):
retval = self.composite_return()
retval.start = self.input.LT(1)
root_0 = None
LPAREN50 = None
WS51 = None
WS53 = None
RPAREN54 = None
expression52 = None
LPAREN50_tree = None
WS51_tree = None
WS53_tree = None
RPAREN54_tree = None
stream_LPAREN = RewriteRuleTokenStream(self._adaptor, "token LPAREN")
stream_RPAREN = RewriteRuleTokenStream(self._adaptor, "token RPAREN")
stream_WS = RewriteRuleTokenStream(self._adaptor, "token WS")
stream_expression = RewriteRuleSubtreeStream(self._adaptor, "rule expression")
try:
try:
pass
LPAREN50=self.match(self.input, LPAREN, self.FOLLOW_LPAREN_in_composite810)
stream_LPAREN.add(LPAREN50)
while True:
alt30 = 2
LA30_0 = self.input.LA(1)
if (LA30_0 == WS) :
alt30 = 1
if alt30 == 1:
pass
WS51=self.match(self.input, WS, self.FOLLOW_WS_in_composite812)
stream_WS.add(WS51)
else:
break
self._state.following.append(self.FOLLOW_expression_in_composite815)
expression52 = self.expression()
self._state.following.pop()
stream_expression.add(expression52.tree)
while True:
alt31 = 2
LA31_0 = self.input.LA(1)
if (LA31_0 == WS) :
alt31 = 1
if alt31 == 1:
pass
WS53=self.match(self.input, WS, self.FOLLOW_WS_in_composite817)
stream_WS.add(WS53)
else:
break
RPAREN54=self.match(self.input, RPAREN, self.FOLLOW_RPAREN_in_composite820)
stream_RPAREN.add(RPAREN54)
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_expression.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 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
class item_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def item(self, ):
retval = self.item_return()
retval.start = self.input.LT(1)
root_0 = None
FIX55 = None
REWRITE57 = None
value56 = None
value58 = None
value59 = None
FIX55_tree = None
REWRITE57_tree = None
stream_REWRITE = RewriteRuleTokenStream(self._adaptor, "token REWRITE")
stream_FIX = RewriteRuleTokenStream(self._adaptor, "token FIX")
stream_value = RewriteRuleSubtreeStream(self._adaptor, "rule value")
try:
try:
alt32 = 3
LA32 = self.input.LA(1)
if LA32 == FIX:
alt32 = 1
elif LA32 == REWRITE:
alt32 = 2
elif LA32 == TEXT or LA32 == QUOTE:
alt32 = 3
else:
nvae = NoViableAltException("", 32, 0, self.input)
raise nvae
if alt32 == 1:
pass
FIX55=self.match(self.input, FIX, self.FOLLOW_FIX_in_item840)
stream_FIX.add(FIX55)
self._state.following.append(self.FOLLOW_value_in_item842)
value56 = self.value()
self._state.following.pop()
stream_value.add(value56.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.createFromType(LITERAL, "LITERAL"), root_1)
self._adaptor.addChild(root_1, stream_value.nextTree())
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt32 == 2:
pass
REWRITE57=self.match(self.input, REWRITE, self.FOLLOW_REWRITE_in_item856)
stream_REWRITE.add(REWRITE57)
self._state.following.append(self.FOLLOW_value_in_item858)
value58 = self.value()
self._state.following.pop()
stream_value.add(value58.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.createFromType(FUZZY, "FUZZY"), root_1)
self._adaptor.addChild(root_1, stream_value.nextTree())
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt32 == 3:
pass
self._state.following.append(self.FOLLOW_value_in_item872)
value59 = self.value()
self._state.following.pop()
stream_value.add(value59.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()
self._adaptor.addChild(root_0, stream_value.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 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
class value_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def value(self, ):
retval = self.value_return()
retval.start = self.input.LT(1)
root_0 = None
text60 = None
phrase61 = None
stream_phrase = RewriteRuleSubtreeStream(self._adaptor, "rule phrase")
stream_text = RewriteRuleSubtreeStream(self._adaptor, "rule text")
try:
try:
alt33 = 2
LA33_0 = self.input.LA(1)
if (LA33_0 == TEXT) :
alt33 = 1
elif (LA33_0 == QUOTE) :
alt33 = 2
else:
nvae = NoViableAltException("", 33, 0, self.input)
raise nvae
if alt33 == 1:
pass
self._state.following.append(self.FOLLOW_text_in_value890)
text60 = self.text()
self._state.following.pop()
stream_text.add(text60.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.createFromType(VALUE, "VALUE"), root_1)
self._adaptor.addChild(root_1, self._adaptor.createFromType(TEXT, "TEXT"))
self._adaptor.addChild(root_1, stream_text.nextTree())
self._adaptor.addChild(root_0, root_1)
retval.tree = root_0
elif alt33 == 2:
pass
self._state.following.append(self.FOLLOW_phrase_in_value906)
phrase61 = self.phrase()
self._state.following.pop()
stream_phrase.add(phrase61.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.createFromType(VALUE, "VALUE"), root_1)
self._adaptor.addChild(root_1, self._adaptor.createFromType(STRING, "STRING"))
self._adaptor.addChild(root_1, stream_phrase.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 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
class text_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def text(self, ):
retval = self.text_return()
retval.start = self.input.LT(1)
root_0 = None
TEXT62 = None
TEXT62_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
TEXT62=self.match(self.input, TEXT, self.FOLLOW_TEXT_in_text930)
TEXT62_tree = self._adaptor.createWithPayload(TEXT62)
self._adaptor.addChild(root_0, TEXT62_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 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
class phrase_return(ParserRuleReturnScope):
def __init__(self):
ParserRuleReturnScope.__init__(self)
self.tree = None
def phrase(self, ):
retval = self.phrase_return()
retval.start = self.input.LT(1)
root_0 = None
QUOTE63 = None
set64 = None
QUOTE65 = None
QUOTE63_tree = None
set64_tree = None
QUOTE65_tree = None
try:
try:
pass
root_0 = self._adaptor.nil()
QUOTE63=self.match(self.input, QUOTE, self.FOLLOW_QUOTE_in_phrase944)
QUOTE63_tree = self._adaptor.createWithPayload(QUOTE63)
self._adaptor.addChild(root_0, QUOTE63_tree)
while True:
alt34 = 2
LA34_0 = self.input.LA(1)
if ((ARGS <= LA34_0 <= TEXT) or (UNICODE_ESC <= LA34_0 <= EXCLAMATION)) :
alt34 = 1
if alt34 == 1:
pass
set64 = self.input.LT(1)
if (ARGS <= self.input.LA(1) <= TEXT) or (UNICODE_ESC <= self.input.LA(1) <= EXCLAMATION):
self.input.consume()
self._adaptor.addChild(root_0, self._adaptor.createWithPayload(set64))
self._state.errorRecovery = False
else:
mse = MismatchedSetException(None, self.input)
raise mse
else:
break
QUOTE65=self.match(self.input, QUOTE, self.FOLLOW_QUOTE_in_phrase950)
QUOTE65_tree = self._adaptor.createWithPayload(QUOTE65)
self._adaptor.addChild(root_0, QUOTE65_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 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
DFA4_eot = DFA.unpack(
u"\4\uffff"
)
DFA4_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA4_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA4_max = DFA.unpack(
u"\2\46\2\uffff"
)
DFA4_accept = DFA.unpack(
u"\2\uffff\1\1\1\2"
)
DFA4_special = DFA.unpack(
u"\4\uffff"
)
DFA4_transition = [
DFA.unpack(u"\1\1\7\uffff\1\3\3\uffff\1\3\1\uffff\4\3\4\uffff\1\3"),
DFA.unpack(u"\1\1\7\uffff\1\3\3\uffff\1\3\1\uffff\4\3\4\uffff\1"
u"\3"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA4 = DFA
DFA6_eot = DFA.unpack(
u"\4\uffff"
)
DFA6_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA6_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA6_max = DFA.unpack(
u"\1\31\1\32\2\uffff"
)
DFA6_accept = DFA.unpack(
u"\2\uffff\1\1\1\2"
)
DFA6_special = DFA.unpack(
u"\4\uffff"
)
DFA6_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\10\uffff\1\2\1\3"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA6 = DFA
DFA5_eot = DFA.unpack(
u"\4\uffff"
)
DFA5_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA5_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA5_max = DFA.unpack(
u"\1\31\1\32\2\uffff"
)
DFA5_accept = DFA.unpack(
u"\2\uffff\1\2\1\1"
)
DFA5_special = DFA.unpack(
u"\4\uffff"
)
DFA5_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\10\uffff\1\2\1\3"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA5 = DFA
DFA9_eot = DFA.unpack(
u"\4\uffff"
)
DFA9_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA9_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA9_max = DFA.unpack(
u"\1\31\1\46\2\uffff"
)
DFA9_accept = DFA.unpack(
u"\2\uffff\1\1\1\2"
)
DFA9_special = DFA.unpack(
u"\4\uffff"
)
DFA9_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\7\uffff\1\3\2\2\1\uffff\1\3\1\uffff\4\3\4\uffff"
u"\1\3"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA9 = DFA
DFA8_eot = DFA.unpack(
u"\4\uffff"
)
DFA8_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA8_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA8_max = DFA.unpack(
u"\1\31\1\46\2\uffff"
)
DFA8_accept = DFA.unpack(
u"\2\uffff\1\2\1\1"
)
DFA8_special = DFA.unpack(
u"\4\uffff"
)
DFA8_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\7\uffff\1\3\2\2\1\uffff\1\3\1\uffff\4\3\4\uffff"
u"\1\3"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA8 = DFA
DFA11_eot = DFA.unpack(
u"\4\uffff"
)
DFA11_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA11_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA11_max = DFA.unpack(
u"\1\31\1\46\2\uffff"
)
DFA11_accept = DFA.unpack(
u"\2\uffff\1\1\1\2"
)
DFA11_special = DFA.unpack(
u"\4\uffff"
)
DFA11_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\7\uffff\3\2\1\3\1\2\1\uffff\4\2\4\uffff\1\2"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA11 = DFA
DFA10_eot = DFA.unpack(
u"\4\uffff"
)
DFA10_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA10_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA10_max = DFA.unpack(
u"\1\31\1\46\2\uffff"
)
DFA10_accept = DFA.unpack(
u"\2\uffff\1\2\1\1"
)
DFA10_special = DFA.unpack(
u"\4\uffff"
)
DFA10_transition = [
DFA.unpack(u"\1\1\10\uffff\1\2"),
DFA.unpack(u"\1\1\7\uffff\3\2\1\3\1\2\1\uffff\4\2\4\uffff\1\2"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA10 = DFA
DFA14_eot = DFA.unpack(
u"\4\uffff"
)
DFA14_eof = DFA.unpack(
u"\2\2\2\uffff"
)
DFA14_min = DFA.unpack(
u"\2\20\2\uffff"
)
DFA14_max = DFA.unpack(
u"\1\31\1\46\2\uffff"
)
DFA14_accept = DFA.unpack(
u"\2\uffff\1\1\1\2"
)
DFA14_special = DFA.unpack(
u"\4\uffff"
)
DFA14_transition = [
DFA.unpack(u"\1\1\7\3\1\uffff\1\2"),
DFA.unpack(u"\1\1\7\3\5\2\1\uffff\4\2\4\uffff\1\2"),
DFA.unpack(u""),
DFA.unpack(u"")
]
DFA14 = DFA
FOLLOW_WS_in_query122 = frozenset([16])
FOLLOW_EOF_in_query125 = frozenset([1])
FOLLOW_WS_in_query154 = frozenset([16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_expression_in_query157 = frozenset([16])
FOLLOW_WS_in_query159 = frozenset([16])
FOLLOW_EOF_in_query162 = frozenset([1])
FOLLOW_sequence_in_expression185 = frozenset([1, 16])
FOLLOW_andOp_in_expression222 = frozenset([24, 28, 30, 31, 32, 33, 38])
FOLLOW_sequence_in_expression224 = frozenset([1, 16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_factor_in_sequence262 = frozenset([1, 16])
FOLLOW_WS_in_sequence298 = frozenset([16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_factor_in_sequence301 = frozenset([1, 16])
FOLLOW_term_in_factor342 = frozenset([1, 16])
FOLLOW_orOp_in_factor374 = frozenset([24, 28, 30, 31, 32, 33, 38])
FOLLOW_term_in_factor376 = frozenset([1, 16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_primitive_in_term410 = frozenset([1])
FOLLOW_notOp_in_term416 = frozenset([24, 30, 31, 32, 33])
FOLLOW_primitive_in_term418 = frozenset([1])
FOLLOW_restriction_in_primitive444 = frozenset([1])
FOLLOW_composite_in_primitive450 = frozenset([1])
FOLLOW_comparable_in_restriction467 = frozenset([1, 16, 17, 18, 19, 20, 21, 22, 23])
FOLLOW_comparator_in_restriction502 = frozenset([24, 30, 31, 32, 33])
FOLLOW_arg_in_restriction504 = frozenset([1])
FOLLOW_WS_in_comparator534 = frozenset([16, 17, 18, 19, 20, 21, 22, 23])
FOLLOW_LE_in_comparator540 = frozenset([1, 16])
FOLLOW_LESSTHAN_in_comparator546 = frozenset([1, 16])
FOLLOW_GE_in_comparator552 = frozenset([1, 16])
FOLLOW_GT_in_comparator558 = frozenset([1, 16])
FOLLOW_NE_in_comparator564 = frozenset([1, 16])
FOLLOW_EQ_in_comparator570 = frozenset([1, 16])
FOLLOW_HAS_in_comparator576 = frozenset([1, 16])
FOLLOW_WS_in_comparator579 = frozenset([1, 16])
FOLLOW_member_in_comparable601 = frozenset([1])
FOLLOW_function_in_comparable607 = frozenset([1])
FOLLOW_item_in_member622 = frozenset([1])
FOLLOW_text_in_function639 = frozenset([24])
FOLLOW_LPAREN_in_function641 = frozenset([24, 25, 30, 31, 32, 33])
FOLLOW_arglist_in_function643 = frozenset([25])
FOLLOW_RPAREN_in_function645 = frozenset([1])
FOLLOW_arg_in_arglist680 = frozenset([1, 16, 29])
FOLLOW_sep_in_arglist683 = frozenset([24, 30, 31, 32, 33])
FOLLOW_arg_in_arglist685 = frozenset([1, 16, 29])
FOLLOW_comparable_in_arg706 = frozenset([1])
FOLLOW_composite_in_arg712 = frozenset([1])
FOLLOW_WS_in_andOp726 = frozenset([16, 26])
FOLLOW_AND_in_andOp729 = frozenset([16])
FOLLOW_WS_in_andOp731 = frozenset([1, 16])
FOLLOW_WS_in_orOp746 = frozenset([16, 27])
FOLLOW_OR_in_orOp749 = frozenset([16])
FOLLOW_WS_in_orOp751 = frozenset([1, 16])
FOLLOW_MINUS_in_notOp766 = frozenset([1])
FOLLOW_NOT_in_notOp772 = frozenset([16])
FOLLOW_WS_in_notOp774 = frozenset([1, 16])
FOLLOW_WS_in_sep789 = frozenset([16, 29])
FOLLOW_COMMA_in_sep792 = frozenset([1, 16])
FOLLOW_WS_in_sep794 = frozenset([1, 16])
FOLLOW_LPAREN_in_composite810 = frozenset([16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_WS_in_composite812 = frozenset([16, 24, 28, 30, 31, 32, 33, 38])
FOLLOW_expression_in_composite815 = frozenset([16, 25])
FOLLOW_WS_in_composite817 = frozenset([16, 25])
FOLLOW_RPAREN_in_composite820 = frozenset([1])
FOLLOW_FIX_in_item840 = frozenset([30, 31, 32, 33])
FOLLOW_value_in_item842 = frozenset([1])
FOLLOW_REWRITE_in_item856 = frozenset([30, 31, 32, 33])
FOLLOW_value_in_item858 = frozenset([1])
FOLLOW_value_in_item872 = frozenset([1])
FOLLOW_text_in_value890 = frozenset([1])
FOLLOW_phrase_in_value906 = frozenset([1])
FOLLOW_TEXT_in_text930 = frozenset([1])
FOLLOW_QUOTE_in_phrase944 = frozenset([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46])
FOLLOW_set_in_phrase946 = frozenset([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46])
FOLLOW_QUOTE_in_phrase950 = frozenset([1])
def main(argv, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr):
from google.appengine._internal.antlr3.main import ParserMain
main = ParserMain("QueryLexer", QueryParser)
main.stdin = stdin
main.stdout = stdout
main.stderr = stderr
main.execute(argv)
if __name__ == '__main__':
main(sys.argv)