# $ANTLR 3.1.3 Mar 18, 2009 10:09:25 mexp.g 2010-08-30 14:33:36
import sys
from schrodinger.application.desmond.antlr3 import DEFAULT_CHANNEL
from schrodinger.application.desmond.antlr3 import DFA
from schrodinger.application.desmond.antlr3 import BaseRecognizer
from schrodinger.application.desmond.antlr3 import EarlyExitException
from schrodinger.application.desmond.antlr3 import Lexer
from schrodinger.application.desmond.antlr3 import MismatchedSetException
from schrodinger.application.desmond.antlr3 import NoViableAltException
from schrodinger.application.desmond.antlr3 import RecognizerSharedState
from schrodinger.application.desmond.antlr3 import version_str_to_tuple
# for convenience in actions
HIDDEN = BaseRecognizer.HIDDEN
# token types
POPEN = 25
SUBTROP = 30
COPEN = 37
ADDOP = 31
EOF = -1
INTERVAL = 18
IF = 9
ELEM = 5
T__55 = 55
T__56 = 56
T__57 = 57
PCLOSE = 27
NAME = 16
PROG = 13
T__58 = 58
T__51 = 51
T__52 = 52
T__53 = 53
T__54 = 54
EXP = 34
MULTOP = 32
COMMA = 23
BIND = 7
IDENT = 24
VAR = 10
DIGIT = 40
HEADER = 12
EQ = 28
COMMENT = 42
T__50 = 50
DECL_OUTPUT = 14
BCLOSE = 36
T__46 = 46
T__47 = 47
T__45 = 45
SERIES = 8
T__48 = 48
STATIC = 11
T__49 = 49
ITER = 6
LIT = 26
INITKER = 21
CCLOSE = 38
DECL_META = 15
SEMI = 22
ALPHA = 41
COLON = 39
WS = 44
NEWLINE = 43
BLOCK = 4
DIVOP = 33
DIM = 20
CUTOFF = 19
BOPEN = 35
STRING = 29
FIRST = 17
[docs]class mexpLexer(Lexer):
    grammarFileName = "mexp.g"
    antlr_version = version_str_to_tuple("3.1.3 Mar 18, 2009 10:09:25")
    antlr_version_str = "3.1.3 Mar 18, 2009 10:09:25"
[docs]    def __init__(self, input=None, state=None):
        if state is None:
            state = RecognizerSharedState()
        super(mexpLexer, self).__init__(input, state)
        self.dfa12 = self.DFA12(self,
                                12,
                                eot=self.DFA12_eot,
                                eof=self.DFA12_eof,
                                min=self.DFA12_min,
                                max=self.DFA12_max,
                                accept=self.DFA12_accept,
                                special=self.DFA12_special,
                                transition=self.DFA12_transition) 
[docs]    def reportError(self, err):
        import sys
        BaseRecognizer.reportError(self, err)
        sys.stderr.write("unable to parse m-expression\n")
        exit(1) 
    # $ANTLR start "T__45"
[docs]    def mT__45(self,):
        try:
            _type = T__45
            _channel = DEFAULT_CHANNEL
            # mexp.g:15:7: ( 'static' )
            # mexp.g:15:9: 'static'
            self.match("static")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__45"
    # $ANTLR start "T__46"
[docs]    def mT__46(self,):
        try:
            _type = T__46
            _channel = DEFAULT_CHANNEL
            # mexp.g:16:7: ( 'declare_output' )
            # mexp.g:16:9: 'declare_output'
            self.match("declare_output")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__46"
    # $ANTLR start "T__47"
[docs]    def mT__47(self,):
        try:
            _type = T__47
            _channel = DEFAULT_CHANNEL
            # mexp.g:17:7: ( 'declare_meta' )
            # mexp.g:17:9: 'declare_meta'
            self.match("declare_meta")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__47"
    # $ANTLR start "T__48"
[docs]    def mT__48(self,):
        try:
            _type = T__48
            _channel = DEFAULT_CHANNEL
            # mexp.g:18:7: ( 'name' )
            # mexp.g:18:9: 'name'
            self.match("name")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__48"
    # $ANTLR start "T__49"
[docs]    def mT__49(self,):
        try:
            _type = T__49
            _channel = DEFAULT_CHANNEL
            # mexp.g:19:7: ( 'first' )
            # mexp.g:19:9: 'first'
            self.match("first")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__49"
    # $ANTLR start "T__50"
[docs]    def mT__50(self,):
        try:
            _type = T__50
            _channel = DEFAULT_CHANNEL
            # mexp.g:20:7: ( 'inf' )
            # mexp.g:20:9: 'inf'
            self.match("inf")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__50"
    # $ANTLR start "T__51"
[docs]    def mT__51(self,):
        try:
            _type = T__51
            _channel = DEFAULT_CHANNEL
            # mexp.g:21:7: ( 'interval' )
            # mexp.g:21:9: 'interval'
            self.match("interval")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__51"
    # $ANTLR start "T__52"
[docs]    def mT__52(self,):
        try:
            _type = T__52
            _channel = DEFAULT_CHANNEL
            # mexp.g:22:7: ( 'cutoff' )
            # mexp.g:22:9: 'cutoff'
            self.match("cutoff")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__52"
    # $ANTLR start "T__53"
[docs]    def mT__53(self,):
        try:
            _type = T__53
            _channel = DEFAULT_CHANNEL
            # mexp.g:23:7: ( 'dimension' )
            # mexp.g:23:9: 'dimension'
            self.match("dimension")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__53"
    # $ANTLR start "T__54"
[docs]    def mT__54(self,):
        try:
            _type = T__54
            _channel = DEFAULT_CHANNEL
            # mexp.g:24:7: ( 'initial' )
            # mexp.g:24:9: 'initial'
            self.match("initial")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__54"
    # $ANTLR start "T__55"
[docs]    def mT__55(self,):
        try:
            _type = T__55
            _channel = DEFAULT_CHANNEL
            # mexp.g:25:7: ( 'series' )
            # mexp.g:25:9: 'series'
            self.match("series")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__55"
    # $ANTLR start "T__56"
[docs]    def mT__56(self,):
        try:
            _type = T__56
            _channel = DEFAULT_CHANNEL
            # mexp.g:26:7: ( 'if' )
            # mexp.g:26:9: 'if'
            self.match("if")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__56"
    # $ANTLR start "T__57"
[docs]    def mT__57(self,):
        try:
            _type = T__57
            _channel = DEFAULT_CHANNEL
            # mexp.g:27:7: ( 'then' )
            # mexp.g:27:9: 'then'
            self.match("then")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__57"
    # $ANTLR start "T__58"
[docs]    def mT__58(self,):
        try:
            _type = T__58
            _channel = DEFAULT_CHANNEL
            # mexp.g:28:7: ( 'else' )
            # mexp.g:28:9: 'else'
            self.match("else")
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "T__58"
    # $ANTLR start "LIT"
[docs]    def mLIT(self,):
        try:
            _type = LIT
            _channel = DEFAULT_CHANNEL
            # mexp.g:106:6: ( ( DIGIT )+ ( '.' ( DIGIT )* )? ( ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ )? )
            # mexp.g:106:8: ( DIGIT )+ ( '.' ( DIGIT )* )? ( ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ )?
            # mexp.g:106:8: ( DIGIT )+
            cnt1 = 0
            while True:  #loop1
                alt1 = 2
                LA1_0 = self.input.LA(1)
                if ((48 <= LA1_0 <= 57)):
                    alt1 = 1
                if alt1 == 1:
                    # mexp.g:106:8: DIGIT
                    self.mDIGIT()
                else:
                    if cnt1 >= 1:
                        break  #loop1
                    eee = EarlyExitException(1, self.input)
                    raise eee
                cnt1 += 1
            # mexp.g:106:15: ( '.' ( DIGIT )* )?
            alt3 = 2
            LA3_0 = self.input.LA(1)
            if (LA3_0 == 46):
                alt3 = 1
            if alt3 == 1:
                # mexp.g:106:18: '.' ( DIGIT )*
                self.match(46)
                # mexp.g:106:22: ( DIGIT )*
                while True:  #loop2
                    alt2 = 2
                    LA2_0 = self.input.LA(1)
                    if ((48 <= LA2_0 <= 57)):
                        alt2 = 1
                    if alt2 == 1:
                        # mexp.g:106:22: DIGIT
                        self.mDIGIT()
                    else:
                        break  #loop2
            # mexp.g:106:33: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ )?
            alt6 = 2
            LA6_0 = self.input.LA(1)
            if (LA6_0 == 69 or LA6_0 == 101):
                alt6 = 1
            if alt6 == 1:
                # mexp.g:106:34: ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+
                if self.input.LA(1) == 69 or self.input.LA(1) == 101:
                    self.input.consume()
                else:
                    mse = MismatchedSetException(None, self.input)
                    self.recover(mse)
                    raise mse
                # mexp.g:106:44: ( '+' | '-' )?
                alt4 = 2
                LA4_0 = self.input.LA(1)
                if (LA4_0 == 43 or LA4_0 == 45):
                    alt4 = 1
                if alt4 == 1:
                    # mexp.g:
                    if self.input.LA(1) == 43 or self.input.LA(1) == 45:
                        self.input.consume()
                    else:
                        mse = MismatchedSetException(None, self.input)
                        self.recover(mse)
                        raise mse
                # mexp.g:106:58: ( DIGIT )+
                cnt5 = 0
                while True:  #loop5
                    alt5 = 2
                    LA5_0 = self.input.LA(1)
                    if ((48 <= LA5_0 <= 57)):
                        alt5 = 1
                    if alt5 == 1:
                        # mexp.g:106:58: DIGIT
                        self.mDIGIT()
                    else:
                        if cnt5 >= 1:
                            break  #loop5
                        eee = EarlyExitException(5, self.input)
                        raise eee
                    cnt5 += 1
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "LIT"
    # $ANTLR start "IDENT"
[docs]    def mIDENT(self,):
        try:
            _type = IDENT
            _channel = DEFAULT_CHANNEL
            # mexp.g:107:7: ( ALPHA ( ALPHA | DIGIT | '_' )* )
            # mexp.g:107:9: ALPHA ( ALPHA | DIGIT | '_' )*
            self.mALPHA()
            # mexp.g:107:15: ( ALPHA | DIGIT | '_' )*
            while True:  #loop7
                alt7 = 2
                LA7_0 = self.input.LA(1)
                if ((48 <= LA7_0 <= 57) or (65 <= LA7_0 <= 90) or LA7_0 == 95 or
                    (97 <= LA7_0 <= 122)):
                    alt7 = 1
                if alt7 == 1:
                    # mexp.g:
                    if (48 <= self.input.LA(1) <= 57) or (
                            65 <= self.input.LA(1) <= 90) or self.input.LA(
                                1) == 95 or (97 <= self.input.LA(1) <= 122):
                        self.input.consume()
                    else:
                        mse = MismatchedSetException(None, self.input)
                        self.recover(mse)
                        raise mse
                else:
                    break  #loop7
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "IDENT"
    # $ANTLR start "EQ"
[docs]    def mEQ(self,):
        try:
            _type = EQ
            _channel = DEFAULT_CHANNEL
            # mexp.g:109:4: ( '=' )
            # mexp.g:109:6: '='
            self.match(61)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "EQ"
    # $ANTLR start "EXP"
[docs]    def mEXP(self,):
        try:
            _type = EXP
            _channel = DEFAULT_CHANNEL
            # mexp.g:110:6: ( '^' )
            # mexp.g:110:8: '^'
            self.match(94)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "EXP"
    # $ANTLR start "ADDOP"
[docs]    def mADDOP(self,):
        try:
            _type = ADDOP
            _channel = DEFAULT_CHANNEL
            # mexp.g:111:7: ( '+' )
            # mexp.g:111:9: '+'
            self.match(43)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "ADDOP"
    # $ANTLR start "SUBTROP"
[docs]    def mSUBTROP(self,):
        try:
            _type = SUBTROP
            _channel = DEFAULT_CHANNEL
            # mexp.g:111:9: ( '-' )
            # mexp.g:111:11: '-'
            self.match(45)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "SUBTROP"
    # $ANTLR start "MULTOP"
[docs]    def mMULTOP(self,):
        try:
            _type = MULTOP
            _channel = DEFAULT_CHANNEL
            # mexp.g:112:8: ( '*' )
            # mexp.g:112:10: '*'
            self.match(42)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "MULTOP"
    # $ANTLR start "DIVOP"
[docs]    def mDIVOP(self,):
        try:
            _type = DIVOP
            _channel = DEFAULT_CHANNEL
            # mexp.g:112:7: ( '/' )
            # mexp.g:112:9: '/'
            self.match(47)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "DIVOP"
    # $ANTLR start "POPEN"
[docs]    def mPOPEN(self,):
        try:
            _type = POPEN
            _channel = DEFAULT_CHANNEL
            # mexp.g:113:8: ( '(' )
            # mexp.g:113:10: '('
            self.match(40)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "POPEN"
    # $ANTLR start "PCLOSE"
[docs]    def mPCLOSE(self,):
        try:
            _type = PCLOSE
            _channel = DEFAULT_CHANNEL
            # mexp.g:113:8: ( ')' )
            # mexp.g:113:10: ')'
            self.match(41)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "PCLOSE"
    # $ANTLR start "BOPEN"
[docs]    def mBOPEN(self,):
        try:
            _type = BOPEN
            _channel = DEFAULT_CHANNEL
            # mexp.g:114:7: ( '[' )
            # mexp.g:114:9: '['
            self.match(91)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "BOPEN"
    # $ANTLR start "BCLOSE"
[docs]    def mBCLOSE(self,):
        try:
            _type = BCLOSE
            _channel = DEFAULT_CHANNEL
            # mexp.g:114:8: ( ']' )
            # mexp.g:114:10: ']'
            self.match(93)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "BCLOSE"
    # $ANTLR start "COPEN"
[docs]    def mCOPEN(self,):
        try:
            _type = COPEN
            _channel = DEFAULT_CHANNEL
            # mexp.g:115:7: ( '{' )
            # mexp.g:115:9: '{'
            self.match(123)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "COPEN"
    # $ANTLR start "CCLOSE"
[docs]    def mCCLOSE(self,):
        try:
            _type = CCLOSE
            _channel = DEFAULT_CHANNEL
            # mexp.g:115:8: ( '}' )
            # mexp.g:115:10: '}'
            self.match(125)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "CCLOSE"
    # $ANTLR start "STRING"
[docs]    def mSTRING(self,):
        try:
            _type = STRING
            _channel = DEFAULT_CHANNEL
            # mexp.g:117:8: ( '\"' (~ '\"' )* '\"' )
            # mexp.g:117:10: '\"' (~ '\"' )* '\"'
            self.match(34)
            # mexp.g:117:14: (~ '\"' )*
            while True:  #loop8
                alt8 = 2
                LA8_0 = self.input.LA(1)
                if ((0 <= LA8_0 <= 33) or (35 <= LA8_0 <= 65535)):
                    alt8 = 1
                if alt8 == 1:
                    # mexp.g:117:15: ~ '\"'
                    if (0 <= self.input.LA(1) <= 33) or (35 <= self.input.LA(1)
                                                         <= 65535):
                        self.input.consume()
                    else:
                        mse = MismatchedSetException(None, self.input)
                        self.recover(mse)
                        raise mse
                else:
                    break  #loop8
            self.match(34)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "STRING"
    # $ANTLR start "SEMI"
[docs]    def mSEMI(self,):
        try:
            _type = SEMI
            _channel = DEFAULT_CHANNEL
            # mexp.g:119:6: ( ';' )
            # mexp.g:119:8: ';'
            self.match(59)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "SEMI"
    # $ANTLR start "COLON"
[docs]    def mCOLON(self,):
        try:
            _type = COLON
            _channel = DEFAULT_CHANNEL
            # mexp.g:119:7: ( ':' )
            # mexp.g:119:9: ':'
            self.match(58)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "COLON"
    # $ANTLR start "COMMA"
[docs]    def mCOMMA(self,):
        try:
            _type = COMMA
            _channel = DEFAULT_CHANNEL
            # mexp.g:120:7: ( ',' )
            # mexp.g:120:9: ','
            self.match(44)
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "COMMA"
    # $ANTLR start "WS"
[docs]    def mWS(self,):
        try:
            _type = WS
            _channel = DEFAULT_CHANNEL
            # mexp.g:121:4: ( ( ' ' | '\\t' | COMMENT | NEWLINE ) )
            # mexp.g:121:6: ( ' ' | '\\t' | COMMENT | NEWLINE )
            # mexp.g:121:6: ( ' ' | '\\t' | COMMENT | NEWLINE )
            alt9 = 4
            LA9 = self.input.LA(1)
            if LA9 == 32:
                alt9 = 1
            elif LA9 == 9:
                alt9 = 2
            elif LA9 == 35:
                alt9 = 3
            elif LA9 == 10 or LA9 == 13:
                alt9 = 4
            else:
                nvae = NoViableAltException("", 9, 0, self.input)
                raise nvae
            if alt9 == 1:
                # mexp.g:121:7: ' '
                self.match(32)
            elif alt9 == 2:
                # mexp.g:121:13: '\\t'
                self.match(9)
            elif alt9 == 3:
                # mexp.g:121:20: COMMENT
                self.mCOMMENT()
            elif alt9 == 4:
                # mexp.g:121:30: NEWLINE
                self.mNEWLINE()
            #action start
            _channel = HIDDEN
            #action end
            self._state.type = _type
            self._state.channel = _channel
        finally:
            pass 
    # $ANTLR end "WS"
    # $ANTLR start "COMMENT"
    # $ANTLR end "COMMENT"
    # $ANTLR start "NEWLINE"
[docs]    def mNEWLINE(self,):
        try:
            # mexp.g:124:18: ( '\\r\\n' | '\\r' | '\\n' )
            alt11 = 3
            LA11_0 = self.input.LA(1)
            if (LA11_0 == 13):
                LA11_1 = self.input.LA(2)
                if (LA11_1 == 10):
                    alt11 = 1
                else:
                    alt11 = 2
            elif (LA11_0 == 10):
                alt11 = 3
            else:
                nvae = NoViableAltException("", 11, 0, self.input)
                raise nvae
            if alt11 == 1:
                # mexp.g:124:20: '\\r\\n'
                self.match("\r\n")
            elif alt11 == 2:
                # mexp.g:124:29: '\\r'
                self.match(13)
            elif alt11 == 3:
                # mexp.g:124:36: '\\n'
                self.match(10)
        finally:
            pass 
    # $ANTLR end "NEWLINE"
    # $ANTLR start "ALPHA"
[docs]    def mALPHA(self,):
        try:
            # mexp.g:125:24: ( 'a' .. 'z' | 'A' .. 'Z' )
            # mexp.g:
            if (65 <= self.input.LA(1) <= 90) or (97 <= self.input.LA(1) <=
                                                  122):
                self.input.consume()
            else:
                mse = MismatchedSetException(None, self.input)
                self.recover(mse)
                raise mse
        finally:
            pass 
    # $ANTLR end "ALPHA"
    # $ANTLR start "DIGIT"
[docs]    def mDIGIT(self,):
        try:
            # mexp.g:126:18: ( '0' .. '9' )
            # mexp.g:126:20: '0' .. '9'
            self.matchRange(48, 57)
        finally:
            pass 
    # $ANTLR end "DIGIT"
[docs]    def mTokens(self):
        # mexp.g:1:8: ( T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | LIT | IDENT | EQ | EXP | ADDOP | SUBTROP | MULTOP | DIVOP | POPEN | PCLOSE | BOPEN | BCLOSE | COPEN | CCLOSE | STRING | SEMI | COLON | COMMA | WS )
        alt12 = 33
        alt12 = self.dfa12.predict(self.input)
        if alt12 == 1:
            # mexp.g:1:10: T__45
            self.mT__45()
        elif alt12 == 2:
            # mexp.g:1:16: T__46
            self.mT__46()
        elif alt12 == 3:
            # mexp.g:1:22: T__47
            self.mT__47()
        elif alt12 == 4:
            # mexp.g:1:28: T__48
            self.mT__48()
        elif alt12 == 5:
            # mexp.g:1:34: T__49
            self.mT__49()
        elif alt12 == 6:
            # mexp.g:1:40: T__50
            self.mT__50()
        elif alt12 == 7:
            # mexp.g:1:46: T__51
            self.mT__51()
        elif alt12 == 8:
            # mexp.g:1:52: T__52
            self.mT__52()
        elif alt12 == 9:
            # mexp.g:1:58: T__53
            self.mT__53()
        elif alt12 == 10:
            # mexp.g:1:64: T__54
            self.mT__54()
        elif alt12 == 11:
            # mexp.g:1:70: T__55
            self.mT__55()
        elif alt12 == 12:
            # mexp.g:1:76: T__56
            self.mT__56()
        elif alt12 == 13:
            # mexp.g:1:82: T__57
            self.mT__57()
        elif alt12 == 14:
            # mexp.g:1:88: T__58
            self.mT__58()
        elif alt12 == 15:
            # mexp.g:1:94: LIT
            self.mLIT()
        elif alt12 == 16:
            # mexp.g:1:98: IDENT
            self.mIDENT()
        elif alt12 == 17:
            # mexp.g:1:104: EQ
            self.mEQ()
        elif alt12 == 18:
            # mexp.g:1:107: EXP
            self.mEXP()
        elif alt12 == 19:
            # mexp.g:1:111: ADDOP
            self.mADDOP()
        elif alt12 == 20:
            # mexp.g:1:117: SUBTROP
            self.mSUBTROP()
        elif alt12 == 21:
            # mexp.g:1:125: MULTOP
            self.mMULTOP()
        elif alt12 == 22:
            # mexp.g:1:132: DIVOP
            self.mDIVOP()
        elif alt12 == 23:
            # mexp.g:1:138: POPEN
            self.mPOPEN()
        elif alt12 == 24:
            # mexp.g:1:144: PCLOSE
            self.mPCLOSE()
        elif alt12 == 25:
            # mexp.g:1:151: BOPEN
            self.mBOPEN()
        elif alt12 == 26:
            # mexp.g:1:157: BCLOSE
            self.mBCLOSE()
        elif alt12 == 27:
            # mexp.g:1:164: COPEN
            self.mCOPEN()
        elif alt12 == 28:
            # mexp.g:1:170: CCLOSE
            self.mCCLOSE()
        elif alt12 == 29:
            # mexp.g:1:177: STRING
            self.mSTRING()
        elif alt12 == 30:
            # mexp.g:1:184: SEMI
            self.mSEMI()
        elif alt12 == 31:
            # mexp.g:1:189: COLON
            self.mCOLON()
        elif alt12 == 32:
            # mexp.g:1:195: COMMA
            self.mCOMMA()
        elif alt12 == 33:
            # mexp.g:1:201: WS
            self.mWS() 
    # lookup tables for DFA #12
    DFA12_eot = DFA.unpack(
        u"\1\uffff\10\12\23\uffff\7\12\1\60\11\12\1\72\2\12\1\uffff\7\12"
        u"\1\104\1\12\1\uffff\3\12\1\111\1\112\4\12\1\uffff\1\117\3\12\2"
        u"\uffff\1\123\1\124\2\12\1\uffff\2\12\1\131\2\uffff\3\12\1\135\1"
        u"\uffff\2\12\1\141\1\uffff\2\12\1\144\1\uffff\2\12\1\uffff\3\12"
        u"\1\152\1\12\1\uffff\1\154\1\uffff")
    DFA12_eof = DFA.unpack(u"\155\uffff")
    DFA12_min = DFA.unpack(
        u"\1\11\2\145\1\141\1\151\1\146\1\165\1\150\1\154\23\uffff\1\141"
        u"\1\162\1\143\2\155\1\162\1\146\1\60\1\164\1\145\1\163\1\164\1\151"
        u"\1\154\2\145\1\163\1\60\1\145\1\164\1\uffff\1\157\1\156\1\145\1"
        u"\151\1\145\1\141\1\156\1\60\1\164\1\uffff\1\162\1\151\1\146\2\60"
        u"\1\143\1\163\1\162\1\163\1\uffff\1\60\1\166\1\141\1\146\2\uffff"
        u"\2\60\1\145\1\151\1\uffff\1\141\1\154\1\60\2\uffff\1\137\1\157"
        u"\1\154\1\60\1\uffff\1\155\1\156\1\60\1\uffff\1\165\1\145\1\60\1"
        u"\uffff\2\164\1\uffff\1\160\1\141\1\165\1\60\1\164\1\uffff\1\60"
        u"\1\uffff")
    DFA12_max = DFA.unpack(
        u"\1\175\1\164\1\151\1\141\1\151\1\156\1\165\1\150\1\154\23\uffff"
        u"\1\141\1\162\1\143\2\155\1\162\1\164\1\172\1\164\1\145\1\163\1"
        u"\164\1\151\1\154\2\145\1\163\1\172\1\145\1\164\1\uffff\1\157\1"
        u"\156\1\145\1\151\1\145\1\141\1\156\1\172\1\164\1\uffff\1\162\1"
        u"\151\1\146\2\172\1\143\1\163\1\162\1\163\1\uffff\1\172\1\166\1"
        u"\141\1\146\2\uffff\2\172\1\145\1\151\1\uffff\1\141\1\154\1\172"
        u"\2\uffff\1\137\1\157\1\154\1\172\1\uffff\1\157\1\156\1\172\1\uffff"
        u"\1\165\1\145\1\172\1\uffff\2\164\1\uffff\1\160\1\141\1\165\1\172"
        u"\1\164\1\uffff\1\172\1\uffff")
    DFA12_accept = DFA.unpack(
        u"\11\uffff\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"
        u"\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41\24\uffff\1\14\11\uffff"
        u"\1\6\11\uffff\1\4\4\uffff\1\15\1\16\4\uffff\1\5\3\uffff\1\1\1\13"
        u"\4\uffff\1\10\3\uffff\1\12\3\uffff\1\7\2\uffff\1\11\5\uffff\1\3"
        u"\1\uffff\1\2")
    DFA12_special = DFA.unpack(u"\155\uffff")
    DFA12_transition = [
        DFA.unpack(
            u"\2\33\2\uffff\1\33\22\uffff\1\33\1\uffff\1\27\1\33\4"
            u"\uffff\1\21\1\22\1\17\1\15\1\32\1\16\1\uffff\1\20\12\11\1\31\1"
            u"\30\1\uffff\1\13\3\uffff\32\12\1\23\1\uffff\1\24\1\14\2\uffff\2"
            u"\12\1\6\1\2\1\10\1\4\2\12\1\5\4\12\1\3\4\12\1\1\1\7\6\12\1\25\1"
            u"\uffff\1\26"),
        DFA.unpack(u"\1\35\16\uffff\1\34"),
        DFA.unpack(u"\1\36\3\uffff\1\37"),
        DFA.unpack(u"\1\40"),
        DFA.unpack(u"\1\41"),
        DFA.unpack(u"\1\43\7\uffff\1\42"),
        DFA.unpack(u"\1\44"),
        DFA.unpack(u"\1\45"),
        DFA.unpack(u"\1\46"),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u"\1\47"),
        DFA.unpack(u"\1\50"),
        DFA.unpack(u"\1\51"),
        DFA.unpack(u"\1\52"),
        DFA.unpack(u"\1\53"),
        DFA.unpack(u"\1\54"),
        DFA.unpack(u"\1\55\2\uffff\1\57\12\uffff\1\56"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\61"),
        DFA.unpack(u"\1\62"),
        DFA.unpack(u"\1\63"),
        DFA.unpack(u"\1\64"),
        DFA.unpack(u"\1\65"),
        DFA.unpack(u"\1\66"),
        DFA.unpack(u"\1\67"),
        DFA.unpack(u"\1\70"),
        DFA.unpack(u"\1\71"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\73"),
        DFA.unpack(u"\1\74"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\75"),
        DFA.unpack(u"\1\76"),
        DFA.unpack(u"\1\77"),
        DFA.unpack(u"\1\100"),
        DFA.unpack(u"\1\101"),
        DFA.unpack(u"\1\102"),
        DFA.unpack(u"\1\103"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\105"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\106"),
        DFA.unpack(u"\1\107"),
        DFA.unpack(u"\1\110"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\113"),
        DFA.unpack(u"\1\114"),
        DFA.unpack(u"\1\115"),
        DFA.unpack(u"\1\116"),
        DFA.unpack(u""),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\120"),
        DFA.unpack(u"\1\121"),
        DFA.unpack(u"\1\122"),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\125"),
        DFA.unpack(u"\1\126"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\127"),
        DFA.unpack(u"\1\130"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u""),
        DFA.unpack(u""),
        DFA.unpack(u"\1\132"),
        DFA.unpack(u"\1\133"),
        DFA.unpack(u"\1\134"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\137\1\uffff\1\136"),
        DFA.unpack(u"\1\140"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\142"),
        DFA.unpack(u"\1\143"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\145"),
        DFA.unpack(u"\1\146"),
        DFA.unpack(u""),
        DFA.unpack(u"\1\147"),
        DFA.unpack(u"\1\150"),
        DFA.unpack(u"\1\151"),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"\1\153"),
        DFA.unpack(u""),
        DFA.unpack(u"\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"),
        DFA.unpack(u"")
    ]
    # class definition for DFA #12
 
[docs]def main(argv, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr):
    from antlr3.main import LexerMain
    main = LexerMain(mexpLexer)
    main.stdin = stdin
    main.stdout = stdout
    main.stderr = stderr
    main.execute(argv) 
if __name__ == '__main__':
    main(sys.argv)