Changeset 5347:da430915bf69 in livinglogic.python.xist

Show
Ignore:
Timestamp:
02/13/13 18:18:43 (7 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Store source code start/end offsets for all AST nodes.

This simplifies str output of most nodes, as they can simply output the
appropriate slice of the original source code.

Location:
src/ll
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • src/ll/UL4.g

    r5336 r5347  
    2929def recoverFromMismatchedSet(self, input, e, follow): 
    3030    raise e 
     31 
     32def start(self, token): 
     33   return self.location.startcode + token.start 
     34 
     35def end(self, token): 
     36   return self.location.startcode + token.stop + 1 
    3137} 
    3238 
     
    137143    ; 
    138144 
    139  
    140145/* Rules common to all tags */ 
    141146 
    142147none returns [node] 
    143     : NONE { $node = ul4c.Const(self.location, None) } 
     148    : NONE { $node = ul4c.Const(self.location, self.start($NONE), self.end($NONE), None) } 
    144149    ; 
    145150 
    146151true_ returns [node] 
    147     : TRUE { $node = ul4c.Const(self.location, True) } 
     152    : TRUE { $node = ul4c.Const(self.location, self.start($TRUE), self.end($TRUE), True) } 
    148153    ; 
    149154 
    150155false_ returns [node] 
    151     : FALSE { $node = ul4c.Const(self.location, False) } 
     156    : FALSE { $node = ul4c.Const(self.location, self.start($FALSE), self.end($FALSE), False) } 
    152157    ; 
    153158 
    154159int_ returns [node] 
    155     : INT { $node = ul4c.Const(self.location, int($INT.text, 0)) } 
     160    : INT { $node = ul4c.Const(self.location, self.start($INT), self.end($INT), int($INT.text, 0)) } 
    156161    ; 
    157162 
    158163float_ returns [node] 
    159     : FLOAT { $node = ul4c.Const(self.location, float($FLOAT.text)) } 
     164    : FLOAT { $node = ul4c.Const(self.location, self.start($FLOAT), self.end($FLOAT), float($FLOAT.text)) } 
    160165    ; 
    161166 
    162167string returns [node] 
    163     : STRING { $node = ul4c.Const(self.location, ast.literal_eval($STRING.text)) } 
     168    : STRING { $node = ul4c.Const(self.location, self.start($STRING), self.end($STRING), ast.literal_eval($STRING.text)) } 
    164169    ; 
    165170 
    166171date returns [node] 
    167     : DATE { $node = ul4c.Const(self.location, datetime.datetime(*map(int, [f for f in ul4c.datesplitter.split($DATE.text[2:-1]) if f]))) } 
     172    : DATE { $node = ul4c.Const(self.location, self.start($DATE), self.end($DATE), datetime.datetime(*map(int, [f for f in ul4c.datesplitter.split($DATE.text[2:-1]) if f]))) } 
    168173    ; 
    169174 
    170175color returns [node] 
    171     : COLOR { $node = ul4c.Const(self.location, color.Color.fromrepr($COLOR.text)) } 
     176    : COLOR { $node = ul4c.Const(self.location, self.start($COLOR), self.end($COLOR), color.Color.fromrepr($COLOR.text)) } 
    172177    ; 
    173178 
    174179name returns [node] 
    175     : NAME { $node = ul4c.Var(self.location, $NAME.text) } 
     180    : NAME { $node = ul4c.Var(self.location, self.start($NAME), self.end($NAME), $NAME.text) } 
    176181    ; 
    177182 
     
    191196list returns [node] 
    192197    : 
    193         '[' 
    194         ']' { $node = ul4c.List(self.location) } 
     198        bracket_open='[' 
     199        bracket_close=']' { $node = ul4c.List(self.location, self.start($bracket_open), self.end($bracket_close)) } 
    195200    | 
    196         '[' {$node = ul4c.List(self.location) } 
     201        bracket_open='[' {$node = ul4c.List(self.location, self.start($bracket_open), None) } 
    197202        e1=expr1 { $node.items.append($e1.node) } 
    198203        ( 
     
    201206        )* 
    202207        ','? 
    203         ']' 
     208        bracket_close=']' { $node.end = self.end($bracket_close) } 
    204209    ; 
    205210 
     
    210215    } 
    211216    : 
    212         '[' 
     217        bracket_open='[' 
    213218        item=expr1 
    214219        'for' 
     
    220225            condition=expr1 { _condition = $condition.node; } 
    221226        )? 
    222         ']' { $node = ul4c.ListComp(self.location, $item.node, $n.varname, $container.node, _condition) } 
     227        bracket_close=']' { $node = ul4c.ListComp(self.location, self.start($bracket_open), self.end($bracket_close), $item.node, $n.varname, $container.node, _condition) } 
    223228    ; 
    224229 
     
    234239dict returns [node] 
    235240    : 
    236         '{' 
    237         '}' { $node = ul4c.Dict(self.location) } 
     241        brace_open='{' 
     242        brace_close='}' { $node = ul4c.Dict(self.location, self.start($brace_open), self.end($brace_close)) } 
    238243    | 
    239         '{' { $node = ul4c.Dict(self.location) } 
     244        brace_open='{' { $node = ul4c.Dict(self.location, self.start($brace_open), None) } 
    240245        i1=dictitem { $node.items.append($i1.node) } 
    241246        ( 
     
    244249        )* 
    245250        ','? 
    246         '}' 
     251        brace_close='}' { $node.end = self.end($brace_close) } 
    247252    ; 
    248253 
     
    253258    } 
    254259    : 
    255         '{' 
     260        brace_open='{' 
    256261        key=expr1 
    257262        ':' 
     
    265270            condition=expr1 { _condition = $condition.node; } 
    266271        )? 
    267         '}' { $node = ul4c.DictComp(self.location, $key.node, $value.node, $n.varname, $container.node, _condition) } 
     272        brace_close='}' { $node = ul4c.DictComp(self.location, self.start($brace_open), self.end($brace_close), $key.node, $value.node, $n.varname, $container.node, _condition) } 
    268273    ; 
    269274 
     
    271276    @init 
    272277    { 
    273         _condition = None; 
     278        _condition = None 
     279        _end = None 
    274280    } 
    275281    : 
    276         item=expr1 
     282        item=expr1 { _start = $item.node.start } 
    277283        'for' 
    278284        n=nestedname 
    279285        'in' 
    280         container=expr1 
     286        container=expr1 { _end = $container.node.end } 
    281287        ( 
    282288            'if' 
    283             condition=expr1 { _condition = $condition.node; } 
    284         )? { $node = ul4c.GenExpr(self.location, $item.node, $n.varname, $container.node, _condition) } 
     289            condition=expr1 { _condition = $condition.node; _end = $condition.node.end } 
     290        )? { $node = ul4c.GenExpr(self.location, $item.node.start, _end, $item.node, $n.varname, $container.node, _condition) } 
    285291    ; 
    286292 
     
    328334            /* Attribute access */ 
    329335            '.' 
    330             n=name { $node = ul4c.GetAttr(self.location, $node, $n.text) } 
     336            n=name { $node = ul4c.GetAttr(self.location, $node.start, self.end($n.stop), $node, $n.text) } 
    331337        | 
    332338            /* Function/method call */ 
    333             '(' { $node = ul4c.CallMeth(self.location, $node.obj, $node.attrname) if isinstance($node, ul4c.GetAttr) else ul4c.CallFunc(self.location, $node) } 
     339            '(' { $node = ul4c.CallMeth(self.location, $node.start, None, $node.obj, $node.attrname) if isinstance($node, ul4c.GetAttr) else ul4c.CallFunc(self.location, $node.start, None, $node) } 
    334340            ( 
    335341                /* No arguments */ 
     
    383389                ','? 
    384390            ) 
    385             ')' 
     391            paren_close=')' { $node.end = self.end($paren_close) } 
    386392        | 
    387393            /* Item/slice access */ 
     
    391397                ( 
    392398                    e2=expr1 { index2 = $e2.node; } 
    393                 )? { $node = ul4c.GetSlice(self.location, $node, None, index2) } 
     399                )? { $node = ul4c.GetSlice(self.location, $node.start, None, $node, None, index2) } 
    394400            | 
    395401                e2=expr1 { index1 = $e2.node; } 
     
    399405                        e3=expr1 { index2 = $e3.node; } 
    400406                    )? 
    401                 )? { $node = ul4c.GetSlice(self.location, $node, index1, index2) if slice else ul4c.GetItem(self.location, $node, index1) } 
     407                )? { $node = ul4c.GetSlice(self.location, $node.start, None, $node, index1, index2) if slice else ul4c.GetItem(self.location, $e1.node.start, None, $node, index1) } 
    402408            ) 
    403             ']' 
     409            bracket_close=']' { $node.end = self.end($bracket_close) } 
    404410        )* 
    405411    ; 
     
    407413/* Negation */ 
    408414expr8 returns [node] 
    409     @init 
    410     { 
    411         count = 0; 
    412     } 
    413     : 
    414         ( 
    415             '-' { count += 1; } 
    416         )* 
    417         e=expr9 { 
    418             $node = $e.node; 
    419             for i in range(count): 
    420                 $node = ul4c.Neg.make(self.location, $node); 
    421         } 
     415    : 
     416        e1=expr9 { $node = $e1.node; } 
     417    | 
     418        minus='-' e2=expr8 { $node = ul4c.Neg.make(self.location, self.start($minus), $e2.node.end, $e2.node) } 
    422419    ; 
    423420 
     
    436433                '%' { cls = ul4c.Mod; } 
    437434            ) 
    438             e2=expr8 { $node = cls.make(self.location, $node, $e2.node) } 
     435            e2=expr8 { $node = cls.make(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    439436        )* 
    440437    ; 
     
    450447                '-' { cls = ul4c.Sub; } 
    451448            ) 
    452             e2=expr7 { $node = cls.make(self.location, $node, $e2.node) } 
     449            e2=expr7 { $node = cls.make(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    453450        )* 
    454451    ; 
     
    472469                '>=' { cls = ul4c.GE; } 
    473470            ) 
    474             e2=expr6 { $node = cls.make(self.location, $node, $e2.node) } 
     471            e2=expr6 { $node = cls.make(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    475472        )* 
    476473    ; 
     
    479476expr4 returns [node] 
    480477    : 
    481         e1=expr5 { $node = $e1.node; } 
    482         ( 
    483             { cls = ul4c.Contains; } 
     478        e1=expr5 { $node = $e1.node } 
     479        ( 
     480            { cls = ul4c.Contains } 
    484481            ( 
    485                 'not' { cls = ul4c.NotContains; } 
     482                'not' { cls = ul4c.NotContains } 
    486483            )? 
    487484            'in' 
    488             e2=expr5 { $node = cls.make(self.location, $node, $e2.node) } 
     485            e2=expr5 { $node = cls.make(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    489486        )? 
    490487    ; 
     
    493490expr3 returns [node] 
    494491    : 
    495         'not' 
    496         e=expr4 { $node = ul4c.Not.make(self.location, $e.node) } 
     492        e1=expr4 { $node = $e1.node; } 
    497493    | 
    498         e=expr4 { $node = $e.node; } 
     494        n='not' e2=expr3 { $node = ul4c.Not.make(self.location, self.start($n), $e2.node.end, $e2.node) } 
    499495    ; 
    500496 
     
    506502        ( 
    507503            'and' 
    508             e2=expr3 { $node = ul4c.And(self.location, $node, $e2.node) } 
     504            e2=expr3 { $node = ul4c.And(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    509505        )* 
    510506    ; 
     
    516512        ( 
    517513            'or' 
    518             e2=expr2 { $node = ul4c.Or(self.location, $node, $e2.node) } 
     514            e2=expr2 { $node = ul4c.Or(self.location, $node.start, $e2.node.end, $node, $e2.node) } 
    519515        )* 
    520516    ; 
     
    537533        n=nestedname 
    538534        'in' 
    539         e=expr1 { $node = ul4c.For(self.location, $n.varname, $e.node) } 
     535        e=expr1 { $node = ul4c.For(self.location, self.start($n.start), $e.node.end, $n.varname, $e.node) } 
    540536        EOF 
    541537    ; 
     
    545541 
    546542statement returns [node] 
    547     : nn=nestedname '=' e=expr1 EOF { $node = ul4c.StoreVar(self.location, $nn.varname, $e.node) } 
    548     | n=name '+=' e=expr1 EOF { $node = ul4c.AddVar(self.location, $n.text, $e.node) } 
    549     | n=name '-=' e=expr1 EOF { $node = ul4c.SubVar(self.location, $n.text, $e.node) } 
    550     | n=name '*=' e=expr1 EOF { $node = ul4c.MulVar(self.location, $n.text, $e.node) } 
    551     | n=name '/=' e=expr1 EOF { $node = ul4c.TrueDivVar(self.location, $n.text, $e.node) } 
    552     | n=name '//=' e=expr1 EOF { $node = ul4c.FloorDivVar(self.location, $n.text, $e.node) } 
    553     | n=name '%=' e=expr1 EOF { $node = ul4c.ModVar(self.location, $n.text, $e.node) } 
     543    : nn=nestedname '=' e=expr1 EOF { $node = ul4c.StoreVar(self.location, self.start($nn.start), $e.node.end, $nn.varname, $e.node) } 
     544    | n=name '+=' e=expr1 EOF { $node = ul4c.AddVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
     545    | n=name '-=' e=expr1 EOF { $node = ul4c.SubVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
     546    | n=name '*=' e=expr1 EOF { $node = ul4c.MulVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
     547    | n=name '/=' e=expr1 EOF { $node = ul4c.TrueDivVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
     548    | n=name '//=' e=expr1 EOF { $node = ul4c.FloorDivVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
     549    | n=name '%=' e=expr1 EOF { $node = ul4c.ModVar(self.location, self.start($n.start), $e.node.end, $n.text, $e.node) } 
    554550    | e=expression EOF { $node = $e.node } 
    555551    ; 
  • src/ll/UL4Lexer.py

    r5336 r5347  
    1 # $ANTLR 3.4 src/ll/UL4.g 2013-02-11 13:12:34 
     1# $ANTLR 3.4 src/ll/UL4.g 2013-02-13 14:41:28 
    22 
    33import sys 
     
    909909            _channel = DEFAULT_CHANNEL 
    910910 
    911             # src/ll/UL4.g:39:2: ( 'None' ) 
    912             # src/ll/UL4.g:39:4: 'None' 
     911            # src/ll/UL4.g:45:2: ( 'None' ) 
     912            # src/ll/UL4.g:45:4: 'None' 
    913913            pass  
    914914            self.match("None") 
     
    932932            _channel = DEFAULT_CHANNEL 
    933933 
    934             # src/ll/UL4.g:43:2: ( 'True' ) 
    935             # src/ll/UL4.g:43:4: 'True' 
     934            # src/ll/UL4.g:49:2: ( 'True' ) 
     935            # src/ll/UL4.g:49:4: 'True' 
    936936            pass  
    937937            self.match("True") 
     
    955955            _channel = DEFAULT_CHANNEL 
    956956 
    957             # src/ll/UL4.g:47:2: ( 'False' ) 
    958             # src/ll/UL4.g:47:4: 'False' 
     957            # src/ll/UL4.g:53:2: ( 'False' ) 
     958            # src/ll/UL4.g:53:4: 'False' 
    959959            pass  
    960960            self.match("False") 
     
    978978            _channel = DEFAULT_CHANNEL 
    979979 
    980             # src/ll/UL4.g:51:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) 
    981             # src/ll/UL4.g:51:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
     980            # src/ll/UL4.g:57:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) 
     981            # src/ll/UL4.g:57:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
    982982            pass  
    983983            if (65 <= self.input.LA(1) <= 90) or self.input.LA(1) == 95 or (97 <= self.input.LA(1) <= 122): 
     
    990990 
    991991 
    992             # src/ll/UL4.g:51:28: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
     992            # src/ll/UL4.g:57:28: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
    993993            while True: #loop1 
    994994                alt1 = 2 
     
    10301030    def mDIGIT(self, ): 
    10311031        try: 
    1032             # src/ll/UL4.g:57:2: ( '0' .. '9' ) 
     1032            # src/ll/UL4.g:63:2: ( '0' .. '9' ) 
    10331033            # src/ll/UL4.g: 
    10341034            pass  
     
    10551055    def mBIN_DIGIT(self, ): 
    10561056        try: 
    1057             # src/ll/UL4.g:62:2: ( ( '0' | '1' ) ) 
     1057            # src/ll/UL4.g:68:2: ( ( '0' | '1' ) ) 
    10581058            # src/ll/UL4.g: 
    10591059            pass  
     
    10801080    def mOCT_DIGIT(self, ): 
    10811081        try: 
    1082             # src/ll/UL4.g:67:2: ( '0' .. '7' ) 
     1082            # src/ll/UL4.g:73:2: ( '0' .. '7' ) 
    10831083            # src/ll/UL4.g: 
    10841084            pass  
     
    11051105    def mHEX_DIGIT(self, ): 
    11061106        try: 
    1107             # src/ll/UL4.g:72:2: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) ) 
     1107            # src/ll/UL4.g:78:2: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) ) 
    11081108            # src/ll/UL4.g: 
    11091109            pass  
     
    11331133            _channel = DEFAULT_CHANNEL 
    11341134 
    1135             # src/ll/UL4.g:76:2: ( ( DIGIT )+ | '0' ( 'b' | 'B' ) ( BIN_DIGIT )+ | '0' ( 'o' | 'O' ) ( OCT_DIGIT )+ | '0' ( 'x' | 'X' ) ( HEX_DIGIT )+ ) 
     1135            # src/ll/UL4.g:82:2: ( ( DIGIT )+ | '0' ( 'b' | 'B' ) ( BIN_DIGIT )+ | '0' ( 'o' | 'O' ) ( OCT_DIGIT )+ | '0' ( 'x' | 'X' ) ( HEX_DIGIT )+ ) 
    11361136            alt6 = 4 
    11371137            LA6_0 = self.input.LA(1) 
     
    11571157 
    11581158            if alt6 == 1: 
    1159                 # src/ll/UL4.g:76:4: ( DIGIT )+ 
     1159                # src/ll/UL4.g:82:4: ( DIGIT )+ 
    11601160                pass  
    1161                 # src/ll/UL4.g:76:4: ( DIGIT )+ 
     1161                # src/ll/UL4.g:82:4: ( DIGIT )+ 
    11621162                cnt2 = 0 
    11631163                while True: #loop2 
     
    11941194 
    11951195            elif alt6 == 2: 
    1196                 # src/ll/UL4.g:77:4: '0' ( 'b' | 'B' ) ( BIN_DIGIT )+ 
     1196                # src/ll/UL4.g:83:4: '0' ( 'b' | 'B' ) ( BIN_DIGIT )+ 
    11971197                pass  
    11981198                self.match(48) 
     
    12071207 
    12081208 
    1209                 # src/ll/UL4.g:77:18: ( BIN_DIGIT )+ 
     1209                # src/ll/UL4.g:83:18: ( BIN_DIGIT )+ 
    12101210                cnt3 = 0 
    12111211                while True: #loop3 
     
    12421242 
    12431243            elif alt6 == 3: 
    1244                 # src/ll/UL4.g:78:4: '0' ( 'o' | 'O' ) ( OCT_DIGIT )+ 
     1244                # src/ll/UL4.g:84:4: '0' ( 'o' | 'O' ) ( OCT_DIGIT )+ 
    12451245                pass  
    12461246                self.match(48) 
     
    12551255 
    12561256 
    1257                 # src/ll/UL4.g:78:18: ( OCT_DIGIT )+ 
     1257                # src/ll/UL4.g:84:18: ( OCT_DIGIT )+ 
    12581258                cnt4 = 0 
    12591259                while True: #loop4 
     
    12901290 
    12911291            elif alt6 == 4: 
    1292                 # src/ll/UL4.g:79:4: '0' ( 'x' | 'X' ) ( HEX_DIGIT )+ 
     1292                # src/ll/UL4.g:85:4: '0' ( 'x' | 'X' ) ( HEX_DIGIT )+ 
    12931293                pass  
    12941294                self.match(48) 
     
    13031303 
    13041304 
    1305                 # src/ll/UL4.g:79:18: ( HEX_DIGIT )+ 
     1305                # src/ll/UL4.g:85:18: ( HEX_DIGIT )+ 
    13061306                cnt5 = 0 
    13071307                while True: #loop5 
     
    13491349    def mEXPONENT(self, ): 
    13501350        try: 
    1351             # src/ll/UL4.g:85:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ ) 
    1352             # src/ll/UL4.g:85:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ 
     1351            # src/ll/UL4.g:91:2: ( ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ ) 
     1352            # src/ll/UL4.g:91:4: ( 'e' | 'E' ) ( '+' | '-' )? ( DIGIT )+ 
    13531353            pass  
    13541354            if self.input.LA(1) == 69 or self.input.LA(1) == 101: 
     
    13611361 
    13621362 
    1363             # src/ll/UL4.g:85:14: ( '+' | '-' )? 
     1363            # src/ll/UL4.g:91:14: ( '+' | '-' )? 
    13641364            alt7 = 2 
    13651365            LA7_0 = self.input.LA(1) 
     
    13821382 
    13831383 
    1384             # src/ll/UL4.g:85:25: ( DIGIT )+ 
     1384            # src/ll/UL4.g:91:25: ( DIGIT )+ 
    13851385            cnt8 = 0 
    13861386            while True: #loop8 
     
    14311431            _channel = DEFAULT_CHANNEL 
    14321432 
    1433             # src/ll/UL4.g:88:2: ( ( DIGIT )+ '.' ( DIGIT )* ( EXPONENT )? | '.' ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT ) 
     1433            # src/ll/UL4.g:94:2: ( ( DIGIT )+ '.' ( DIGIT )* ( EXPONENT )? | '.' ( DIGIT )+ ( EXPONENT )? | ( DIGIT )+ EXPONENT ) 
    14341434            alt15 = 3 
    14351435            alt15 = self.dfa15.predict(self.input) 
    14361436            if alt15 == 1: 
    1437                 # src/ll/UL4.g:88:4: ( DIGIT )+ '.' ( DIGIT )* ( EXPONENT )? 
     1437                # src/ll/UL4.g:94:4: ( DIGIT )+ '.' ( DIGIT )* ( EXPONENT )? 
    14381438                pass  
    1439                 # src/ll/UL4.g:88:4: ( DIGIT )+ 
     1439                # src/ll/UL4.g:94:4: ( DIGIT )+ 
    14401440                cnt9 = 0 
    14411441                while True: #loop9 
     
    14721472                self.match(46) 
    14731473 
    1474                 # src/ll/UL4.g:88:15: ( DIGIT )* 
     1474                # src/ll/UL4.g:94:15: ( DIGIT )* 
    14751475                while True: #loop10 
    14761476                    alt10 = 2 
     
    14981498 
    14991499 
    1500                 # src/ll/UL4.g:88:22: ( EXPONENT )? 
     1500                # src/ll/UL4.g:94:22: ( EXPONENT )? 
    15011501                alt11 = 2 
    15021502                LA11_0 = self.input.LA(1) 
     
    15051505                    alt11 = 1 
    15061506                if alt11 == 1: 
    1507                     # src/ll/UL4.g:88:22: EXPONENT 
     1507                    # src/ll/UL4.g:94:22: EXPONENT 
    15081508                    pass  
    15091509                    self.mEXPONENT() 
     
    15151515 
    15161516            elif alt15 == 2: 
    1517                 # src/ll/UL4.g:89:4: '.' ( DIGIT )+ ( EXPONENT )? 
     1517                # src/ll/UL4.g:95:4: '.' ( DIGIT )+ ( EXPONENT )? 
    15181518                pass  
    15191519                self.match(46) 
    15201520 
    1521                 # src/ll/UL4.g:89:8: ( DIGIT )+ 
     1521                # src/ll/UL4.g:95:8: ( DIGIT )+ 
    15221522                cnt12 = 0 
    15231523                while True: #loop12 
     
    15521552 
    15531553 
    1554                 # src/ll/UL4.g:89:15: ( EXPONENT )? 
     1554                # src/ll/UL4.g:95:15: ( EXPONENT )? 
    15551555                alt13 = 2 
    15561556                LA13_0 = self.input.LA(1) 
     
    15591559                    alt13 = 1 
    15601560                if alt13 == 1: 
    1561                     # src/ll/UL4.g:89:15: EXPONENT 
     1561                    # src/ll/UL4.g:95:15: EXPONENT 
    15621562                    pass  
    15631563                    self.mEXPONENT() 
     
    15691569 
    15701570            elif alt15 == 3: 
    1571                 # src/ll/UL4.g:90:4: ( DIGIT )+ EXPONENT 
     1571                # src/ll/UL4.g:96:4: ( DIGIT )+ EXPONENT 
    15721572                pass  
    1573                 # src/ll/UL4.g:90:4: ( DIGIT )+ 
     1573                # src/ll/UL4.g:96:4: ( DIGIT )+ 
    15741574                cnt14 = 0 
    15751575                while True: #loop14 
     
    16201620    def mTIME(self, ): 
    16211621        try: 
    1622             # src/ll/UL4.g:96:2: ( DIGIT DIGIT ':' DIGIT DIGIT ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? ) 
    1623             # src/ll/UL4.g:96:4: DIGIT DIGIT ':' DIGIT DIGIT ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? 
     1622            # src/ll/UL4.g:102:2: ( DIGIT DIGIT ':' DIGIT DIGIT ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? ) 
     1623            # src/ll/UL4.g:102:4: DIGIT DIGIT ':' DIGIT DIGIT ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? 
    16241624            pass  
    16251625            self.mDIGIT() 
     
    16371637 
    16381638 
    1639             # src/ll/UL4.g:96:32: ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? 
     1639            # src/ll/UL4.g:102:32: ( ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? )? 
    16401640            alt17 = 2 
    16411641            LA17_0 = self.input.LA(1) 
     
    16441644                alt17 = 1 
    16451645            if alt17 == 1: 
    1646                 # src/ll/UL4.g:96:34: ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? 
     1646                # src/ll/UL4.g:102:34: ':' DIGIT DIGIT ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? 
    16471647                pass  
    16481648                self.match(58) 
     
    16541654 
    16551655 
    1656                 # src/ll/UL4.g:96:50: ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? 
     1656                # src/ll/UL4.g:102:50: ( '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT )? 
    16571657                alt16 = 2 
    16581658                LA16_0 = self.input.LA(1) 
     
    16611661                    alt16 = 1 
    16621662                if alt16 == 1: 
    1663                     # src/ll/UL4.g:96:52: '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT 
     1663                    # src/ll/UL4.g:102:52: '.' DIGIT DIGIT DIGIT DIGIT DIGIT DIGIT 
    16641664                    pass  
    16651665                    self.match(46) 
     
    17051705            _channel = DEFAULT_CHANNEL 
    17061706 
    1707             # src/ll/UL4.g:98:2: ( '@' '(' DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ( 'T' ( TIME )? )? ')' ) 
    1708             # src/ll/UL4.g:98:4: '@' '(' DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ( 'T' ( TIME )? )? ')' 
     1707            # src/ll/UL4.g:104:2: ( '@' '(' DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ( 'T' ( TIME )? )? ')' ) 
     1708            # src/ll/UL4.g:104:4: '@' '(' DIGIT DIGIT DIGIT DIGIT '-' DIGIT DIGIT '-' DIGIT DIGIT ( 'T' ( TIME )? )? ')' 
    17091709            pass  
    17101710            self.match(64) 
     
    17401740 
    17411741 
    1742             # src/ll/UL4.g:98:68: ( 'T' ( TIME )? )? 
     1742            # src/ll/UL4.g:104:68: ( 'T' ( TIME )? )? 
    17431743            alt19 = 2 
    17441744            LA19_0 = self.input.LA(1) 
     
    17471747                alt19 = 1 
    17481748            if alt19 == 1: 
    1749                 # src/ll/UL4.g:98:69: 'T' ( TIME )? 
     1749                # src/ll/UL4.g:104:69: 'T' ( TIME )? 
    17501750                pass  
    17511751                self.match(84) 
    17521752 
    1753                 # src/ll/UL4.g:98:73: ( TIME )? 
     1753                # src/ll/UL4.g:104:73: ( TIME )? 
    17541754                alt18 = 2 
    17551755                LA18_0 = self.input.LA(1) 
     
    17581758                    alt18 = 1 
    17591759                if alt18 == 1: 
    1760                     # src/ll/UL4.g:98:73: TIME 
     1760                    # src/ll/UL4.g:104:73: TIME 
    17611761                    pass  
    17621762                    self.mTIME() 
     
    17881788            _channel = DEFAULT_CHANNEL 
    17891789 
    1790             # src/ll/UL4.g:101:2: ( '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
     1790            # src/ll/UL4.g:107:2: ( '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT | '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
    17911791            alt20 = 4 
    17921792            LA20_0 = self.input.LA(1) 
     
    18551855 
    18561856            if alt20 == 1: 
    1857                 # src/ll/UL4.g:101:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     1857                # src/ll/UL4.g:107:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    18581858                pass  
    18591859                self.match(35) 
     
    18701870 
    18711871            elif alt20 == 2: 
    1872                 # src/ll/UL4.g:102:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     1872                # src/ll/UL4.g:108:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    18731873                pass  
    18741874                self.match(35) 
     
    18881888 
    18891889            elif alt20 == 3: 
    1890                 # src/ll/UL4.g:103:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     1890                # src/ll/UL4.g:109:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    18911891                pass  
    18921892                self.match(35) 
     
    19121912 
    19131913            elif alt20 == 4: 
    1914                 # src/ll/UL4.g:104:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     1914                # src/ll/UL4.g:110:4: '#' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    19151915                pass  
    19161916                self.match(35) 
     
    19561956            _channel = DEFAULT_CHANNEL 
    19571957 
    1958             # src/ll/UL4.g:108:2: ( ( ' ' | '\\t' | '\\r' | '\\n' ) ) 
    1959             # src/ll/UL4.g:108:4: ( ' ' | '\\t' | '\\r' | '\\n' ) 
     1958            # src/ll/UL4.g:114:2: ( ( ' ' | '\\t' | '\\r' | '\\n' ) ) 
     1959            # src/ll/UL4.g:114:4: ( ' ' | '\\t' | '\\r' | '\\n' ) 
    19601960            pass  
    19611961            if (9 <= self.input.LA(1) <= 10) or self.input.LA(1) == 13 or self.input.LA(1) == 32: 
     
    19901990            _channel = DEFAULT_CHANNEL 
    19911991 
    1992             # src/ll/UL4.g:112:2: ( '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* '\"' | '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* '\\'' ) 
     1992            # src/ll/UL4.g:118:2: ( '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* '\"' | '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* '\\'' ) 
    19931993            alt23 = 2 
    19941994            LA23_0 = self.input.LA(1) 
     
    20052005 
    20062006            if alt23 == 1: 
    2007                 # src/ll/UL4.g:112:4: '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* '\"' 
     2007                # src/ll/UL4.g:118:4: '\"' ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* '\"' 
    20082008                pass  
    20092009                self.match(34) 
    20102010 
    2011                 # src/ll/UL4.g:112:8: ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* 
     2011                # src/ll/UL4.g:118:8: ( ESC_SEQ |~ ( '\\\\' | '\"' | '\\r' | '\\n' ) )* 
    20122012                while True: #loop21 
    20132013                    alt21 = 3 
     
    20212021 
    20222022                    if alt21 == 1: 
    2023                         # src/ll/UL4.g:112:10: ESC_SEQ 
     2023                        # src/ll/UL4.g:118:10: ESC_SEQ 
    20242024                        pass  
    20252025                        self.mESC_SEQ() 
     
    20282028 
    20292029                    elif alt21 == 2: 
    2030                         # src/ll/UL4.g:112:20: ~ ( '\\\\' | '\"' | '\\r' | '\\n' ) 
     2030                        # src/ll/UL4.g:118:20: ~ ( '\\\\' | '\"' | '\\r' | '\\n' ) 
    20312031                        pass  
    20322032                        if (0 <= self.input.LA(1) <= 9) or (11 <= self.input.LA(1) <= 12) or (14 <= self.input.LA(1) <= 33) or (35 <= self.input.LA(1) <= 91) or (93 <= self.input.LA(1) <= 65535): 
     
    20482048 
    20492049            elif alt23 == 2: 
    2050                 # src/ll/UL4.g:113:4: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* '\\'' 
     2050                # src/ll/UL4.g:119:4: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* '\\'' 
    20512051                pass  
    20522052                self.match(39) 
    20532053 
    2054                 # src/ll/UL4.g:113:9: ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* 
     2054                # src/ll/UL4.g:119:9: ( ESC_SEQ |~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) )* 
    20552055                while True: #loop22 
    20562056                    alt22 = 3 
     
    20642064 
    20652065                    if alt22 == 1: 
    2066                         # src/ll/UL4.g:113:11: ESC_SEQ 
     2066                        # src/ll/UL4.g:119:11: ESC_SEQ 
    20672067                        pass  
    20682068                        self.mESC_SEQ() 
     
    20712071 
    20722072                    elif alt22 == 2: 
    2073                         # src/ll/UL4.g:113:21: ~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) 
     2073                        # src/ll/UL4.g:119:21: ~ ( '\\\\' | '\\'' | '\\r' | '\\n' ) 
    20742074                        pass  
    20752075                        if (0 <= self.input.LA(1) <= 9) or (11 <= self.input.LA(1) <= 12) or (14 <= self.input.LA(1) <= 38) or (40 <= self.input.LA(1) <= 91) or (93 <= self.input.LA(1) <= 65535): 
     
    21022102    def mESC_SEQ(self, ): 
    21032103        try: 
    2104             # src/ll/UL4.g:119:2: ( '\\\\' ( 'a' | 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE1_ESC | UNICODE2_ESC | UNICODE4_ESC ) 
     2104            # src/ll/UL4.g:125:2: ( '\\\\' ( 'a' | 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UNICODE1_ESC | UNICODE2_ESC | UNICODE4_ESC ) 
    21052105            alt24 = 4 
    21062106            LA24_0 = self.input.LA(1) 
     
    21292129 
    21302130            if alt24 == 1: 
    2131                 # src/ll/UL4.g:119:4: '\\\\' ( 'a' | 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) 
     2131                # src/ll/UL4.g:125:4: '\\\\' ( 'a' | 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) 
    21322132                pass  
    21332133                self.match(92) 
     
    21442144 
    21452145            elif alt24 == 2: 
    2146                 # src/ll/UL4.g:120:4: UNICODE1_ESC 
     2146                # src/ll/UL4.g:126:4: UNICODE1_ESC 
    21472147                pass  
    21482148                self.mUNICODE1_ESC() 
     
    21512151 
    21522152            elif alt24 == 3: 
    2153                 # src/ll/UL4.g:121:4: UNICODE2_ESC 
     2153                # src/ll/UL4.g:127:4: UNICODE2_ESC 
    21542154                pass  
    21552155                self.mUNICODE2_ESC() 
     
    21582158 
    21592159            elif alt24 == 4: 
    2160                 # src/ll/UL4.g:122:4: UNICODE4_ESC 
     2160                # src/ll/UL4.g:128:4: UNICODE4_ESC 
    21612161                pass  
    21622162                self.mUNICODE4_ESC() 
     
    21752175    def mUNICODE1_ESC(self, ): 
    21762176        try: 
    2177             # src/ll/UL4.g:127:2: ( '\\\\' 'x' HEX_DIGIT HEX_DIGIT ) 
    2178             # src/ll/UL4.g:127:4: '\\\\' 'x' HEX_DIGIT HEX_DIGIT 
     2177            # src/ll/UL4.g:133:2: ( '\\\\' 'x' HEX_DIGIT HEX_DIGIT ) 
     2178            # src/ll/UL4.g:133:4: '\\\\' 'x' HEX_DIGIT HEX_DIGIT 
    21792179            pass  
    21802180            self.match(92) 
     
    22012201    def mUNICODE2_ESC(self, ): 
    22022202        try: 
    2203             # src/ll/UL4.g:132:2: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
    2204             # src/ll/UL4.g:132:4: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     2203            # src/ll/UL4.g:138:2: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
     2204            # src/ll/UL4.g:138:4: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    22052205            pass  
    22062206            self.match(92) 
     
    22332233    def mUNICODE4_ESC(self, ): 
    22342234        try: 
    2235             # src/ll/UL4.g:137:2: ( '\\\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
    2236             # src/ll/UL4.g:137:4: '\\\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
     2235            # src/ll/UL4.g:143:2: ( '\\\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT ) 
     2236            # src/ll/UL4.g:143:4: '\\\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT 
    22372237            pass  
    22382238            self.match(92) 
  • src/ll/UL4Parser.py

    r5336 r5347  
    1 # $ANTLR 3.4 src/ll/UL4.g 2013-02-11 13:12:33 
     1# $ANTLR 3.4 src/ll/UL4.g 2013-02-13 14:41:27 
    22 
    33import sys 
     
    113113        raise e 
    114114 
     115    def start(self, token): 
     116       return self.location.startcode + token.start 
     117 
     118    def end(self, token): 
     119       return self.location.startcode + token.stop + 1 
     120 
    115121 
    116122 
    117123    # $ANTLR start "none" 
    118     # src/ll/UL4.g:142:1: none returns [node] : NONE ; 
     124    # src/ll/UL4.g:147:1: none returns [node] : NONE ; 
    119125    def none(self, ): 
    120126        node = None 
    121127 
    122128 
     129        NONE1 = None 
     130 
    123131        try: 
    124132            try: 
    125                 # src/ll/UL4.g:143:2: ( NONE ) 
    126                 # src/ll/UL4.g:143:4: NONE 
     133                # src/ll/UL4.g:148:2: ( NONE ) 
     134                # src/ll/UL4.g:148:4: NONE 
    127135                pass  
    128                 self.match(self.input, NONE, self.FOLLOW_NONE_in_none695) 
     136                NONE1 = self.match(self.input, NONE, self.FOLLOW_NONE_in_none694) 
    129137 
    130138                if self._state.backtracking == 0: 
    131139                    pass 
    132                     node = ul4c.Const(self.location, None)  
     140                    node = ul4c.Const(self.location, self.start(NONE1), self.end(NONE1), None)  
    133141 
    134142 
     
    150158 
    151159    # $ANTLR start "true_" 
    152     # src/ll/UL4.g:146:1: true_ returns [node] : TRUE ; 
     160    # src/ll/UL4.g:151:1: true_ returns [node] : TRUE ; 
    153161    def true_(self, ): 
    154162        node = None 
    155163 
    156164 
     165        TRUE2 = None 
     166 
    157167        try: 
    158168            try: 
    159                 # src/ll/UL4.g:147:2: ( TRUE ) 
    160                 # src/ll/UL4.g:147:4: TRUE 
     169                # src/ll/UL4.g:152:2: ( TRUE ) 
     170                # src/ll/UL4.g:152:4: TRUE 
    161171                pass  
    162                 self.match(self.input, TRUE, self.FOLLOW_TRUE_in_true_712) 
     172                TRUE2 = self.match(self.input, TRUE, self.FOLLOW_TRUE_in_true_711) 
    163173 
    164174                if self._state.backtracking == 0: 
    165175                    pass 
    166                     node = ul4c.Const(self.location, True)  
     176                    node = ul4c.Const(self.location, self.start(TRUE2), self.end(TRUE2), True)  
    167177 
    168178 
     
    184194 
    185195    # $ANTLR start "false_" 
    186     # src/ll/UL4.g:150:1: false_ returns [node] : FALSE ; 
     196    # src/ll/UL4.g:155:1: false_ returns [node] : FALSE ; 
    187197    def false_(self, ): 
    188198        node = None 
    189199 
    190200 
     201        FALSE3 = None 
     202 
    191203        try: 
    192204            try: 
    193                 # src/ll/UL4.g:151:2: ( FALSE ) 
    194                 # src/ll/UL4.g:151:4: FALSE 
     205                # src/ll/UL4.g:156:2: ( FALSE ) 
     206                # src/ll/UL4.g:156:4: FALSE 
    195207                pass  
    196                 self.match(self.input, FALSE, self.FOLLOW_FALSE_in_false_729) 
     208                FALSE3 = self.match(self.input, FALSE, self.FOLLOW_FALSE_in_false_728) 
    197209 
    198210                if self._state.backtracking == 0: 
    199211                    pass 
    200                     node = ul4c.Const(self.location, False)  
     212                    node = ul4c.Const(self.location, self.start(FALSE3), self.end(FALSE3), False)  
    201213 
    202214 
     
    218230 
    219231    # $ANTLR start "int_" 
    220     # src/ll/UL4.g:154:1: int_ returns [node] : INT ; 
     232    # src/ll/UL4.g:159:1: int_ returns [node] : INT ; 
    221233    def int_(self, ): 
    222234        node = None 
    223235 
    224236 
    225         INT1 = None 
     237        INT4 = None 
    226238 
    227239        try: 
    228240            try: 
    229                 # src/ll/UL4.g:155:2: ( INT ) 
    230                 # src/ll/UL4.g:155:4: INT 
     241                # src/ll/UL4.g:160:2: ( INT ) 
     242                # src/ll/UL4.g:160:4: INT 
    231243                pass  
    232                 INT1 = self.match(self.input, INT, self.FOLLOW_INT_in_int_746) 
     244                INT4 = self.match(self.input, INT, self.FOLLOW_INT_in_int_745) 
    233245 
    234246                if self._state.backtracking == 0: 
    235247                    pass 
    236                     node = ul4c.Const(self.location, int(INT1.text, 0))  
     248                    node = ul4c.Const(self.location, self.start(INT4), self.end(INT4), int(INT4.text, 0))  
    237249 
    238250 
     
    254266 
    255267    # $ANTLR start "float_" 
    256     # src/ll/UL4.g:158:1: float_ returns [node] : FLOAT ; 
     268    # src/ll/UL4.g:163:1: float_ returns [node] : FLOAT ; 
    257269    def float_(self, ): 
    258270        node = None 
    259271 
    260272 
    261         FLOAT2 = None 
     273        FLOAT5 = None 
    262274 
    263275        try: 
    264276            try: 
    265                 # src/ll/UL4.g:159:2: ( FLOAT ) 
    266                 # src/ll/UL4.g:159:4: FLOAT 
     277                # src/ll/UL4.g:164:2: ( FLOAT ) 
     278                # src/ll/UL4.g:164:4: FLOAT 
    267279                pass  
    268                 FLOAT2 = self.match(self.input, FLOAT, self.FOLLOW_FLOAT_in_float_763) 
     280                FLOAT5 = self.match(self.input, FLOAT, self.FOLLOW_FLOAT_in_float_762) 
    269281 
    270282                if self._state.backtracking == 0: 
    271283                    pass 
    272                     node = ul4c.Const(self.location, float(FLOAT2.text))  
     284                    node = ul4c.Const(self.location, self.start(FLOAT5), self.end(FLOAT5), float(FLOAT5.text))  
    273285 
    274286 
     
    290302 
    291303    # $ANTLR start "string" 
    292     # src/ll/UL4.g:162:1: string returns [node] : STRING ; 
     304    # src/ll/UL4.g:167:1: string returns [node] : STRING ; 
    293305    def string(self, ): 
    294306        node = None 
    295307 
    296308 
    297         STRING3 = None 
     309        STRING6 = None 
    298310 
    299311        try: 
    300312            try: 
    301                 # src/ll/UL4.g:163:2: ( STRING ) 
    302                 # src/ll/UL4.g:163:4: STRING 
     313                # src/ll/UL4.g:168:2: ( STRING ) 
     314                # src/ll/UL4.g:168:4: STRING 
    303315                pass  
    304                 STRING3 = self.match(self.input, STRING, self.FOLLOW_STRING_in_string780) 
     316                STRING6 = self.match(self.input, STRING, self.FOLLOW_STRING_in_string779) 
    305317 
    306318                if self._state.backtracking == 0: 
    307319                    pass 
    308                     node = ul4c.Const(self.location, ast.literal_eval(STRING3.text))  
     320                    node = ul4c.Const(self.location, self.start(STRING6), self.end(STRING6), ast.literal_eval(STRING6.text))  
    309321 
    310322 
     
    326338 
    327339    # $ANTLR start "date" 
    328     # src/ll/UL4.g:166:1: date returns [node] : DATE ; 
     340    # src/ll/UL4.g:171:1: date returns [node] : DATE ; 
    329341    def date(self, ): 
    330342        node = None 
    331343 
    332344 
    333         DATE4 = None 
     345        DATE7 = None 
    334346 
    335347        try: 
    336348            try: 
    337                 # src/ll/UL4.g:167:2: ( DATE ) 
    338                 # src/ll/UL4.g:167:4: DATE 
     349                # src/ll/UL4.g:172:2: ( DATE ) 
     350                # src/ll/UL4.g:172:4: DATE 
    339351                pass  
    340                 DATE4 = self.match(self.input, DATE, self.FOLLOW_DATE_in_date797) 
     352                DATE7 = self.match(self.input, DATE, self.FOLLOW_DATE_in_date796) 
    341353 
    342354                if self._state.backtracking == 0: 
    343355                    pass 
    344                     node = ul4c.Const(self.location, datetime.datetime(*map(int, [f for f in ul4c.datesplitter.split(DATE4.text[2:-1]) if f])))  
     356                    node = ul4c.Const(self.location, self.start(DATE7), self.end(DATE7), datetime.datetime(*map(int, [f for f in ul4c.datesplitter.split(DATE7.text[2:-1]) if f])))  
    345357 
    346358 
     
    362374 
    363375    # $ANTLR start "color" 
    364     # src/ll/UL4.g:170:1: color returns [node] : COLOR ; 
     376    # src/ll/UL4.g:175:1: color returns [node] : COLOR ; 
    365377    def color(self, ): 
    366378        node = None 
    367379 
    368380 
    369         COLOR5 = None 
     381        COLOR8 = None 
    370382 
    371383        try: 
    372384            try: 
    373                 # src/ll/UL4.g:171:2: ( COLOR ) 
    374                 # src/ll/UL4.g:171:4: COLOR 
     385                # src/ll/UL4.g:176:2: ( COLOR ) 
     386                # src/ll/UL4.g:176:4: COLOR 
    375387                pass  
    376                 COLOR5 = self.match(self.input, COLOR, self.FOLLOW_COLOR_in_color814) 
     388                COLOR8 = self.match(self.input, COLOR, self.FOLLOW_COLOR_in_color813) 
    377389 
    378390                if self._state.backtracking == 0: 
    379391                    pass 
    380                     node = ul4c.Const(self.location, color.Color.fromrepr(COLOR5.text))  
     392                    node = ul4c.Const(self.location, self.start(COLOR8), self.end(COLOR8), color.Color.fromrepr(COLOR8.text))  
    381393 
    382394 
     
    407419 
    408420    # $ANTLR start "name" 
    409     # src/ll/UL4.g:174:1: name returns [node] : NAME ; 
     421    # src/ll/UL4.g:179:1: name returns [node] : NAME ; 
    410422    def name(self, ): 
    411423        retval = self.name_return() 
     
    413425 
    414426 
    415         NAME6 = None 
     427        NAME9 = None 
    416428 
    417429        try: 
    418430            try: 
    419                 # src/ll/UL4.g:175:2: ( NAME ) 
    420                 # src/ll/UL4.g:175:4: NAME 
     431                # src/ll/UL4.g:180:2: ( NAME ) 
     432                # src/ll/UL4.g:180:4: NAME 
    421433                pass  
    422                 NAME6 = self.match(self.input, NAME, self.FOLLOW_NAME_in_name831) 
     434                NAME9 = self.match(self.input, NAME, self.FOLLOW_NAME_in_name830) 
    423435 
    424436                if self._state.backtracking == 0: 
    425437                    pass 
    426                     retval.node = ul4c.Var(self.location, NAME6.text)  
     438                    retval.node = ul4c.Var(self.location, self.start(NAME9), self.end(NAME9), NAME9.text)  
    427439 
    428440 
     
    447459 
    448460    # $ANTLR start "literal" 
    449     # src/ll/UL4.g:178:1: literal returns [node] : (e_none= none |e_false= false_ |e_true= true_ |e_int= int_ |e_float= float_ |e_string= string |e_date= date |e_color= color |e_name= name ); 
     461    # src/ll/UL4.g:183:1: literal returns [node] : (e_none= none |e_false= false_ |e_true= true_ |e_int= int_ |e_float= float_ |e_string= string |e_date= date |e_color= color |e_name= name ); 
    450462    def literal(self, ): 
    451463        node = None 
     
    473485        try: 
    474486            try: 
    475                 # src/ll/UL4.g:179:2: (e_none= none |e_false= false_ |e_true= true_ |e_int= int_ |e_float= float_ |e_string= string |e_date= date |e_color= color |e_name= name ) 
     487                # src/ll/UL4.g:184:2: (e_none= none |e_false= false_ |e_true= true_ |e_int= int_ |e_float= float_ |e_string= string |e_date= date |e_color= color |e_name= name ) 
    476488                alt1 = 9 
    477489                LA1 = self.input.LA(1) 
     
    505517 
    506518                if alt1 == 1: 
    507                     # src/ll/UL4.g:179:4: e_none= none 
     519                    # src/ll/UL4.g:184:4: e_none= none 
    508520                    pass  
    509                     self._state.following.append(self.FOLLOW_none_in_literal850) 
     521                    self._state.following.append(self.FOLLOW_none_in_literal849) 
    510522                    e_none = self.none() 
    511523 
     
    520532 
    521533                elif alt1 == 2: 
    522                     # src/ll/UL4.g:180:4: e_false= false_ 
     534                    # src/ll/UL4.g:185:4: e_false= false_ 
    523535                    pass  
    524                     self._state.following.append(self.FOLLOW_false__in_literal859) 
     536                    self._state.following.append(self.FOLLOW_false__in_literal858) 
    525537                    e_false = self.false_() 
    526538 
     
    535547 
    536548                elif alt1 == 3: 
    537                     # src/ll/UL4.g:181:4: e_true= true_ 
     549                    # src/ll/UL4.g:186:4: e_true= true_ 
    538550                    pass  
    539                     self._state.following.append(self.FOLLOW_true__in_literal868) 
     551                    self._state.following.append(self.FOLLOW_true__in_literal867) 
    540552                    e_true = self.true_() 
    541553 
     
    550562 
    551563                elif alt1 == 4: 
    552                     # src/ll/UL4.g:182:4: e_int= int_ 
     564                    # src/ll/UL4.g:187:4: e_int= int_ 
    553565                    pass  
    554                     self._state.following.append(self.FOLLOW_int__in_literal877) 
     566                    self._state.following.append(self.FOLLOW_int__in_literal876) 
    555567                    e_int = self.int_() 
    556568 
     
    565577 
    566578                elif alt1 == 5: 
    567                     # src/ll/UL4.g:183:4: e_float= float_ 
     579                    # src/ll/UL4.g:188:4: e_float= float_ 
    568580                    pass  
    569                     self._state.following.append(self.FOLLOW_float__in_literal886) 
     581                    self._state.following.append(self.FOLLOW_float__in_literal885) 
    570582                    e_float = self.float_() 
    571583 
     
    580592 
    581593                elif alt1 == 6: 
    582                     # src/ll/UL4.g:184:4: e_string= string 
     594                    # src/ll/UL4.g:189:4: e_string= string 
    583595                    pass  
    584                     self._state.following.append(self.FOLLOW_string_in_literal895) 
     596                    self._state.following.append(self.FOLLOW_string_in_literal894) 
    585597                    e_string = self.string() 
    586598 
     
    595607 
    596608                elif alt1 == 7: 
    597                     # src/ll/UL4.g:185:4: e_date= date 
     609                    # src/ll/UL4.g:190:4: e_date= date 
    598610                    pass  
    599                     self._state.following.append(self.FOLLOW_date_in_literal904) 
     611                    self._state.following.append(self.FOLLOW_date_in_literal903) 
    600612                    e_date = self.date() 
    601613 
     
    610622 
    611623                elif alt1 == 8: 
    612                     # src/ll/UL4.g:186:4: e_color= color 
     624                    # src/ll/UL4.g:191:4: e_color= color 
    613625                    pass  
    614                     self._state.following.append(self.FOLLOW_color_in_literal913) 
     626                    self._state.following.append(self.FOLLOW_color_in_literal912) 
    615627                    e_color = self.color() 
    616628 
     
    625637 
    626638                elif alt1 == 9: 
    627                     # src/ll/UL4.g:187:4: e_name= name 
     639                    # src/ll/UL4.g:192:4: e_name= name 
    628640                    pass  
    629                     self._state.following.append(self.FOLLOW_name_in_literal922) 
     641                    self._state.following.append(self.FOLLOW_name_in_literal921) 
    630642                    e_name = self.name() 
    631643 
     
    653665 
    654666    # $ANTLR start "list" 
    655     # src/ll/UL4.g:191:1: list returns [node] : ( '[' ']' | '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? ']' ); 
     667    # src/ll/UL4.g:196:1: list returns [node] : (bracket_open= '[' bracket_close= ']' |bracket_open= '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? bracket_close= ']' ); 
    656668    def list(self, ): 
    657669        node = None 
    658670 
    659671 
     672        bracket_open = None 
     673        bracket_close = None 
    660674        e1 = None 
    661675 
     
    665679        try: 
    666680            try: 
    667                 # src/ll/UL4.g:192:2: ( '[' ']' | '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? ']' ) 
     681                # src/ll/UL4.g:197:2: (bracket_open= '[' bracket_close= ']' |bracket_open= '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? bracket_close= ']' ) 
    668682                alt4 = 2 
    669683                LA4_0 = self.input.LA(1) 
     
    697711 
    698712                if alt4 == 1: 
    699                     # src/ll/UL4.g:193:3: '[' ']' 
     713                    # src/ll/UL4.g:198:3: bracket_open= '[' bracket_close= ']' 
    700714                    pass  
    701                     self.match(self.input, 49, self.FOLLOW_49_in_list943) 
    702  
    703                     self.match(self.input, 50, self.FOLLOW_50_in_list947) 
     715                    bracket_open = self.match(self.input, 49, self.FOLLOW_49_in_list944) 
     716 
     717                    bracket_close = self.match(self.input, 50, self.FOLLOW_50_in_list950) 
    704718 
    705719                    if self._state.backtracking == 0: 
    706720                        pass 
    707                         node = ul4c.List(self.location)  
     721                        node = ul4c.List(self.location, self.start(bracket_open), self.end(bracket_close))  
    708722 
    709723 
     
    711725 
    712726                elif alt4 == 2: 
    713                     # src/ll/UL4.g:196:3: '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? ']' 
     727                    # src/ll/UL4.g:201:3: bracket_open= '[' e1= expr1 ( ',' e2= expr1 )* ( ',' )? bracket_close= ']' 
    714728                    pass  
    715                     self.match(self.input, 49, self.FOLLOW_49_in_list956) 
     729                    bracket_open = self.match(self.input, 49, self.FOLLOW_49_in_list961) 
    716730 
    717731                    if self._state.backtracking == 0: 
    718732                        pass 
    719                         node = ul4c.List(self.location)  
    720  
    721  
    722  
    723                     self._state.following.append(self.FOLLOW_expr1_in_list964) 
     733                        node = ul4c.List(self.location, self.start(bracket_open), None)  
     734 
     735 
     736 
     737                    self._state.following.append(self.FOLLOW_expr1_in_list969) 
    724738                    e1 = self.expr1() 
    725739 
     
    732746 
    733747 
    734                     # src/ll/UL4.g:198:3: ( ',' e2= expr1 )* 
     748                    # src/ll/UL4.g:203:3: ( ',' e2= expr1 )* 
    735749                    while True: #loop2 
    736750                        alt2 = 2 
     
    747761 
    748762                        if alt2 == 1: 
    749                             # src/ll/UL4.g:199:4: ',' e2= expr1 
     763                            # src/ll/UL4.g:204:4: ',' e2= expr1 
    750764                            pass  
    751                             self.match(self.input, 34, self.FOLLOW_34_in_list975) 
    752  
    753                             self._state.following.append(self.FOLLOW_expr1_in_list982) 
     765                            self.match(self.input, 34, self.FOLLOW_34_in_list980) 
     766 
     767                            self._state.following.append(self.FOLLOW_expr1_in_list987) 
    754768                            e2 = self.expr1() 
    755769 
     
    767781 
    768782 
    769                     # src/ll/UL4.g:202:3: ( ',' )? 
     783                    # src/ll/UL4.g:207:3: ( ',' )? 
    770784                    alt3 = 2 
    771785                    LA3_0 = self.input.LA(1) 
     
    774788                        alt3 = 1 
    775789                    if alt3 == 1: 
    776                         # src/ll/UL4.g:202:3: ',' 
     790                        # src/ll/UL4.g:207:3: ',' 
    777791                        pass  
    778                         self.match(self.input, 34, self.FOLLOW_34_in_list993) 
    779  
    780  
    781  
    782  
    783                     self.match(self.input, 50, self.FOLLOW_50_in_list998) 
     792                        self.match(self.input, 34, self.FOLLOW_34_in_list998) 
     793 
     794 
     795 
     796 
     797                    bracket_close = self.match(self.input, 50, self.FOLLOW_50_in_list1005) 
     798 
     799                    if self._state.backtracking == 0: 
     800                        pass 
     801                        node.end = self.end(bracket_close)  
     802 
     803 
    784804 
    785805 
     
    798818 
    799819    # $ANTLR start "listcomprehension" 
    800     # src/ll/UL4.g:206:1: listcomprehension returns [node] : '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ']' ; 
     820    # src/ll/UL4.g:211:1: listcomprehension returns [node] : bracket_open= '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? bracket_close= ']' ; 
    801821    def listcomprehension(self, ): 
    802822        node = None 
    803823 
    804824 
     825        bracket_open = None 
     826        bracket_close = None 
    805827        item = None 
    806828 
     
    817839        try: 
    818840            try: 
    819                 # src/ll/UL4.g:211:2: ( '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ']' ) 
    820                 # src/ll/UL4.g:212:3: '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ']' 
     841                # src/ll/UL4.g:216:2: (bracket_open= '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? bracket_close= ']' ) 
     842                # src/ll/UL4.g:217:3: bracket_open= '[' item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? bracket_close= ']' 
    821843                pass  
    822                 self.match(self.input, 49, self.FOLLOW_49_in_listcomprehension1022) 
    823  
    824                 self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1028) 
     844                bracket_open = self.match(self.input, 49, self.FOLLOW_49_in_listcomprehension1033) 
     845 
     846                self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1039) 
    825847                item = self.expr1() 
    826848 
    827849                self._state.following.pop() 
    828850 
    829                 self.match(self.input, 52, self.FOLLOW_52_in_listcomprehension1032) 
    830  
    831                 self._state.following.append(self.FOLLOW_nestedname_in_listcomprehension1038) 
     851                self.match(self.input, 52, self.FOLLOW_52_in_listcomprehension1043) 
     852 
     853                self._state.following.append(self.FOLLOW_nestedname_in_listcomprehension1049) 
    832854                n = self.nestedname() 
    833855 
    834856                self._state.following.pop() 
    835857 
    836                 self.match(self.input, 54, self.FOLLOW_54_in_listcomprehension1042) 
    837  
    838                 self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1048) 
     858                self.match(self.input, 54, self.FOLLOW_54_in_listcomprehension1053) 
     859 
     860                self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1059) 
    839861                container = self.expr1() 
    840862 
    841863                self._state.following.pop() 
    842864 
    843                 # src/ll/UL4.g:218:3: ( 'if' condition= expr1 )? 
     865                # src/ll/UL4.g:223:3: ( 'if' condition= expr1 )? 
    844866                alt5 = 2 
    845867                LA5_0 = self.input.LA(1) 
     
    848870                    alt5 = 1 
    849871                if alt5 == 1: 
    850                     # src/ll/UL4.g:219:4: 'if' condition= expr1 
     872                    # src/ll/UL4.g:224:4: 'if' condition= expr1 
    851873                    pass  
    852                     self.match(self.input, 53, self.FOLLOW_53_in_listcomprehension1057) 
    853  
    854                     self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1064) 
     874                    self.match(self.input, 53, self.FOLLOW_53_in_listcomprehension1068) 
     875 
     876                    self._state.following.append(self.FOLLOW_expr1_in_listcomprehension1075) 
    855877                    condition = self.expr1() 
    856878 
     
    866888 
    867889 
    868                 self.match(self.input, 50, self.FOLLOW_50_in_listcomprehension1075) 
     890                bracket_close = self.match(self.input, 50, self.FOLLOW_50_in_listcomprehension1088) 
    869891 
    870892                if self._state.backtracking == 0: 
    871893                    pass 
    872                     node = ul4c.ListComp(self.location, item, n, container, _condition)  
     894                    node = ul4c.ListComp(self.location, self.start(bracket_open), self.end(bracket_close), item, ((n is not None) and [n.varname] or [None])[0], container, _condition)  
    873895 
    874896 
     
    890912 
    891913    # $ANTLR start "dictitem" 
    892     # src/ll/UL4.g:227:1: fragment dictitem returns [node] : k= expr1 ':' v= expr1 ; 
     914    # src/ll/UL4.g:232:1: fragment dictitem returns [node] : k= expr1 ':' v= expr1 ; 
    893915    def dictitem(self, ): 
    894916        node = None 
     
    902924        try: 
    903925            try: 
    904                 # src/ll/UL4.g:228:2: (k= expr1 ':' v= expr1 ) 
    905                 # src/ll/UL4.g:229:3: k= expr1 ':' v= expr1 
     926                # src/ll/UL4.g:233:2: (k= expr1 ':' v= expr1 ) 
     927                # src/ll/UL4.g:234:3: k= expr1 ':' v= expr1 
    906928                pass  
    907                 self._state.following.append(self.FOLLOW_expr1_in_dictitem1100) 
     929                self._state.following.append(self.FOLLOW_expr1_in_dictitem1113) 
    908930                k = self.expr1() 
    909931 
    910932                self._state.following.pop() 
    911933 
    912                 self.match(self.input, 42, self.FOLLOW_42_in_dictitem1104) 
    913  
    914                 self._state.following.append(self.FOLLOW_expr1_in_dictitem1110) 
     934                self.match(self.input, 42, self.FOLLOW_42_in_dictitem1117) 
     935 
     936                self._state.following.append(self.FOLLOW_expr1_in_dictitem1123) 
    915937                v = self.expr1() 
    916938 
     
    939961 
    940962    # $ANTLR start "dict" 
    941     # src/ll/UL4.g:234:1: dict returns [node] : ( '{' '}' | '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? '}' ); 
     963    # src/ll/UL4.g:239:1: dict returns [node] : (brace_open= '{' brace_close= '}' |brace_open= '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? brace_close= '}' ); 
    942964    def dict(self, ): 
    943965        node = None 
    944966 
    945967 
     968        brace_open = None 
     969        brace_close = None 
    946970        i1 = None 
    947971 
     
    951975        try: 
    952976            try: 
    953                 # src/ll/UL4.g:235:2: ( '{' '}' | '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? '}' ) 
     977                # src/ll/UL4.g:240:2: (brace_open= '{' brace_close= '}' |brace_open= '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? brace_close= '}' ) 
    954978                alt8 = 2 
    955979                LA8_0 = self.input.LA(1) 
     
    9831007 
    9841008                if alt8 == 1: 
    985                     # src/ll/UL4.g:236:3: '{' '}' 
     1009                    # src/ll/UL4.g:241:3: brace_open= '{' brace_close= '}' 
    9861010                    pass  
    987                     self.match(self.input, 57, self.FOLLOW_57_in_dict1129) 
    988  
    989                     self.match(self.input, 58, self.FOLLOW_58_in_dict1133) 
     1011                    brace_open = self.match(self.input, 57, self.FOLLOW_57_in_dict1144) 
     1012 
     1013                    brace_close = self.match(self.input, 58, self.FOLLOW_58_in_dict1150) 
    9901014 
    9911015                    if self._state.backtracking == 0: 
    9921016                        pass 
    993                         node = ul4c.Dict(self.location)  
     1017                        node = ul4c.Dict(self.location, self.start(brace_open), self.end(brace_close))  
    9941018 
    9951019 
     
    9971021 
    9981022                elif alt8 == 2: 
    999                     # src/ll/UL4.g:239:3: '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? '}' 
     1023                    # src/ll/UL4.g:244:3: brace_open= '{' i1= dictitem ( ',' i2= dictitem )* ( ',' )? brace_close= '}' 
    10001024                    pass  
    1001                     self.match(self.input, 57, self.FOLLOW_57_in_dict1142) 
     1025                    brace_open = self.match(self.input, 57, self.FOLLOW_57_in_dict1161) 
    10021026 
    10031027                    if self._state.backtracking == 0: 
    10041028                        pass 
    1005                         node = ul4c.Dict(self.location)  
    1006  
    1007  
    1008  
    1009                     self._state.following.append(self.FOLLOW_dictitem_in_dict1150) 
     1029                        node = ul4c.Dict(self.location, self.start(brace_open), None)  
     1030 
     1031 
     1032 
     1033                    self._state.following.append(self.FOLLOW_dictitem_in_dict1169) 
    10101034                    i1 = self.dictitem() 
    10111035 
     
    10181042 
    10191043 
    1020                     # src/ll/UL4.g:241:3: ( ',' i2= dictitem )* 
     1044                    # src/ll/UL4.g:246:3: ( ',' i2= dictitem )* 
    10211045                    while True: #loop6 
    10221046                        alt6 = 2 
     
    10331057 
    10341058                        if alt6 == 1: 
    1035                             # src/ll/UL4.g:242:4: ',' i2= dictitem 
     1059                            # src/ll/UL4.g:247:4: ',' i2= dictitem 
    10361060                            pass  
    1037                             self.match(self.input, 34, self.FOLLOW_34_in_dict1161) 
    1038  
    1039                             self._state.following.append(self.FOLLOW_dictitem_in_dict1168) 
     1061                            self.match(self.input, 34, self.FOLLOW_34_in_dict1180) 
     1062 
     1063                            self._state.following.append(self.FOLLOW_dictitem_in_dict1187) 
    10401064                            i2 = self.dictitem() 
    10411065 
     
    10531077 
    10541078 
    1055                     # src/ll/UL4.g:245:3: ( ',' )? 
     1079                    # src/ll/UL4.g:250:3: ( ',' )? 
    10561080                    alt7 = 2 
    10571081                    LA7_0 = self.input.LA(1) 
     
    10601084                        alt7 = 1 
    10611085                    if alt7 == 1: 
    1062                         # src/ll/UL4.g:245:3: ',' 
     1086                        # src/ll/UL4.g:250:3: ',' 
    10631087                        pass  
    1064                         self.match(self.input, 34, self.FOLLOW_34_in_dict1179) 
    1065  
    1066  
    1067  
    1068  
    1069                     self.match(self.input, 58, self.FOLLOW_58_in_dict1184) 
     1088                        self.match(self.input, 34, self.FOLLOW_34_in_dict1198) 
     1089 
     1090 
     1091 
     1092 
     1093                    brace_close = self.match(self.input, 58, self.FOLLOW_58_in_dict1205) 
     1094 
     1095                    if self._state.backtracking == 0: 
     1096                        pass 
     1097                        node.end = self.end(brace_close)  
     1098 
     1099 
    10701100 
    10711101 
     
    10841114 
    10851115    # $ANTLR start "dictcomprehension" 
    1086     # src/ll/UL4.g:249:1: dictcomprehension returns [node] : '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? '}' ; 
     1116    # src/ll/UL4.g:254:1: dictcomprehension returns [node] : brace_open= '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? brace_close= '}' ; 
    10871117    def dictcomprehension(self, ): 
    10881118        node = None 
    10891119 
    10901120 
     1121        brace_open = None 
     1122        brace_close = None 
    10911123        key = None 
    10921124 
     
    11051137        try: 
    11061138            try: 
    1107                 # src/ll/UL4.g:254:2: ( '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? '}' ) 
    1108                 # src/ll/UL4.g:255:3: '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? '}' 
     1139                # src/ll/UL4.g:259:2: (brace_open= '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? brace_close= '}' ) 
     1140                # src/ll/UL4.g:260:3: brace_open= '{' key= expr1 ':' value= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? brace_close= '}' 
    11091141                pass  
    1110                 self.match(self.input, 57, self.FOLLOW_57_in_dictcomprehension1208) 
    1111  
    1112                 self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1214) 
     1142                brace_open = self.match(self.input, 57, self.FOLLOW_57_in_dictcomprehension1233) 
     1143 
     1144                self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1239) 
    11131145                key = self.expr1() 
    11141146 
    11151147                self._state.following.pop() 
    11161148 
    1117                 self.match(self.input, 42, self.FOLLOW_42_in_dictcomprehension1218) 
    1118  
    1119                 self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1224) 
     1149                self.match(self.input, 42, self.FOLLOW_42_in_dictcomprehension1243) 
     1150 
     1151                self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1249) 
    11201152                value = self.expr1() 
    11211153 
    11221154                self._state.following.pop() 
    11231155 
    1124                 self.match(self.input, 52, self.FOLLOW_52_in_dictcomprehension1228) 
    1125  
    1126                 self._state.following.append(self.FOLLOW_nestedname_in_dictcomprehension1234) 
     1156                self.match(self.input, 52, self.FOLLOW_52_in_dictcomprehension1253) 
     1157 
     1158                self._state.following.append(self.FOLLOW_nestedname_in_dictcomprehension1259) 
    11271159                n = self.nestedname() 
    11281160 
    11291161                self._state.following.pop() 
    11301162 
    1131                 self.match(self.input, 54, self.FOLLOW_54_in_dictcomprehension1238) 
    1132  
    1133                 self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1244) 
     1163                self.match(self.input, 54, self.FOLLOW_54_in_dictcomprehension1263) 
     1164 
     1165                self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1269) 
    11341166                container = self.expr1() 
    11351167 
    11361168                self._state.following.pop() 
    11371169 
    1138                 # src/ll/UL4.g:263:3: ( 'if' condition= expr1 )? 
     1170                # src/ll/UL4.g:268:3: ( 'if' condition= expr1 )? 
    11391171                alt9 = 2 
    11401172                LA9_0 = self.input.LA(1) 
     
    11431175                    alt9 = 1 
    11441176                if alt9 == 1: 
    1145                     # src/ll/UL4.g:264:4: 'if' condition= expr1 
     1177                    # src/ll/UL4.g:269:4: 'if' condition= expr1 
    11461178                    pass  
    1147                     self.match(self.input, 53, self.FOLLOW_53_in_dictcomprehension1253) 
    1148  
    1149                     self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1260) 
     1179                    self.match(self.input, 53, self.FOLLOW_53_in_dictcomprehension1278) 
     1180 
     1181                    self._state.following.append(self.FOLLOW_expr1_in_dictcomprehension1285) 
    11501182                    condition = self.expr1() 
    11511183 
     
    11611193 
    11621194 
    1163                 self.match(self.input, 58, self.FOLLOW_58_in_dictcomprehension1271) 
     1195                brace_close = self.match(self.input, 58, self.FOLLOW_58_in_dictcomprehension1298) 
    11641196 
    11651197                if self._state.backtracking == 0: 
    11661198                    pass 
    1167                     node = ul4c.DictComp(self.location, key, value, n, container, _condition)  
     1199                    node = ul4c.DictComp(self.location, self.start(brace_open), self.end(brace_close), key, value, ((n is not None) and [n.varname] or [None])[0], container, _condition)  
    11681200 
    11691201 
     
    11851217 
    11861218    # $ANTLR start "generatorexpression" 
    1187     # src/ll/UL4.g:270:1: generatorexpression returns [node] : item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ; 
     1219    # src/ll/UL4.g:275:1: generatorexpression returns [node] : item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ; 
    11881220    def generatorexpression(self, ): 
    11891221        node = None 
     
    12001232 
    12011233          
    1202         _condition = None; 
     1234        _condition = None 
     1235        _end = None 
    12031236             
    12041237        try: 
    12051238            try: 
    1206                 # src/ll/UL4.g:275:2: (item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ) 
    1207                 # src/ll/UL4.g:276:3: item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? 
     1239                # src/ll/UL4.g:281:2: (item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? ) 
     1240                # src/ll/UL4.g:282:3: item= expr1 'for' n= nestedname 'in' container= expr1 ( 'if' condition= expr1 )? 
    12081241                pass  
    1209                 self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1299) 
     1242                self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1326) 
    12101243                item = self.expr1() 
    12111244 
    12121245                self._state.following.pop() 
    12131246 
    1214                 self.match(self.input, 52, self.FOLLOW_52_in_generatorexpression1303) 
    1215  
    1216                 self._state.following.append(self.FOLLOW_nestedname_in_generatorexpression1309) 
     1247                if self._state.backtracking == 0: 
     1248                    pass 
     1249                    _start = item.start  
     1250 
     1251 
     1252 
     1253                self.match(self.input, 52, self.FOLLOW_52_in_generatorexpression1332) 
     1254 
     1255                self._state.following.append(self.FOLLOW_nestedname_in_generatorexpression1338) 
    12171256                n = self.nestedname() 
    12181257 
    12191258                self._state.following.pop() 
    12201259 
    1221                 self.match(self.input, 54, self.FOLLOW_54_in_generatorexpression1313) 
    1222  
    1223                 self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1319) 
     1260                self.match(self.input, 54, self.FOLLOW_54_in_generatorexpression1342) 
     1261 
     1262                self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1348) 
    12241263                container = self.expr1() 
    12251264 
    12261265                self._state.following.pop() 
    12271266 
    1228                 # src/ll/UL4.g:281:3: ( 'if' condition= expr1 )? 
     1267                if self._state.backtracking == 0: 
     1268                    pass 
     1269                    _end = container.end  
     1270 
     1271 
     1272 
     1273                # src/ll/UL4.g:287:3: ( 'if' condition= expr1 )? 
    12291274                alt10 = 2 
    12301275                LA10_0 = self.input.LA(1) 
     
    12331278                    alt10 = 1 
    12341279                if alt10 == 1: 
    1235                     # src/ll/UL4.g:282:4: 'if' condition= expr1 
     1280                    # src/ll/UL4.g:288:4: 'if' condition= expr1 
    12361281                    pass  
    1237                     self.match(self.input, 53, self.FOLLOW_53_in_generatorexpression1328) 
    1238  
    1239                     self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1335) 
     1282                    self.match(self.input, 53, self.FOLLOW_53_in_generatorexpression1359) 
     1283 
     1284                    self._state.following.append(self.FOLLOW_expr1_in_generatorexpression1366) 
    12401285                    condition = self.expr1() 
    12411286 
     
    12441289                    if self._state.backtracking == 0: 
    12451290                        pass 
    1246                         _condition = condition;  
     1291                        _condition = condition; _end = condition.end  
    12471292 
    12481293 
     
    12531298                if self._state.backtracking == 0: 
    12541299                    pass 
    1255                     node = ul4c.GenExpr(self.location, item, n, container, _condition)  
     1300                    node = ul4c.GenExpr(self.location, item.start, _end, item, ((n is not None) and [n.varname] or [None])[0], container, _condition)  
    12561301 
    12571302 
     
    12731318 
    12741319    # $ANTLR start "atom" 
    1275     # src/ll/UL4.g:287:1: atom returns [node] : (e_literal= literal |e_list= list |e_listcomp= listcomprehension |e_dict= dict |e_dictcomp= dictcomprehension | '(' e_genexpr= generatorexpression ')' | '(' e_bracket= expr1 ')' ); 
     1320    # src/ll/UL4.g:293:1: atom returns [node] : (e_literal= literal |e_list= list |e_listcomp= listcomprehension |e_dict= dict |e_dictcomp= dictcomprehension | '(' e_genexpr= generatorexpression ')' | '(' e_bracket= expr1 ')' ); 
    12761321    def atom(self, ): 
    12771322        node = None 
     
    12951340        try: 
    12961341            try: 
    1297                 # src/ll/UL4.g:288:2: (e_literal= literal |e_list= list |e_listcomp= listcomprehension |e_dict= dict |e_dictcomp= dictcomprehension | '(' e_genexpr= generatorexpression ')' | '(' e_bracket= expr1 ')' ) 
     1342                # src/ll/UL4.g:294:2: (e_literal= literal |e_list= list |e_listcomp= listcomprehension |e_dict= dict |e_dictcomp= dictcomprehension | '(' e_genexpr= generatorexpression ')' | '(' e_bracket= expr1 ')' ) 
    12981343                alt11 = 7 
    12991344                LA11 = self.input.LA(1) 
     
    13621407 
    13631408                if alt11 == 1: 
    1364                     # src/ll/UL4.g:288:4: e_literal= literal 
     1409                    # src/ll/UL4.g:294:4: e_literal= literal 
    13651410                    pass  
    1366                     self._state.following.append(self.FOLLOW_literal_in_atom1361) 
     1411                    self._state.following.append(self.FOLLOW_literal_in_atom1392) 
    13671412                    e_literal = self.literal() 
    13681413 
     
    13771422 
    13781423                elif alt11 == 2: 
    1379                     # src/ll/UL4.g:289:4: e_list= list 
     1424                    # src/ll/UL4.g:295:4: e_list= list 
    13801425                    pass  
    1381                     self._state.following.append(self.FOLLOW_list_in_atom1370) 
     1426                    self._state.following.append(self.FOLLOW_list_in_atom1401) 
    13821427                    e_list = self.list() 
    13831428 
     
    13921437 
    13931438                elif alt11 == 3: 
    1394                     # src/ll/UL4.g:290:4: e_listcomp= listcomprehension 
     1439                    # src/ll/UL4.g:296:4: e_listcomp= listcomprehension 
    13951440                    pass  
    1396                     self._state.following.append(self.FOLLOW_listcomprehension_in_atom1379) 
     1441                    self._state.following.append(self.FOLLOW_listcomprehension_in_atom1410) 
    13971442                    e_listcomp = self.listcomprehension() 
    13981443 
     
    14071452 
    14081453                elif alt11 == 4: 
    1409                     # src/ll/UL4.g:291:4: e_dict= dict 
     1454                    # src/ll/UL4.g:297:4: e_dict= dict 
    14101455                    pass  
    1411                     self._state.following.append(self.FOLLOW_dict_in_atom1388) 
     1456                    self._state.following.append(self.FOLLOW_dict_in_atom1419) 
    14121457                    e_dict = self.dict() 
    14131458 
     
    14221467 
    14231468                elif alt11 == 5: 
    1424                     # src/ll/UL4.g:292:4: e_dictcomp= dictcomprehension 
     1469                    # src/ll/UL4.g:298:4: e_dictcomp= dictcomprehension 
    14251470                    pass  
    1426                     self._state.following.append(self.FOLLOW_dictcomprehension_in_atom1397) 
     1471                    self._state.following.append(self.FOLLOW_dictcomprehension_in_atom1428) 
    14271472                    e_dictcomp = self.dictcomprehension() 
    14281473 
     
    14371482 
    14381483                elif alt11 == 6: 
    1439                     # src/ll/UL4.g:293:4: '(' e_genexpr= generatorexpression ')' 
     1484                    # src/ll/UL4.g:299:4: '(' e_genexpr= generatorexpression ')' 
    14401485                    pass  
    1441                     self.match(self.input, 27, self.FOLLOW_27_in_atom1404) 
    1442  
    1443                     self._state.following.append(self.FOLLOW_generatorexpression_in_atom1408) 
     1486                    self.match(self.input, 27, self.FOLLOW_27_in_atom1435) 
     1487 
     1488                    self._state.following.append(self.FOLLOW_generatorexpression_in_atom1439) 
    14441489                    e_genexpr = self.generatorexpression() 
    14451490 
    14461491                    self._state.following.pop() 
    14471492 
    1448                     self.match(self.input, 28, self.FOLLOW_28_in_atom1410) 
     1493                    self.match(self.input, 28, self.FOLLOW_28_in_atom1441) 
    14491494 
    14501495                    if self._state.backtracking == 0: 
     
    14561501 
    14571502                elif alt11 == 7: 
    1458                     # src/ll/UL4.g:294:4: '(' e_bracket= expr1 ')' 
     1503                    # src/ll/UL4.g:300:4: '(' e_bracket= expr1 ')' 
    14591504                    pass  
    1460                     self.match(self.input, 27, self.FOLLOW_27_in_atom1417) 
    1461  
    1462                     self._state.following.append(self.FOLLOW_expr1_in_atom1421) 
     1505                    self.match(self.input, 27, self.FOLLOW_27_in_atom1448) 
     1506 
     1507                    self._state.following.append(self.FOLLOW_expr1_in_atom1452) 
    14631508                    e_bracket = self.expr1() 
    14641509 
    14651510                    self._state.following.pop() 
    14661511 
    1467                     self.match(self.input, 28, self.FOLLOW_28_in_atom1423) 
     1512                    self.match(self.input, 28, self.FOLLOW_28_in_atom1454) 
    14681513 
    14691514                    if self._state.backtracking == 0: 
     
    14861531 
    14871532 
     1533    class nestedname_return(ParserRuleReturnScope): 
     1534        def __init__(self): 
     1535            super(UL4Parser.nestedname_return, self).__init__() 
     1536 
     1537            self.varname = None 
     1538 
     1539 
     1540 
     1541 
    14881542 
    14891543    # $ANTLR start "nestedname" 
    1490     # src/ll/UL4.g:298:1: nestedname returns [varname] : (n= name | '(' n0= nestedname ',' ')' | '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' ); 
     1544    # src/ll/UL4.g:304:1: nestedname returns [varname] : (n= name | '(' n0= nestedname ',' ')' | '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' ); 
    14911545    def nestedname(self, ): 
    1492         varname = None 
     1546        retval = self.nestedname_return() 
     1547        retval.start = self.input.LT(1) 
    14931548 
    14941549 
     
    15061561        try: 
    15071562            try: 
    1508                 # src/ll/UL4.g:299:2: (n= name | '(' n0= nestedname ',' ')' | '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' ) 
     1563                # src/ll/UL4.g:305:2: (n= name | '(' n0= nestedname ',' ')' | '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' ) 
    15091564                alt14 = 3 
    15101565                LA14_0 = self.input.LA(1) 
     
    15401595 
    15411596                if alt14 == 1: 
    1542                     # src/ll/UL4.g:300:3: n= name 
     1597                    # src/ll/UL4.g:306:3: n= name 
    15431598                    pass  
    1544                     self._state.following.append(self.FOLLOW_name_in_nestedname1446) 
     1599                    self._state.following.append(self.FOLLOW_name_in_nestedname1477) 
    15451600                    n = self.name() 
    15461601 
     
    15491604                    if self._state.backtracking == 0: 
    15501605                        pass 
    1551                         varname =  ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0]  
     1606                        retval.varname =  ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0]  
    15521607 
    15531608 
     
    15551610 
    15561611                elif alt14 == 2: 
    1557                     # src/ll/UL4.g:302:3: '(' n0= nestedname ',' ')' 
     1612                    # src/ll/UL4.g:308:3: '(' n0= nestedname ',' ')' 
    15581613                    pass  
    1559                     self.match(self.input, 27, self.FOLLOW_27_in_nestedname1455) 
    1560  
    1561                     self._state.following.append(self.FOLLOW_nestedname_in_nestedname1459) 
     1614                    self.match(self.input, 27, self.FOLLOW_27_in_nestedname1486) 
     1615 
     1616                    self._state.following.append(self.FOLLOW_nestedname_in_nestedname1490) 
    15621617                    n0 = self.nestedname() 
    15631618 
    15641619                    self._state.following.pop() 
    15651620 
    1566                     self.match(self.input, 34, self.FOLLOW_34_in_nestedname1461) 
    1567  
    1568                     self.match(self.input, 28, self.FOLLOW_28_in_nestedname1463) 
     1621                    self.match(self.input, 34, self.FOLLOW_34_in_nestedname1492) 
     1622 
     1623                    self.match(self.input, 28, self.FOLLOW_28_in_nestedname1494) 
    15691624 
    15701625                    if self._state.backtracking == 0: 
    15711626                        pass 
    1572                         varname = (n0,)  
     1627                        retval.varname = (((n0 is not None) and [n0.varname] or [None])[0],)  
    15731628 
    15741629 
     
    15761631 
    15771632                elif alt14 == 3: 
    1578                     # src/ll/UL4.g:304:3: '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' 
     1633                    # src/ll/UL4.g:310:3: '(' n1= nestedname ',' n2= nestedname ( ',' n3= nestedname )* ( ',' )? ')' 
    15791634                    pass  
    1580                     self.match(self.input, 27, self.FOLLOW_27_in_nestedname1472) 
    1581  
    1582                     self._state.following.append(self.FOLLOW_nestedname_in_nestedname1478) 
     1635                    self.match(self.input, 27, self.FOLLOW_27_in_nestedname1503) 
     1636 
     1637                    self._state.following.append(self.FOLLOW_nestedname_in_nestedname1509) 
    15831638                    n1 = self.nestedname() 
    15841639 
    15851640                    self._state.following.pop() 
    15861641 
    1587                     self.match(self.input, 34, self.FOLLOW_34_in_nestedname1482) 
    1588  
    1589                     self._state.following.append(self.FOLLOW_nestedname_in_nestedname1488) 
     1642                    self.match(self.input, 34, self.FOLLOW_34_in_nestedname1513) 
     1643 
     1644                    self._state.following.append(self.FOLLOW_nestedname_in_nestedname1519) 
    15901645                    n2 = self.nestedname() 
    15911646 
     
    15941649                    if self._state.backtracking == 0: 
    15951650                        pass 
    1596                         varname = (n1, n2)  
    1597  
    1598  
    1599  
    1600                     # src/ll/UL4.g:308:3: ( ',' n3= nestedname )* 
     1651                        retval.varname = (((n1 is not None) and [n1.varname] or [None])[0], ((n2 is not None) and [n2.varname] or [None])[0])  
     1652 
     1653 
     1654 
     1655                    # src/ll/UL4.g:314:3: ( ',' n3= nestedname )* 
    16011656                    while True: #loop12 
    16021657                        alt12 = 2 
     
    16131668 
    16141669                        if alt12 == 1: 
    1615                             # src/ll/UL4.g:309:4: ',' n3= nestedname 
     1670                            # src/ll/UL4.g:315:4: ',' n3= nestedname 
    16161671                            pass  
    1617                             self.match(self.input, 34, self.FOLLOW_34_in_nestedname1499) 
    1618  
    1619                             self._state.following.append(self.FOLLOW_nestedname_in_nestedname1506) 
     1672                            self.match(self.input, 34, self.FOLLOW_34_in_nestedname1530) 
     1673 
     1674                            self._state.following.append(self.FOLLOW_nestedname_in_nestedname1537) 
    16201675                            n3 = self.nestedname() 
    16211676 
     
    16241679                            if self._state.backtracking == 0: 
    16251680                                pass 
    1626                                 varname += (n3,)  
     1681                                retval.varname += (((n3 is not None) and [n3.varname] or [None])[0],)  
    16271682 
    16281683 
     
    16331688 
    16341689 
    1635                     # src/ll/UL4.g:312:3: ( ',' )? 
     1690                    # src/ll/UL4.g:318:3: ( ',' )? 
    16361691                    alt13 = 2 
    16371692                    LA13_0 = self.input.LA(1) 
     
    16401695                        alt13 = 1 
    16411696                    if alt13 == 1: 
    1642                         # src/ll/UL4.g:312:3: ',' 
     1697                        # src/ll/UL4.g:318:3: ',' 
    16431698                        pass  
    1644                         self.match(self.input, 34, self.FOLLOW_34_in_nestedname1517) 
    1645  
    1646  
    1647  
    1648  
    1649                     self.match(self.input, 28, self.FOLLOW_28_in_nestedname1522) 
     1699                        self.match(self.input, 34, self.FOLLOW_34_in_nestedname1548) 
     1700 
     1701 
     1702 
     1703 
     1704                    self.match(self.input, 28, self.FOLLOW_28_in_nestedname1553) 
     1705 
     1706 
     1707                retval.stop = self.input.LT(-1) 
    16501708 
    16511709 
     
    16571715        finally: 
    16581716            pass 
    1659         return varname 
     1717        return retval 
    16601718 
    16611719    # $ANTLR end "nestedname" 
     
    16641722 
    16651723    # $ANTLR start "expr9" 
    1666     # src/ll/UL4.g:317:1: expr9 returns [node] : e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) ']' )* ; 
     1724    # src/ll/UL4.g:323:1: expr9 returns [node] : e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) paren_close= ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) bracket_close= ']' )* ; 
    16671725    def expr9(self, ): 
    16681726        node = None 
    16691727 
    16701728 
     1729        paren_close = None 
     1730        bracket_close = None 
    16711731        e1 = None 
    16721732 
     
    17061766        try: 
    17071767            try: 
    1708                 # src/ll/UL4.g:325:2: (e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) ']' )* ) 
    1709                 # src/ll/UL4.g:326:3: e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) ']' )* 
     1768                # src/ll/UL4.g:331:2: (e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) paren_close= ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) bracket_close= ']' )* ) 
     1769                # src/ll/UL4.g:332:3: e1= atom ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) paren_close= ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) bracket_close= ']' )* 
    17101770                pass  
    1711                 self._state.following.append(self.FOLLOW_atom_in_expr91551) 
     1771                self._state.following.append(self.FOLLOW_atom_in_expr91582) 
    17121772                e1 = self.atom() 
    17131773 
     
    17201780 
    17211781 
    1722                 # src/ll/UL4.g:327:3: ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) ']' )* 
     1782                # src/ll/UL4.g:333:3: ( '.' n= name | '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) paren_close= ')' | '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) bracket_close= ']' )* 
    17231783                while True: #loop32 
    17241784                    alt32 = 4 
     
    17321792 
    17331793                    if alt32 == 1: 
    1734                         # src/ll/UL4.g:329:4: '.' n= name 
     1794                        # src/ll/UL4.g:335:4: '.' n= name 
    17351795                        pass  
    1736                         self.match(self.input, 37, self.FOLLOW_37_in_expr91567) 
    1737  
    1738                         self._state.following.append(self.FOLLOW_name_in_expr91574) 
     1796                        self.match(self.input, 37, self.FOLLOW_37_in_expr91598) 
     1797 
     1798                        self._state.following.append(self.FOLLOW_name_in_expr91605) 
    17391799                        n = self.name() 
    17401800 
     
    17431803                        if self._state.backtracking == 0: 
    17441804                            pass 
    1745                             node = ul4c.GetAttr(self.location, node, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0])  
     1805                            node = ul4c.GetAttr(self.location, node.start, self.end(n.stop), node, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0])  
    17461806 
    17471807 
     
    17491809 
    17501810                    elif alt32 == 2: 
    1751                         # src/ll/UL4.g:333:4: '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) ')' 
     1811                        # src/ll/UL4.g:339:4: '(' (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) paren_close= ')' 
    17521812                        pass  
    1753                         self.match(self.input, 27, self.FOLLOW_27_in_expr91590) 
     1813                        self.match(self.input, 27, self.FOLLOW_27_in_expr91621) 
    17541814 
    17551815                        if self._state.backtracking == 0: 
    17561816                            pass 
    1757                             node = ul4c.CallMeth(self.location, node.obj, node.attrname) if isinstance(node, ul4c.GetAttr) else ul4c.CallFunc(self.location, node)  
    1758  
    1759  
    1760  
    1761                         # src/ll/UL4.g:334:4: (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) 
     1817                            node = ul4c.CallMeth(self.location, node.start, None, node.obj, node.attrname) if isinstance(node, ul4c.GetAttr) else ul4c.CallFunc(self.location, node.start, None, node)  
     1818 
     1819 
     1820 
     1821                        # src/ll/UL4.g:340:4: (| '**' rkwargs= exprarg ( ',' )? | '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? |a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? |an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? ) 
    17621822                        alt27 = 5 
    17631823                        LA27 = self.input.LA(1) 
     
    17981858 
    17991859                        if alt27 == 1: 
    1800                             # src/ll/UL4.g:336:4:  
     1860                            # src/ll/UL4.g:342:4:  
    18011861                            pass  
    18021862 
    18031863                        elif alt27 == 2: 
    1804                             # src/ll/UL4.g:338:5: '**' rkwargs= exprarg ( ',' )? 
     1864                            # src/ll/UL4.g:344:5: '**' rkwargs= exprarg ( ',' )? 
    18051865                            pass  
    1806                             self.match(self.input, 30, self.FOLLOW_30_in_expr91620) 
    1807  
    1808                             self._state.following.append(self.FOLLOW_exprarg_in_expr91624) 
     1866                            self.match(self.input, 30, self.FOLLOW_30_in_expr91651) 
     1867 
     1868                            self._state.following.append(self.FOLLOW_exprarg_in_expr91655) 
    18091869                            rkwargs = self.exprarg() 
    18101870 
     
    18171877 
    18181878 
    1819                             # src/ll/UL4.g:339:5: ( ',' )? 
     1879                            # src/ll/UL4.g:345:5: ( ',' )? 
    18201880                            alt15 = 2 
    18211881                            LA15_0 = self.input.LA(1) 
     
    18241884                                alt15 = 1 
    18251885                            if alt15 == 1: 
    1826                                 # src/ll/UL4.g:339:5: ',' 
     1886                                # src/ll/UL4.g:345:5: ',' 
    18271887                                pass  
    1828                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91632) 
     1888                                self.match(self.input, 34, self.FOLLOW_34_in_expr91663) 
    18291889 
    18301890 
     
    18331893 
    18341894                        elif alt27 == 3: 
    1835                             # src/ll/UL4.g:342:5: '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? 
     1895                            # src/ll/UL4.g:348:5: '*' rargs= exprarg ( ',' '**' rkwargs= exprarg )? ( ',' )? 
    18361896                            pass  
    1837                             self.match(self.input, 29, self.FOLLOW_29_in_expr91650) 
    1838  
    1839                             self._state.following.append(self.FOLLOW_exprarg_in_expr91654) 
     1897                            self.match(self.input, 29, self.FOLLOW_29_in_expr91681) 
     1898 
     1899                            self._state.following.append(self.FOLLOW_exprarg_in_expr91685) 
    18401900                            rargs = self.exprarg() 
    18411901 
     
    18481908 
    18491909 
    1850                             # src/ll/UL4.g:343:5: ( ',' '**' rkwargs= exprarg )? 
     1910                            # src/ll/UL4.g:349:5: ( ',' '**' rkwargs= exprarg )? 
    18511911                            alt16 = 2 
    18521912                            LA16_0 = self.input.LA(1) 
     
    18581918                                    alt16 = 1 
    18591919                            if alt16 == 1: 
    1860                                 # src/ll/UL4.g:344:6: ',' '**' rkwargs= exprarg 
     1920                                # src/ll/UL4.g:350:6: ',' '**' rkwargs= exprarg 
    18611921                                pass  
    1862                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91669) 
    1863  
    1864                                 self.match(self.input, 30, self.FOLLOW_30_in_expr91676) 
    1865  
    1866                                 self._state.following.append(self.FOLLOW_exprarg_in_expr91680) 
     1922                                self.match(self.input, 34, self.FOLLOW_34_in_expr91700) 
     1923 
     1924                                self.match(self.input, 30, self.FOLLOW_30_in_expr91707) 
     1925 
     1926                                self._state.following.append(self.FOLLOW_exprarg_in_expr91711) 
    18671927                                rkwargs = self.exprarg() 
    18681928 
     
    18781938 
    18791939 
    1880                             # src/ll/UL4.g:347:5: ( ',' )? 
     1940                            # src/ll/UL4.g:353:5: ( ',' )? 
    18811941                            alt17 = 2 
    18821942                            LA17_0 = self.input.LA(1) 
     
    18851945                                alt17 = 1 
    18861946                            if alt17 == 1: 
    1887                                 # src/ll/UL4.g:347:5: ',' 
     1947                                # src/ll/UL4.g:353:5: ',' 
    18881948                                pass  
    1889                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91695) 
     1949                                self.match(self.input, 34, self.FOLLOW_34_in_expr91726) 
    18901950 
    18911951 
     
    18941954 
    18951955                        elif alt27 == 4: 
    1896                             # src/ll/UL4.g:350:5: a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? 
     1956                            # src/ll/UL4.g:356:5: a1= exprarg ( ',' a2= exprarg )* ( ',' an3= name '=' av3= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? 
    18971957                            pass  
    1898                             self._state.following.append(self.FOLLOW_exprarg_in_expr91715) 
     1958                            self._state.following.append(self.FOLLOW_exprarg_in_expr91746) 
    18991959                            a1 = self.exprarg() 
    19001960 
     
    19071967 
    19081968 
    1909                             # src/ll/UL4.g:351:5: ( ',' a2= exprarg )* 
     1969                            # src/ll/UL4.g:357:5: ( ',' a2= exprarg )* 
    19101970                            while True: #loop18 
    19111971                                alt18 = 2 
     
    19291989 
    19301990                                if alt18 == 1: 
    1931                                     # src/ll/UL4.g:352:6: ',' a2= exprarg 
     1991                                    # src/ll/UL4.g:358:6: ',' a2= exprarg 
    19321992                                    pass  
    1933                                     self.match(self.input, 34, self.FOLLOW_34_in_expr91730) 
    1934  
    1935                                     self._state.following.append(self.FOLLOW_exprarg_in_expr91739) 
     1993                                    self.match(self.input, 34, self.FOLLOW_34_in_expr91761) 
     1994 
     1995                                    self._state.following.append(self.FOLLOW_exprarg_in_expr91770) 
    19361996                                    a2 = self.exprarg() 
    19371997 
     
    19492009 
    19502010 
    1951                             # src/ll/UL4.g:355:5: ( ',' an3= name '=' av3= exprarg )* 
     2011                            # src/ll/UL4.g:361:5: ( ',' an3= name '=' av3= exprarg )* 
    19522012                            while True: #loop19 
    19532013                                alt19 = 2 
     
    19642024 
    19652025                                if alt19 == 1: 
    1966                                     # src/ll/UL4.g:356:6: ',' an3= name '=' av3= exprarg 
     2026                                    # src/ll/UL4.g:362:6: ',' an3= name '=' av3= exprarg 
    19672027                                    pass  
    1968                                     self.match(self.input, 34, self.FOLLOW_34_in_expr91761) 
    1969  
    1970                                     self._state.following.append(self.FOLLOW_name_in_expr91770) 
     2028                                    self.match(self.input, 34, self.FOLLOW_34_in_expr91792) 
     2029 
     2030                                    self._state.following.append(self.FOLLOW_name_in_expr91801) 
    19712031                                    an3 = self.name() 
    19722032 
    19732033                                    self._state.following.pop() 
    19742034 
    1975                                     self.match(self.input, 45, self.FOLLOW_45_in_expr91772) 
    1976  
    1977                                     self._state.following.append(self.FOLLOW_exprarg_in_expr91776) 
     2035                                    self.match(self.input, 45, self.FOLLOW_45_in_expr91803) 
     2036 
     2037                                    self._state.following.append(self.FOLLOW_exprarg_in_expr91807) 
    19782038                                    av3 = self.exprarg() 
    19792039 
     
    19912051 
    19922052 
    1993                             # src/ll/UL4.g:359:5: ( ',' '*' rargs= exprarg )? 
     2053                            # src/ll/UL4.g:365:5: ( ',' '*' rargs= exprarg )? 
    19942054                            alt20 = 2 
    19952055                            LA20_0 = self.input.LA(1) 
     
    20012061                                    alt20 = 1 
    20022062                            if alt20 == 1: 
    2003                                 # src/ll/UL4.g:360:6: ',' '*' rargs= exprarg 
     2063                                # src/ll/UL4.g:366:6: ',' '*' rargs= exprarg 
    20042064                                pass  
    2005                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91798) 
    2006  
    2007                                 self.match(self.input, 29, self.FOLLOW_29_in_expr91805) 
    2008  
    2009                                 self._state.following.append(self.FOLLOW_exprarg_in_expr91809) 
     2065                                self.match(self.input, 34, self.FOLLOW_34_in_expr91829) 
     2066 
     2067                                self.match(self.input, 29, self.FOLLOW_29_in_expr91836) 
     2068 
     2069                                self._state.following.append(self.FOLLOW_exprarg_in_expr91840) 
    20102070                                rargs = self.exprarg() 
    20112071 
     
    20212081 
    20222082 
    2023                             # src/ll/UL4.g:363:5: ( ',' '**' rkwargs= exprarg )? 
     2083                            # src/ll/UL4.g:369:5: ( ',' '**' rkwargs= exprarg )? 
    20242084                            alt21 = 2 
    20252085                            LA21_0 = self.input.LA(1) 
     
    20312091                                    alt21 = 1 
    20322092                            if alt21 == 1: 
    2033                                 # src/ll/UL4.g:364:6: ',' '**' rkwargs= exprarg 
     2093                                # src/ll/UL4.g:370:6: ',' '**' rkwargs= exprarg 
    20342094                                pass  
    2035                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91831) 
    2036  
    2037                                 self.match(self.input, 30, self.FOLLOW_30_in_expr91838) 
    2038  
    2039                                 self._state.following.append(self.FOLLOW_exprarg_in_expr91842) 
     2095                                self.match(self.input, 34, self.FOLLOW_34_in_expr91862) 
     2096 
     2097                                self.match(self.input, 30, self.FOLLOW_30_in_expr91869) 
     2098 
     2099                                self._state.following.append(self.FOLLOW_exprarg_in_expr91873) 
    20402100                                rkwargs = self.exprarg() 
    20412101 
     
    20512111 
    20522112 
    2053                             # src/ll/UL4.g:367:5: ( ',' )? 
     2113                            # src/ll/UL4.g:373:5: ( ',' )? 
    20542114                            alt22 = 2 
    20552115                            LA22_0 = self.input.LA(1) 
     
    20582118                                alt22 = 1 
    20592119                            if alt22 == 1: 
    2060                                 # src/ll/UL4.g:367:5: ',' 
     2120                                # src/ll/UL4.g:373:5: ',' 
    20612121                                pass  
    2062                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91857) 
     2122                                self.match(self.input, 34, self.FOLLOW_34_in_expr91888) 
    20632123 
    20642124 
     
    20672127 
    20682128                        elif alt27 == 5: 
    2069                             # src/ll/UL4.g:370:5: an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? 
     2129                            # src/ll/UL4.g:376:5: an1= name '=' av1= exprarg ( ',' an2= name '=' av2= exprarg )* ( ',' '*' rargs= exprarg )? ( ',' '**' rkwargs= exprarg )? ( ',' )? 
    20702130                            pass  
    2071                             self._state.following.append(self.FOLLOW_name_in_expr91877) 
     2131                            self._state.following.append(self.FOLLOW_name_in_expr91908) 
    20722132                            an1 = self.name() 
    20732133 
    20742134                            self._state.following.pop() 
    20752135 
    2076                             self.match(self.input, 45, self.FOLLOW_45_in_expr91879) 
    2077  
    2078                             self._state.following.append(self.FOLLOW_exprarg_in_expr91883) 
     2136                            self.match(self.input, 45, self.FOLLOW_45_in_expr91910) 
     2137 
     2138                            self._state.following.append(self.FOLLOW_exprarg_in_expr91914) 
    20792139                            av1 = self.exprarg() 
    20802140 
     
    20872147 
    20882148 
    2089                             # src/ll/UL4.g:371:5: ( ',' an2= name '=' av2= exprarg )* 
     2149                            # src/ll/UL4.g:377:5: ( ',' an2= name '=' av2= exprarg )* 
    20902150                            while True: #loop23 
    20912151                                alt23 = 2 
     
    21022162 
    21032163                                if alt23 == 1: 
    2104                                     # src/ll/UL4.g:372:6: ',' an2= name '=' av2= exprarg 
     2164                                    # src/ll/UL4.g:378:6: ',' an2= name '=' av2= exprarg 
    21052165                                    pass  
    2106                                     self.match(self.input, 34, self.FOLLOW_34_in_expr91898) 
    2107  
    2108                                     self._state.following.append(self.FOLLOW_name_in_expr91907) 
     2166                                    self.match(self.input, 34, self.FOLLOW_34_in_expr91929) 
     2167 
     2168                                    self._state.following.append(self.FOLLOW_name_in_expr91938) 
    21092169                                    an2 = self.name() 
    21102170 
    21112171                                    self._state.following.pop() 
    21122172 
    2113                                     self.match(self.input, 45, self.FOLLOW_45_in_expr91909) 
    2114  
    2115                                     self._state.following.append(self.FOLLOW_exprarg_in_expr91913) 
     2173                                    self.match(self.input, 45, self.FOLLOW_45_in_expr91940) 
     2174 
     2175                                    self._state.following.append(self.FOLLOW_exprarg_in_expr91944) 
    21162176                                    av2 = self.exprarg() 
    21172177 
     
    21292189 
    21302190 
    2131                             # src/ll/UL4.g:375:5: ( ',' '*' rargs= exprarg )? 
     2191                            # src/ll/UL4.g:381:5: ( ',' '*' rargs= exprarg )? 
    21322192                            alt24 = 2 
    21332193                            LA24_0 = self.input.LA(1) 
     
    21392199                                    alt24 = 1 
    21402200                            if alt24 == 1: 
    2141                                 # src/ll/UL4.g:376:6: ',' '*' rargs= exprarg 
     2201                                # src/ll/UL4.g:382:6: ',' '*' rargs= exprarg 
    21422202                                pass  
    2143                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91935) 
    2144  
    2145                                 self.match(self.input, 29, self.FOLLOW_29_in_expr91942) 
    2146  
    2147                                 self._state.following.append(self.FOLLOW_exprarg_in_expr91946) 
     2203                                self.match(self.input, 34, self.FOLLOW_34_in_expr91966) 
     2204 
     2205                                self.match(self.input, 29, self.FOLLOW_29_in_expr91973) 
     2206 
     2207                                self._state.following.append(self.FOLLOW_exprarg_in_expr91977) 
    21482208                                rargs = self.exprarg() 
    21492209 
     
    21592219 
    21602220 
    2161                             # src/ll/UL4.g:379:5: ( ',' '**' rkwargs= exprarg )? 
     2221                            # src/ll/UL4.g:385:5: ( ',' '**' rkwargs= exprarg )? 
    21622222                            alt25 = 2 
    21632223                            LA25_0 = self.input.LA(1) 
     
    21692229                                    alt25 = 1 
    21702230                            if alt25 == 1: 
    2171                                 # src/ll/UL4.g:380:6: ',' '**' rkwargs= exprarg 
     2231                                # src/ll/UL4.g:386:6: ',' '**' rkwargs= exprarg 
    21722232                                pass  
    2173                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91968) 
    2174  
    2175                                 self.match(self.input, 30, self.FOLLOW_30_in_expr91975) 
    2176  
    2177                                 self._state.following.append(self.FOLLOW_exprarg_in_expr91979) 
     2233                                self.match(self.input, 34, self.FOLLOW_34_in_expr91999) 
     2234 
     2235                                self.match(self.input, 30, self.FOLLOW_30_in_expr92006) 
     2236 
     2237                                self._state.following.append(self.FOLLOW_exprarg_in_expr92010) 
    21782238                                rkwargs = self.exprarg() 
    21792239 
     
    21892249 
    21902250 
    2191                             # src/ll/UL4.g:383:5: ( ',' )? 
     2251                            # src/ll/UL4.g:389:5: ( ',' )? 
    21922252                            alt26 = 2 
    21932253                            LA26_0 = self.input.LA(1) 
     
    21962256                                alt26 = 1 
    21972257                            if alt26 == 1: 
    2198                                 # src/ll/UL4.g:383:5: ',' 
     2258                                # src/ll/UL4.g:389:5: ',' 
    21992259                                pass  
    2200                                 self.match(self.input, 34, self.FOLLOW_34_in_expr91994) 
    2201  
    2202  
    2203  
    2204  
    2205  
    2206  
    2207  
    2208                         self.match(self.input, 28, self.FOLLOW_28_in_expr92005) 
     2260                                self.match(self.input, 34, self.FOLLOW_34_in_expr92025) 
     2261 
     2262 
     2263 
     2264 
     2265 
     2266 
     2267 
     2268                        paren_close = self.match(self.input, 28, self.FOLLOW_28_in_expr92038) 
     2269 
     2270                        if self._state.backtracking == 0: 
     2271                            pass 
     2272                            node.end = self.end(paren_close)  
     2273 
     2274 
    22092275 
    22102276 
    22112277                    elif alt32 == 3: 
    2212                         # src/ll/UL4.g:388:4: '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) ']' 
     2278                        # src/ll/UL4.g:394:4: '[' ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) bracket_close= ']' 
    22132279                        pass  
    2214                         self.match(self.input, 49, self.FOLLOW_49_in_expr92019) 
    2215  
    2216                         # src/ll/UL4.g:389:4: ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) 
     2280                        self.match(self.input, 49, self.FOLLOW_49_in_expr92054) 
     2281 
     2282                        # src/ll/UL4.g:395:4: ( ':' (e2= expr1 )? |e2= expr1 ( ':' (e3= expr1 )? )? ) 
    22172283                        alt31 = 2 
    22182284                        LA31_0 = self.input.LA(1) 
     
    22332299 
    22342300                        if alt31 == 1: 
    2235                             # src/ll/UL4.g:390:5: ':' (e2= expr1 )? 
     2301                            # src/ll/UL4.g:396:5: ':' (e2= expr1 )? 
    22362302                            pass  
    2237                             self.match(self.input, 42, self.FOLLOW_42_in_expr92030) 
    2238  
    2239                             # src/ll/UL4.g:391:5: (e2= expr1 )? 
     2303                            self.match(self.input, 42, self.FOLLOW_42_in_expr92065) 
     2304 
     2305                            # src/ll/UL4.g:397:5: (e2= expr1 )? 
    22402306                            alt28 = 2 
    22412307                            LA28_0 = self.input.LA(1) 
     
    22442310                                alt28 = 1 
    22452311                            if alt28 == 1: 
    2246                                 # src/ll/UL4.g:392:6: e2= expr1 
     2312                                # src/ll/UL4.g:398:6: e2= expr1 
    22472313                                pass  
    2248                                 self._state.following.append(self.FOLLOW_expr1_in_expr92045) 
     2314                                self._state.following.append(self.FOLLOW_expr1_in_expr92080) 
    22492315                                e2 = self.expr1() 
    22502316 
     
    22622328                            if self._state.backtracking == 0: 
    22632329                                pass 
    2264                                 node = ul4c.GetSlice(self.location, node, None, index2)  
     2330                                node = ul4c.GetSlice(self.location, node.start, None, node, None, index2)  
    22652331 
    22662332 
     
    22682334 
    22692335                        elif alt31 == 2: 
    2270                             # src/ll/UL4.g:395:5: e2= expr1 ( ':' (e3= expr1 )? )? 
     2336                            # src/ll/UL4.g:401:5: e2= expr1 ( ':' (e3= expr1 )? )? 
    22712337                            pass  
    2272                             self._state.following.append(self.FOLLOW_expr1_in_expr92069) 
     2338                            self._state.following.append(self.FOLLOW_expr1_in_expr92104) 
    22732339                            e2 = self.expr1() 
    22742340 
     
    22812347 
    22822348 
    2283                             # src/ll/UL4.g:396:5: ( ':' (e3= expr1 )? )? 
     2349                            # src/ll/UL4.g:402:5: ( ':' (e3= expr1 )? )? 
    22842350                            alt30 = 2 
    22852351                            LA30_0 = self.input.LA(1) 
     
    22882354                                alt30 = 1 
    22892355                            if alt30 == 1: 
    2290                                 # src/ll/UL4.g:397:6: ':' (e3= expr1 )? 
     2356                                # src/ll/UL4.g:403:6: ':' (e3= expr1 )? 
    22912357                                pass  
    2292                                 self.match(self.input, 42, self.FOLLOW_42_in_expr92084) 
     2358                                self.match(self.input, 42, self.FOLLOW_42_in_expr92119) 
    22932359 
    22942360                                if self._state.backtracking == 0: 
     
    22982364 
    22992365 
    2300                                 # src/ll/UL4.g:398:6: (e3= expr1 )? 
     2366                                # src/ll/UL4.g:404:6: (e3= expr1 )? 
    23012367                                alt29 = 2 
    23022368                                LA29_0 = self.input.LA(1) 
     
    23052371                                    alt29 = 1 
    23062372                                if alt29 == 1: 
    2307                                     # src/ll/UL4.g:399:7: e3= expr1 
     2373                                    # src/ll/UL4.g:405:7: e3= expr1 
    23082374                                    pass  
    2309                                     self._state.following.append(self.FOLLOW_expr1_in_expr92103) 
     2375                                    self._state.following.append(self.FOLLOW_expr1_in_expr92138) 
    23102376                                    e3 = self.expr1() 
    23112377 
     
    23262392                            if self._state.backtracking == 0: 
    23272393                                pass 
    2328                                 node = ul4c.GetSlice(self.location, node, index1, index2) if slice else ul4c.GetItem(self.location, node, index1)  
    2329  
    2330  
    2331  
    2332  
    2333  
    2334  
    2335                         self.match(self.input, 50, self.FOLLOW_50_in_expr92132) 
     2394                                node = ul4c.GetSlice(self.location, node.start, None, node, index1, index2) if slice else ul4c.GetItem(self.location, e1.start, None, node, index1)  
     2395 
     2396 
     2397 
     2398 
     2399 
     2400 
     2401                        bracket_close = self.match(self.input, 50, self.FOLLOW_50_in_expr92169) 
     2402 
     2403                        if self._state.backtracking == 0: 
     2404                            pass 
     2405                            node.end = self.end(bracket_close)  
     2406 
     2407 
    23362408 
    23372409 
     
    23562428 
    23572429    # $ANTLR start "expr8" 
    2358     # src/ll/UL4.g:408:1: expr8 returns [node] : ( '-' )* e= expr9 ; 
     2430    # src/ll/UL4.g:414:1: expr8 returns [node] : (e1= expr9 |minus= '-' e2= expr8 ); 
    23592431    def expr8(self, ): 
    23602432        node = None 
    23612433 
    23622434 
    2363         e = None 
    2364  
    2365  
    2366           
    2367         count = 0; 
    2368              
     2435        minus = None 
     2436        e1 = None 
     2437 
     2438        e2 = None 
     2439 
     2440 
    23692441        try: 
    23702442            try: 
    2371                 # src/ll/UL4.g:413:2: ( ( '-' )* e= expr9 ) 
    2372                 # src/ll/UL4.g:414:3: ( '-' )* e= expr9 
    2373                 pass  
    2374                 # src/ll/UL4.g:414:3: ( '-' )* 
    2375                 while True: #loop33 
     2443                # src/ll/UL4.g:415:2: (e1= expr9 |minus= '-' e2= expr8 ) 
     2444                alt33 = 2 
     2445                LA33_0 = self.input.LA(1) 
     2446 
     2447                if ((COLOR <= LA33_0 <= DATE) or (FALSE <= LA33_0 <= FLOAT) or (INT <= LA33_0 <= NONE) or LA33_0 == STRING or LA33_0 == TRUE or LA33_0 == 27 or LA33_0 == 49 or LA33_0 == 57) : 
     2448                    alt33 = 1 
     2449                elif (LA33_0 == 35) : 
    23762450                    alt33 = 2 
    2377                     LA33_0 = self.input.LA(1) 
    2378  
    2379                     if (LA33_0 == 35) : 
    2380                         alt33 = 1 
    2381  
    2382  
    2383                     if alt33 == 1: 
    2384                         # src/ll/UL4.g:415:4: '-' 
    2385                         pass  
    2386                         self.match(self.input, 35, self.FOLLOW_35_in_expr82168) 
    2387  
    2388                         if self._state.backtracking == 0: 
    2389                             pass 
    2390                             count += 1;  
    2391  
    2392  
    2393  
    2394  
    2395                     else: 
    2396                         break #loop33 
    2397  
    2398  
    2399                 self._state.following.append(self.FOLLOW_expr9_in_expr82181) 
    2400                 e = self.expr9() 
    2401  
    2402                 self._state.following.pop() 
    2403  
    2404                 if self._state.backtracking == 0: 
    2405                     pass 
    2406                                
    2407                     node =  e 
    2408                     for i in range(count): 
    2409                         node =  ul4c.Neg.make(self.location, node) 
    2410                              
    2411  
     2451                else: 
     2452                    if self._state.backtracking > 0: 
     2453                        raise BacktrackingFailed 
     2454 
     2455 
     2456                    nvae = NoViableAltException("", 33, 0, self.input) 
     2457 
     2458                    raise nvae 
     2459 
     2460 
     2461                if alt33 == 1: 
     2462                    # src/ll/UL4.g:416:3: e1= expr9 
     2463                    pass  
     2464                    self._state.following.append(self.FOLLOW_expr9_in_expr82197) 
     2465                    e1 = self.expr9() 
     2466 
     2467                    self._state.following.pop() 
     2468 
     2469                    if self._state.backtracking == 0: 
     2470                        pass 
     2471                        node =  e1  
     2472 
     2473 
     2474 
     2475 
     2476                elif alt33 == 2: 
     2477                    # src/ll/UL4.g:418:3: minus= '-' e2= expr8 
     2478                    pass  
     2479                    minus = self.match(self.input, 35, self.FOLLOW_35_in_expr82208) 
     2480 
     2481                    self._state.following.append(self.FOLLOW_expr8_in_expr82212) 
     2482                    e2 = self.expr8() 
     2483 
     2484                    self._state.following.pop() 
     2485 
     2486                    if self._state.backtracking == 0: 
     2487                        pass 
     2488                        node = ul4c.Neg.make(self.location, self.start(minus), e2.end, e2)  
    24122489 
    24132490 
     
    24282505 
    24292506    # $ANTLR start "expr7" 
    2430     # src/ll/UL4.g:425:1: expr7 returns [node] : e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* ; 
     2507    # src/ll/UL4.g:422:1: expr7 returns [node] : e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* ; 
    24312508    def expr7(self, ): 
    24322509        node = None 
     
    24402517        try: 
    24412518            try: 
    2442                 # src/ll/UL4.g:426:2: (e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* ) 
    2443                 # src/ll/UL4.g:427:3: e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* 
     2519                # src/ll/UL4.g:423:2: (e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* ) 
     2520                # src/ll/UL4.g:424:3: e1= expr8 ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* 
    24442521                pass  
    2445                 self._state.following.append(self.FOLLOW_expr8_in_expr72204) 
     2522                self._state.following.append(self.FOLLOW_expr8_in_expr72235) 
    24462523                e1 = self.expr8() 
    24472524 
     
    24542531 
    24552532 
    2456                 # src/ll/UL4.g:428:3: ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* 
     2533                # src/ll/UL4.g:425:3: ( ( '*' | '/' | '//' | '%' ) e2= expr8 )* 
    24572534                while True: #loop35 
    24582535                    alt35 = 2 
     
    24642541 
    24652542                    if alt35 == 1: 
    2466                         # src/ll/UL4.g:429:4: ( '*' | '/' | '//' | '%' ) e2= expr8 
     2543                        # src/ll/UL4.g:426:4: ( '*' | '/' | '//' | '%' ) e2= expr8 
    24672544                        pass  
    2468                         # src/ll/UL4.g:429:4: ( '*' | '/' | '//' | '%' ) 
     2545                        # src/ll/UL4.g:426:4: ( '*' | '/' | '//' | '%' ) 
    24692546                        alt34 = 4 
    24702547                        LA34 = self.input.LA(1) 
     
    24882565 
    24892566                        if alt34 == 1: 
    2490                             # src/ll/UL4.g:430:5: '*' 
     2567                            # src/ll/UL4.g:427:5: '*' 
    24912568                            pass  
    2492                             self.match(self.input, 29, self.FOLLOW_29_in_expr72221) 
     2569                            self.match(self.input, 29, self.FOLLOW_29_in_expr72252) 
    24932570 
    24942571                            if self._state.backtracking == 0: 
     
    25002577 
    25012578                        elif alt34 == 2: 
    2502                             # src/ll/UL4.g:432:5: '/' 
     2579                            # src/ll/UL4.g:429:5: '/' 
    25032580                            pass  
    2504                             self.match(self.input, 38, self.FOLLOW_38_in_expr72234) 
     2581                            self.match(self.input, 38, self.FOLLOW_38_in_expr72265) 
    25052582 
    25062583                            if self._state.backtracking == 0: 
     
    25122589 
    25132590                        elif alt34 == 3: 
    2514                             # src/ll/UL4.g:434:5: '//' 
     2591                            # src/ll/UL4.g:431:5: '//' 
    25152592                            pass  
    2516                             self.match(self.input, 39, self.FOLLOW_39_in_expr72247) 
     2593                            self.match(self.input, 39, self.FOLLOW_39_in_expr72278) 
    25172594 
    25182595                            if self._state.backtracking == 0: 
     
    25242601 
    25252602                        elif alt34 == 4: 
    2526                             # src/ll/UL4.g:436:5: '%' 
     2603                            # src/ll/UL4.g:433:5: '%' 
    25272604                            pass  
    2528                             self.match(self.input, 25, self.FOLLOW_25_in_expr72260) 
     2605                            self.match(self.input, 25, self.FOLLOW_25_in_expr72291) 
    25292606 
    25302607                            if self._state.backtracking == 0: 
     
    25372614 
    25382615 
    2539                         self._state.following.append(self.FOLLOW_expr8_in_expr72274) 
     2616                        self._state.following.append(self.FOLLOW_expr8_in_expr72305) 
    25402617                        e2 = self.expr8() 
    25412618 
     
    25442621                        if self._state.backtracking == 0: 
    25452622                            pass 
    2546                             node = cls.make(self.location, node, e2)  
     2623                            node = cls.make(self.location, node.start, e2.end, node, e2)  
    25472624 
    25482625 
     
    25692646 
    25702647    # $ANTLR start "expr6" 
    2571     # src/ll/UL4.g:443:1: expr6 returns [node] : e1= expr7 ( ( '+' | '-' ) e2= expr7 )* ; 
     2648    # src/ll/UL4.g:440:1: expr6 returns [node] : e1= expr7 ( ( '+' | '-' ) e2= expr7 )* ; 
    25722649    def expr6(self, ): 
    25732650        node = None 
     
    25812658        try: 
    25822659            try: 
    2583                 # src/ll/UL4.g:444:2: (e1= expr7 ( ( '+' | '-' ) e2= expr7 )* ) 
    2584                 # src/ll/UL4.g:445:3: e1= expr7 ( ( '+' | '-' ) e2= expr7 )* 
     2660                # src/ll/UL4.g:441:2: (e1= expr7 ( ( '+' | '-' ) e2= expr7 )* ) 
     2661                # src/ll/UL4.g:442:3: e1= expr7 ( ( '+' | '-' ) e2= expr7 )* 
    25852662                pass  
    2586                 self._state.following.append(self.FOLLOW_expr7_in_expr62302) 
     2663                self._state.following.append(self.FOLLOW_expr7_in_expr62333) 
    25872664                e1 = self.expr7() 
    25882665 
     
    25952672 
    25962673 
    2597                 # src/ll/UL4.g:446:3: ( ( '+' | '-' ) e2= expr7 )* 
     2674                # src/ll/UL4.g:443:3: ( ( '+' | '-' ) e2= expr7 )* 
    25982675                while True: #loop37 
    25992676                    alt37 = 2 
     
    26052682 
    26062683                    if alt37 == 1: 
    2607                         # src/ll/UL4.g:447:4: ( '+' | '-' ) e2= expr7 
     2684                        # src/ll/UL4.g:444:4: ( '+' | '-' ) e2= expr7 
    26082685                        pass  
    2609                         # src/ll/UL4.g:447:4: ( '+' | '-' ) 
     2686                        # src/ll/UL4.g:444:4: ( '+' | '-' ) 
    26102687                        alt36 = 2 
    26112688                        LA36_0 = self.input.LA(1) 
     
    26262703 
    26272704                        if alt36 == 1: 
    2628                             # src/ll/UL4.g:448:5: '+' 
     2705                            # src/ll/UL4.g:445:5: '+' 
    26292706                            pass  
    2630                             self.match(self.input, 32, self.FOLLOW_32_in_expr62319) 
     2707                            self.match(self.input, 32, self.FOLLOW_32_in_expr62350) 
    26312708 
    26322709                            if self._state.backtracking == 0: 
     
    26382715 
    26392716                        elif alt36 == 2: 
    2640                             # src/ll/UL4.g:450:5: '-' 
     2717                            # src/ll/UL4.g:447:5: '-' 
    26412718                            pass  
    2642                             self.match(self.input, 35, self.FOLLOW_35_in_expr62332) 
     2719                            self.match(self.input, 35, self.FOLLOW_35_in_expr62363) 
    26432720 
    26442721                            if self._state.backtracking == 0: 
     
    26512728 
    26522729 
    2653                         self._state.following.append(self.FOLLOW_expr7_in_expr62346) 
     2730                        self._state.following.append(self.FOLLOW_expr7_in_expr62377) 
    26542731                        e2 = self.expr7() 
    26552732 
     
    26582735                        if self._state.backtracking == 0: 
    26592736                            pass 
    2660                             node = cls.make(self.location, node, e2)  
     2737                            node = cls.make(self.location, node.start, e2.end, node, e2)  
    26612738 
    26622739 
     
    26832760 
    26842761    # $ANTLR start "expr5" 
    2685     # src/ll/UL4.g:457:1: expr5 returns [node] : e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* ; 
     2762    # src/ll/UL4.g:454:1: expr5 returns [node] : e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* ; 
    26862763    def expr5(self, ): 
    26872764        node = None 
     
    26952772        try: 
    26962773            try: 
    2697                 # src/ll/UL4.g:458:2: (e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* ) 
    2698                 # src/ll/UL4.g:459:3: e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* 
     2774                # src/ll/UL4.g:455:2: (e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* ) 
     2775                # src/ll/UL4.g:456:3: e1= expr6 ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* 
    26992776                pass  
    2700                 self._state.following.append(self.FOLLOW_expr6_in_expr52374) 
     2777                self._state.following.append(self.FOLLOW_expr6_in_expr52405) 
    27012778                e1 = self.expr6() 
    27022779 
     
    27092786 
    27102787 
    2711                 # src/ll/UL4.g:460:3: ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* 
     2788                # src/ll/UL4.g:457:3: ( ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 )* 
    27122789                while True: #loop39 
    27132790                    alt39 = 2 
     
    27192796 
    27202797                    if alt39 == 1: 
    2721                         # src/ll/UL4.g:461:4: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 
     2798                        # src/ll/UL4.g:458:4: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) e2= expr6 
    27222799                        pass  
    2723                         # src/ll/UL4.g:461:4: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) 
     2800                        # src/ll/UL4.g:458:4: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) 
    27242801                        alt38 = 6 
    27252802                        LA38 = self.input.LA(1) 
     
    27472824 
    27482825                        if alt38 == 1: 
    2749                             # src/ll/UL4.g:462:5: '==' 
     2826                            # src/ll/UL4.g:459:5: '==' 
    27502827                            pass  
    2751                             self.match(self.input, 46, self.FOLLOW_46_in_expr52391) 
     2828                            self.match(self.input, 46, self.FOLLOW_46_in_expr52422) 
    27522829 
    27532830                            if self._state.backtracking == 0: 
     
    27592836 
    27602837                        elif alt38 == 2: 
    2761                             # src/ll/UL4.g:464:5: '!=' 
     2838                            # src/ll/UL4.g:461:5: '!=' 
    27622839                            pass  
    2763                             self.match(self.input, 24, self.FOLLOW_24_in_expr52404) 
     2840                            self.match(self.input, 24, self.FOLLOW_24_in_expr52435) 
    27642841 
    27652842                            if self._state.backtracking == 0: 
     
    27712848 
    27722849                        elif alt38 == 3: 
    2773                             # src/ll/UL4.g:466:5: '<' 
     2850                            # src/ll/UL4.g:463:5: '<' 
    27742851                            pass  
    2775                             self.match(self.input, 43, self.FOLLOW_43_in_expr52417) 
     2852                            self.match(self.input, 43, self.FOLLOW_43_in_expr52448) 
    27762853 
    27772854                            if self._state.backtracking == 0: 
     
    27832860 
    27842861                        elif alt38 == 4: 
    2785                             # src/ll/UL4.g:468:5: '<=' 
     2862                            # src/ll/UL4.g:465:5: '<=' 
    27862863                            pass  
    2787                             self.match(self.input, 44, self.FOLLOW_44_in_expr52430) 
     2864                            self.match(self.input, 44, self.FOLLOW_44_in_expr52461) 
    27882865 
    27892866                            if self._state.backtracking == 0: 
     
    27952872 
    27962873                        elif alt38 == 5: 
    2797                             # src/ll/UL4.g:470:5: '>' 
     2874                            # src/ll/UL4.g:467:5: '>' 
    27982875                            pass  
    2799                             self.match(self.input, 47, self.FOLLOW_47_in_expr52443) 
     2876                            self.match(self.input, 47, self.FOLLOW_47_in_expr52474) 
    28002877 
    28012878                            if self._state.backtracking == 0: 
     
    28072884 
    28082885                        elif alt38 == 6: 
    2809                             # src/ll/UL4.g:472:5: '>=' 
     2886                            # src/ll/UL4.g:469:5: '>=' 
    28102887                            pass  
    2811                             self.match(self.input, 48, self.FOLLOW_48_in_expr52456) 
     2888                            self.match(self.input, 48, self.FOLLOW_48_in_expr52487) 
    28122889 
    28132890                            if self._state.backtracking == 0: 
     
    28202897 
    28212898 
    2822                         self._state.following.append(self.FOLLOW_expr6_in_expr52470) 
     2899                        self._state.following.append(self.FOLLOW_expr6_in_expr52501) 
    28232900                        e2 = self.expr6() 
    28242901 
     
    28272904                        if self._state.backtracking == 0: 
    28282905                            pass 
    2829                             node = cls.make(self.location, node, e2)  
     2906                            node = cls.make(self.location, node.start, e2.end, node, e2)  
    28302907 
    28312908 
     
    28522929 
    28532930    # $ANTLR start "expr4" 
    2854     # src/ll/UL4.g:479:1: expr4 returns [node] : e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? ; 
     2931    # src/ll/UL4.g:476:1: expr4 returns [node] : e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? ; 
    28552932    def expr4(self, ): 
    28562933        node = None 
     
    28642941        try: 
    28652942            try: 
    2866                 # src/ll/UL4.g:480:2: (e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? ) 
    2867                 # src/ll/UL4.g:481:3: e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? 
     2943                # src/ll/UL4.g:477:2: (e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? ) 
     2944                # src/ll/UL4.g:478:3: e1= expr5 ( ( 'not' )? 'in' e2= expr5 )? 
    28682945                pass  
    2869                 self._state.following.append(self.FOLLOW_expr5_in_expr42498) 
     2946                self._state.following.append(self.FOLLOW_expr5_in_expr42529) 
    28702947                e1 = self.expr5() 
    28712948 
     
    28742951                if self._state.backtracking == 0: 
    28752952                    pass 
    2876                     node =  e1  
    2877  
    2878  
    2879  
    2880                 # src/ll/UL4.g:482:3: ( ( 'not' )? 'in' e2= expr5 )? 
     2953                    node = e1  
     2954 
     2955 
     2956 
     2957                # src/ll/UL4.g:479:3: ( ( 'not' )? 'in' e2= expr5 )? 
    28812958                alt41 = 2 
    28822959                LA41_0 = self.input.LA(1) 
     
    28852962                    alt41 = 1 
    28862963                if alt41 == 1: 
    2887                     # src/ll/UL4.g:483:4: ( 'not' )? 'in' e2= expr5 
     2964                    # src/ll/UL4.g:480:4: ( 'not' )? 'in' e2= expr5 
    28882965                    pass  
    28892966                    if self._state.backtracking == 0: 
    28902967                        pass 
    2891                         cls = ul4c.Contains;  
    2892  
    2893  
    2894  
    2895                     # src/ll/UL4.g:484:4: ( 'not' )? 
     2968                        cls = ul4c.Contains  
     2969 
     2970 
     2971 
     2972                    # src/ll/UL4.g:481:4: ( 'not' )? 
    28962973                    alt40 = 2 
    28972974                    LA40_0 = self.input.LA(1) 
     
    29002977                        alt40 = 1 
    29012978                    if alt40 == 1: 
    2902                         # src/ll/UL4.g:485:5: 'not' 
     2979                        # src/ll/UL4.g:482:5: 'not' 
    29032980                        pass  
    2904                         self.match(self.input, 55, self.FOLLOW_55_in_expr42520) 
     2981                        self.match(self.input, 55, self.FOLLOW_55_in_expr42551) 
    29052982 
    29062983                        if self._state.backtracking == 0: 
    29072984                            pass 
    2908                             cls = ul4c.NotContains;  
    2909  
    2910  
    2911  
    2912  
    2913  
    2914  
    2915                     self.match(self.input, 54, self.FOLLOW_54_in_expr42533) 
    2916  
    2917                     self._state.following.append(self.FOLLOW_expr5_in_expr42540) 
     2985                            cls = ul4c.NotContains  
     2986 
     2987 
     2988 
     2989 
     2990 
     2991 
     2992                    self.match(self.input, 54, self.FOLLOW_54_in_expr42564) 
     2993 
     2994                    self._state.following.append(self.FOLLOW_expr5_in_expr42571) 
    29182995                    e2 = self.expr5() 
    29192996 
     
    29222999                    if self._state.backtracking == 0: 
    29233000                        pass 
    2924                         node = cls.make(self.location, node, e2)  
     3001                        node = cls.make(self.location, node.start, e2.end, node, e2)  
    29253002 
    29263003 
     
    29453022 
    29463023    # $ANTLR start "expr3" 
    2947     # src/ll/UL4.g:493:1: expr3 returns [node] : ( 'not' e= expr4 |e= expr4 ); 
     3024    # src/ll/UL4.g:490:1: expr3 returns [node] : (e1= expr4 |n= 'not' e2= expr3 ); 
    29483025    def expr3(self, ): 
    29493026        node = None 
    29503027 
    29513028 
    2952         e = None 
     3029        n = None 
     3030        e1 = None 
     3031 
     3032        e2 = None 
    29533033 
    29543034 
    29553035        try: 
    29563036            try: 
    2957                 # src/ll/UL4.g:494:2: ( 'not' e= expr4 |e= expr4 ) 
     3037                # src/ll/UL4.g:491:2: (e1= expr4 |n= 'not' e2= expr3 ) 
    29583038                alt42 = 2 
    29593039                LA42_0 = self.input.LA(1) 
    29603040 
    2961                 if (LA42_0 == 55) : 
     3041                if ((COLOR <= LA42_0 <= DATE) or (FALSE <= LA42_0 <= FLOAT) or (INT <= LA42_0 <= NONE) or LA42_0 == STRING or LA42_0 == TRUE or LA42_0 == 27 or LA42_0 == 35 or LA42_0 == 49 or LA42_0 == 57) : 
    29623042                    alt42 = 1 
    2963                 elif ((COLOR <= LA42_0 <= DATE) or (FALSE <= LA42_0 <= FLOAT) or (INT <= LA42_0 <= NONE) or LA42_0 == STRING or LA42_0 == TRUE or LA42_0 == 27 or LA42_0 == 35 or LA42_0 == 49 or LA42_0 == 57) : 
     3043                elif (LA42_0 == 55) : 
    29643044                    alt42 = 2 
    29653045                else: 
     
    29743054 
    29753055                if alt42 == 1: 
    2976                     # src/ll/UL4.g:495:3: 'not' e= expr4 
     3056                    # src/ll/UL4.g:492:3: e1= expr4 
    29773057                    pass  
    2978                     self.match(self.input, 55, self.FOLLOW_55_in_expr32566) 
    2979  
    2980                     self._state.following.append(self.FOLLOW_expr4_in_expr32572) 
    2981                     e = self.expr4() 
     3058                    self._state.following.append(self.FOLLOW_expr4_in_expr32599) 
     3059                    e1 = self.expr4() 
    29823060 
    29833061                    self._state.following.pop() 
     
    29853063                    if self._state.backtracking == 0: 
    29863064                        pass 
    2987                         node = ul4c.Not.make(self.location, e)  
     3065                        node =  e1  
    29883066 
    29893067 
     
    29913069 
    29923070                elif alt42 == 2: 
    2993                     # src/ll/UL4.g:498:3: e= expr4 
     3071                    # src/ll/UL4.g:494:3: n= 'not' e2= expr3 
    29943072                    pass  
    2995                     self._state.following.append(self.FOLLOW_expr4_in_expr32583) 
    2996                     e = self.expr4() 
     3073                    n = self.match(self.input, 55, self.FOLLOW_55_in_expr32610) 
     3074 
     3075                    self._state.following.append(self.FOLLOW_expr3_in_expr32614) 
     3076                    e2 = self.expr3() 
    29973077 
    29983078                    self._state.following.pop() 
     
    30003080                    if self._state.backtracking == 0: 
    30013081                        pass 
    3002                         node =  e  
     3082                        node = ul4c.Not.make(self.location, self.start(n), e2.end, e2)  
    30033083 
    30043084 
     
    30193099 
    30203100    # $ANTLR start "expr2" 
    3021     # src/ll/UL4.g:503:1: expr2 returns [node] : e1= expr3 ( 'and' e2= expr3 )* ; 
     3101    # src/ll/UL4.g:499:1: expr2 returns [node] : e1= expr3 ( 'and' e2= expr3 )* ; 
    30223102    def expr2(self, ): 
    30233103        node = None 
     
    30313111        try: 
    30323112            try: 
    3033                 # src/ll/UL4.g:504:2: (e1= expr3 ( 'and' e2= expr3 )* ) 
    3034                 # src/ll/UL4.g:505:3: e1= expr3 ( 'and' e2= expr3 )* 
     3113                # src/ll/UL4.g:500:2: (e1= expr3 ( 'and' e2= expr3 )* ) 
     3114                # src/ll/UL4.g:501:3: e1= expr3 ( 'and' e2= expr3 )* 
    30353115                pass  
    3036                 self._state.following.append(self.FOLLOW_expr3_in_expr22607) 
     3116                self._state.following.append(self.FOLLOW_expr3_in_expr22638) 
    30373117                e1 = self.expr3() 
    30383118 
     
    30453125 
    30463126 
    3047                 # src/ll/UL4.g:506:3: ( 'and' e2= expr3 )* 
     3127                # src/ll/UL4.g:502:3: ( 'and' e2= expr3 )* 
    30483128                while True: #loop43 
    30493129                    alt43 = 2 
     
    30553135 
    30563136                    if alt43 == 1: 
    3057                         # src/ll/UL4.g:507:4: 'and' e2= expr3 
     3137                        # src/ll/UL4.g:503:4: 'and' e2= expr3 
    30583138                        pass  
    3059                         self.match(self.input, 51, self.FOLLOW_51_in_expr22618) 
    3060  
    3061                         self._state.following.append(self.FOLLOW_expr3_in_expr22625) 
     3139                        self.match(self.input, 51, self.FOLLOW_51_in_expr22649) 
     3140 
     3141                        self._state.following.append(self.FOLLOW_expr3_in_expr22656) 
    30623142                        e2 = self.expr3() 
    30633143 
     
    30663146                        if self._state.backtracking == 0: 
    30673147                            pass 
    3068                             node = ul4c.And(self.location, node, e2)  
     3148                            node = ul4c.And(self.location, node.start, e2.end, node, e2)  
    30693149 
    30703150 
     
    30913171 
    30923172    # $ANTLR start "expr1" 
    3093     # src/ll/UL4.g:513:1: expr1 returns [node] : e1= expr2 ( 'or' e2= expr2 )* ; 
     3173    # src/ll/UL4.g:509:1: expr1 returns [node] : e1= expr2 ( 'or' e2= expr2 )* ; 
    30943174    def expr1(self, ): 
    30953175        node = None 
     
    31033183        try: 
    31043184            try: 
    3105                 # src/ll/UL4.g:514:2: (e1= expr2 ( 'or' e2= expr2 )* ) 
    3106                 # src/ll/UL4.g:515:3: e1= expr2 ( 'or' e2= expr2 )* 
     3185                # src/ll/UL4.g:510:2: (e1= expr2 ( 'or' e2= expr2 )* ) 
     3186                # src/ll/UL4.g:511:3: e1= expr2 ( 'or' e2= expr2 )* 
    31073187                pass  
    3108                 self._state.following.append(self.FOLLOW_expr2_in_expr12653) 
     3188                self._state.following.append(self.FOLLOW_expr2_in_expr12684) 
    31093189                e1 = self.expr2() 
    31103190 
     
    31173197 
    31183198 
    3119                 # src/ll/UL4.g:516:3: ( 'or' e2= expr2 )* 
     3199                # src/ll/UL4.g:512:3: ( 'or' e2= expr2 )* 
    31203200                while True: #loop44 
    31213201                    alt44 = 2 
     
    31273207 
    31283208                    if alt44 == 1: 
    3129                         # src/ll/UL4.g:517:4: 'or' e2= expr2 
     3209                        # src/ll/UL4.g:513:4: 'or' e2= expr2 
    31303210                        pass  
    3131                         self.match(self.input, 56, self.FOLLOW_56_in_expr12664) 
    3132  
    3133                         self._state.following.append(self.FOLLOW_expr2_in_expr12671) 
     3211                        self.match(self.input, 56, self.FOLLOW_56_in_expr12695) 
     3212 
     3213                        self._state.following.append(self.FOLLOW_expr2_in_expr12702) 
    31343214                        e2 = self.expr2() 
    31353215 
     
    31383218                        if self._state.backtracking == 0: 
    31393219                            pass 
    3140                             node = ul4c.Or(self.location, node, e2)  
     3220                            node = ul4c.Or(self.location, node.start, e2.end, node, e2)  
    31413221 
    31423222 
     
    31633243 
    31643244    # $ANTLR start "exprarg" 
    3165     # src/ll/UL4.g:522:1: exprarg returns [node] : (ege= generatorexpression |e1= expr1 ); 
     3245    # src/ll/UL4.g:518:1: exprarg returns [node] : (ege= generatorexpression |e1= expr1 ); 
    31663246    def exprarg(self, ): 
    31673247        node = None 
     
    31753255        try: 
    31763256            try: 
    3177                 # src/ll/UL4.g:523:2: (ege= generatorexpression |e1= expr1 ) 
     3257                # src/ll/UL4.g:519:2: (ege= generatorexpression |e1= expr1 ) 
    31783258                alt45 = 2 
    31793259                LA45 = self.input.LA(1) 
    3180                 if LA45 == 55: 
     3260                if LA45 == NONE: 
    31813261                    LA45_1 = self.input.LA(2) 
    31823262 
     
    31953275 
    31963276 
    3197                 elif LA45 == 35: 
     3277                elif LA45 == FALSE: 
    31983278                    LA45_2 = self.input.LA(2) 
    31993279 
     
    32123292 
    32133293 
    3214                 elif LA45 == NONE: 
     3294                elif LA45 == TRUE: 
    32153295                    LA45_3 = self.input.LA(2) 
    32163296 
     
    32293309 
    32303310 
    3231                 elif LA45 == FALSE: 
     3311                elif LA45 == INT: 
    32323312                    LA45_4 = self.input.LA(2) 
    32333313 
     
    32463326 
    32473327 
    3248                 elif LA45 == TRUE: 
     3328                elif LA45 == FLOAT: 
    32493329                    LA45_5 = self.input.LA(2) 
    32503330 
     
    32633343 
    32643344 
    3265                 elif LA45 == INT: 
     3345                elif LA45 == STRING: 
    32663346                    LA45_6 = self.input.LA(2) 
    32673347 
     
    32803360 
    32813361 
    3282                 elif LA45 == FLOAT: 
     3362                elif LA45 == DATE: 
    32833363                    LA45_7 = self.input.LA(2) 
    32843364 
     
    32973377 
    32983378 
    3299                 elif LA45 == STRING: 
     3379                elif LA45 == COLOR: 
    33003380                    LA45_8 = self.input.LA(2) 
    33013381 
     
    33143394 
    33153395 
    3316                 elif LA45 == DATE: 
     3396                elif LA45 == NAME: 
    33173397                    LA45_9 = self.input.LA(2) 
    33183398 
     
    33313411 
    33323412 
    3333                 elif LA45 == COLOR: 
     3413                elif LA45 == 49: 
    33343414                    LA45_10 = self.input.LA(2) 
    33353415 
     
    33483428 
    33493429 
    3350                 elif LA45 == NAME: 
     3430                elif LA45 == 57: 
    33513431                    LA45_11 = self.input.LA(2) 
    33523432 
     
    33653445 
    33663446 
    3367                 elif LA45 == 49: 
     3447                elif LA45 == 27: 
    33683448                    LA45_12 = self.input.LA(2) 
    33693449 
     
    33823462 
    33833463 
    3384                 elif LA45 == 57: 
     3464                elif LA45 == 35: 
    33853465                    LA45_13 = self.input.LA(2) 
    33863466 
     
    33993479 
    34003480 
    3401                 elif LA45 == 27: 
     3481                elif LA45 == 55: 
    34023482                    LA45_14 = self.input.LA(2) 
    34033483 
     
    34273507 
    34283508                if alt45 == 1: 
    3429                     # src/ll/UL4.g:523:4: ege= generatorexpression 
     3509                    # src/ll/UL4.g:519:4: ege= generatorexpression 
    34303510                    pass  
    3431                     self._state.following.append(self.FOLLOW_generatorexpression_in_exprarg2695) 
     3511                    self._state.following.append(self.FOLLOW_generatorexpression_in_exprarg2726) 
    34323512                    ege = self.generatorexpression() 
    34333513 
     
    34423522 
    34433523                elif alt45 == 2: 
    3444                     # src/ll/UL4.g:524:4: e1= expr1 
     3524                    # src/ll/UL4.g:520:4: e1= expr1 
    34453525                    pass  
    3446                     self._state.following.append(self.FOLLOW_expr1_in_exprarg2704) 
     3526                    self._state.following.append(self.FOLLOW_expr1_in_exprarg2735) 
    34473527                    e1 = self.expr1() 
    34483528 
     
    34703550 
    34713551    # $ANTLR start "expression" 
    3472     # src/ll/UL4.g:527:1: expression returns [node] : (ege= generatorexpression EOF |e= expr1 EOF ); 
     3552    # src/ll/UL4.g:523:1: expression returns [node] : (ege= generatorexpression EOF |e= expr1 EOF ); 
    34733553    def expression(self, ): 
    34743554        node = None 
     
    34823562        try: 
    34833563            try: 
    3484                 # src/ll/UL4.g:528:2: (ege= generatorexpression EOF |e= expr1 EOF ) 
     3564                # src/ll/UL4.g:524:2: (ege= generatorexpression EOF |e= expr1 EOF ) 
    34853565                alt46 = 2 
    34863566                LA46 = self.input.LA(1) 
    3487                 if LA46 == 55: 
     3567                if LA46 == NONE: 
    34883568                    LA46_1 = self.input.LA(2) 
    34893569 
     
    35023582 
    35033583 
    3504                 elif LA46 == 35: 
     3584                elif LA46 == FALSE: 
    35053585                    LA46_2 = self.input.LA(2) 
    35063586 
     
    35193599 
    35203600 
    3521                 elif LA46 == NONE: 
     3601                elif LA46 == TRUE: 
    35223602                    LA46_3 = self.input.LA(2) 
    35233603 
     
    35363616 
    35373617 
    3538                 elif LA46 == FALSE: 
     3618                elif LA46 == INT: 
    35393619                    LA46_4 = self.input.LA(2) 
    35403620 
     
    35533633 
    35543634 
    3555                 elif LA46 == TRUE: 
     3635                elif LA46 == FLOAT: 
    35563636                    LA46_5 = self.input.LA(2) 
    35573637 
     
    35703650 
    35713651 
    3572                 elif LA46 == INT: 
     3652                elif LA46 == STRING: 
    35733653                    LA46_6 = self.input.LA(2) 
    35743654 
     
    35873667 
    35883668 
    3589                 elif LA46 == FLOAT: 
     3669                elif LA46 == DATE: 
    35903670                    LA46_7 = self.input.LA(2) 
    35913671 
     
    36043684 
    36053685 
    3606                 elif LA46 == STRING: 
     3686                elif LA46 == COLOR: 
    36073687                    LA46_8 = self.input.LA(2) 
    36083688 
     
    36213701 
    36223702 
    3623                 elif LA46 == DATE: 
     3703                elif LA46 == NAME: 
    36243704                    LA46_9 = self.input.LA(2) 
    36253705 
     
    36383718 
    36393719 
    3640                 elif LA46 == COLOR: 
     3720                elif LA46 == 49: 
    36413721                    LA46_10 = self.input.LA(2) 
    36423722 
     
    36553735 
    36563736 
    3657                 elif LA46 == NAME: 
     3737                elif LA46 == 57: 
    36583738                    LA46_11 = self.input.LA(2) 
    36593739 
     
    36723752 
    36733753 
    3674                 elif LA46 == 49: 
     3754                elif LA46 == 27: 
    36753755                    LA46_12 = self.input.LA(2) 
    36763756 
     
    36893769 
    36903770 
    3691                 elif LA46 == 57: 
     3771                elif LA46 == 35: 
    36923772                    LA46_13 = self.input.LA(2) 
    36933773 
     
    37063786 
    37073787 
    3708                 elif LA46 == 27: 
     3788                elif LA46 == 55: 
    37093789                    LA46_14 = self.input.LA(2) 
    37103790 
     
    37343814 
    37353815                if alt46 == 1: 
    3736                     # src/ll/UL4.g:528:4: ege= generatorexpression EOF 
     3816                    # src/ll/UL4.g:524:4: ege= generatorexpression EOF 
    37373817                    pass  
    3738                     self._state.following.append(self.FOLLOW_generatorexpression_in_expression2723) 
     3818                    self._state.following.append(self.FOLLOW_generatorexpression_in_expression2754) 
    37393819                    ege = self.generatorexpression() 
    37403820 
    37413821                    self._state.following.pop() 
    37423822 
    3743                     self.match(self.input, EOF, self.FOLLOW_EOF_in_expression2725) 
     3823                    self.match(self.input, EOF, self.FOLLOW_EOF_in_expression2756) 
    37443824 
    37453825                    if self._state.backtracking == 0: 
     
    37513831 
    37523832                elif alt46 == 2: 
    3753                     # src/ll/UL4.g:529:4: e= expr1 EOF 
     3833                    # src/ll/UL4.g:525:4: e= expr1 EOF 
    37543834                    pass  
    3755                     self._state.following.append(self.FOLLOW_expr1_in_expression2734) 
     3835                    self._state.following.append(self.FOLLOW_expr1_in_expression2765) 
    37563836                    e = self.expr1() 
    37573837 
    37583838                    self._state.following.pop() 
    37593839 
    3760                     self.match(self.input, EOF, self.FOLLOW_EOF_in_expression2736) 
     3840                    self.match(self.input, EOF, self.FOLLOW_EOF_in_expression2767) 
    37613841 
    37623842                    if self._state.backtracking == 0: 
     
    37813861 
    37823862    # $ANTLR start "for_" 
    3783     # src/ll/UL4.g:535:1: for_ returns [node] : n= nestedname 'in' e= expr1 EOF ; 
     3863    # src/ll/UL4.g:531:1: for_ returns [node] : n= nestedname 'in' e= expr1 EOF ; 
    37843864    def for_(self, ): 
    37853865        node = None 
     
    37933873        try: 
    37943874            try: 
    3795                 # src/ll/UL4.g:536:2: (n= nestedname 'in' e= expr1 EOF ) 
    3796                 # src/ll/UL4.g:537:3: n= nestedname 'in' e= expr1 EOF 
     3875                # src/ll/UL4.g:532:2: (n= nestedname 'in' e= expr1 EOF ) 
     3876                # src/ll/UL4.g:533:3: n= nestedname 'in' e= expr1 EOF 
    37973877                pass  
    3798                 self._state.following.append(self.FOLLOW_nestedname_in_for_2761) 
     3878                self._state.following.append(self.FOLLOW_nestedname_in_for_2792) 
    37993879                n = self.nestedname() 
    38003880 
    38013881                self._state.following.pop() 
    38023882 
    3803                 self.match(self.input, 54, self.FOLLOW_54_in_for_2765) 
    3804  
    3805                 self._state.following.append(self.FOLLOW_expr1_in_for_2771) 
     3883                self.match(self.input, 54, self.FOLLOW_54_in_for_2796) 
     3884 
     3885                self._state.following.append(self.FOLLOW_expr1_in_for_2802) 
    38063886                e = self.expr1() 
    38073887 
     
    38103890                if self._state.backtracking == 0: 
    38113891                    pass 
    3812                     node = ul4c.For(self.location, n, e)  
    3813  
    3814  
    3815  
    3816                 self.match(self.input, EOF, self.FOLLOW_EOF_in_for_2777) 
     3892                    node = ul4c.For(self.location, self.start(n.start), e.end, ((n is not None) and [n.varname] or [None])[0], e)  
     3893 
     3894 
     3895 
     3896                self.match(self.input, EOF, self.FOLLOW_EOF_in_for_2808) 
    38173897 
    38183898 
     
    38323912 
    38333913    # $ANTLR start "statement" 
    3834     # src/ll/UL4.g:546:1: statement returns [node] : (nn= nestedname '=' e= expr1 EOF |n= name '+=' e= expr1 EOF |n= name '-=' e= expr1 EOF |n= name '*=' e= expr1 EOF |n= name '/=' e= expr1 EOF |n= name '//=' e= expr1 EOF |n= name '%=' e= expr1 EOF |e= expression EOF ); 
     3914    # src/ll/UL4.g:542:1: statement returns [node] : (nn= nestedname '=' e= expr1 EOF |n= name '+=' e= expr1 EOF |n= name '-=' e= expr1 EOF |n= name '*=' e= expr1 EOF |n= name '/=' e= expr1 EOF |n= name '//=' e= expr1 EOF |n= name '%=' e= expr1 EOF |e= expression EOF ); 
    38353915    def statement(self, ): 
    38363916        node = None 
     
    38463926        try: 
    38473927            try: 
    3848                 # src/ll/UL4.g:547:2: (nn= nestedname '=' e= expr1 EOF |n= name '+=' e= expr1 EOF |n= name '-=' e= expr1 EOF |n= name '*=' e= expr1 EOF |n= name '/=' e= expr1 EOF |n= name '//=' e= expr1 EOF |n= name '%=' e= expr1 EOF |e= expression EOF ) 
     3928                # src/ll/UL4.g:543:2: (nn= nestedname '=' e= expr1 EOF |n= name '+=' e= expr1 EOF |n= name '-=' e= expr1 EOF |n= name '*=' e= expr1 EOF |n= name '/=' e= expr1 EOF |n= name '//=' e= expr1 EOF |n= name '%=' e= expr1 EOF |e= expression EOF ) 
    38493929                alt47 = 8 
    38503930                LA47 = self.input.LA(1) 
     
    39083988 
    39093989                if alt47 == 1: 
    3910                     # src/ll/UL4.g:547:4: nn= nestedname '=' e= expr1 EOF 
     3990                    # src/ll/UL4.g:543:4: nn= nestedname '=' e= expr1 EOF 
    39113991                    pass  
    3912                     self._state.following.append(self.FOLLOW_nestedname_in_statement2798) 
     3992                    self._state.following.append(self.FOLLOW_nestedname_in_statement2829) 
    39133993                    nn = self.nestedname() 
    39143994 
    39153995                    self._state.following.pop() 
    39163996 
    3917                     self.match(self.input, 45, self.FOLLOW_45_in_statement2800) 
    3918  
    3919                     self._state.following.append(self.FOLLOW_expr1_in_statement2804) 
     3997                    self.match(self.input, 45, self.FOLLOW_45_in_statement2831) 
     3998 
     3999                    self._state.following.append(self.FOLLOW_expr1_in_statement2835) 
    39204000                    e = self.expr1() 
    39214001 
    39224002                    self._state.following.pop() 
    39234003 
    3924                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2806) 
     4004                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2837) 
    39254005 
    39264006                    if self._state.backtracking == 0: 
    39274007                        pass 
    3928                         node = ul4c.StoreVar(self.location, nn, e)  
     4008                        node = ul4c.StoreVar(self.location, self.start(nn.start), e.end, ((nn is not None) and [nn.varname] or [None])[0], e)  
    39294009 
    39304010 
     
    39324012 
    39334013                elif alt47 == 2: 
    3934                     # src/ll/UL4.g:548:4: n= name '+=' e= expr1 EOF 
     4014                    # src/ll/UL4.g:544:4: n= name '+=' e= expr1 EOF 
    39354015                    pass  
    3936                     self._state.following.append(self.FOLLOW_name_in_statement2815) 
     4016                    self._state.following.append(self.FOLLOW_name_in_statement2846) 
    39374017                    n = self.name() 
    39384018 
    39394019                    self._state.following.pop() 
    39404020 
    3941                     self.match(self.input, 33, self.FOLLOW_33_in_statement2817) 
    3942  
    3943                     self._state.following.append(self.FOLLOW_expr1_in_statement2821) 
     4021                    self.match(self.input, 33, self.FOLLOW_33_in_statement2848) 
     4022 
     4023                    self._state.following.append(self.FOLLOW_expr1_in_statement2852) 
    39444024                    e = self.expr1() 
    39454025 
    39464026                    self._state.following.pop() 
    39474027 
    3948                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2823) 
     4028                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2854) 
    39494029 
    39504030                    if self._state.backtracking == 0: 
    39514031                        pass 
    3952                         node = ul4c.AddVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4032                        node = ul4c.AddVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    39534033 
    39544034 
     
    39564036 
    39574037                elif alt47 == 3: 
    3958                     # src/ll/UL4.g:549:4: n= name '-=' e= expr1 EOF 
     4038                    # src/ll/UL4.g:545:4: n= name '-=' e= expr1 EOF 
    39594039                    pass  
    3960                     self._state.following.append(self.FOLLOW_name_in_statement2832) 
     4040                    self._state.following.append(self.FOLLOW_name_in_statement2863) 
    39614041                    n = self.name() 
    39624042 
    39634043                    self._state.following.pop() 
    39644044 
    3965                     self.match(self.input, 36, self.FOLLOW_36_in_statement2834) 
    3966  
    3967                     self._state.following.append(self.FOLLOW_expr1_in_statement2838) 
     4045                    self.match(self.input, 36, self.FOLLOW_36_in_statement2865) 
     4046 
     4047                    self._state.following.append(self.FOLLOW_expr1_in_statement2869) 
    39684048                    e = self.expr1() 
    39694049 
    39704050                    self._state.following.pop() 
    39714051 
    3972                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2840) 
     4052                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2871) 
    39734053 
    39744054                    if self._state.backtracking == 0: 
    39754055                        pass 
    3976                         node = ul4c.SubVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4056                        node = ul4c.SubVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    39774057 
    39784058 
     
    39804060 
    39814061                elif alt47 == 4: 
    3982                     # src/ll/UL4.g:550:4: n= name '*=' e= expr1 EOF 
     4062                    # src/ll/UL4.g:546:4: n= name '*=' e= expr1 EOF 
    39834063                    pass  
    3984                     self._state.following.append(self.FOLLOW_name_in_statement2849) 
     4064                    self._state.following.append(self.FOLLOW_name_in_statement2880) 
    39854065                    n = self.name() 
    39864066 
    39874067                    self._state.following.pop() 
    39884068 
    3989                     self.match(self.input, 31, self.FOLLOW_31_in_statement2851) 
    3990  
    3991                     self._state.following.append(self.FOLLOW_expr1_in_statement2855) 
     4069                    self.match(self.input, 31, self.FOLLOW_31_in_statement2882) 
     4070 
     4071                    self._state.following.append(self.FOLLOW_expr1_in_statement2886) 
    39924072                    e = self.expr1() 
    39934073 
    39944074                    self._state.following.pop() 
    39954075 
    3996                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2857) 
     4076                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2888) 
    39974077 
    39984078                    if self._state.backtracking == 0: 
    39994079                        pass 
    4000                         node = ul4c.MulVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4080                        node = ul4c.MulVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    40014081 
    40024082 
     
    40044084 
    40054085                elif alt47 == 5: 
    4006                     # src/ll/UL4.g:551:4: n= name '/=' e= expr1 EOF 
     4086                    # src/ll/UL4.g:547:4: n= name '/=' e= expr1 EOF 
    40074087                    pass  
    4008                     self._state.following.append(self.FOLLOW_name_in_statement2866) 
     4088                    self._state.following.append(self.FOLLOW_name_in_statement2897) 
    40094089                    n = self.name() 
    40104090 
    40114091                    self._state.following.pop() 
    40124092 
    4013                     self.match(self.input, 41, self.FOLLOW_41_in_statement2868) 
    4014  
    4015                     self._state.following.append(self.FOLLOW_expr1_in_statement2872) 
     4093                    self.match(self.input, 41, self.FOLLOW_41_in_statement2899) 
     4094 
     4095                    self._state.following.append(self.FOLLOW_expr1_in_statement2903) 
    40164096                    e = self.expr1() 
    40174097 
    40184098                    self._state.following.pop() 
    40194099 
    4020                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2874) 
     4100                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2905) 
    40214101 
    40224102                    if self._state.backtracking == 0: 
    40234103                        pass 
    4024                         node = ul4c.TrueDivVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4104                        node = ul4c.TrueDivVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    40254105 
    40264106 
     
    40284108 
    40294109                elif alt47 == 6: 
    4030                     # src/ll/UL4.g:552:4: n= name '//=' e= expr1 EOF 
     4110                    # src/ll/UL4.g:548:4: n= name '//=' e= expr1 EOF 
    40314111                    pass  
    4032                     self._state.following.append(self.FOLLOW_name_in_statement2883) 
     4112                    self._state.following.append(self.FOLLOW_name_in_statement2914) 
    40334113                    n = self.name() 
    40344114 
    40354115                    self._state.following.pop() 
    40364116 
    4037                     self.match(self.input, 40, self.FOLLOW_40_in_statement2885) 
    4038  
    4039                     self._state.following.append(self.FOLLOW_expr1_in_statement2889) 
     4117                    self.match(self.input, 40, self.FOLLOW_40_in_statement2916) 
     4118 
     4119                    self._state.following.append(self.FOLLOW_expr1_in_statement2920) 
    40404120                    e = self.expr1() 
    40414121 
    40424122                    self._state.following.pop() 
    40434123 
    4044                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2891) 
     4124                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2922) 
    40454125 
    40464126                    if self._state.backtracking == 0: 
    40474127                        pass 
    4048                         node = ul4c.FloorDivVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4128                        node = ul4c.FloorDivVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    40494129 
    40504130 
     
    40524132 
    40534133                elif alt47 == 7: 
    4054                     # src/ll/UL4.g:553:4: n= name '%=' e= expr1 EOF 
     4134                    # src/ll/UL4.g:549:4: n= name '%=' e= expr1 EOF 
    40554135                    pass  
    4056                     self._state.following.append(self.FOLLOW_name_in_statement2900) 
     4136                    self._state.following.append(self.FOLLOW_name_in_statement2931) 
    40574137                    n = self.name() 
    40584138 
    40594139                    self._state.following.pop() 
    40604140 
    4061                     self.match(self.input, 26, self.FOLLOW_26_in_statement2902) 
    4062  
    4063                     self._state.following.append(self.FOLLOW_expr1_in_statement2906) 
     4141                    self.match(self.input, 26, self.FOLLOW_26_in_statement2933) 
     4142 
     4143                    self._state.following.append(self.FOLLOW_expr1_in_statement2937) 
    40644144                    e = self.expr1() 
    40654145 
    40664146                    self._state.following.pop() 
    40674147 
    4068                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2908) 
     4148                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2939) 
    40694149 
    40704150                    if self._state.backtracking == 0: 
    40714151                        pass 
    4072                         node = ul4c.ModVar(self.location, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
     4152                        node = ul4c.ModVar(self.location, self.start(n.start), e.end, ((n is not None) and [self.input.toString(n.start,n.stop)] or [None])[0], e)  
    40734153 
    40744154 
     
    40764156 
    40774157                elif alt47 == 8: 
    4078                     # src/ll/UL4.g:554:4: e= expression EOF 
     4158                    # src/ll/UL4.g:550:4: e= expression EOF 
    40794159                    pass  
    4080                     self._state.following.append(self.FOLLOW_expression_in_statement2917) 
     4160                    self._state.following.append(self.FOLLOW_expression_in_statement2948) 
    40814161                    e = self.expression() 
    40824162 
    40834163                    self._state.following.pop() 
    40844164 
    4085                     self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2919) 
     4165                    self.match(self.input, EOF, self.FOLLOW_EOF_in_statement2950) 
    40864166 
    40874167                    if self._state.backtracking == 0: 
     
    41084188 
    41094189 
    4110         # src/ll/UL4.g:289:4: (e_list= list ) 
    4111         # src/ll/UL4.g:289:4: e_list= list 
     4190        # src/ll/UL4.g:295:4: (e_list= list ) 
     4191        # src/ll/UL4.g:295:4: e_list= list 
    41124192        pass  
    4113         self._state.following.append(self.FOLLOW_list_in_synpred19_UL41370) 
     4193        self._state.following.append(self.FOLLOW_list_in_synpred19_UL41401) 
    41144194        e_list = self.list() 
    41154195 
     
    41274207 
    41284208 
    4129         # src/ll/UL4.g:290:4: (e_listcomp= listcomprehension ) 
    4130         # src/ll/UL4.g:290:4: e_listcomp= listcomprehension 
     4209        # src/ll/UL4.g:296:4: (e_listcomp= listcomprehension ) 
     4210        # src/ll/UL4.g:296:4: e_listcomp= listcomprehension 
    41314211        pass  
    4132         self._state.following.append(self.FOLLOW_listcomprehension_in_synpred20_UL41379) 
     4212        self._state.following.append(self.FOLLOW_listcomprehension_in_synpred20_UL41410) 
    41334213        e_listcomp = self.listcomprehension() 
    41344214 
     
    41464226 
    41474227 
    4148         # src/ll/UL4.g:291:4: (e_dict= dict ) 
    4149         # src/ll/UL4.g:291:4: e_dict= dict 
     4228        # src/ll/UL4.g:297:4: (e_dict= dict ) 
     4229        # src/ll/UL4.g:297:4: e_dict= dict 
    41504230        pass  
    4151         self._state.following.append(self.FOLLOW_dict_in_synpred21_UL41388) 
     4231        self._state.following.append(self.FOLLOW_dict_in_synpred21_UL41419) 
    41524232        e_dict = self.dict() 
    41534233 
     
    41654245 
    41664246 
    4167         # src/ll/UL4.g:292:4: (e_dictcomp= dictcomprehension ) 
    4168         # src/ll/UL4.g:292:4: e_dictcomp= dictcomprehension 
     4247        # src/ll/UL4.g:298:4: (e_dictcomp= dictcomprehension ) 
     4248        # src/ll/UL4.g:298:4: e_dictcomp= dictcomprehension 
    41694249        pass  
    4170         self._state.following.append(self.FOLLOW_dictcomprehension_in_synpred22_UL41397) 
     4250        self._state.following.append(self.FOLLOW_dictcomprehension_in_synpred22_UL41428) 
    41714251        e_dictcomp = self.dictcomprehension() 
    41724252 
     
    41844264 
    41854265 
    4186         # src/ll/UL4.g:293:4: ( '(' e_genexpr= generatorexpression ')' ) 
    4187         # src/ll/UL4.g:293:4: '(' e_genexpr= generatorexpression ')' 
     4266        # src/ll/UL4.g:299:4: ( '(' e_genexpr= generatorexpression ')' ) 
     4267        # src/ll/UL4.g:299:4: '(' e_genexpr= generatorexpression ')' 
    41884268        pass  
    4189         self.match(self.input, 27, self.FOLLOW_27_in_synpred23_UL41404) 
    4190  
    4191         self._state.following.append(self.FOLLOW_generatorexpression_in_synpred23_UL41408) 
     4269        self.match(self.input, 27, self.FOLLOW_27_in_synpred23_UL41435) 
     4270 
     4271        self._state.following.append(self.FOLLOW_generatorexpression_in_synpred23_UL41439) 
    41924272        e_genexpr = self.generatorexpression() 
    41934273 
    41944274        self._state.following.pop() 
    41954275 
    4196         self.match(self.input, 28, self.FOLLOW_28_in_synpred23_UL41410) 
     4276        self.match(self.input, 28, self.FOLLOW_28_in_synpred23_UL41441) 
    41974277 
    41984278 
     
    42074287 
    42084288 
    4209         # src/ll/UL4.g:302:3: ( '(' n0= nestedname ',' ')' ) 
    4210         # src/ll/UL4.g:302:3: '(' n0= nestedname ',' ')' 
     4289        # src/ll/UL4.g:308:3: ( '(' n0= nestedname ',' ')' ) 
     4290        # src/ll/UL4.g:308:3: '(' n0= nestedname ',' ')' 
    42114291        pass  
    4212         self.match(self.input, 27, self.FOLLOW_27_in_synpred25_UL41455) 
    4213  
    4214         self._state.following.append(self.FOLLOW_nestedname_in_synpred25_UL41459) 
     4292        self.match(self.input, 27, self.FOLLOW_27_in_synpred25_UL41486) 
     4293 
     4294        self._state.following.append(self.FOLLOW_nestedname_in_synpred25_UL41490) 
    42154295        n0 = self.nestedname() 
    42164296 
    42174297        self._state.following.pop() 
    42184298 
    4219         self.match(self.input, 34, self.FOLLOW_34_in_synpred25_UL41461) 
    4220  
    4221         self.match(self.input, 28, self.FOLLOW_28_in_synpred25_UL41463) 
     4299        self.match(self.input, 34, self.FOLLOW_34_in_synpred25_UL41492) 
     4300 
     4301        self.match(self.input, 28, self.FOLLOW_28_in_synpred25_UL41494) 
    42224302 
    42234303 
     
    42324312 
    42334313 
    4234         # src/ll/UL4.g:523:4: (ege= generatorexpression ) 
    4235         # src/ll/UL4.g:523:4: ege= generatorexpression 
     4314        # src/ll/UL4.g:519:4: (ege= generatorexpression ) 
     4315        # src/ll/UL4.g:519:4: ege= generatorexpression 
    42364316        pass  
    4237         self._state.following.append(self.FOLLOW_generatorexpression_in_synpred69_UL42695) 
     4317        self._state.following.append(self.FOLLOW_generatorexpression_in_synpred69_UL42726) 
    42384318        ege = self.generatorexpression() 
    42394319 
     
    42514331 
    42524332 
    4253         # src/ll/UL4.g:528:4: (ege= generatorexpression EOF ) 
    4254         # src/ll/UL4.g:528:4: ege= generatorexpression EOF 
     4333        # src/ll/UL4.g:524:4: (ege= generatorexpression EOF ) 
     4334        # src/ll/UL4.g:524:4: ege= generatorexpression EOF 
    42554335        pass  
    4256         self._state.following.append(self.FOLLOW_generatorexpression_in_synpred70_UL42723) 
     4336        self._state.following.append(self.FOLLOW_generatorexpression_in_synpred70_UL42754) 
    42574337        ege = self.generatorexpression() 
    42584338 
    42594339        self._state.following.pop() 
    42604340 
    4261         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred70_UL42725) 
     4341        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred70_UL42756) 
    42624342 
    42634343 
     
    42744354 
    42754355 
    4276         # src/ll/UL4.g:547:4: (nn= nestedname '=' e= expr1 EOF ) 
    4277         # src/ll/UL4.g:547:4: nn= nestedname '=' e= expr1 EOF 
     4356        # src/ll/UL4.g:543:4: (nn= nestedname '=' e= expr1 EOF ) 
     4357        # src/ll/UL4.g:543:4: nn= nestedname '=' e= expr1 EOF 
    42784358        pass  
    4279         self._state.following.append(self.FOLLOW_nestedname_in_synpred71_UL42798) 
     4359        self._state.following.append(self.FOLLOW_nestedname_in_synpred71_UL42829) 
    42804360        nn = self.nestedname() 
    42814361 
    42824362        self._state.following.pop() 
    42834363 
    4284         self.match(self.input, 45, self.FOLLOW_45_in_synpred71_UL42800) 
    4285  
    4286         self._state.following.append(self.FOLLOW_expr1_in_synpred71_UL42804) 
     4364        self.match(self.input, 45, self.FOLLOW_45_in_synpred71_UL42831) 
     4365 
     4366        self._state.following.append(self.FOLLOW_expr1_in_synpred71_UL42835) 
    42874367        e = self.expr1() 
    42884368 
    42894369        self._state.following.pop() 
    42904370 
    4291         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred71_UL42806) 
     4371        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred71_UL42837) 
    42924372 
    42934373 
     
    43044384 
    43054385 
    4306         # src/ll/UL4.g:548:4: (n= name '+=' e= expr1 EOF ) 
    4307         # src/ll/UL4.g:548:4: n= name '+=' e= expr1 EOF 
     4386        # src/ll/UL4.g:544:4: (n= name '+=' e= expr1 EOF ) 
     4387        # src/ll/UL4.g:544:4: n= name '+=' e= expr1 EOF 
    43084388        pass  
    4309         self._state.following.append(self.FOLLOW_name_in_synpred72_UL42815) 
     4389        self._state.following.append(self.FOLLOW_name_in_synpred72_UL42846) 
    43104390        n = self.name() 
    43114391 
    43124392        self._state.following.pop() 
    43134393 
    4314         self.match(self.input, 33, self.FOLLOW_33_in_synpred72_UL42817) 
    4315  
    4316         self._state.following.append(self.FOLLOW_expr1_in_synpred72_UL42821) 
     4394        self.match(self.input, 33, self.FOLLOW_33_in_synpred72_UL42848) 
     4395 
     4396        self._state.following.append(self.FOLLOW_expr1_in_synpred72_UL42852) 
    43174397        e = self.expr1() 
    43184398 
    43194399        self._state.following.pop() 
    43204400 
    4321         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred72_UL42823) 
     4401        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred72_UL42854) 
    43224402 
    43234403 
     
    43344414 
    43354415 
    4336         # src/ll/UL4.g:549:4: (n= name '-=' e= expr1 EOF ) 
    4337         # src/ll/UL4.g:549:4: n= name '-=' e= expr1 EOF 
     4416        # src/ll/UL4.g:545:4: (n= name '-=' e= expr1 EOF ) 
     4417        # src/ll/UL4.g:545:4: n= name '-=' e= expr1 EOF 
    43384418        pass  
    4339         self._state.following.append(self.FOLLOW_name_in_synpred73_UL42832) 
     4419        self._state.following.append(self.FOLLOW_name_in_synpred73_UL42863) 
    43404420        n = self.name() 
    43414421 
    43424422        self._state.following.pop() 
    43434423 
    4344         self.match(self.input, 36, self.FOLLOW_36_in_synpred73_UL42834) 
    4345  
    4346         self._state.following.append(self.FOLLOW_expr1_in_synpred73_UL42838) 
     4424        self.match(self.input, 36, self.FOLLOW_36_in_synpred73_UL42865) 
     4425 
     4426        self._state.following.append(self.FOLLOW_expr1_in_synpred73_UL42869) 
    43474427        e = self.expr1() 
    43484428 
    43494429        self._state.following.pop() 
    43504430 
    4351         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred73_UL42840) 
     4431        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred73_UL42871) 
    43524432 
    43534433 
     
    43644444 
    43654445 
    4366         # src/ll/UL4.g:550:4: (n= name '*=' e= expr1 EOF ) 
    4367         # src/ll/UL4.g:550:4: n= name '*=' e= expr1 EOF 
     4446        # src/ll/UL4.g:546:4: (n= name '*=' e= expr1 EOF ) 
     4447        # src/ll/UL4.g:546:4: n= name '*=' e= expr1 EOF 
    43684448        pass  
    4369         self._state.following.append(self.FOLLOW_name_in_synpred74_UL42849) 
     4449        self._state.following.append(self.FOLLOW_name_in_synpred74_UL42880) 
    43704450        n = self.name() 
    43714451 
    43724452        self._state.following.pop() 
    43734453 
    4374         self.match(self.input, 31, self.FOLLOW_31_in_synpred74_UL42851) 
    4375  
    4376         self._state.following.append(self.FOLLOW_expr1_in_synpred74_UL42855) 
     4454        self.match(self.input, 31, self.FOLLOW_31_in_synpred74_UL42882) 
     4455 
     4456        self._state.following.append(self.FOLLOW_expr1_in_synpred74_UL42886) 
    43774457        e = self.expr1() 
    43784458 
    43794459        self._state.following.pop() 
    43804460 
    4381         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred74_UL42857) 
     4461        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred74_UL42888) 
    43824462 
    43834463 
     
    43944474 
    43954475 
    4396         # src/ll/UL4.g:551:4: (n= name '/=' e= expr1 EOF ) 
    4397         # src/ll/UL4.g:551:4: n= name '/=' e= expr1 EOF 
     4476        # src/ll/UL4.g:547:4: (n= name '/=' e= expr1 EOF ) 
     4477        # src/ll/UL4.g:547:4: n= name '/=' e= expr1 EOF 
    43984478        pass  
    4399         self._state.following.append(self.FOLLOW_name_in_synpred75_UL42866) 
     4479        self._state.following.append(self.FOLLOW_name_in_synpred75_UL42897) 
    44004480        n = self.name() 
    44014481 
    44024482        self._state.following.pop() 
    44034483 
    4404         self.match(self.input, 41, self.FOLLOW_41_in_synpred75_UL42868) 
    4405  
    4406         self._state.following.append(self.FOLLOW_expr1_in_synpred75_UL42872) 
     4484        self.match(self.input, 41, self.FOLLOW_41_in_synpred75_UL42899) 
     4485 
     4486        self._state.following.append(self.FOLLOW_expr1_in_synpred75_UL42903) 
    44074487        e = self.expr1() 
    44084488 
    44094489        self._state.following.pop() 
    44104490 
    4411         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred75_UL42874) 
     4491        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred75_UL42905) 
    44124492 
    44134493 
     
    44244504 
    44254505 
    4426         # src/ll/UL4.g:552:4: (n= name '//=' e= expr1 EOF ) 
    4427         # src/ll/UL4.g:552:4: n= name '//=' e= expr1 EOF 
     4506        # src/ll/UL4.g:548:4: (n= name '//=' e= expr1 EOF ) 
     4507        # src/ll/UL4.g:548:4: n= name '//=' e= expr1 EOF 
    44284508        pass  
    4429         self._state.following.append(self.FOLLOW_name_in_synpred76_UL42883) 
     4509        self._state.following.append(self.FOLLOW_name_in_synpred76_UL42914) 
    44304510        n = self.name() 
    44314511 
    44324512        self._state.following.pop() 
    44334513 
    4434         self.match(self.input, 40, self.FOLLOW_40_in_synpred76_UL42885) 
    4435  
    4436         self._state.following.append(self.FOLLOW_expr1_in_synpred76_UL42889) 
     4514        self.match(self.input, 40, self.FOLLOW_40_in_synpred76_UL42916) 
     4515 
     4516        self._state.following.append(self.FOLLOW_expr1_in_synpred76_UL42920) 
    44374517        e = self.expr1() 
    44384518 
    44394519        self._state.following.pop() 
    44404520 
    4441         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred76_UL42891) 
     4521        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred76_UL42922) 
    44424522 
    44434523 
     
    44544534 
    44554535 
    4456         # src/ll/UL4.g:553:4: (n= name '%=' e= expr1 EOF ) 
    4457         # src/ll/UL4.g:553:4: n= name '%=' e= expr1 EOF 
     4536        # src/ll/UL4.g:549:4: (n= name '%=' e= expr1 EOF ) 
     4537        # src/ll/UL4.g:549:4: n= name '%=' e= expr1 EOF 
    44584538        pass  
    4459         self._state.following.append(self.FOLLOW_name_in_synpred77_UL42900) 
     4539        self._state.following.append(self.FOLLOW_name_in_synpred77_UL42931) 
    44604540        n = self.name() 
    44614541 
    44624542        self._state.following.pop() 
    44634543 
    4464         self.match(self.input, 26, self.FOLLOW_26_in_synpred77_UL42902) 
    4465  
    4466         self._state.following.append(self.FOLLOW_expr1_in_synpred77_UL42906) 
     4544        self.match(self.input, 26, self.FOLLOW_26_in_synpred77_UL42933) 
     4545 
     4546        self._state.following.append(self.FOLLOW_expr1_in_synpred77_UL42937) 
    44674547        e = self.expr1() 
    44684548 
    44694549        self._state.following.pop() 
    44704550 
    4471         self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred77_UL42908) 
     4551        self.match(self.input, EOF, self.FOLLOW_EOF_in_synpred77_UL42939) 
    44724552 
    44734553 
     
    46774757  
    46784758 
    4679     FOLLOW_NONE_in_none695 = frozenset([1]) 
    4680     FOLLOW_TRUE_in_true_712 = frozenset([1]) 
    4681     FOLLOW_FALSE_in_false_729 = frozenset([1]) 
    4682     FOLLOW_INT_in_int_746 = frozenset([1]) 
    4683     FOLLOW_FLOAT_in_float_763 = frozenset([1]) 
    4684     FOLLOW_STRING_in_string780 = frozenset([1]) 
    4685     FOLLOW_DATE_in_date797 = frozenset([1]) 
    4686     FOLLOW_COLOR_in_color814 = frozenset([1]) 
    4687     FOLLOW_NAME_in_name831 = frozenset([1]) 
    4688     FOLLOW_none_in_literal850 = frozenset([1]) 
    4689     FOLLOW_false__in_literal859 = frozenset([1]) 
    4690     FOLLOW_true__in_literal868 = frozenset([1]) 
    4691     FOLLOW_int__in_literal877 = frozenset([1]) 
    4692     FOLLOW_float__in_literal886 = frozenset([1]) 
    4693     FOLLOW_string_in_literal895 = frozenset([1]) 
    4694     FOLLOW_date_in_literal904 = frozenset([1]) 
    4695     FOLLOW_color_in_literal913 = frozenset([1]) 
    4696     FOLLOW_name_in_literal922 = frozenset([1]) 
    4697     FOLLOW_49_in_list943 = frozenset([50]) 
    4698     FOLLOW_50_in_list947 = frozenset([1]) 
    4699     FOLLOW_49_in_list956 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4700     FOLLOW_expr1_in_list964 = frozenset([34, 50]) 
    4701     FOLLOW_34_in_list975 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4702     FOLLOW_expr1_in_list982 = frozenset([34, 50]) 
    4703     FOLLOW_34_in_list993 = frozenset([50]) 
    4704     FOLLOW_50_in_list998 = frozenset([1]) 
    4705     FOLLOW_49_in_listcomprehension1022 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4706     FOLLOW_expr1_in_listcomprehension1028 = frozenset([52]) 
    4707     FOLLOW_52_in_listcomprehension1032 = frozenset([14, 27]) 
    4708     FOLLOW_nestedname_in_listcomprehension1038 = frozenset([54]) 
    4709     FOLLOW_54_in_listcomprehension1042 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4710     FOLLOW_expr1_in_listcomprehension1048 = frozenset([50, 53]) 
    4711     FOLLOW_53_in_listcomprehension1057 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4712     FOLLOW_expr1_in_listcomprehension1064 = frozenset([50]) 
    4713     FOLLOW_50_in_listcomprehension1075 = frozenset([1]) 
    4714     FOLLOW_expr1_in_dictitem1100 = frozenset([42]) 
    4715     FOLLOW_42_in_dictitem1104 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4716     FOLLOW_expr1_in_dictitem1110 = frozenset([1]) 
    4717     FOLLOW_57_in_dict1129 = frozenset([58]) 
    4718     FOLLOW_58_in_dict1133 = frozenset([1]) 
    4719     FOLLOW_57_in_dict1142 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4720     FOLLOW_dictitem_in_dict1150 = frozenset([34, 58]) 
    4721     FOLLOW_34_in_dict1161 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4722     FOLLOW_dictitem_in_dict1168 = frozenset([34, 58]) 
    4723     FOLLOW_34_in_dict1179 = frozenset([58]) 
    4724     FOLLOW_58_in_dict1184 = frozenset([1]) 
    4725     FOLLOW_57_in_dictcomprehension1208 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4726     FOLLOW_expr1_in_dictcomprehension1214 = frozenset([42]) 
    4727     FOLLOW_42_in_dictcomprehension1218 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4728     FOLLOW_expr1_in_dictcomprehension1224 = frozenset([52]) 
    4729     FOLLOW_52_in_dictcomprehension1228 = frozenset([14, 27]) 
    4730     FOLLOW_nestedname_in_dictcomprehension1234 = frozenset([54]) 
    4731     FOLLOW_54_in_dictcomprehension1238 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4732     FOLLOW_expr1_in_dictcomprehension1244 = frozenset([53, 58]) 
    4733     FOLLOW_53_in_dictcomprehension1253 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4734     FOLLOW_expr1_in_dictcomprehension1260 = frozenset([58]) 
    4735     FOLLOW_58_in_dictcomprehension1271 = frozenset([1]) 
    4736     FOLLOW_expr1_in_generatorexpression1299 = frozenset([52]) 
    4737     FOLLOW_52_in_generatorexpression1303 = frozenset([14, 27]) 
    4738     FOLLOW_nestedname_in_generatorexpression1309 = frozenset([54]) 
    4739     FOLLOW_54_in_generatorexpression1313 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4740     FOLLOW_expr1_in_generatorexpression1319 = frozenset([1, 53]) 
    4741     FOLLOW_53_in_generatorexpression1328 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4742     FOLLOW_expr1_in_generatorexpression1335 = frozenset([1]) 
    4743     FOLLOW_literal_in_atom1361 = frozenset([1]) 
    4744     FOLLOW_list_in_atom1370 = frozenset([1]) 
    4745     FOLLOW_listcomprehension_in_atom1379 = frozenset([1]) 
    4746     FOLLOW_dict_in_atom1388 = frozenset([1]) 
    4747     FOLLOW_dictcomprehension_in_atom1397 = frozenset([1]) 
    4748     FOLLOW_27_in_atom1404 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4749     FOLLOW_generatorexpression_in_atom1408 = frozenset([28]) 
    4750     FOLLOW_28_in_atom1410 = frozenset([1]) 
    4751     FOLLOW_27_in_atom1417 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4752     FOLLOW_expr1_in_atom1421 = frozenset([28]) 
    4753     FOLLOW_28_in_atom1423 = frozenset([1]) 
    4754     FOLLOW_name_in_nestedname1446 = frozenset([1]) 
    4755     FOLLOW_27_in_nestedname1455 = frozenset([14, 27]) 
    4756     FOLLOW_nestedname_in_nestedname1459 = frozenset([34]) 
    4757     FOLLOW_34_in_nestedname1461 = frozenset([28]) 
    4758     FOLLOW_28_in_nestedname1463 = frozenset([1]) 
    4759     FOLLOW_27_in_nestedname1472 = frozenset([14, 27]) 
    4760     FOLLOW_nestedname_in_nestedname1478 = frozenset([34]) 
    4761     FOLLOW_34_in_nestedname1482 = frozenset([14, 27]) 
    4762     FOLLOW_nestedname_in_nestedname1488 = frozenset([28, 34]) 
    4763     FOLLOW_34_in_nestedname1499 = frozenset([14, 27]) 
    4764     FOLLOW_nestedname_in_nestedname1506 = frozenset([28, 34]) 
    4765     FOLLOW_34_in_nestedname1517 = frozenset([28]) 
    4766     FOLLOW_28_in_nestedname1522 = frozenset([1]) 
    4767     FOLLOW_atom_in_expr91551 = frozenset([1, 27, 37, 49]) 
    4768     FOLLOW_37_in_expr91567 = frozenset([14]) 
    4769     FOLLOW_name_in_expr91574 = frozenset([1, 27, 37, 49]) 
    4770     FOLLOW_27_in_expr91590 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 28, 29, 30, 35, 49, 55, 57]) 
    4771     FOLLOW_30_in_expr91620 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4772     FOLLOW_exprarg_in_expr91624 = frozenset([28, 34]) 
    4773     FOLLOW_34_in_expr91632 = frozenset([28]) 
    4774     FOLLOW_29_in_expr91650 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4775     FOLLOW_exprarg_in_expr91654 = frozenset([28, 34]) 
    4776     FOLLOW_34_in_expr91669 = frozenset([30]) 
    4777     FOLLOW_30_in_expr91676 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4778     FOLLOW_exprarg_in_expr91680 = frozenset([28, 34]) 
    4779     FOLLOW_34_in_expr91695 = frozenset([28]) 
    4780     FOLLOW_exprarg_in_expr91715 = frozenset([28, 34]) 
    4781     FOLLOW_34_in_expr91730 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4782     FOLLOW_exprarg_in_expr91739 = frozenset([28, 34]) 
    4783     FOLLOW_34_in_expr91761 = frozenset([14]) 
    4784     FOLLOW_name_in_expr91770 = frozenset([45]) 
    4785     FOLLOW_45_in_expr91772 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4786     FOLLOW_exprarg_in_expr91776 = frozenset([28, 34]) 
    4787     FOLLOW_34_in_expr91798 = frozenset([29]) 
    4788     FOLLOW_29_in_expr91805 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4789     FOLLOW_exprarg_in_expr91809 = frozenset([28, 34]) 
    4790     FOLLOW_34_in_expr91831 = frozenset([30]) 
    4791     FOLLOW_30_in_expr91838 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4792     FOLLOW_exprarg_in_expr91842 = frozenset([28, 34]) 
    4793     FOLLOW_34_in_expr91857 = frozenset([28]) 
    4794     FOLLOW_name_in_expr91877 = frozenset([45]) 
    4795     FOLLOW_45_in_expr91879 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4796     FOLLOW_exprarg_in_expr91883 = frozenset([28, 34]) 
    4797     FOLLOW_34_in_expr91898 = frozenset([14]) 
    4798     FOLLOW_name_in_expr91907 = frozenset([45]) 
    4799     FOLLOW_45_in_expr91909 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4800     FOLLOW_exprarg_in_expr91913 = frozenset([28, 34]) 
    4801     FOLLOW_34_in_expr91935 = frozenset([29]) 
    4802     FOLLOW_29_in_expr91942 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4803     FOLLOW_exprarg_in_expr91946 = frozenset([28, 34]) 
    4804     FOLLOW_34_in_expr91968 = frozenset([30]) 
    4805     FOLLOW_30_in_expr91975 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4806     FOLLOW_exprarg_in_expr91979 = frozenset([28, 34]) 
    4807     FOLLOW_34_in_expr91994 = frozenset([28]) 
    4808     FOLLOW_28_in_expr92005 = frozenset([1, 27, 37, 49]) 
    4809     FOLLOW_49_in_expr92019 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 42, 49, 55, 57]) 
    4810     FOLLOW_42_in_expr92030 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 50, 55, 57]) 
    4811     FOLLOW_expr1_in_expr92045 = frozenset([50]) 
    4812     FOLLOW_expr1_in_expr92069 = frozenset([42, 50]) 
    4813     FOLLOW_42_in_expr92084 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 50, 55, 57]) 
    4814     FOLLOW_expr1_in_expr92103 = frozenset([50]) 
    4815     FOLLOW_50_in_expr92132 = frozenset([1, 27, 37, 49]) 
    4816     FOLLOW_35_in_expr82168 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4817     FOLLOW_expr9_in_expr82181 = frozenset([1]) 
    4818     FOLLOW_expr8_in_expr72204 = frozenset([1, 25, 29, 38, 39]) 
    4819     FOLLOW_29_in_expr72221 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4820     FOLLOW_38_in_expr72234 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4821     FOLLOW_39_in_expr72247 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4822     FOLLOW_25_in_expr72260 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4823     FOLLOW_expr8_in_expr72274 = frozenset([1, 25, 29, 38, 39]) 
    4824     FOLLOW_expr7_in_expr62302 = frozenset([1, 32, 35]) 
    4825     FOLLOW_32_in_expr62319 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4826     FOLLOW_35_in_expr62332 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4827     FOLLOW_expr7_in_expr62346 = frozenset([1, 32, 35]) 
    4828     FOLLOW_expr6_in_expr52374 = frozenset([1, 24, 43, 44, 46, 47, 48]) 
    4829     FOLLOW_46_in_expr52391 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4830     FOLLOW_24_in_expr52404 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4831     FOLLOW_43_in_expr52417 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4832     FOLLOW_44_in_expr52430 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4833     FOLLOW_47_in_expr52443 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4834     FOLLOW_48_in_expr52456 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4835     FOLLOW_expr6_in_expr52470 = frozenset([1, 24, 43, 44, 46, 47, 48]) 
    4836     FOLLOW_expr5_in_expr42498 = frozenset([1, 54, 55]) 
    4837     FOLLOW_55_in_expr42520 = frozenset([54]) 
    4838     FOLLOW_54_in_expr42533 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4839     FOLLOW_expr5_in_expr42540 = frozenset([1]) 
    4840     FOLLOW_55_in_expr32566 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
    4841     FOLLOW_expr4_in_expr32572 = frozenset([1]) 
    4842     FOLLOW_expr4_in_expr32583 = frozenset([1]) 
    4843     FOLLOW_expr3_in_expr22607 = frozenset([1, 51]) 
    4844     FOLLOW_51_in_expr22618 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4845     FOLLOW_expr3_in_expr22625 = frozenset([1, 51]) 
    4846     FOLLOW_expr2_in_expr12653 = frozenset([1, 56]) 
    4847     FOLLOW_56_in_expr12664 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4848     FOLLOW_expr2_in_expr12671 = frozenset([1, 56]) 
    4849     FOLLOW_generatorexpression_in_exprarg2695 = frozenset([1]) 
    4850     FOLLOW_expr1_in_exprarg2704 = frozenset([1]) 
    4851     FOLLOW_generatorexpression_in_expression2723 = frozenset([]) 
    4852     FOLLOW_EOF_in_expression2725 = frozenset([1]) 
    4853     FOLLOW_expr1_in_expression2734 = frozenset([]) 
    4854     FOLLOW_EOF_in_expression2736 = frozenset([1]) 
    4855     FOLLOW_nestedname_in_for_2761 = frozenset([54]) 
    4856     FOLLOW_54_in_for_2765 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4857     FOLLOW_expr1_in_for_2771 = frozenset([]) 
    4858     FOLLOW_EOF_in_for_2777 = frozenset([1]) 
    4859     FOLLOW_nestedname_in_statement2798 = frozenset([45]) 
    4860     FOLLOW_45_in_statement2800 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4861     FOLLOW_expr1_in_statement2804 = frozenset([]) 
    4862     FOLLOW_EOF_in_statement2806 = frozenset([1]) 
    4863     FOLLOW_name_in_statement2815 = frozenset([33]) 
    4864     FOLLOW_33_in_statement2817 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4865     FOLLOW_expr1_in_statement2821 = frozenset([]) 
    4866     FOLLOW_EOF_in_statement2823 = frozenset([1]) 
    4867     FOLLOW_name_in_statement2832 = frozenset([36]) 
    4868     FOLLOW_36_in_statement2834 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4869     FOLLOW_expr1_in_statement2838 = frozenset([]) 
    4870     FOLLOW_EOF_in_statement2840 = frozenset([1]) 
    4871     FOLLOW_name_in_statement2849 = frozenset([31]) 
    4872     FOLLOW_31_in_statement2851 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4873     FOLLOW_expr1_in_statement2855 = frozenset([]) 
    4874     FOLLOW_EOF_in_statement2857 = frozenset([1]) 
    4875     FOLLOW_name_in_statement2866 = frozenset([41]) 
    4876     FOLLOW_41_in_statement2868 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4877     FOLLOW_expr1_in_statement2872 = frozenset([]) 
    4878     FOLLOW_EOF_in_statement2874 = frozenset([1]) 
    4879     FOLLOW_name_in_statement2883 = frozenset([40]) 
    4880     FOLLOW_40_in_statement2885 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4881     FOLLOW_expr1_in_statement2889 = frozenset([]) 
    4882     FOLLOW_EOF_in_statement2891 = frozenset([1]) 
    4883     FOLLOW_name_in_statement2900 = frozenset([26]) 
    4884     FOLLOW_26_in_statement2902 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4885     FOLLOW_expr1_in_statement2906 = frozenset([]) 
    4886     FOLLOW_EOF_in_statement2908 = frozenset([1]) 
    4887     FOLLOW_expression_in_statement2917 = frozenset([]) 
    4888     FOLLOW_EOF_in_statement2919 = frozenset([1]) 
    4889     FOLLOW_list_in_synpred19_UL41370 = frozenset([1]) 
    4890     FOLLOW_listcomprehension_in_synpred20_UL41379 = frozenset([1]) 
    4891     FOLLOW_dict_in_synpred21_UL41388 = frozenset([1]) 
    4892     FOLLOW_dictcomprehension_in_synpred22_UL41397 = frozenset([1]) 
    4893     FOLLOW_27_in_synpred23_UL41404 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4894     FOLLOW_generatorexpression_in_synpred23_UL41408 = frozenset([28]) 
    4895     FOLLOW_28_in_synpred23_UL41410 = frozenset([1]) 
    4896     FOLLOW_27_in_synpred25_UL41455 = frozenset([14, 27]) 
    4897     FOLLOW_nestedname_in_synpred25_UL41459 = frozenset([34]) 
    4898     FOLLOW_34_in_synpred25_UL41461 = frozenset([28]) 
    4899     FOLLOW_28_in_synpred25_UL41463 = frozenset([1]) 
    4900     FOLLOW_generatorexpression_in_synpred69_UL42695 = frozenset([1]) 
    4901     FOLLOW_generatorexpression_in_synpred70_UL42723 = frozenset([]) 
    4902     FOLLOW_EOF_in_synpred70_UL42725 = frozenset([1]) 
    4903     FOLLOW_nestedname_in_synpred71_UL42798 = frozenset([45]) 
    4904     FOLLOW_45_in_synpred71_UL42800 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4905     FOLLOW_expr1_in_synpred71_UL42804 = frozenset([]) 
    4906     FOLLOW_EOF_in_synpred71_UL42806 = frozenset([1]) 
    4907     FOLLOW_name_in_synpred72_UL42815 = frozenset([33]) 
    4908     FOLLOW_33_in_synpred72_UL42817 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4909     FOLLOW_expr1_in_synpred72_UL42821 = frozenset([]) 
    4910     FOLLOW_EOF_in_synpred72_UL42823 = frozenset([1]) 
    4911     FOLLOW_name_in_synpred73_UL42832 = frozenset([36]) 
    4912     FOLLOW_36_in_synpred73_UL42834 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4913     FOLLOW_expr1_in_synpred73_UL42838 = frozenset([]) 
    4914     FOLLOW_EOF_in_synpred73_UL42840 = frozenset([1]) 
    4915     FOLLOW_name_in_synpred74_UL42849 = frozenset([31]) 
    4916     FOLLOW_31_in_synpred74_UL42851 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4917     FOLLOW_expr1_in_synpred74_UL42855 = frozenset([]) 
    4918     FOLLOW_EOF_in_synpred74_UL42857 = frozenset([1]) 
    4919     FOLLOW_name_in_synpred75_UL42866 = frozenset([41]) 
    4920     FOLLOW_41_in_synpred75_UL42868 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4921     FOLLOW_expr1_in_synpred75_UL42872 = frozenset([]) 
    4922     FOLLOW_EOF_in_synpred75_UL42874 = frozenset([1]) 
    4923     FOLLOW_name_in_synpred76_UL42883 = frozenset([40]) 
    4924     FOLLOW_40_in_synpred76_UL42885 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4925     FOLLOW_expr1_in_synpred76_UL42889 = frozenset([]) 
    4926     FOLLOW_EOF_in_synpred76_UL42891 = frozenset([1]) 
    4927     FOLLOW_name_in_synpred77_UL42900 = frozenset([26]) 
    4928     FOLLOW_26_in_synpred77_UL42902 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
    4929     FOLLOW_expr1_in_synpred77_UL42906 = frozenset([]) 
    4930     FOLLOW_EOF_in_synpred77_UL42908 = frozenset([1]) 
     4759    FOLLOW_NONE_in_none694 = frozenset([1]) 
     4760    FOLLOW_TRUE_in_true_711 = frozenset([1]) 
     4761    FOLLOW_FALSE_in_false_728 = frozenset([1]) 
     4762    FOLLOW_INT_in_int_745 = frozenset([1]) 
     4763    FOLLOW_FLOAT_in_float_762 = frozenset([1]) 
     4764    FOLLOW_STRING_in_string779 = frozenset([1]) 
     4765    FOLLOW_DATE_in_date796 = frozenset([1]) 
     4766    FOLLOW_COLOR_in_color813 = frozenset([1]) 
     4767    FOLLOW_NAME_in_name830 = frozenset([1]) 
     4768    FOLLOW_none_in_literal849 = frozenset([1]) 
     4769    FOLLOW_false__in_literal858 = frozenset([1]) 
     4770    FOLLOW_true__in_literal867 = frozenset([1]) 
     4771    FOLLOW_int__in_literal876 = frozenset([1]) 
     4772    FOLLOW_float__in_literal885 = frozenset([1]) 
     4773    FOLLOW_string_in_literal894 = frozenset([1]) 
     4774    FOLLOW_date_in_literal903 = frozenset([1]) 
     4775    FOLLOW_color_in_literal912 = frozenset([1]) 
     4776    FOLLOW_name_in_literal921 = frozenset([1]) 
     4777    FOLLOW_49_in_list944 = frozenset([50]) 
     4778    FOLLOW_50_in_list950 = frozenset([1]) 
     4779    FOLLOW_49_in_list961 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4780    FOLLOW_expr1_in_list969 = frozenset([34, 50]) 
     4781    FOLLOW_34_in_list980 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4782    FOLLOW_expr1_in_list987 = frozenset([34, 50]) 
     4783    FOLLOW_34_in_list998 = frozenset([50]) 
     4784    FOLLOW_50_in_list1005 = frozenset([1]) 
     4785    FOLLOW_49_in_listcomprehension1033 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4786    FOLLOW_expr1_in_listcomprehension1039 = frozenset([52]) 
     4787    FOLLOW_52_in_listcomprehension1043 = frozenset([14, 27]) 
     4788    FOLLOW_nestedname_in_listcomprehension1049 = frozenset([54]) 
     4789    FOLLOW_54_in_listcomprehension1053 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4790    FOLLOW_expr1_in_listcomprehension1059 = frozenset([50, 53]) 
     4791    FOLLOW_53_in_listcomprehension1068 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4792    FOLLOW_expr1_in_listcomprehension1075 = frozenset([50]) 
     4793    FOLLOW_50_in_listcomprehension1088 = frozenset([1]) 
     4794    FOLLOW_expr1_in_dictitem1113 = frozenset([42]) 
     4795    FOLLOW_42_in_dictitem1117 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4796    FOLLOW_expr1_in_dictitem1123 = frozenset([1]) 
     4797    FOLLOW_57_in_dict1144 = frozenset([58]) 
     4798    FOLLOW_58_in_dict1150 = frozenset([1]) 
     4799    FOLLOW_57_in_dict1161 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4800    FOLLOW_dictitem_in_dict1169 = frozenset([34, 58]) 
     4801    FOLLOW_34_in_dict1180 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4802    FOLLOW_dictitem_in_dict1187 = frozenset([34, 58]) 
     4803    FOLLOW_34_in_dict1198 = frozenset([58]) 
     4804    FOLLOW_58_in_dict1205 = frozenset([1]) 
     4805    FOLLOW_57_in_dictcomprehension1233 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4806    FOLLOW_expr1_in_dictcomprehension1239 = frozenset([42]) 
     4807    FOLLOW_42_in_dictcomprehension1243 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4808    FOLLOW_expr1_in_dictcomprehension1249 = frozenset([52]) 
     4809    FOLLOW_52_in_dictcomprehension1253 = frozenset([14, 27]) 
     4810    FOLLOW_nestedname_in_dictcomprehension1259 = frozenset([54]) 
     4811    FOLLOW_54_in_dictcomprehension1263 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4812    FOLLOW_expr1_in_dictcomprehension1269 = frozenset([53, 58]) 
     4813    FOLLOW_53_in_dictcomprehension1278 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4814    FOLLOW_expr1_in_dictcomprehension1285 = frozenset([58]) 
     4815    FOLLOW_58_in_dictcomprehension1298 = frozenset([1]) 
     4816    FOLLOW_expr1_in_generatorexpression1326 = frozenset([52]) 
     4817    FOLLOW_52_in_generatorexpression1332 = frozenset([14, 27]) 
     4818    FOLLOW_nestedname_in_generatorexpression1338 = frozenset([54]) 
     4819    FOLLOW_54_in_generatorexpression1342 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4820    FOLLOW_expr1_in_generatorexpression1348 = frozenset([1, 53]) 
     4821    FOLLOW_53_in_generatorexpression1359 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4822    FOLLOW_expr1_in_generatorexpression1366 = frozenset([1]) 
     4823    FOLLOW_literal_in_atom1392 = frozenset([1]) 
     4824    FOLLOW_list_in_atom1401 = frozenset([1]) 
     4825    FOLLOW_listcomprehension_in_atom1410 = frozenset([1]) 
     4826    FOLLOW_dict_in_atom1419 = frozenset([1]) 
     4827    FOLLOW_dictcomprehension_in_atom1428 = frozenset([1]) 
     4828    FOLLOW_27_in_atom1435 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4829    FOLLOW_generatorexpression_in_atom1439 = frozenset([28]) 
     4830    FOLLOW_28_in_atom1441 = frozenset([1]) 
     4831    FOLLOW_27_in_atom1448 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4832    FOLLOW_expr1_in_atom1452 = frozenset([28]) 
     4833    FOLLOW_28_in_atom1454 = frozenset([1]) 
     4834    FOLLOW_name_in_nestedname1477 = frozenset([1]) 
     4835    FOLLOW_27_in_nestedname1486 = frozenset([14, 27]) 
     4836    FOLLOW_nestedname_in_nestedname1490 = frozenset([34]) 
     4837    FOLLOW_34_in_nestedname1492 = frozenset([28]) 
     4838    FOLLOW_28_in_nestedname1494 = frozenset([1]) 
     4839    FOLLOW_27_in_nestedname1503 = frozenset([14, 27]) 
     4840    FOLLOW_nestedname_in_nestedname1509 = frozenset([34]) 
     4841    FOLLOW_34_in_nestedname1513 = frozenset([14, 27]) 
     4842    FOLLOW_nestedname_in_nestedname1519 = frozenset([28, 34]) 
     4843    FOLLOW_34_in_nestedname1530 = frozenset([14, 27]) 
     4844    FOLLOW_nestedname_in_nestedname1537 = frozenset([28, 34]) 
     4845    FOLLOW_34_in_nestedname1548 = frozenset([28]) 
     4846    FOLLOW_28_in_nestedname1553 = frozenset([1]) 
     4847    FOLLOW_atom_in_expr91582 = frozenset([1, 27, 37, 49]) 
     4848    FOLLOW_37_in_expr91598 = frozenset([14]) 
     4849    FOLLOW_name_in_expr91605 = frozenset([1, 27, 37, 49]) 
     4850    FOLLOW_27_in_expr91621 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 28, 29, 30, 35, 49, 55, 57]) 
     4851    FOLLOW_30_in_expr91651 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4852    FOLLOW_exprarg_in_expr91655 = frozenset([28, 34]) 
     4853    FOLLOW_34_in_expr91663 = frozenset([28]) 
     4854    FOLLOW_29_in_expr91681 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4855    FOLLOW_exprarg_in_expr91685 = frozenset([28, 34]) 
     4856    FOLLOW_34_in_expr91700 = frozenset([30]) 
     4857    FOLLOW_30_in_expr91707 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4858    FOLLOW_exprarg_in_expr91711 = frozenset([28, 34]) 
     4859    FOLLOW_34_in_expr91726 = frozenset([28]) 
     4860    FOLLOW_exprarg_in_expr91746 = frozenset([28, 34]) 
     4861    FOLLOW_34_in_expr91761 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4862    FOLLOW_exprarg_in_expr91770 = frozenset([28, 34]) 
     4863    FOLLOW_34_in_expr91792 = frozenset([14]) 
     4864    FOLLOW_name_in_expr91801 = frozenset([45]) 
     4865    FOLLOW_45_in_expr91803 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4866    FOLLOW_exprarg_in_expr91807 = frozenset([28, 34]) 
     4867    FOLLOW_34_in_expr91829 = frozenset([29]) 
     4868    FOLLOW_29_in_expr91836 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4869    FOLLOW_exprarg_in_expr91840 = frozenset([28, 34]) 
     4870    FOLLOW_34_in_expr91862 = frozenset([30]) 
     4871    FOLLOW_30_in_expr91869 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4872    FOLLOW_exprarg_in_expr91873 = frozenset([28, 34]) 
     4873    FOLLOW_34_in_expr91888 = frozenset([28]) 
     4874    FOLLOW_name_in_expr91908 = frozenset([45]) 
     4875    FOLLOW_45_in_expr91910 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4876    FOLLOW_exprarg_in_expr91914 = frozenset([28, 34]) 
     4877    FOLLOW_34_in_expr91929 = frozenset([14]) 
     4878    FOLLOW_name_in_expr91938 = frozenset([45]) 
     4879    FOLLOW_45_in_expr91940 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4880    FOLLOW_exprarg_in_expr91944 = frozenset([28, 34]) 
     4881    FOLLOW_34_in_expr91966 = frozenset([29]) 
     4882    FOLLOW_29_in_expr91973 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4883    FOLLOW_exprarg_in_expr91977 = frozenset([28, 34]) 
     4884    FOLLOW_34_in_expr91999 = frozenset([30]) 
     4885    FOLLOW_30_in_expr92006 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4886    FOLLOW_exprarg_in_expr92010 = frozenset([28, 34]) 
     4887    FOLLOW_34_in_expr92025 = frozenset([28]) 
     4888    FOLLOW_28_in_expr92038 = frozenset([1, 27, 37, 49]) 
     4889    FOLLOW_49_in_expr92054 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 42, 49, 55, 57]) 
     4890    FOLLOW_42_in_expr92065 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 50, 55, 57]) 
     4891    FOLLOW_expr1_in_expr92080 = frozenset([50]) 
     4892    FOLLOW_expr1_in_expr92104 = frozenset([42, 50]) 
     4893    FOLLOW_42_in_expr92119 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 50, 55, 57]) 
     4894    FOLLOW_expr1_in_expr92138 = frozenset([50]) 
     4895    FOLLOW_50_in_expr92169 = frozenset([1, 27, 37, 49]) 
     4896    FOLLOW_expr9_in_expr82197 = frozenset([1]) 
     4897    FOLLOW_35_in_expr82208 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4898    FOLLOW_expr8_in_expr82212 = frozenset([1]) 
     4899    FOLLOW_expr8_in_expr72235 = frozenset([1, 25, 29, 38, 39]) 
     4900    FOLLOW_29_in_expr72252 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4901    FOLLOW_38_in_expr72265 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4902    FOLLOW_39_in_expr72278 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4903    FOLLOW_25_in_expr72291 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4904    FOLLOW_expr8_in_expr72305 = frozenset([1, 25, 29, 38, 39]) 
     4905    FOLLOW_expr7_in_expr62333 = frozenset([1, 32, 35]) 
     4906    FOLLOW_32_in_expr62350 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4907    FOLLOW_35_in_expr62363 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4908    FOLLOW_expr7_in_expr62377 = frozenset([1, 32, 35]) 
     4909    FOLLOW_expr6_in_expr52405 = frozenset([1, 24, 43, 44, 46, 47, 48]) 
     4910    FOLLOW_46_in_expr52422 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4911    FOLLOW_24_in_expr52435 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4912    FOLLOW_43_in_expr52448 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4913    FOLLOW_44_in_expr52461 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4914    FOLLOW_47_in_expr52474 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4915    FOLLOW_48_in_expr52487 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4916    FOLLOW_expr6_in_expr52501 = frozenset([1, 24, 43, 44, 46, 47, 48]) 
     4917    FOLLOW_expr5_in_expr42529 = frozenset([1, 54, 55]) 
     4918    FOLLOW_55_in_expr42551 = frozenset([54]) 
     4919    FOLLOW_54_in_expr42564 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 57]) 
     4920    FOLLOW_expr5_in_expr42571 = frozenset([1]) 
     4921    FOLLOW_expr4_in_expr32599 = frozenset([1]) 
     4922    FOLLOW_55_in_expr32610 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4923    FOLLOW_expr3_in_expr32614 = frozenset([1]) 
     4924    FOLLOW_expr3_in_expr22638 = frozenset([1, 51]) 
     4925    FOLLOW_51_in_expr22649 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4926    FOLLOW_expr3_in_expr22656 = frozenset([1, 51]) 
     4927    FOLLOW_expr2_in_expr12684 = frozenset([1, 56]) 
     4928    FOLLOW_56_in_expr12695 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4929    FOLLOW_expr2_in_expr12702 = frozenset([1, 56]) 
     4930    FOLLOW_generatorexpression_in_exprarg2726 = frozenset([1]) 
     4931    FOLLOW_expr1_in_exprarg2735 = frozenset([1]) 
     4932    FOLLOW_generatorexpression_in_expression2754 = frozenset([]) 
     4933    FOLLOW_EOF_in_expression2756 = frozenset([1]) 
     4934    FOLLOW_expr1_in_expression2765 = frozenset([]) 
     4935    FOLLOW_EOF_in_expression2767 = frozenset([1]) 
     4936    FOLLOW_nestedname_in_for_2792 = frozenset([54]) 
     4937    FOLLOW_54_in_for_2796 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4938    FOLLOW_expr1_in_for_2802 = frozenset([]) 
     4939    FOLLOW_EOF_in_for_2808 = frozenset([1]) 
     4940    FOLLOW_nestedname_in_statement2829 = frozenset([45]) 
     4941    FOLLOW_45_in_statement2831 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4942    FOLLOW_expr1_in_statement2835 = frozenset([]) 
     4943    FOLLOW_EOF_in_statement2837 = frozenset([1]) 
     4944    FOLLOW_name_in_statement2846 = frozenset([33]) 
     4945    FOLLOW_33_in_statement2848 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4946    FOLLOW_expr1_in_statement2852 = frozenset([]) 
     4947    FOLLOW_EOF_in_statement2854 = frozenset([1]) 
     4948    FOLLOW_name_in_statement2863 = frozenset([36]) 
     4949    FOLLOW_36_in_statement2865 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4950    FOLLOW_expr1_in_statement2869 = frozenset([]) 
     4951    FOLLOW_EOF_in_statement2871 = frozenset([1]) 
     4952    FOLLOW_name_in_statement2880 = frozenset([31]) 
     4953    FOLLOW_31_in_statement2882 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4954    FOLLOW_expr1_in_statement2886 = frozenset([]) 
     4955    FOLLOW_EOF_in_statement2888 = frozenset([1]) 
     4956    FOLLOW_name_in_statement2897 = frozenset([41]) 
     4957    FOLLOW_41_in_statement2899 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4958    FOLLOW_expr1_in_statement2903 = frozenset([]) 
     4959    FOLLOW_EOF_in_statement2905 = frozenset([1]) 
     4960    FOLLOW_name_in_statement2914 = frozenset([40]) 
     4961    FOLLOW_40_in_statement2916 = frozenset([5, 6, 10, 11, 13, 14, 15, 17, 19, 27, 35, 49, 55, 57]) 
     4962    FOLLOW_expr1_in_statement2920 = frozenset([]) 
     4963    FOLLOW_EOF_in_statement2922 = fr