Changeset 777bfcf


Ignore:
Timestamp:
Aug 14, 2016, 7:25:00 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
797347f
Parents:
1d4580a
Message:

more refactoring of parser code

Location:
src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/Parser/ParseNode.h

    r1d4580a r777bfcf  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 14 08:09:54 2016
    13 // Update Count     : 469
     12// Last Modified On : Sun Aug 14 16:29:20 2016
     13// Update Count     : 483
    1414//
    1515
     
    9292        ExpressionNode *expr;
    9393        bool aggregate;
    94         ExpressionNode *designator; // may be list
     94        ExpressionNode *designator;                                                     // may be list
    9595        InitializerNode *kids;
    9696        bool maybeConstructed;
     
    336336
    337337        StatementNode();
    338         StatementNode( const std::string *name );
    339         StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
    340         StatementNode( Type t, std::string *target );
    341338        StatementNode( DeclarationNode *decl );
    342 
    343339        ~StatementNode();
    344 
    345         StatementNode *set_block( StatementNode *b ) { block = b; return this; }
    346         StatementNode *get_block() const { return block; }
    347 
    348         void set_control( ExpressionNode *c ) { control = c; }
    349         ExpressionNode *get_control() const { return control; }
    350340
    351341        StatementNode::Type get_type() const { return type; }
     
    356346        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
    357347
    358         void setCatchRest( bool newVal ) { catchAny = newVal; }
    359 
    360         // StatementNode *add_controlexp( ExpressionNode * );
    361         StatementNode *append_block( StatementNode * );
    362348        virtual StatementNode *append_last_case( StatementNode * );
    363349
    364         void print( std::ostream &os, int indent = 0) const;
     350        virtual void print( std::ostream &os, int indent = 0) const {}
    365351        virtual StatementNode *clone() const;
    366352        virtual Statement *build() const;
     
    368354        static const char *StType[];
    369355        Type type;
    370         ExpressionNode *control;
    371         StatementNode *block;
    372356        std::list<std::string> labels;
    373         std::string *target;                                                            // target label for jump statements
    374357        DeclarationNode *decl;
    375         bool catchAny;
    376358}; // StatementNode
    377359
     
    447429class AsmStmtNode : public StatementNode {
    448430  public:
    449         AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
     431        AsmStmtNode( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
    450432        ~AsmStmtNode();
    451433
    452         void print( std::ostream &os, int indent = 0 ) const;
     434        void print( std::ostream &os, int indent = 0 ) const {}
    453435        Statement *build() const;
    454436  private:
  • TabularUnified src/Parser/StatementNode.cc

    r1d4580a r777bfcf  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 14 08:09:31 2016
    13 // Update Count     : 271
     12// Last Modified On : Sun Aug 14 13:10:54 2016
     13// Update Count     : 288
    1414//
    1515
     
    3434};
    3535
    36 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) {}
    37 
    38 StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) { assert( false ); }
    39 
    40 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), catchAny( false ) {
     36StatementNode::StatementNode() : ParseNode(), labels( 0 ), decl( 0 ) {}
     37
     38StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), labels( 0 ) {
    4139        assert( false );
    4240        if ( decl ) {
     
    8684}
    8785
    88 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) {
    89         this->control = ( t == Default ) ? 0 : control;
    90 }
    91 
    92 StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), catchAny( false ) {}
    93 
    9486StatementNode::~StatementNode() {
    95         delete control;
    96         delete block;
    97         delete target;
    9887        delete decl;
    9988}
     
    10190StatementNode * StatementNode::clone() const {
    10291        assert( false );
    103         StatementNode *newnode = new StatementNode( type, maybeClone( control ), maybeClone( block ) );
    104         if ( target ) {
    105                 newnode->target = new string( *target );
    106         } else {
    107                 newnode->target = 0;
    108         } // if
    109         newnode->decl = maybeClone( decl );
    110         return newnode;
     92        return 0;
    11193}
    11294
     
    119101}
    120102
    121 StatementNode *StatementNode::append_block( StatementNode *stmt ) {
    122         if ( stmt != 0 ) {
    123                 if ( block == 0 )
    124                         block = stmt;
    125                 else
    126                         block->set_last( stmt );
    127         } // if
    128         return this;
    129 }
    130 
    131103StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
    132104        assert( false );
    133         if ( stmt != 0 ) {
    134                 StatementNode *next = ( StatementNode *)get_next();
    135                 if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )
    136                         next->append_last_case( stmt );
    137                 else
    138                         if ( block == 0 )
    139                                 block = stmt;
    140                         else
    141                                 block->set_last( stmt );
    142         } // if
    143105        return this;
    144106}
     
    163125}
    164126
    165 void StatementNode::print( std::ostream &os, int indent ) const {
    166         if ( ! labels.empty() ) {
    167                 std::list<std::string>::const_iterator i;
    168 
    169                 os << string( indent, ' ' );
    170                 for ( i = labels.begin(); i != labels.end(); i++ )
    171                         os << *i << ":";
    172                 os << endl;
    173         } // if
    174 
     127Statement *StatementNode::build() const {
    175128        switch ( type ) {
    176129          case Decl:
    177                 decl->print( os, indent );
    178                 break;
    179           case Exp:
    180                 if ( control ) {
    181                         os << string( indent, ' ' );
    182                         control->print( os, indent );
    183                         os << endl;
    184                 } else
    185                         os << string( indent, ' ' ) << "Null Statement" << endl;
    186                 break;
    187           default:
    188                 os << string( indent, ' ' ) << StatementNode::StType[type] << endl;
    189                 if ( type == Catch ) {
    190                         if ( decl ) {
    191                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
    192                                 decl->print( os, indent + 2 * ParseNode::indent_by );
    193                         } else if ( catchAny ) {
    194                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
    195                         } else {
    196                                 ; // should never reach here
    197                         } // if
    198                 } // if
    199                 if ( control ) {
    200                         os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
    201                         control->printList( os, indent + 2 * ParseNode::indent_by );
    202                 } // if
    203                 if ( block ) {
    204                         os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;
    205                         block->printList( os, indent + 2 * ParseNode::indent_by );
    206                 } // if
    207                 break;
    208         } // switch
    209 }
    210 
    211 Statement *StatementNode::build() const {
    212         std::list<Statement *> branches;
    213         std::list<Expression *> exps;
    214         std::list<Label> labs;
    215 
    216         if ( ! labels.empty() ) {
    217                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    218                 copy( labels.begin(), labels.end(), lab_it );
    219         } // if
    220 
    221         buildList<Statement, StatementNode>( get_block(), branches );
    222 
    223         switch ( type ) {
    224           case Decl:
    225                 return new DeclStmt( labs, maybeBuild< Declaration >( decl ) );
     130                return new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) );
    226131                assert( false );
    227132          case Exp:
    228                 // {
    229                 //      Expression *e = maybeBuild< Expression >( get_control() );
    230 
    231                 //      if ( e )
    232                 //              return new ExprStmt( labs, e );
    233                 //      else
    234                 //              return new NullStmt( labs );
    235                 // }
    236                 assert( false );
    237133          case If:
    238                 // {
    239                 //      Statement *thenb = 0, *elseb = 0;
    240                 //      assert( branches.size() >= 1 );
    241 
    242                 //      thenb = branches.front();
    243                 //      branches.pop_front();
    244                 //      if ( ! branches.empty() ) {
    245                 //              elseb = branches.front();
    246                 //              branches.pop_front();
    247                 //      } // if
    248                 //      return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    249                 // }
    250                 assert( false );
    251134          case Switch:
    252                 // return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    253                 assert( false );
    254135          case Case:
    255                 //return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
    256                 assert( false );
    257136          case Default:
    258                 //return new CaseStmt( labs, 0, branches, true );
    259                 assert( false );
    260137          case While:
    261                 // assert( branches.size() == 1 );
    262                 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    263                 assert( false );
    264138          case Do:
    265                 // assert( branches.size() == 1 );
    266                 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    267                 assert( false );
    268139          case For:
    269                 // {
    270                 //      assert( branches.size() == 1 );
    271 
    272                 //      ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
    273                 //      assert( ctl != 0 );
    274 
    275                 //      std::list<Statement *> init;
    276                 //      if ( ctl->get_init() != 0 ) {
    277                 //              buildList( ctl->get_init(), init );
    278                 //      } // if
    279 
    280                 //      Expression *cond = 0;
    281                 //      if ( ctl->get_condition() != 0 )
    282                 //              cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    283 
    284                 //      Expression *incr = 0;
    285                 //      if ( ctl->get_change() != 0 )
    286                 //              incr = maybeBuild<Expression>(ctl->get_change());
    287 
    288                 //      return new ForStmt( labs, init, cond, incr, branches.front() );
    289                 // }
    290                 assert( false );
    291140          case Goto:
    292                 assert( false );
    293141          case Break:
    294                 assert( false );
    295142          case Continue:
    296                 assert( false );
    297143          case Return:
    298144          case Throw :
    299                 // buildList( get_control(), exps );
    300                 // if ( exps.size() ==0 )
    301                 //      return new ReturnStmt( labs, 0, type == Throw );
    302                 // if ( exps.size() > 0 )
    303                 //      return new ReturnStmt( labs, exps.back(), type == Throw );
    304                 assert( false );
    305145          case Try:
    306                 // {
    307                 //      assert( branches.size() >= 0 );
    308                 //      CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>( branches.front());
    309                 //      branches.pop_front();
    310                 //      FinallyStmt *finallyBlock = 0;
    311                 //      if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {
    312                 //              branches.pop_back();
    313                 //      } // if
    314                 //      return new TryStmt( labs, tryBlock, branches, finallyBlock );
    315                 // }
    316                 assert( false );
    317146          case Catch:
    318                 // {
    319                 //      assert( branches.size() == 1 );
    320 
    321                 //      return new CatchStmt( labs, maybeBuild< Declaration >( decl ), branches.front(), catchAny );
    322                 // }
    323                 assert( false );
    324147          case Finally:
    325                 // {
    326                 //      assert( branches.size() == 1 );
    327                 //      CompoundStmt *block = dynamic_cast<CompoundStmt *>( branches.front() );
    328                 //      assert( block != 0 );
    329 
    330                 //      return new FinallyStmt( labs, block );
    331                 // }
    332                 assert( false );
    333148          case Asm:
    334                 assert( false );
    335149          default:
    336150                assert( false );
     
    490304
    491305
    492 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
    493         StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
     306AsmStmtNode::AsmStmtNode( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
     307        voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
     308        type = Asm;
    494309        if ( gotolabels ) {
    495310                this->gotolabels = gotolabels->get_labels();
     
    500315AsmStmtNode::~AsmStmtNode() {
    501316        delete output; delete input; delete clobber;
    502 }
    503 
    504 void AsmStmtNode::print( std::ostream &os, int indent ) const {
    505         StatementNode::print( os, indent );                                     // print statement labels
    506         os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
    507         if ( instruction ) {
    508                 os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
    509 //              instruction->printList( os, indent + 2 * ParseNode::indent_by );
    510         } // if
    511         if ( output ) {
    512                 os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
    513                 output->printList( os, indent + 2 * ParseNode::indent_by );
    514         } // if
    515         if ( input ) {
    516                 os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
    517                 input->printList( os, indent + 2 * ParseNode::indent_by );
    518         } // if
    519         if ( clobber ) {
    520                 os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
    521 //              clobber->printList( os, indent + 2 * ParseNode::indent_by );
    522         } // if
    523         if ( ! gotolabels.empty() ) {
    524                 os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    525                 os << string( indent + 2 * ParseNode::indent_by, ' ' );
    526                 for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
    527                         os << *i;
    528                         i++;
    529                   if ( i == gotolabels.end() ) break;
    530                         os << ", ";
    531                 }
    532                 os << endl;
    533         } // if
    534317}
    535318
     
    551334}
    552335
     336// Statement *build_asm( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 ) {
     337//      std::list<Label> labs;
     338
     339//      if ( ! get_labels().empty() ) {
     340//              std::back_insert_iterator< std::list<Label> > lab_it( labs );
     341//              copy( get_labels().begin(), get_labels().end(), lab_it );
     342//      } // if
     343
     344//      std::list< Expression * > out, in;
     345//      std::list< ConstantExpr * > clob;
     346//      buildList( output, out );
     347//      buildList( input, in );
     348//      buildList( clobber, clob );
     349//      std::list< Label > gotolabs = gotolabels;
     350//      return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );
     351// }
     352
    553353// Local Variables: //
    554354// tab-width: 4 //
  • TabularUnified src/Parser/parser.cc

    r1d4580a r777bfcf  
    10201020static const yytype_uint16 yyrline[] =
    10211021{
    1022        0,   299,   299,   305,   314,   315,   316,   320,   321,   322,
    1023      326,   327,   331,   332,   336,   337,   341,   342,   353,   355,
    1024      357,   359,   364,   365,   371,   375,   377,   378,   380,   381,
    1025      383,   385,   387,   396,   397,   403,   404,   408,   409,   413,
    1026      417,   419,   421,   423,   428,   431,   433,   435,   440,   453,
    1027      455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
    1028      480,   481,   487,   488,   489,   490,   494,   495,   497,   502,
    1029      503,   505,   507,   512,   513,   515,   520,   521,   523,   528,
    1030      529,   531,   533,   535,   540,   541,   543,   548,   549,   554,
    1031      555,   560,   561,   566,   567,   572,   573,   578,   579,   582,
    1032      584,   589,   594,   595,   597,   603,   604,   608,   609,   610,
    1033      611,   612,   613,   614,   615,   616,   617,   618,   624,   626,
    1034      628,   630,   635,   636,   641,   642,   648,   649,   655,   656,
    1035      657,   658,   659,   660,   661,   662,   663,   673,   680,   682,
    1036      692,   693,   698,   700,   706,   708,   712,   713,   718,   723,
    1037      726,   728,   730,   740,   742,   753,   754,   756,   760,   762,
    1038      766,   767,   772,   773,   777,   782,   783,   787,   789,   795,
    1039      796,   800,   802,   804,   806,   812,   813,   817,   819,   824,
    1040      826,   828,   833,   835,   840,   842,   846,   849,   853,   856,
    1041      860,   862,   864,   866,   871,   873,   875,   880,   882,   884,
    1042      886,   888,   893,   895,   897,   899,   904,   916,   917,   922,
    1043      924,   929,   933,   935,   937,   939,   941,   947,   948,   954,
    1044      955,   959,   960,   965,   967,   973,   974,   976,   981,   983,
    1045      990,   992,   996,   997,  1002,  1004,  1008,  1009,  1013,  1015,
    1046     1019,  1020,  1024,  1025,  1029,  1030,  1045,  1046,  1047,  1048,
    1047     1049,  1053,  1058,  1065,  1075,  1080,  1085,  1093,  1098,  1103,
    1048     1108,  1113,  1121,  1143,  1148,  1155,  1157,  1164,  1169,  1174,
    1049     1185,  1190,  1195,  1200,  1205,  1214,  1219,  1227,  1228,  1229,
    1050     1230,  1236,  1241,  1249,  1250,  1251,  1252,  1256,  1257,  1258,
    1051     1259,  1264,  1265,  1274,  1275,  1280,  1281,  1286,  1288,  1290,
    1052     1292,  1294,  1297,  1296,  1308,  1309,  1311,  1321,  1322,  1327,
    1053     1331,  1333,  1335,  1337,  1339,  1341,  1343,  1345,  1350,  1352,
    1054     1354,  1356,  1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,
    1055     1374,  1380,  1381,  1383,  1385,  1387,  1392,  1393,  1399,  1400,
    1056     1402,  1404,  1409,  1411,  1413,  1415,  1420,  1421,  1423,  1425,
    1057     1430,  1431,  1433,  1438,  1439,  1441,  1443,  1448,  1450,  1452,
    1058     1457,  1458,  1462,  1464,  1470,  1469,  1473,  1475,  1480,  1482,
    1059     1488,  1489,  1494,  1495,  1497,  1498,  1507,  1508,  1510,  1512,
    1060     1517,  1519,  1525,  1526,  1528,  1531,  1534,  1539,  1540,  1545,
    1061     1550,  1554,  1556,  1562,  1561,  1568,  1570,  1576,  1577,  1585,
    1062     1586,  1590,  1591,  1592,  1594,  1596,  1603,  1604,  1606,  1608,
    1063     1613,  1614,  1620,  1621,  1625,  1626,  1631,  1632,  1633,  1635,
    1064     1643,  1644,  1646,  1649,  1651,  1655,  1656,  1657,  1659,  1661,
    1065     1665,  1670,  1678,  1679,  1688,  1690,  1695,  1696,  1697,  1701,
    1066     1702,  1703,  1707,  1708,  1709,  1713,  1714,  1715,  1720,  1721,
    1067     1722,  1723,  1729,  1730,  1732,  1737,  1738,  1743,  1744,  1745,
    1068     1746,  1747,  1762,  1763,  1768,  1769,  1775,  1777,  1780,  1782,
    1069     1784,  1807,  1808,  1810,  1812,  1817,  1818,  1820,  1825,  1830,
    1070     1831,  1837,  1836,  1840,  1844,  1846,  1848,  1854,  1855,  1860,
    1071     1865,  1867,  1872,  1874,  1875,  1877,  1882,  1884,  1886,  1891,
    1072     1893,  1898,  1903,  1911,  1917,  1916,  1930,  1931,  1936,  1937,
    1073     1941,  1946,  1951,  1959,  1964,  1975,  1976,  1987,  1988,  1994,
    1074     1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,  2035,
    1075     2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,  2105,
    1076     2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,  2133,
    1077     2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,  2187,
    1078     2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,  2218,
    1079     2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,  2250,
    1080     2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,  2283,
    1081     2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,  2322,
    1082     2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,  2349,
    1083     2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,  2382,
    1084     2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,  2437,
    1085     2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,  2474,
    1086     2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,  2511,
    1087     2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,  2539,
    1088     2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,  2573,
    1089     2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,  2601,
    1090     2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,  2640,
    1091     2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,  2668,
    1092     2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,  2696,
    1093     2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,  2721,
    1094     2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,  2772,
    1095     2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,  2798,
    1096     2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,  2843,
    1097     2844
     1022       0,   298,   298,   304,   313,   314,   315,   319,   320,   321,
     1023     325,   326,   330,   331,   335,   336,   340,   341,   352,   354,
     1024     356,   358,   363,   364,   370,   374,   376,   377,   379,   380,
     1025     382,   384,   386,   395,   396,   402,   403,   407,   408,   412,
     1026     416,   418,   420,   422,   427,   430,   432,   434,   439,   452,
     1027     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
     1028     479,   480,   486,   487,   488,   489,   493,   494,   496,   501,
     1029     502,   504,   506,   511,   512,   514,   519,   520,   522,   527,
     1030     528,   530,   532,   534,   539,   540,   542,   547,   548,   553,
     1031     554,   559,   560,   565,   566,   571,   572,   577,   578,   581,
     1032     583,   588,   593,   594,   596,   602,   603,   607,   608,   609,
     1033     610,   611,   612,   613,   614,   615,   616,   617,   623,   625,
     1034     627,   629,   634,   635,   640,   641,   647,   648,   654,   655,
     1035     656,   657,   658,   659,   660,   661,   662,   672,   679,   681,
     1036     691,   692,   697,   699,   705,   707,   711,   712,   717,   722,
     1037     725,   727,   729,   739,   741,   752,   753,   755,   759,   761,
     1038     765,   766,   771,   772,   776,   781,   782,   786,   788,   794,
     1039     795,   799,   801,   803,   805,   811,   812,   816,   818,   823,
     1040     825,   827,   832,   834,   839,   841,   845,   848,   852,   855,
     1041     859,   861,   863,   865,   870,   872,   874,   879,   881,   883,
     1042     885,   887,   892,   894,   896,   898,   903,   915,   916,   921,
     1043     923,   928,   932,   934,   936,   938,   940,   946,   947,   953,
     1044     954,   958,   959,   964,   966,   972,   973,   975,   980,   982,
     1045     989,   991,   995,   996,  1001,  1003,  1007,  1008,  1012,  1014,
     1046    1018,  1019,  1023,  1024,  1028,  1029,  1044,  1045,  1046,  1047,
     1047    1048,  1052,  1057,  1064,  1074,  1079,  1084,  1092,  1097,  1102,
     1048    1107,  1112,  1120,  1142,  1147,  1154,  1156,  1163,  1168,  1173,
     1049    1184,  1189,  1194,  1199,  1204,  1213,  1218,  1226,  1227,  1228,
     1050    1229,  1235,  1240,  1248,  1249,  1250,  1251,  1255,  1256,  1257,
     1051    1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
     1052    1291,  1293,  1296,  1295,  1307,  1308,  1310,  1320,  1321,  1326,
     1053    1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,  1349,  1351,
     1054    1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,  1371,
     1055    1373,  1379,  1380,  1382,  1384,  1386,  1391,  1392,  1398,  1399,
     1056    1401,  1403,  1408,  1410,  1412,  1414,  1419,  1420,  1422,  1424,
     1057    1429,  1430,  1432,  1437,  1438,  1440,  1442,  1447,  1449,  1451,
     1058    1456,  1457,  1461,  1463,  1469,  1468,  1472,  1474,  1479,  1481,
     1059    1487,  1488,  1493,  1494,  1496,  1497,  1506,  1507,  1509,  1511,
     1060    1516,  1518,  1524,  1525,  1527,  1530,  1533,  1538,  1539,  1544,
     1061    1549,  1553,  1555,  1561,  1560,  1567,  1569,  1575,  1576,  1584,
     1062    1585,  1589,  1590,  1591,  1593,  1595,  1602,  1603,  1605,  1607,
     1063    1612,  1613,  1619,  1620,  1624,  1625,  1630,  1631,  1632,  1634,
     1064    1642,  1643,  1645,  1648,  1650,  1654,  1655,  1656,  1658,  1660,
     1065    1664,  1669,  1677,  1678,  1687,  1689,  1694,  1695,  1696,  1700,
     1066    1701,  1702,  1706,  1707,  1708,  1712,  1713,  1714,  1719,  1720,
     1067    1721,  1722,  1728,  1729,  1731,  1736,  1737,  1742,  1743,  1744,
     1068    1745,  1746,  1761,  1762,  1767,  1768,  1774,  1776,  1779,  1781,
     1069    1783,  1806,  1807,  1809,  1811,  1816,  1817,  1819,  1824,  1829,
     1070    1830,  1836,  1835,  1839,  1843,  1845,  1847,  1853,  1854,  1859,
     1071    1864,  1866,  1871,  1873,  1874,  1876,  1881,  1883,  1885,  1890,
     1072    1892,  1897,  1902,  1910,  1916,  1915,  1929,  1930,  1935,  1936,
     1073    1940,  1945,  1950,  1958,  1963,  1974,  1975,  1986,  1987,  1993,
     1074    1994,  1998,  1999,  2000,  2003,  2002,  2013,  2022,  2028,  2034,
     1075    2043,  2049,  2055,  2061,  2067,  2075,  2081,  2089,  2095,  2104,
     1076    2105,  2106,  2110,  2114,  2116,  2121,  2122,  2126,  2127,  2132,
     1077    2138,  2139,  2142,  2144,  2145,  2149,  2150,  2151,  2152,  2186,
     1078    2188,  2189,  2191,  2196,  2201,  2206,  2208,  2210,  2215,  2217,
     1079    2219,  2221,  2226,  2228,  2237,  2239,  2240,  2245,  2247,  2249,
     1080    2254,  2256,  2258,  2263,  2265,  2267,  2276,  2277,  2278,  2282,
     1081    2284,  2286,  2291,  2293,  2295,  2300,  2302,  2304,  2319,  2321,
     1082    2322,  2324,  2329,  2330,  2335,  2337,  2339,  2344,  2346,  2348,
     1083    2350,  2355,  2357,  2359,  2369,  2371,  2372,  2374,  2379,  2381,
     1084    2383,  2388,  2390,  2392,  2394,  2399,  2401,  2403,  2434,  2436,
     1085    2437,  2439,  2444,  2449,  2457,  2459,  2461,  2466,  2468,  2473,
     1086    2475,  2489,  2490,  2492,  2497,  2499,  2501,  2503,  2505,  2510,
     1087    2511,  2513,  2515,  2520,  2522,  2524,  2530,  2532,  2534,  2538,
     1088    2540,  2542,  2544,  2558,  2559,  2561,  2566,  2568,  2570,  2572,
     1089    2574,  2579,  2580,  2582,  2584,  2589,  2591,  2593,  2599,  2600,
     1090    2602,  2611,  2614,  2616,  2619,  2621,  2623,  2636,  2637,  2639,
     1091    2644,  2646,  2648,  2650,  2652,  2657,  2658,  2660,  2662,  2667,
     1092    2669,  2677,  2678,  2679,  2684,  2685,  2689,  2691,  2693,  2695,
     1093    2697,  2699,  2706,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
     1094    2722,  2724,  2729,  2731,  2733,  2738,  2764,  2765,  2767,  2771,
     1095    2772,  2776,  2778,  2780,  2782,  2784,  2786,  2793,  2795,  2797,
     1096    2799,  2801,  2803,  2808,  2813,  2815,  2817,  2835,  2837,  2842,
     1097    2843
    10981098};
    10991099#endif
     
    49604960
    49614961/* Line 1806 of yacc.c  */
    4962 #line 299 "parser.yy"
     4962#line 298 "parser.yy"
    49634963    {
    49644964                        typedefTable.enterScope();
     
    49694969
    49704970/* Line 1806 of yacc.c  */
    4971 #line 305 "parser.yy"
     4971#line 304 "parser.yy"
    49724972    {
    49734973                        typedefTable.leaveScope();
     
    49784978
    49794979/* Line 1806 of yacc.c  */
     4980#line 313 "parser.yy"
     4981    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4982    break;
     4983
     4984  case 5:
     4985
     4986/* Line 1806 of yacc.c  */
    49804987#line 314 "parser.yy"
    4981     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    4982     break;
    4983 
    4984   case 5:
     4988    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4989    break;
     4990
     4991  case 6:
    49854992
    49864993/* Line 1806 of yacc.c  */
    49874994#line 315 "parser.yy"
    4988     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    4989     break;
    4990 
    4991   case 6:
    4992 
    4993 /* Line 1806 of yacc.c  */
    4994 #line 316 "parser.yy"
    49954995    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    49964996    break;
     
    49994999
    50005000/* Line 1806 of yacc.c  */
    5001 #line 341 "parser.yy"
     5001#line 340 "parser.yy"
    50025002    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
    50035003    break;
     
    50065006
    50075007/* Line 1806 of yacc.c  */
    5008 #line 343 "parser.yy"
     5008#line 342 "parser.yy"
    50095009    {
    50105010                        appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
     
    50175017
    50185018/* Line 1806 of yacc.c  */
    5019 #line 354 "parser.yy"
     5019#line 353 "parser.yy"
    50205020    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50215021    break;
     
    50245024
    50255025/* Line 1806 of yacc.c  */
    5026 #line 356 "parser.yy"
     5026#line 355 "parser.yy"
    50275027    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50285028    break;
     
    50315031
    50325032/* Line 1806 of yacc.c  */
    5033 #line 358 "parser.yy"
     5033#line 357 "parser.yy"
    50345034    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50355035    break;
     
    50385038
    50395039/* Line 1806 of yacc.c  */
    5040 #line 360 "parser.yy"
     5040#line 359 "parser.yy"
    50415041    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50425042    break;
     
    50455045
    50465046/* Line 1806 of yacc.c  */
    5047 #line 370 "parser.yy"
     5047#line 369 "parser.yy"
    50485048    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50495049    break;
     
    50525052
    50535053/* Line 1806 of yacc.c  */
    5054 #line 372 "parser.yy"
     5054#line 371 "parser.yy"
    50555055    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50565056    break;
     
    50595059
    50605060/* Line 1806 of yacc.c  */
    5061 #line 376 "parser.yy"
     5061#line 375 "parser.yy"
    50625062    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50635063    break;
     
    50665066
    50675067/* Line 1806 of yacc.c  */
    5068 #line 379 "parser.yy"
     5068#line 378 "parser.yy"
    50695069    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50705070    break;
     
    50735073
    50745074/* Line 1806 of yacc.c  */
    5075 #line 382 "parser.yy"
     5075#line 381 "parser.yy"
    50765076    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50775077    break;
     
    50805080
    50815081/* Line 1806 of yacc.c  */
    5082 #line 384 "parser.yy"
     5082#line 383 "parser.yy"
    50835083    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50845084    break;
     
    50875087
    50885088/* Line 1806 of yacc.c  */
    5089 #line 386 "parser.yy"
     5089#line 385 "parser.yy"
    50905090    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    50915091    break;
     
    50945094
    50955095/* Line 1806 of yacc.c  */
    5096 #line 388 "parser.yy"
     5096#line 387 "parser.yy"
    50975097    {
    50985098                        Token fn;
     
    51055105
    51065106/* Line 1806 of yacc.c  */
    5107 #line 398 "parser.yy"
     5107#line 397 "parser.yy"
    51085108    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    51095109    break;
     
    51125112
    51135113/* Line 1806 of yacc.c  */
    5114 #line 403 "parser.yy"
     5114#line 402 "parser.yy"
    51155115    { (yyval.en) = 0; }
    51165116    break;
     
    51195119
    51205120/* Line 1806 of yacc.c  */
    5121 #line 409 "parser.yy"
     5121#line 408 "parser.yy"
    51225122    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    51235123    break;
     
    51265126
    51275127/* Line 1806 of yacc.c  */
    5128 #line 414 "parser.yy"
     5128#line 413 "parser.yy"
    51295129    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51305130    break;
     
    51335133
    51345134/* Line 1806 of yacc.c  */
    5135 #line 418 "parser.yy"
     5135#line 417 "parser.yy"
    51365136    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51375137    break;
     
    51405140
    51415141/* Line 1806 of yacc.c  */
    5142 #line 420 "parser.yy"
     5142#line 419 "parser.yy"
    51435143    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51445144    break;
     
    51475147
    51485148/* Line 1806 of yacc.c  */
    5149 #line 422 "parser.yy"
     5149#line 421 "parser.yy"
    51505150    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51515151    break;
     
    51545154
    51555155/* Line 1806 of yacc.c  */
    5156 #line 424 "parser.yy"
     5156#line 423 "parser.yy"
    51575157    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51585158    break;
     
    51615161
    51625162/* Line 1806 of yacc.c  */
    5163 #line 432 "parser.yy"
     5163#line 431 "parser.yy"
    51645164    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51655165    break;
     
    51685168
    51695169/* Line 1806 of yacc.c  */
    5170 #line 434 "parser.yy"
     5170#line 433 "parser.yy"
    51715171    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51725172    break;
     
    51755175
    51765176/* Line 1806 of yacc.c  */
    5177 #line 436 "parser.yy"
     5177#line 435 "parser.yy"
    51785178    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51795179    break;
     
    51825182
    51835183/* Line 1806 of yacc.c  */
    5184 #line 441 "parser.yy"
     5184#line 440 "parser.yy"
    51855185    {
    51865186                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52005200
    52015201/* Line 1806 of yacc.c  */
    5202 #line 454 "parser.yy"
     5202#line 453 "parser.yy"
    52035203    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52045204    break;
     
    52075207
    52085208/* Line 1806 of yacc.c  */
    5209 #line 456 "parser.yy"
     5209#line 455 "parser.yy"
    52105210    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52115211    break;
     
    52145214
    52155215/* Line 1806 of yacc.c  */
    5216 #line 458 "parser.yy"
     5216#line 457 "parser.yy"
    52175217    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52185218    break;
     
    52215221
    52225222/* Line 1806 of yacc.c  */
    5223 #line 460 "parser.yy"
     5223#line 459 "parser.yy"
    52245224    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52255225    break;
     
    52285228
    52295229/* Line 1806 of yacc.c  */
    5230 #line 462 "parser.yy"
     5230#line 461 "parser.yy"
    52315231    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52325232    break;
     
    52355235
    52365236/* Line 1806 of yacc.c  */
    5237 #line 464 "parser.yy"
     5237#line 463 "parser.yy"
    52385238    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52395239    break;
     
    52425242
    52435243/* Line 1806 of yacc.c  */
    5244 #line 466 "parser.yy"
     5244#line 465 "parser.yy"
    52455245    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52465246    break;
     
    52495249
    52505250/* Line 1806 of yacc.c  */
    5251 #line 468 "parser.yy"
     5251#line 467 "parser.yy"
    52525252    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52535253    break;
     
    52565256
    52575257/* Line 1806 of yacc.c  */
    5258 #line 470 "parser.yy"
     5258#line 469 "parser.yy"
    52595259    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52605260    break;
     
    52635263
    52645264/* Line 1806 of yacc.c  */
    5265 #line 472 "parser.yy"
     5265#line 471 "parser.yy"
    52665266    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52675267    break;
     
    52705270
    52715271/* Line 1806 of yacc.c  */
    5272 #line 474 "parser.yy"
     5272#line 473 "parser.yy"
    52735273    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52745274    break;
     
    52775277
    52785278/* Line 1806 of yacc.c  */
     5279#line 479 "parser.yy"
     5280    { (yyval.op) = OperKinds::PointTo; }
     5281    break;
     5282
     5283  case 61:
     5284
     5285/* Line 1806 of yacc.c  */
    52795286#line 480 "parser.yy"
    5280     { (yyval.op) = OperKinds::PointTo; }
    5281     break;
    5282 
    5283   case 61:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 481 "parser.yy"
    52875287    { (yyval.op) = OperKinds::AddressOf; }
    52885288    break;
     
    52915291
    52925292/* Line 1806 of yacc.c  */
     5293#line 486 "parser.yy"
     5294    { (yyval.op) = OperKinds::UnPlus; }
     5295    break;
     5296
     5297  case 63:
     5298
     5299/* Line 1806 of yacc.c  */
    52935300#line 487 "parser.yy"
    5294     { (yyval.op) = OperKinds::UnPlus; }
    5295     break;
    5296 
    5297   case 63:
     5301    { (yyval.op) = OperKinds::UnMinus; }
     5302    break;
     5303
     5304  case 64:
    52985305
    52995306/* Line 1806 of yacc.c  */
    53005307#line 488 "parser.yy"
    5301     { (yyval.op) = OperKinds::UnMinus; }
    5302     break;
    5303 
    5304   case 64:
     5308    { (yyval.op) = OperKinds::Neg; }
     5309    break;
     5310
     5311  case 65:
    53055312
    53065313/* Line 1806 of yacc.c  */
    53075314#line 489 "parser.yy"
    5308     { (yyval.op) = OperKinds::Neg; }
    5309     break;
    5310 
    5311   case 65:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 490 "parser.yy"
    53155315    { (yyval.op) = OperKinds::BitNeg; }
    53165316    break;
     
    53195319
    53205320/* Line 1806 of yacc.c  */
    5321 #line 496 "parser.yy"
     5321#line 495 "parser.yy"
    53225322    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53235323    break;
     
    53265326
    53275327/* Line 1806 of yacc.c  */
    5328 #line 498 "parser.yy"
     5328#line 497 "parser.yy"
    53295329    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53305330    break;
     
    53335333
    53345334/* Line 1806 of yacc.c  */
    5335 #line 504 "parser.yy"
     5335#line 503 "parser.yy"
    53365336    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53375337    break;
     
    53405340
    53415341/* Line 1806 of yacc.c  */
    5342 #line 506 "parser.yy"
     5342#line 505 "parser.yy"
    53435343    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53445344    break;
     
    53475347
    53485348/* Line 1806 of yacc.c  */
    5349 #line 508 "parser.yy"
     5349#line 507 "parser.yy"
    53505350    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53515351    break;
     
    53545354
    53555355/* Line 1806 of yacc.c  */
    5356 #line 514 "parser.yy"
     5356#line 513 "parser.yy"
    53575357    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53585358    break;
     
    53615361
    53625362/* Line 1806 of yacc.c  */
    5363 #line 516 "parser.yy"
     5363#line 515 "parser.yy"
    53645364    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53655365    break;
     
    53685368
    53695369/* Line 1806 of yacc.c  */
    5370 #line 522 "parser.yy"
     5370#line 521 "parser.yy"
    53715371    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53725372    break;
     
    53755375
    53765376/* Line 1806 of yacc.c  */
    5377 #line 524 "parser.yy"
     5377#line 523 "parser.yy"
    53785378    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53795379    break;
     
    53825382
    53835383/* Line 1806 of yacc.c  */
    5384 #line 530 "parser.yy"
     5384#line 529 "parser.yy"
    53855385    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53865386    break;
     
    53895389
    53905390/* Line 1806 of yacc.c  */
    5391 #line 532 "parser.yy"
     5391#line 531 "parser.yy"
    53925392    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53935393    break;
     
    53965396
    53975397/* Line 1806 of yacc.c  */
    5398 #line 534 "parser.yy"
     5398#line 533 "parser.yy"
    53995399    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54005400    break;
     
    54035403
    54045404/* Line 1806 of yacc.c  */
    5405 #line 536 "parser.yy"
     5405#line 535 "parser.yy"
    54065406    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54075407    break;
     
    54105410
    54115411/* Line 1806 of yacc.c  */
    5412 #line 542 "parser.yy"
     5412#line 541 "parser.yy"
    54135413    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54145414    break;
     
    54175417
    54185418/* Line 1806 of yacc.c  */
    5419 #line 544 "parser.yy"
     5419#line 543 "parser.yy"
    54205420    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54215421    break;
     
    54245424
    54255425/* Line 1806 of yacc.c  */
    5426 #line 550 "parser.yy"
     5426#line 549 "parser.yy"
    54275427    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54285428    break;
     
    54315431
    54325432/* Line 1806 of yacc.c  */
    5433 #line 556 "parser.yy"
     5433#line 555 "parser.yy"
    54345434    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54355435    break;
     
    54385438
    54395439/* Line 1806 of yacc.c  */
    5440 #line 562 "parser.yy"
     5440#line 561 "parser.yy"
    54415441    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54425442    break;
     
    54455445
    54465446/* Line 1806 of yacc.c  */
    5447 #line 568 "parser.yy"
     5447#line 567 "parser.yy"
    54485448    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54495449    break;
     
    54525452
    54535453/* Line 1806 of yacc.c  */
    5454 #line 574 "parser.yy"
     5454#line 573 "parser.yy"
    54555455    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54565456    break;
     
    54595459
    54605460/* Line 1806 of yacc.c  */
    5461 #line 580 "parser.yy"
     5461#line 579 "parser.yy"
    54625462    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54635463    break;
     
    54665466
    54675467/* Line 1806 of yacc.c  */
    5468 #line 583 "parser.yy"
     5468#line 582 "parser.yy"
    54695469    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54705470    break;
     
    54735473
    54745474/* Line 1806 of yacc.c  */
    5475 #line 585 "parser.yy"
     5475#line 584 "parser.yy"
    54765476    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54775477    break;
     
    54805480
    54815481/* Line 1806 of yacc.c  */
    5482 #line 596 "parser.yy"
     5482#line 595 "parser.yy"
    54835483    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54845484    break;
     
    54875487
    54885488/* Line 1806 of yacc.c  */
    5489 #line 598 "parser.yy"
     5489#line 597 "parser.yy"
    54905490    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    54915491    break;
     
    54945494
    54955495/* Line 1806 of yacc.c  */
    5496 #line 603 "parser.yy"
     5496#line 602 "parser.yy"
    54975497    { (yyval.en) = nullptr; }
    54985498    break;
     
    55015501
    55025502/* Line 1806 of yacc.c  */
     5503#line 607 "parser.yy"
     5504    { (yyval.op) = OperKinds::Assign; }
     5505    break;
     5506
     5507  case 108:
     5508
     5509/* Line 1806 of yacc.c  */
    55035510#line 608 "parser.yy"
    5504     { (yyval.op) = OperKinds::Assign; }
    5505     break;
    5506 
    5507   case 108:
     5511    { (yyval.op) = OperKinds::MulAssn; }
     5512    break;
     5513
     5514  case 109:
    55085515
    55095516/* Line 1806 of yacc.c  */
    55105517#line 609 "parser.yy"
    5511     { (yyval.op) = OperKinds::MulAssn; }
    5512     break;
    5513 
    5514   case 109:
     5518    { (yyval.op) = OperKinds::DivAssn; }
     5519    break;
     5520
     5521  case 110:
    55155522
    55165523/* Line 1806 of yacc.c  */
    55175524#line 610 "parser.yy"
    5518     { (yyval.op) = OperKinds::DivAssn; }
    5519     break;
    5520 
    5521   case 110:
     5525    { (yyval.op) = OperKinds::ModAssn; }
     5526    break;
     5527
     5528  case 111:
    55225529
    55235530/* Line 1806 of yacc.c  */
    55245531#line 611 "parser.yy"
    5525     { (yyval.op) = OperKinds::ModAssn; }
    5526     break;
    5527 
    5528   case 111:
     5532    { (yyval.op) = OperKinds::PlusAssn; }
     5533    break;
     5534
     5535  case 112:
    55295536
    55305537/* Line 1806 of yacc.c  */
    55315538#line 612 "parser.yy"
    5532     { (yyval.op) = OperKinds::PlusAssn; }
    5533     break;
    5534 
    5535   case 112:
     5539    { (yyval.op) = OperKinds::MinusAssn; }
     5540    break;
     5541
     5542  case 113:
    55365543
    55375544/* Line 1806 of yacc.c  */
    55385545#line 613 "parser.yy"
    5539     { (yyval.op) = OperKinds::MinusAssn; }
    5540     break;
    5541 
    5542   case 113:
     5546    { (yyval.op) = OperKinds::LSAssn; }
     5547    break;
     5548
     5549  case 114:
    55435550
    55445551/* Line 1806 of yacc.c  */
    55455552#line 614 "parser.yy"
    5546     { (yyval.op) = OperKinds::LSAssn; }
    5547     break;
    5548 
    5549   case 114:
     5553    { (yyval.op) = OperKinds::RSAssn; }
     5554    break;
     5555
     5556  case 115:
    55505557
    55515558/* Line 1806 of yacc.c  */
    55525559#line 615 "parser.yy"
    5553     { (yyval.op) = OperKinds::RSAssn; }
    5554     break;
    5555 
    5556   case 115:
     5560    { (yyval.op) = OperKinds::AndAssn; }
     5561    break;
     5562
     5563  case 116:
    55575564
    55585565/* Line 1806 of yacc.c  */
    55595566#line 616 "parser.yy"
    5560     { (yyval.op) = OperKinds::AndAssn; }
    5561     break;
    5562 
    5563   case 116:
     5567    { (yyval.op) = OperKinds::ERAssn; }
     5568    break;
     5569
     5570  case 117:
    55645571
    55655572/* Line 1806 of yacc.c  */
    55665573#line 617 "parser.yy"
    5567     { (yyval.op) = OperKinds::ERAssn; }
    5568     break;
    5569 
    5570   case 117:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 618 "parser.yy"
    55745574    { (yyval.op) = OperKinds::OrAssn; }
    55755575    break;
     
    55785578
    55795579/* Line 1806 of yacc.c  */
    5580 #line 625 "parser.yy"
     5580#line 624 "parser.yy"
    55815581    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    55825582    break;
     
    55855585
    55865586/* Line 1806 of yacc.c  */
    5587 #line 627 "parser.yy"
     5587#line 626 "parser.yy"
    55885588    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    55895589    break;
     
    55925592
    55935593/* Line 1806 of yacc.c  */
    5594 #line 629 "parser.yy"
     5594#line 628 "parser.yy"
    55955595    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    55965596    break;
     
    55995599
    56005600/* Line 1806 of yacc.c  */
    5601 #line 631 "parser.yy"
     5601#line 630 "parser.yy"
    56025602    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56035603    break;
     
    56065606
    56075607/* Line 1806 of yacc.c  */
    5608 #line 637 "parser.yy"
     5608#line 636 "parser.yy"
    56095609    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56105610    break;
     
    56135613
    56145614/* Line 1806 of yacc.c  */
    5615 #line 643 "parser.yy"
     5615#line 642 "parser.yy"
    56165616    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56175617    break;
     
    56205620
    56215621/* Line 1806 of yacc.c  */
    5622 #line 648 "parser.yy"
     5622#line 647 "parser.yy"
    56235623    { (yyval.en) = 0; }
    56245624    break;
     
    56275627
    56285628/* Line 1806 of yacc.c  */
    5629 #line 657 "parser.yy"
     5629#line 656 "parser.yy"
    56305630    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56315631    break;
     
    56345634
    56355635/* Line 1806 of yacc.c  */
    5636 #line 664 "parser.yy"
     5636#line 663 "parser.yy"
    56375637    {
    56385638                        Token fn;
     
    56455645
    56465646/* Line 1806 of yacc.c  */
    5647 #line 674 "parser.yy"
     5647#line 673 "parser.yy"
    56485648    {
    56495649                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56545654
    56555655/* Line 1806 of yacc.c  */
    5656 #line 681 "parser.yy"
     5656#line 680 "parser.yy"
    56575657    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56585658    break;
     
    56615661
    56625662/* Line 1806 of yacc.c  */
    5663 #line 688 "parser.yy"
     5663#line 687 "parser.yy"
    56645664    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56655665    break;
     
    56685668
    56695669/* Line 1806 of yacc.c  */
    5670 #line 694 "parser.yy"
     5670#line 693 "parser.yy"
    56715671    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56725672    break;
     
    56755675
    56765676/* Line 1806 of yacc.c  */
    5677 #line 699 "parser.yy"
     5677#line 698 "parser.yy"
    56785678    { (yyval.sn) = new StatementNode2( (yyvsp[(1) - (1)].decl) ); }
    56795679    break;
     
    56825682
    56835683/* Line 1806 of yacc.c  */
    5684 #line 701 "parser.yy"
     5684#line 700 "parser.yy"
    56855685    {   // mark all fields in list
    56865686                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     
    56935693
    56945694/* Line 1806 of yacc.c  */
    5695 #line 707 "parser.yy"
     5695#line 706 "parser.yy"
    56965696    { (yyval.sn) = new StatementNode2( (yyvsp[(1) - (1)].decl) ); }
    56975697    break;
     
    57005700
    57015701/* Line 1806 of yacc.c  */
    5702 #line 714 "parser.yy"
     5702#line 713 "parser.yy"
    57035703    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57045704    break;
     
    57075707
    57085708/* Line 1806 of yacc.c  */
    5709 #line 719 "parser.yy"
     5709#line 718 "parser.yy"
    57105710    { (yyval.sn) = new StatementNode2( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57115711    break;
     
    57145714
    57155715/* Line 1806 of yacc.c  */
    5716 #line 725 "parser.yy"
     5716#line 724 "parser.yy"
    57175717    { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57185718    break;
     
    57215721
    57225722/* Line 1806 of yacc.c  */
    5723 #line 727 "parser.yy"
     5723#line 726 "parser.yy"
    57245724    { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57255725    break;
     
    57285728
    57295729/* Line 1806 of yacc.c  */
    5730 #line 729 "parser.yy"
     5730#line 728 "parser.yy"
    57315731    { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57325732    break;
     
    57355735
    57365736/* Line 1806 of yacc.c  */
    5737 #line 731 "parser.yy"
     5737#line 730 "parser.yy"
    57385738    {
    57395739                        StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57505750
    57515751/* Line 1806 of yacc.c  */
    5752 #line 741 "parser.yy"
     5752#line 740 "parser.yy"
    57535753    { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57545754    break;
     
    57575757
    57585758/* Line 1806 of yacc.c  */
    5759 #line 743 "parser.yy"
     5759#line 742 "parser.yy"
    57605760    {
    57615761                        StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57675767
    57685768/* Line 1806 of yacc.c  */
    5769 #line 753 "parser.yy"
     5769#line 752 "parser.yy"
    57705770    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57715771    break;
     
    57745774
    57755775/* Line 1806 of yacc.c  */
    5776 #line 755 "parser.yy"
     5776#line 754 "parser.yy"
    57775777    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57785778    break;
     
    57815781
    57825782/* Line 1806 of yacc.c  */
    5783 #line 760 "parser.yy"
     5783#line 759 "parser.yy"
    57845784    { (yyval.sn) = new StatementNode2( build_case( (yyvsp[(1) - (1)].en) ) ); }
    57855785    break;
     
    57885788
    57895789/* Line 1806 of yacc.c  */
    5790 #line 762 "parser.yy"
     5790#line 761 "parser.yy"
    57915791    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode2( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    57925792    break;
     
    57955795
    57965796/* Line 1806 of yacc.c  */
     5797#line 765 "parser.yy"
     5798    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5799    break;
     5800
     5801  case 161:
     5802
     5803/* Line 1806 of yacc.c  */
    57975804#line 766 "parser.yy"
    5798     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    5799     break;
    5800 
    5801   case 161:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 767 "parser.yy"
    58055805    { (yyval.sn) = new StatementNode2( build_default() ); }
    58065806    break;
     
    58095809
    58105810/* Line 1806 of yacc.c  */
    5811 #line 773 "parser.yy"
     5811#line 772 "parser.yy"
    58125812    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58135813    break;
     
    58165816
    58175817/* Line 1806 of yacc.c  */
    5818 #line 777 "parser.yy"
     5818#line 776 "parser.yy"
    58195819    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    58205820    break;
     
    58235823
    58245824/* Line 1806 of yacc.c  */
    5825 #line 782 "parser.yy"
     5825#line 781 "parser.yy"
    58265826    { (yyval.sn) = 0; }
    58275827    break;
     
    58305830
    58315831/* Line 1806 of yacc.c  */
    5832 #line 788 "parser.yy"
     5832#line 787 "parser.yy"
    58335833    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    58345834    break;
     
    58375837
    58385838/* Line 1806 of yacc.c  */
    5839 #line 790 "parser.yy"
     5839#line 789 "parser.yy"
    58405840    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58415841    break;
     
    58445844
    58455845/* Line 1806 of yacc.c  */
    5846 #line 795 "parser.yy"
     5846#line 794 "parser.yy"
    58475847    { (yyval.sn) = 0; }
    58485848    break;
     
    58515851
    58525852/* Line 1806 of yacc.c  */
    5853 #line 801 "parser.yy"
     5853#line 800 "parser.yy"
    58545854    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58555855    break;
     
    58585858
    58595859/* Line 1806 of yacc.c  */
    5860 #line 803 "parser.yy"
     5860#line 802 "parser.yy"
    58615861    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    58625862    break;
     
    58655865
    58665866/* Line 1806 of yacc.c  */
    5867 #line 805 "parser.yy"
     5867#line 804 "parser.yy"
    58685868    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58695869    break;
     
    58725872
    58735873/* Line 1806 of yacc.c  */
    5874 #line 807 "parser.yy"
     5874#line 806 "parser.yy"
    58755875    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    58765876    break;
     
    58795879
    58805880/* Line 1806 of yacc.c  */
    5881 #line 812 "parser.yy"
     5881#line 811 "parser.yy"
    58825882    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
    58835883    break;
     
    58865886
    58875887/* Line 1806 of yacc.c  */
    5888 #line 818 "parser.yy"
     5888#line 817 "parser.yy"
    58895889    { (yyval.sn) = 0; }
    58905890    break;
     
    58935893
    58945894/* Line 1806 of yacc.c  */
    5895 #line 820 "parser.yy"
     5895#line 819 "parser.yy"
    58965896    { (yyval.sn) = 0; }
    58975897    break;
     
    59005900
    59015901/* Line 1806 of yacc.c  */
    5902 #line 825 "parser.yy"
     5902#line 824 "parser.yy"
    59035903    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59045904    break;
     
    59075907
    59085908/* Line 1806 of yacc.c  */
    5909 #line 827 "parser.yy"
     5909#line 826 "parser.yy"
    59105910    { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
    59115911    break;
     
    59145914
    59155915/* Line 1806 of yacc.c  */
    5916 #line 829 "parser.yy"
     5916#line 828 "parser.yy"
    59175917    { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59185918    break;
     
    59215921
    59225922/* Line 1806 of yacc.c  */
    5923 #line 834 "parser.yy"
     5923#line 833 "parser.yy"
    59245924    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59255925    break;
     
    59285928
    59295929/* Line 1806 of yacc.c  */
    5930 #line 836 "parser.yy"
     5930#line 835 "parser.yy"
    59315931    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59325932    break;
     
    59355935
    59365936/* Line 1806 of yacc.c  */
    5937 #line 841 "parser.yy"
     5937#line 840 "parser.yy"
    59385938    { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59395939    break;
     
    59425942
    59435943/* Line 1806 of yacc.c  */
    5944 #line 845 "parser.yy"
     5944#line 844 "parser.yy"
    59455945    { (yyval.sn) = new StatementNode2( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59465946    break;
     
    59495949
    59505950/* Line 1806 of yacc.c  */
    5951 #line 848 "parser.yy"
     5951#line 847 "parser.yy"
    59525952    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
    59535953    break;
     
    59565956
    59575957/* Line 1806 of yacc.c  */
    5958 #line 852 "parser.yy"
     5958#line 851 "parser.yy"
    59595959    { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
    59605960    break;
     
    59635963
    59645964/* Line 1806 of yacc.c  */
    5965 #line 855 "parser.yy"
     5965#line 854 "parser.yy"
    59665966    { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
    59675967    break;
     
    59705970
    59715971/* Line 1806 of yacc.c  */
    5972 #line 859 "parser.yy"
     5972#line 858 "parser.yy"
    59735973    { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
    59745974    break;
     
    59775977
    59785978/* Line 1806 of yacc.c  */
    5979 #line 861 "parser.yy"
     5979#line 860 "parser.yy"
    59805980    { (yyval.sn) = new StatementNode2( build_return( (yyvsp[(2) - (3)].en) ) ); }
    59815981    break;
     
    59845984
    59855985/* Line 1806 of yacc.c  */
    5986 #line 863 "parser.yy"
     5986#line 862 "parser.yy"
    59875987    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59885988    break;
     
    59915991
    59925992/* Line 1806 of yacc.c  */
    5993 #line 865 "parser.yy"
     5993#line 864 "parser.yy"
    59945994    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59955995    break;
     
    59985998
    59995999/* Line 1806 of yacc.c  */
    6000 #line 867 "parser.yy"
     6000#line 866 "parser.yy"
    60016001    { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60026002    break;
     
    60056005
    60066006/* Line 1806 of yacc.c  */
    6007 #line 872 "parser.yy"
     6007#line 871 "parser.yy"
    60086008    { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60096009    break;
     
    60126012
    60136013/* Line 1806 of yacc.c  */
    6014 #line 874 "parser.yy"
     6014#line 873 "parser.yy"
    60156015    { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60166016    break;
     
    60196019
    60206020/* Line 1806 of yacc.c  */
    6021 #line 876 "parser.yy"
     6021#line 875 "parser.yy"
    60226022    { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60236023    break;
     
    60266026
    60276027/* Line 1806 of yacc.c  */
    6028 #line 883 "parser.yy"
     6028#line 882 "parser.yy"
    60296029    { (yyval.sn) = new StatementNode2( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60306030    break;
     
    60336033
    60346034/* Line 1806 of yacc.c  */
    6035 #line 885 "parser.yy"
     6035#line 884 "parser.yy"
    60366036    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode2( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60376037    break;
     
    60406040
    60416041/* Line 1806 of yacc.c  */
    6042 #line 887 "parser.yy"
     6042#line 886 "parser.yy"
    60436043    { (yyval.sn) = new StatementNode2( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60446044    break;
     
    60476047
    60486048/* Line 1806 of yacc.c  */
    6049 #line 889 "parser.yy"
     6049#line 888 "parser.yy"
    60506050    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode2( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60516051    break;
     
    60546054
    60556055/* Line 1806 of yacc.c  */
    6056 #line 894 "parser.yy"
     6056#line 893 "parser.yy"
    60576057    { (yyval.sn) = new StatementNode2( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60586058    break;
     
    60616061
    60626062/* Line 1806 of yacc.c  */
    6063 #line 896 "parser.yy"
     6063#line 895 "parser.yy"
    60646064    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode2( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60656065    break;
     
    60686068
    60696069/* Line 1806 of yacc.c  */
    6070 #line 898 "parser.yy"
     6070#line 897 "parser.yy"
    60716071    { (yyval.sn) = new StatementNode2( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60726072    break;
     
    60756075
    60766076/* Line 1806 of yacc.c  */
    6077 #line 900 "parser.yy"
     6077#line 899 "parser.yy"
    60786078    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode2( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60796079    break;
     
    60826082
    60836083/* Line 1806 of yacc.c  */
    6084 #line 905 "parser.yy"
     6084#line 904 "parser.yy"
    60856085    {
    60866086                        (yyval.sn) = new StatementNode2( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    60916091
    60926092/* Line 1806 of yacc.c  */
    6093 #line 918 "parser.yy"
     6093#line 917 "parser.yy"
    60946094    {
    60956095                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61016101
    61026102/* Line 1806 of yacc.c  */
    6103 #line 923 "parser.yy"
     6103#line 922 "parser.yy"
    61046104    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61056105    break;
     
    61086108
    61096109/* Line 1806 of yacc.c  */
    6110 #line 925 "parser.yy"
     6110#line 924 "parser.yy"
    61116111    {
    61126112                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61186118
    61196119/* Line 1806 of yacc.c  */
    6120 #line 934 "parser.yy"
    6121     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6120#line 933 "parser.yy"
     6121    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    61226122    break;
    61236123
     
    61256125
    61266126/* Line 1806 of yacc.c  */
    6127 #line 936 "parser.yy"
    6128     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6127#line 935 "parser.yy"
     6128    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    61296129    break;
    61306130
     
    61326132
    61336133/* Line 1806 of yacc.c  */
    6134 #line 938 "parser.yy"
    6135     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6134#line 937 "parser.yy"
     6135    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61366136    break;
    61376137
     
    61396139
    61406140/* Line 1806 of yacc.c  */
    6141 #line 940 "parser.yy"
    6142     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); }
     6141#line 939 "parser.yy"
     6142    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); }
    61436143    break;
    61446144
     
    61466146
    61476147/* Line 1806 of yacc.c  */
    6148 #line 942 "parser.yy"
    6149     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
     6148#line 941 "parser.yy"
     6149    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
    61506150    break;
    61516151
     
    61536153
    61546154/* Line 1806 of yacc.c  */
    6155 #line 947 "parser.yy"
     6155#line 946 "parser.yy"
    61566156    { (yyval.flag) = false; }
    61576157    break;
     
    61606160
    61616161/* Line 1806 of yacc.c  */
    6162 #line 949 "parser.yy"
     6162#line 948 "parser.yy"
    61636163    { (yyval.flag) = true; }
    61646164    break;
     
    61676167
    61686168/* Line 1806 of yacc.c  */
    6169 #line 954 "parser.yy"
     6169#line 953 "parser.yy"
    61706170    { (yyval.en) = 0; }
    61716171    break;
     
    61746174
    61756175/* Line 1806 of yacc.c  */
    6176 #line 961 "parser.yy"
     6176#line 960 "parser.yy"
    61776177    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    61786178    break;
     
    61816181
    61826182/* Line 1806 of yacc.c  */
    6183 #line 966 "parser.yy"
     6183#line 965 "parser.yy"
    61846184    { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    61856185    break;
     
    61886188
    61896189/* Line 1806 of yacc.c  */
    6190 #line 968 "parser.yy"
     6190#line 967 "parser.yy"
    61916191    { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    61926192    break;
     
    61956195
    61966196/* Line 1806 of yacc.c  */
    6197 #line 973 "parser.yy"
     6197#line 972 "parser.yy"
    61986198    { (yyval.en) = 0; }
    61996199    break;
     
    62026202
    62036203/* Line 1806 of yacc.c  */
    6204 #line 975 "parser.yy"
     6204#line 974 "parser.yy"
    62056205    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62066206    break;
     
    62096209
    62106210/* Line 1806 of yacc.c  */
    6211 #line 977 "parser.yy"
     6211#line 976 "parser.yy"
    62126212    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62136213    break;
     
    62166216
    62176217/* Line 1806 of yacc.c  */
    6218 #line 982 "parser.yy"
     6218#line 981 "parser.yy"
    62196219    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62206220    break;
     
    62236223
    62246224/* Line 1806 of yacc.c  */
    6225 #line 984 "parser.yy"
     6225#line 983 "parser.yy"
    62266226    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62276227    break;
     
    62306230
    62316231/* Line 1806 of yacc.c  */
    6232 #line 991 "parser.yy"
     6232#line 990 "parser.yy"
    62336233    { (yyval.decl) = 0; }
    62346234    break;
     
    62376237
    62386238/* Line 1806 of yacc.c  */
    6239 #line 998 "parser.yy"
     6239#line 997 "parser.yy"
    62406240    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62416241    break;
     
    62446244
    62456245/* Line 1806 of yacc.c  */
    6246 #line 1003 "parser.yy"
     6246#line 1002 "parser.yy"
    62476247    { (yyval.decl) = 0; }
    62486248    break;
     
    62516251
    62526252/* Line 1806 of yacc.c  */
    6253 #line 1010 "parser.yy"
     6253#line 1009 "parser.yy"
    62546254    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62556255    break;
    62566256
    62576257  case 242:
     6258
     6259/* Line 1806 of yacc.c  */
     6260#line 1023 "parser.yy"
     6261    {}
     6262    break;
     6263
     6264  case 243:
    62586265
    62596266/* Line 1806 of yacc.c  */
     
    62626269    break;
    62636270
    6264   case 243:
    6265 
    6266 /* Line 1806 of yacc.c  */
    6267 #line 1025 "parser.yy"
    6268     {}
    6269     break;
    6270 
    62716271  case 251:
    62726272
    62736273/* Line 1806 of yacc.c  */
    6274 #line 1054 "parser.yy"
     6274#line 1053 "parser.yy"
    62756275    {
    62766276                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62826282
    62836283/* Line 1806 of yacc.c  */
    6284 #line 1061 "parser.yy"
     6284#line 1060 "parser.yy"
    62856285    {
    62866286                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62926292
    62936293/* Line 1806 of yacc.c  */
    6294 #line 1066 "parser.yy"
     6294#line 1065 "parser.yy"
    62956295    {
    62966296                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63026302
    63036303/* Line 1806 of yacc.c  */
    6304 #line 1076 "parser.yy"
     6304#line 1075 "parser.yy"
    63056305    {
    63066306                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63126312
    63136313/* Line 1806 of yacc.c  */
    6314 #line 1081 "parser.yy"
     6314#line 1080 "parser.yy"
    63156315    {
    63166316                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63226322
    63236323/* Line 1806 of yacc.c  */
    6324 #line 1086 "parser.yy"
     6324#line 1085 "parser.yy"
    63256325    {
    63266326                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63326332
    63336333/* Line 1806 of yacc.c  */
    6334 #line 1094 "parser.yy"
     6334#line 1093 "parser.yy"
    63356335    {
    63366336                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63426342
    63436343/* Line 1806 of yacc.c  */
    6344 #line 1099 "parser.yy"
     6344#line 1098 "parser.yy"
    63456345    {
    63466346                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63526352
    63536353/* Line 1806 of yacc.c  */
    6354 #line 1104 "parser.yy"
     6354#line 1103 "parser.yy"
    63556355    {
    63566356                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63626362
    63636363/* Line 1806 of yacc.c  */
    6364 #line 1109 "parser.yy"
     6364#line 1108 "parser.yy"
    63656365    {
    63666366                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63726372
    63736373/* Line 1806 of yacc.c  */
    6374 #line 1114 "parser.yy"
     6374#line 1113 "parser.yy"
    63756375    {
    63766376                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63826382
    63836383/* Line 1806 of yacc.c  */
    6384 #line 1122 "parser.yy"
     6384#line 1121 "parser.yy"
    63856385    {
    63866386                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63916391
    63926392/* Line 1806 of yacc.c  */
    6393 #line 1145 "parser.yy"
     6393#line 1144 "parser.yy"
    63946394    {
    63956395                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64006400
    64016401/* Line 1806 of yacc.c  */
    6402 #line 1149 "parser.yy"
     6402#line 1148 "parser.yy"
    64036403    {
    64046404                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64096409
    64106410/* Line 1806 of yacc.c  */
    6411 #line 1156 "parser.yy"
     6411#line 1155 "parser.yy"
    64126412    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64136413    break;
     
    64166416
    64176417/* Line 1806 of yacc.c  */
    6418 #line 1160 "parser.yy"
     6418#line 1159 "parser.yy"
    64196419    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64206420    break;
     
    64236423
    64246424/* Line 1806 of yacc.c  */
    6425 #line 1165 "parser.yy"
     6425#line 1164 "parser.yy"
    64266426    {
    64276427                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64336433
    64346434/* Line 1806 of yacc.c  */
    6435 #line 1170 "parser.yy"
     6435#line 1169 "parser.yy"
    64366436    {
    64376437                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64436443
    64446444/* Line 1806 of yacc.c  */
    6445 #line 1175 "parser.yy"
     6445#line 1174 "parser.yy"
    64466446    {
    64476447                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64536453
    64546454/* Line 1806 of yacc.c  */
    6455 #line 1186 "parser.yy"
     6455#line 1185 "parser.yy"
    64566456    {
    64576457                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64636463
    64646464/* Line 1806 of yacc.c  */
    6465 #line 1191 "parser.yy"
     6465#line 1190 "parser.yy"
    64666466    {
    64676467                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64736473
    64746474/* Line 1806 of yacc.c  */
    6475 #line 1196 "parser.yy"
     6475#line 1195 "parser.yy"
    64766476    {
    64776477                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64836483
    64846484/* Line 1806 of yacc.c  */
    6485 #line 1201 "parser.yy"
     6485#line 1200 "parser.yy"
    64866486    {
    64876487                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64936493
    64946494/* Line 1806 of yacc.c  */
    6495 #line 1206 "parser.yy"
     6495#line 1205 "parser.yy"
    64966496    {
    64976497                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65036503
    65046504/* Line 1806 of yacc.c  */
    6505 #line 1215 "parser.yy"
     6505#line 1214 "parser.yy"
    65066506    {
    65076507                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65136513
    65146514/* Line 1806 of yacc.c  */
    6515 #line 1220 "parser.yy"
     6515#line 1219 "parser.yy"
    65166516    {
    65176517                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65236523
    65246524/* Line 1806 of yacc.c  */
    6525 #line 1237 "parser.yy"
     6525#line 1236 "parser.yy"
    65266526    {
    65276527                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65336533
    65346534/* Line 1806 of yacc.c  */
    6535 #line 1242 "parser.yy"
     6535#line 1241 "parser.yy"
    65366536    {
    65376537                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65436543
    65446544/* Line 1806 of yacc.c  */
    6545 #line 1264 "parser.yy"
     6545#line 1263 "parser.yy"
    65466546    { (yyval.decl) = 0; }
    65476547    break;
     
    65506550
    65516551/* Line 1806 of yacc.c  */
    6552 #line 1276 "parser.yy"
     6552#line 1275 "parser.yy"
    65536553    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65546554    break;
     
    65576557
    65586558/* Line 1806 of yacc.c  */
    6559 #line 1287 "parser.yy"
     6559#line 1286 "parser.yy"
    65606560    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65616561    break;
     
    65646564
    65656565/* Line 1806 of yacc.c  */
    6566 #line 1289 "parser.yy"
     6566#line 1288 "parser.yy"
    65676567    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65686568    break;
     
    65716571
    65726572/* Line 1806 of yacc.c  */
    6573 #line 1291 "parser.yy"
     6573#line 1290 "parser.yy"
    65746574    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65756575    break;
     
    65786578
    65796579/* Line 1806 of yacc.c  */
    6580 #line 1293 "parser.yy"
     6580#line 1292 "parser.yy"
    65816581    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65826582    break;
     
    65856585
    65866586/* Line 1806 of yacc.c  */
    6587 #line 1295 "parser.yy"
     6587#line 1294 "parser.yy"
    65886588    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65896589    break;
     
    65926592
    65936593/* Line 1806 of yacc.c  */
    6594 #line 1297 "parser.yy"
     6594#line 1296 "parser.yy"
    65956595    {
    65966596                        typedefTable.enterScope();
     
    66016601
    66026602/* Line 1806 of yacc.c  */
    6603 #line 1301 "parser.yy"
     6603#line 1300 "parser.yy"
    66046604    {
    66056605                        typedefTable.leaveScope();
     
    66116611
    66126612/* Line 1806 of yacc.c  */
    6613 #line 1310 "parser.yy"
     6613#line 1309 "parser.yy"
    66146614    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66156615    break;
     
    66186618
    66196619/* Line 1806 of yacc.c  */
    6620 #line 1312 "parser.yy"
     6620#line 1311 "parser.yy"
    66216621    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66226622    break;
     
    66256625
    66266626/* Line 1806 of yacc.c  */
    6627 #line 1323 "parser.yy"
     6627#line 1322 "parser.yy"
    66286628    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66296629    break;
     
    66326632
    66336633/* Line 1806 of yacc.c  */
    6634 #line 1332 "parser.yy"
     6634#line 1331 "parser.yy"
    66356635    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66366636    break;
     
    66396639
    66406640/* Line 1806 of yacc.c  */
    6641 #line 1334 "parser.yy"
     6641#line 1333 "parser.yy"
    66426642    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66436643    break;
     
    66466646
    66476647/* Line 1806 of yacc.c  */
    6648 #line 1336 "parser.yy"
     6648#line 1335 "parser.yy"
    66496649    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66506650    break;
     
    66536653
    66546654/* Line 1806 of yacc.c  */
    6655 #line 1338 "parser.yy"
     6655#line 1337 "parser.yy"
    66566656    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66576657    break;
     
    66606660
    66616661/* Line 1806 of yacc.c  */
    6662 #line 1340 "parser.yy"
     6662#line 1339 "parser.yy"
    66636663    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    66646664    break;
     
    66676667
    66686668/* Line 1806 of yacc.c  */
    6669 #line 1342 "parser.yy"
     6669#line 1341 "parser.yy"
    66706670    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66716671    break;
     
    66746674
    66756675/* Line 1806 of yacc.c  */
    6676 #line 1344 "parser.yy"
     6676#line 1343 "parser.yy"
    66776677    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    66786678    break;
     
    66816681
    66826682/* Line 1806 of yacc.c  */
    6683 #line 1346 "parser.yy"
     6683#line 1345 "parser.yy"
    66846684    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66856685    break;
     
    66886688
    66896689/* Line 1806 of yacc.c  */
    6690 #line 1351 "parser.yy"
     6690#line 1350 "parser.yy"
    66916691    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66926692    break;
     
    66956695
    66966696/* Line 1806 of yacc.c  */
    6697 #line 1353 "parser.yy"
     6697#line 1352 "parser.yy"
    66986698    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66996699    break;
     
    67026702
    67036703/* Line 1806 of yacc.c  */
    6704 #line 1355 "parser.yy"
     6704#line 1354 "parser.yy"
    67056705    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67066706    break;
     
    67096709
    67106710/* Line 1806 of yacc.c  */
    6711 #line 1357 "parser.yy"
     6711#line 1356 "parser.yy"
    67126712    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67136713    break;
     
    67166716
    67176717/* Line 1806 of yacc.c  */
    6718 #line 1359 "parser.yy"
     6718#line 1358 "parser.yy"
    67196719    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    67206720    break;
     
    67236723
    67246724/* Line 1806 of yacc.c  */
    6725 #line 1361 "parser.yy"
     6725#line 1360 "parser.yy"
    67266726    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    67276727    break;
     
    67306730
    67316731/* Line 1806 of yacc.c  */
    6732 #line 1363 "parser.yy"
     6732#line 1362 "parser.yy"
    67336733    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    67346734    break;
     
    67376737
    67386738/* Line 1806 of yacc.c  */
    6739 #line 1365 "parser.yy"
     6739#line 1364 "parser.yy"
    67406740    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    67416741    break;
     
    67446744
    67456745/* Line 1806 of yacc.c  */
    6746 #line 1367 "parser.yy"
     6746#line 1366 "parser.yy"
    67476747    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67486748    break;
     
    67516751
    67526752/* Line 1806 of yacc.c  */
    6753 #line 1369 "parser.yy"
     6753#line 1368 "parser.yy"
    67546754    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67556755    break;
     
    67586758
    67596759/* Line 1806 of yacc.c  */
    6760 #line 1371 "parser.yy"
     6760#line 1370 "parser.yy"
    67616761    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    67626762    break;
     
    67656765
    67666766/* Line 1806 of yacc.c  */
    6767 #line 1373 "parser.yy"
     6767#line 1372 "parser.yy"
    67686768    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    67696769    break;
     
    67726772
    67736773/* Line 1806 of yacc.c  */
    6774 #line 1375 "parser.yy"
     6774#line 1374 "parser.yy"
    67756775    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    67766776    break;
     
    67796779
    67806780/* Line 1806 of yacc.c  */
    6781 #line 1382 "parser.yy"
     6781#line 1381 "parser.yy"
    67826782    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67836783    break;
     
    67866786
    67876787/* Line 1806 of yacc.c  */
    6788 #line 1384 "parser.yy"
     6788#line 1383 "parser.yy"
    67896789    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67906790    break;
     
    67936793
    67946794/* Line 1806 of yacc.c  */
    6795 #line 1386 "parser.yy"
     6795#line 1385 "parser.yy"
    67966796    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67976797    break;
     
    68006800
    68016801/* Line 1806 of yacc.c  */
    6802 #line 1388 "parser.yy"
     6802#line 1387 "parser.yy"
    68036803    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68046804    break;
     
    68076807
    68086808/* Line 1806 of yacc.c  */
    6809 #line 1394 "parser.yy"
     6809#line 1393 "parser.yy"
    68106810    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68116811    break;
     
    68146814
    68156815/* Line 1806 of yacc.c  */
    6816 #line 1401 "parser.yy"
     6816#line 1400 "parser.yy"
    68176817    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68186818    break;
     
    68216821
    68226822/* Line 1806 of yacc.c  */
    6823 #line 1403 "parser.yy"
     6823#line 1402 "parser.yy"
    68246824    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68256825    break;
     
    68286828
    68296829/* Line 1806 of yacc.c  */
    6830 #line 1405 "parser.yy"
     6830#line 1404 "parser.yy"
    68316831    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68326832    break;
     
    68356835
    68366836/* Line 1806 of yacc.c  */
    6837 #line 1410 "parser.yy"
     6837#line 1409 "parser.yy"
    68386838    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68396839    break;
     
    68426842
    68436843/* Line 1806 of yacc.c  */
    6844 #line 1412 "parser.yy"
     6844#line 1411 "parser.yy"
    68456845    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68466846    break;
     
    68496849
    68506850/* Line 1806 of yacc.c  */
    6851 #line 1414 "parser.yy"
     6851#line 1413 "parser.yy"
    68526852    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68536853    break;
     
    68566856
    68576857/* Line 1806 of yacc.c  */
    6858 #line 1416 "parser.yy"
     6858#line 1415 "parser.yy"
    68596859    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68606860    break;
     
    68636863
    68646864/* Line 1806 of yacc.c  */
    6865 #line 1422 "parser.yy"
     6865#line 1421 "parser.yy"
    68666866    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68676867    break;
     
    68706870
    68716871/* Line 1806 of yacc.c  */
    6872 #line 1424 "parser.yy"
     6872#line 1423 "parser.yy"
    68736873    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68746874    break;
     
    68776877
    68786878/* Line 1806 of yacc.c  */
    6879 #line 1426 "parser.yy"
     6879#line 1425 "parser.yy"
    68806880    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68816881    break;
     
    68846884
    68856885/* Line 1806 of yacc.c  */
    6886 #line 1432 "parser.yy"
     6886#line 1431 "parser.yy"
    68876887    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68886888    break;
     
    68916891
    68926892/* Line 1806 of yacc.c  */
    6893 #line 1434 "parser.yy"
     6893#line 1433 "parser.yy"
    68946894    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68956895    break;
     
    68986898
    68996899/* Line 1806 of yacc.c  */
    6900 #line 1440 "parser.yy"
     6900#line 1439 "parser.yy"
    69016901    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69026902    break;
     
    69056905
    69066906/* Line 1806 of yacc.c  */
    6907 #line 1442 "parser.yy"
     6907#line 1441 "parser.yy"
    69086908    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69096909    break;
     
    69126912
    69136913/* Line 1806 of yacc.c  */
    6914 #line 1444 "parser.yy"
     6914#line 1443 "parser.yy"
    69156915    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69166916    break;
     
    69196919
    69206920/* Line 1806 of yacc.c  */
    6921 #line 1449 "parser.yy"
     6921#line 1448 "parser.yy"
    69226922    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69236923    break;
     
    69266926
    69276927/* Line 1806 of yacc.c  */
    6928 #line 1451 "parser.yy"
     6928#line 1450 "parser.yy"
    69296929    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69306930    break;
     
    69336933
    69346934/* Line 1806 of yacc.c  */
    6935 #line 1453 "parser.yy"
     6935#line 1452 "parser.yy"
    69366936    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69376937    break;
     
    69406940
    69416941/* Line 1806 of yacc.c  */
    6942 #line 1463 "parser.yy"
     6942#line 1462 "parser.yy"
    69436943    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
    69446944    break;
     
    69476947
    69486948/* Line 1806 of yacc.c  */
    6949 #line 1465 "parser.yy"
     6949#line 1464 "parser.yy"
    69506950    {
    69516951                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69576957
    69586958/* Line 1806 of yacc.c  */
    6959 #line 1470 "parser.yy"
     6959#line 1469 "parser.yy"
    69606960    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69616961    break;
     
    69646964
    69656965/* Line 1806 of yacc.c  */
    6966 #line 1472 "parser.yy"
     6966#line 1471 "parser.yy"
    69676967    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
    69686968    break;
     
    69716971
    69726972/* Line 1806 of yacc.c  */
    6973 #line 1474 "parser.yy"
     6973#line 1473 "parser.yy"
    69746974    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    69756975    break;
     
    69786978
    69796979/* Line 1806 of yacc.c  */
    6980 #line 1476 "parser.yy"
     6980#line 1475 "parser.yy"
    69816981    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69826982    break;
     
    69856985
    69866986/* Line 1806 of yacc.c  */
    6987 #line 1481 "parser.yy"
     6987#line 1480 "parser.yy"
    69886988    { (yyval.aggKey) = DeclarationNode::Struct; }
    69896989    break;
     
    69926992
    69936993/* Line 1806 of yacc.c  */
    6994 #line 1483 "parser.yy"
     6994#line 1482 "parser.yy"
    69956995    { (yyval.aggKey) = DeclarationNode::Union; }
    69966996    break;
     
    69996999
    70007000/* Line 1806 of yacc.c  */
    7001 #line 1488 "parser.yy"
     7001#line 1487 "parser.yy"
    70027002    { (yyval.decl) = 0; }
    70037003    break;
     
    70067006
    70077007/* Line 1806 of yacc.c  */
    7008 #line 1490 "parser.yy"
     7008#line 1489 "parser.yy"
    70097009    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70107010    break;
     
    70137013
    70147014/* Line 1806 of yacc.c  */
    7015 #line 1496 "parser.yy"
     7015#line 1495 "parser.yy"
    70167016    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70177017    break;
     
    70207020
    70217021/* Line 1806 of yacc.c  */
    7022 #line 1499 "parser.yy"
     7022#line 1498 "parser.yy"
    70237023    {   // mark all fields in list
    70247024                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     
    70317031
    70327032/* Line 1806 of yacc.c  */
    7033 #line 1509 "parser.yy"
     7033#line 1508 "parser.yy"
    70347034    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70357035    break;
     
    70387038
    70397039/* Line 1806 of yacc.c  */
    7040 #line 1511 "parser.yy"
     7040#line 1510 "parser.yy"
    70417041    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70427042    break;
     
    70457045
    70467046/* Line 1806 of yacc.c  */
    7047 #line 1513 "parser.yy"
     7047#line 1512 "parser.yy"
    70487048    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70497049    break;
     
    70527052
    70537053/* Line 1806 of yacc.c  */
    7054 #line 1518 "parser.yy"
     7054#line 1517 "parser.yy"
    70557055    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70567056    break;
     
    70597059
    70607060/* Line 1806 of yacc.c  */
    7061 #line 1520 "parser.yy"
     7061#line 1519 "parser.yy"
    70627062    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70637063    break;
     
    70667066
    70677067/* Line 1806 of yacc.c  */
    7068 #line 1525 "parser.yy"
     7068#line 1524 "parser.yy"
    70697069    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70707070    break;
     
    70737073
    70747074/* Line 1806 of yacc.c  */
    7075 #line 1527 "parser.yy"
     7075#line 1526 "parser.yy"
    70767076    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70777077    break;
     
    70807080
    70817081/* Line 1806 of yacc.c  */
    7082 #line 1530 "parser.yy"
     7082#line 1529 "parser.yy"
    70837083    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70847084    break;
     
    70877087
    70887088/* Line 1806 of yacc.c  */
    7089 #line 1533 "parser.yy"
     7089#line 1532 "parser.yy"
    70907090    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70917091    break;
     
    70947094
    70957095/* Line 1806 of yacc.c  */
    7096 #line 1539 "parser.yy"
     7096#line 1538 "parser.yy"
    70977097    { (yyval.en) = 0; }
    70987098    break;
     
    71017101
    71027102/* Line 1806 of yacc.c  */
    7103 #line 1541 "parser.yy"
     7103#line 1540 "parser.yy"
    71047104    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71057105    break;
     
    71087108
    71097109/* Line 1806 of yacc.c  */
    7110 #line 1546 "parser.yy"
     7110#line 1545 "parser.yy"
    71117111    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71127112    break;
     
    71157115
    71167116/* Line 1806 of yacc.c  */
    7117 #line 1555 "parser.yy"
     7117#line 1554 "parser.yy"
    71187118    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71197119    break;
     
    71227122
    71237123/* Line 1806 of yacc.c  */
    7124 #line 1557 "parser.yy"
     7124#line 1556 "parser.yy"
    71257125    {
    71267126                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71327132
    71337133/* Line 1806 of yacc.c  */
    7134 #line 1562 "parser.yy"
     7134#line 1561 "parser.yy"
    71357135    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71367136    break;
     
    71397139
    71407140/* Line 1806 of yacc.c  */
    7141 #line 1564 "parser.yy"
     7141#line 1563 "parser.yy"
    71427142    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71437143    break;
     
    71467146
    71477147/* Line 1806 of yacc.c  */
    7148 #line 1569 "parser.yy"
     7148#line 1568 "parser.yy"
    71497149    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71507150    break;
     
    71537153
    71547154/* Line 1806 of yacc.c  */
    7155 #line 1571 "parser.yy"
     7155#line 1570 "parser.yy"
    71567156    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71577157    break;
     
    71607160
    71617161/* Line 1806 of yacc.c  */
    7162 #line 1576 "parser.yy"
     7162#line 1575 "parser.yy"
    71637163    { (yyval.en) = 0; }
    71647164    break;
     
    71677167
    71687168/* Line 1806 of yacc.c  */
    7169 #line 1578 "parser.yy"
     7169#line 1577 "parser.yy"
    71707170    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71717171    break;
     
    71747174
    71757175/* Line 1806 of yacc.c  */
    7176 #line 1585 "parser.yy"
     7176#line 1584 "parser.yy"
    71777177    { (yyval.decl) = 0; }
    71787178    break;
     
    71817181
    71827182/* Line 1806 of yacc.c  */
    7183 #line 1593 "parser.yy"
     7183#line 1592 "parser.yy"
    71847184    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71857185    break;
     
    71887188
    71897189/* Line 1806 of yacc.c  */
    7190 #line 1595 "parser.yy"
     7190#line 1594 "parser.yy"
    71917191    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71927192    break;
     
    71957195
    71967196/* Line 1806 of yacc.c  */
    7197 #line 1597 "parser.yy"
     7197#line 1596 "parser.yy"
    71987198    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71997199    break;
     
    72027202
    72037203/* Line 1806 of yacc.c  */
    7204 #line 1605 "parser.yy"
     7204#line 1604 "parser.yy"
    72057205    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72067206    break;
     
    72097209
    72107210/* Line 1806 of yacc.c  */
    7211 #line 1607 "parser.yy"
     7211#line 1606 "parser.yy"
    72127212    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72137213    break;
     
    72167216
    72177217/* Line 1806 of yacc.c  */
    7218 #line 1609 "parser.yy"
     7218#line 1608 "parser.yy"
    72197219    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72207220    break;
     
    72237223
    72247224/* Line 1806 of yacc.c  */
    7225 #line 1615 "parser.yy"
     7225#line 1614 "parser.yy"
    72267226    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72277227    break;
     
    72307230
    72317231/* Line 1806 of yacc.c  */
    7232 #line 1620 "parser.yy"
     7232#line 1619 "parser.yy"
    72337233    { (yyval.decl) = 0; }
    72347234    break;
     
    72377237
    72387238/* Line 1806 of yacc.c  */
    7239 #line 1627 "parser.yy"
     7239#line 1626 "parser.yy"
    72407240    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72417241    break;
     
    72447244
    72457245/* Line 1806 of yacc.c  */
    7246 #line 1634 "parser.yy"
     7246#line 1633 "parser.yy"
    72477247    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72487248    break;
     
    72517251
    72527252/* Line 1806 of yacc.c  */
    7253 #line 1636 "parser.yy"
     7253#line 1635 "parser.yy"
    72547254    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72557255    break;
     
    72587258
    72597259/* Line 1806 of yacc.c  */
    7260 #line 1645 "parser.yy"
     7260#line 1644 "parser.yy"
    72617261    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72627262    break;
     
    72657265
    72667266/* Line 1806 of yacc.c  */
    7267 #line 1648 "parser.yy"
     7267#line 1647 "parser.yy"
    72687268    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72697269    break;
     
    72727272
    72737273/* Line 1806 of yacc.c  */
    7274 #line 1650 "parser.yy"
     7274#line 1649 "parser.yy"
    72757275    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72767276    break;
     
    72797279
    72807280/* Line 1806 of yacc.c  */
    7281 #line 1660 "parser.yy"
     7281#line 1659 "parser.yy"
    72827282    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72837283    break;
     
    72867286
    72877287/* Line 1806 of yacc.c  */
    7288 #line 1666 "parser.yy"
     7288#line 1665 "parser.yy"
    72897289    {
    72907290                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72967296
    72977297/* Line 1806 of yacc.c  */
    7298 #line 1671 "parser.yy"
     7298#line 1670 "parser.yy"
    72997299    {
    73007300                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73067306
    73077307/* Line 1806 of yacc.c  */
    7308 #line 1680 "parser.yy"
     7308#line 1679 "parser.yy"
    73097309    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73107310    break;
     
    73137313
    73147314/* Line 1806 of yacc.c  */
    7315 #line 1689 "parser.yy"
     7315#line 1688 "parser.yy"
    73167316    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73177317    break;
     
    73207320
    73217321/* Line 1806 of yacc.c  */
    7322 #line 1691 "parser.yy"
     7322#line 1690 "parser.yy"
    73237323    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73247324    break;
     
    73277327
    73287328/* Line 1806 of yacc.c  */
    7329 #line 1716 "parser.yy"
     7329#line 1715 "parser.yy"
    73307330    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73317331    break;
     
    73347334
    73357335/* Line 1806 of yacc.c  */
    7336 #line 1724 "parser.yy"
     7336#line 1723 "parser.yy"
    73377337    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73387338    break;
     
    73417341
    73427342/* Line 1806 of yacc.c  */
    7343 #line 1729 "parser.yy"
     7343#line 1728 "parser.yy"
    73447344    { (yyval.in) = 0; }
    73457345    break;
     
    73487348
    73497349/* Line 1806 of yacc.c  */
    7350 #line 1731 "parser.yy"
     7350#line 1730 "parser.yy"
    73517351    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73527352    break;
     
    73557355
    73567356/* Line 1806 of yacc.c  */
    7357 #line 1733 "parser.yy"
     7357#line 1732 "parser.yy"
    73587358    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73597359    break;
     
    73627362
    73637363/* Line 1806 of yacc.c  */
     7364#line 1736 "parser.yy"
     7365    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7366    break;
     7367
     7368  case 456:
     7369
     7370/* Line 1806 of yacc.c  */
    73647371#line 1737 "parser.yy"
    7365     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7366     break;
    7367 
    7368   case 456:
    7369 
    7370 /* Line 1806 of yacc.c  */
    7371 #line 1738 "parser.yy"
    73727372    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    73737373    break;
     
    73767376
    73777377/* Line 1806 of yacc.c  */
    7378 #line 1743 "parser.yy"
     7378#line 1742 "parser.yy"
    73797379    { (yyval.in) = 0; }
    73807380    break;
     
    73837383
    73847384/* Line 1806 of yacc.c  */
     7385#line 1744 "parser.yy"
     7386    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7387    break;
     7388
     7389  case 460:
     7390
     7391/* Line 1806 of yacc.c  */
    73857392#line 1745 "parser.yy"
    7386     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7387     break;
    7388 
    7389   case 460:
    7390 
    7391 /* Line 1806 of yacc.c  */
    7392 #line 1746 "parser.yy"
    73937393    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    73947394    break;
     
    73977397
    73987398/* Line 1806 of yacc.c  */
    7399 #line 1748 "parser.yy"
     7399#line 1747 "parser.yy"
    74007400    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74017401    break;
     
    74047404
    74057405/* Line 1806 of yacc.c  */
    7406 #line 1764 "parser.yy"
     7406#line 1763 "parser.yy"
    74077407    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74087408    break;
     
    74117411
    74127412/* Line 1806 of yacc.c  */
    7413 #line 1770 "parser.yy"
     7413#line 1769 "parser.yy"
    74147414    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74157415    break;
     
    74187418
    74197419/* Line 1806 of yacc.c  */
    7420 #line 1776 "parser.yy"
     7420#line 1775 "parser.yy"
    74217421    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74227422    break;
     
    74257425
    74267426/* Line 1806 of yacc.c  */
    7427 #line 1779 "parser.yy"
     7427#line 1778 "parser.yy"
    74287428    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74297429    break;
     
    74327432
    74337433/* Line 1806 of yacc.c  */
    7434 #line 1781 "parser.yy"
     7434#line 1780 "parser.yy"
    74357435    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74367436    break;
     
    74397439
    74407440/* Line 1806 of yacc.c  */
    7441 #line 1783 "parser.yy"
     7441#line 1782 "parser.yy"
    74427442    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74437443    break;
     
    74467446
    74477447/* Line 1806 of yacc.c  */
    7448 #line 1785 "parser.yy"
     7448#line 1784 "parser.yy"
    74497449    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74507450    break;
     
    74537453
    74547454/* Line 1806 of yacc.c  */
    7455 #line 1809 "parser.yy"
     7455#line 1808 "parser.yy"
    74567456    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74577457    break;
     
    74607460
    74617461/* Line 1806 of yacc.c  */
    7462 #line 1811 "parser.yy"
     7462#line 1810 "parser.yy"
    74637463    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74647464    break;
     
    74677467
    74687468/* Line 1806 of yacc.c  */
    7469 #line 1813 "parser.yy"
     7469#line 1812 "parser.yy"
    74707470    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74717471    break;
     
    74747474
    74757475/* Line 1806 of yacc.c  */
    7476 #line 1819 "parser.yy"
     7476#line 1818 "parser.yy"
    74777477    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74787478    break;
     
    74817481
    74827482/* Line 1806 of yacc.c  */
    7483 #line 1821 "parser.yy"
     7483#line 1820 "parser.yy"
    74847484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74857485    break;
     
    74887488
    74897489/* Line 1806 of yacc.c  */
    7490 #line 1826 "parser.yy"
     7490#line 1825 "parser.yy"
    74917491    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74927492    break;
     
    74957495
    74967496/* Line 1806 of yacc.c  */
    7497 #line 1832 "parser.yy"
     7497#line 1831 "parser.yy"
    74987498    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    74997499    break;
     
    75027502
    75037503/* Line 1806 of yacc.c  */
    7504 #line 1837 "parser.yy"
     7504#line 1836 "parser.yy"
    75057505    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75067506    break;
     
    75097509
    75107510/* Line 1806 of yacc.c  */
    7511 #line 1839 "parser.yy"
     7511#line 1838 "parser.yy"
    75127512    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75137513    break;
     
    75167516
    75177517/* Line 1806 of yacc.c  */
    7518 #line 1845 "parser.yy"
     7518#line 1844 "parser.yy"
    75197519    { (yyval.tclass) = DeclarationNode::Type; }
    75207520    break;
     
    75237523
    75247524/* Line 1806 of yacc.c  */
    7525 #line 1847 "parser.yy"
     7525#line 1846 "parser.yy"
    75267526    { (yyval.tclass) = DeclarationNode::Ftype; }
    75277527    break;
     
    75307530
    75317531/* Line 1806 of yacc.c  */
    7532 #line 1849 "parser.yy"
     7532#line 1848 "parser.yy"
    75337533    { (yyval.tclass) = DeclarationNode::Dtype; }
    75347534    break;
     
    75377537
    75387538/* Line 1806 of yacc.c  */
    7539 #line 1854 "parser.yy"
     7539#line 1853 "parser.yy"
    75407540    { (yyval.decl) = 0; }
    75417541    break;
     
    75447544
    75457545/* Line 1806 of yacc.c  */
    7546 #line 1856 "parser.yy"
     7546#line 1855 "parser.yy"
    75477547    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75487548    break;
     
    75517551
    75527552/* Line 1806 of yacc.c  */
    7553 #line 1861 "parser.yy"
     7553#line 1860 "parser.yy"
    75547554    {
    75557555                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75617561
    75627562/* Line 1806 of yacc.c  */
    7563 #line 1866 "parser.yy"
     7563#line 1865 "parser.yy"
    75647564    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75657565    break;
     
    75687568
    75697569/* Line 1806 of yacc.c  */
    7570 #line 1868 "parser.yy"
     7570#line 1867 "parser.yy"
    75717571    { (yyval.decl) = 0; }
    75727572    break;
     
    75757575
    75767576/* Line 1806 of yacc.c  */
    7577 #line 1873 "parser.yy"
     7577#line 1872 "parser.yy"
    75787578    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    75797579    break;
     
    75827582
    75837583/* Line 1806 of yacc.c  */
    7584 #line 1876 "parser.yy"
     7584#line 1875 "parser.yy"
    75857585    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    75867586    break;
     
    75897589
    75907590/* Line 1806 of yacc.c  */
    7591 #line 1878 "parser.yy"
     7591#line 1877 "parser.yy"
    75927592    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    75937593    break;
     
    75967596
    75977597/* Line 1806 of yacc.c  */
    7598 #line 1883 "parser.yy"
     7598#line 1882 "parser.yy"
    75997599    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76007600    break;
     
    76037603
    76047604/* Line 1806 of yacc.c  */
    7605 #line 1885 "parser.yy"
     7605#line 1884 "parser.yy"
    76067606    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76077607    break;
     
    76107610
    76117611/* Line 1806 of yacc.c  */
    7612 #line 1887 "parser.yy"
     7612#line 1886 "parser.yy"
    76137613    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76147614    break;
     
    76177617
    76187618/* Line 1806 of yacc.c  */
    7619 #line 1892 "parser.yy"
     7619#line 1891 "parser.yy"
    76207620    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76217621    break;
     
    76247624
    76257625/* Line 1806 of yacc.c  */
    7626 #line 1894 "parser.yy"
     7626#line 1893 "parser.yy"
    76277627    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76287628    break;
     
    76317631
    76327632/* Line 1806 of yacc.c  */
    7633 #line 1899 "parser.yy"
     7633#line 1898 "parser.yy"
    76347634    {
    76357635                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76417641
    76427642/* Line 1806 of yacc.c  */
    7643 #line 1904 "parser.yy"
     7643#line 1903 "parser.yy"
    76447644    {
    76457645                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76517651
    76527652/* Line 1806 of yacc.c  */
    7653 #line 1912 "parser.yy"
     7653#line 1911 "parser.yy"
    76547654    {
    76557655                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76617661
    76627662/* Line 1806 of yacc.c  */
    7663 #line 1917 "parser.yy"
     7663#line 1916 "parser.yy"
    76647664    {
    76657665                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76717671
    76727672/* Line 1806 of yacc.c  */
    7673 #line 1922 "parser.yy"
     7673#line 1921 "parser.yy"
    76747674    {
    76757675                        typedefTable.leaveTrait();
     
    76827682
    76837683/* Line 1806 of yacc.c  */
    7684 #line 1932 "parser.yy"
     7684#line 1931 "parser.yy"
    76857685    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76867686    break;
     
    76897689
    76907690/* Line 1806 of yacc.c  */
    7691 #line 1942 "parser.yy"
     7691#line 1941 "parser.yy"
    76927692    {
    76937693                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76997699
    77007700/* Line 1806 of yacc.c  */
    7701 #line 1947 "parser.yy"
     7701#line 1946 "parser.yy"
    77027702    {
    77037703                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77097709
    77107710/* Line 1806 of yacc.c  */
    7711 #line 1952 "parser.yy"
     7711#line 1951 "parser.yy"
    77127712    {
    77137713                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77197719
    77207720/* Line 1806 of yacc.c  */
    7721 #line 1960 "parser.yy"
     7721#line 1959 "parser.yy"
    77227722    {
    77237723                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77297729
    77307730/* Line 1806 of yacc.c  */
    7731 #line 1965 "parser.yy"
     7731#line 1964 "parser.yy"
    77327732    {
    77337733                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77397739
    77407740/* Line 1806 of yacc.c  */
    7741 #line 1975 "parser.yy"
     7741#line 1974 "parser.yy"
    77427742    {}
    77437743    break;
     
    77467746
    77477747/* Line 1806 of yacc.c  */
    7748 #line 1977 "parser.yy"
     7748#line 1976 "parser.yy"
    77497749    {
    77507750                        if ( theTree ) {
     
    77597759
    77607760/* Line 1806 of yacc.c  */
    7761 #line 1989 "parser.yy"
     7761#line 1988 "parser.yy"
    77627762    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77637763    break;
     
    77667766
    77677767/* Line 1806 of yacc.c  */
    7768 #line 1994 "parser.yy"
     7768#line 1993 "parser.yy"
    77697769    { (yyval.decl) = 0; }
    77707770    break;
     
    77737773
    77747774/* Line 1806 of yacc.c  */
    7775 #line 2002 "parser.yy"
     7775#line 2001 "parser.yy"
    77767776    {}
    77777777    break;
     
    77807780
    77817781/* Line 1806 of yacc.c  */
    7782 #line 2004 "parser.yy"
     7782#line 2003 "parser.yy"
    77837783    {
    77847784                        linkageStack.push( linkage );
     
    77907790
    77917791/* Line 1806 of yacc.c  */
    7792 #line 2009 "parser.yy"
     7792#line 2008 "parser.yy"
    77937793    {
    77947794                        linkage = linkageStack.top();
     
    78017801
    78027802/* Line 1806 of yacc.c  */
    7803 #line 2015 "parser.yy"
     7803#line 2014 "parser.yy"
    78047804    {   // mark all fields in list
    78057805                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     
    78127812
    78137813/* Line 1806 of yacc.c  */
    7814 #line 2030 "parser.yy"
     7814#line 2029 "parser.yy"
    78157815    {
    78167816                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78237823
    78247824/* Line 1806 of yacc.c  */
    7825 #line 2036 "parser.yy"
     7825#line 2035 "parser.yy"
    78267826    {
    78277827                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78347834
    78357835/* Line 1806 of yacc.c  */
    7836 #line 2045 "parser.yy"
     7836#line 2044 "parser.yy"
    78377837    {
    78387838                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78457845
    78467846/* Line 1806 of yacc.c  */
    7847 #line 2051 "parser.yy"
     7847#line 2050 "parser.yy"
    78487848    {
    78497849                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78567856
    78577857/* Line 1806 of yacc.c  */
    7858 #line 2057 "parser.yy"
     7858#line 2056 "parser.yy"
    78597859    {
    78607860                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78677867
    78687868/* Line 1806 of yacc.c  */
    7869 #line 2063 "parser.yy"
     7869#line 2062 "parser.yy"
    78707870    {
    78717871                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78787878
    78797879/* Line 1806 of yacc.c  */
    7880 #line 2069 "parser.yy"
     7880#line 2068 "parser.yy"
    78817881    {
    78827882                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78897889
    78907890/* Line 1806 of yacc.c  */
    7891 #line 2077 "parser.yy"
     7891#line 2076 "parser.yy"
    78927892    {
    78937893                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79007900
    79017901/* Line 1806 of yacc.c  */
    7902 #line 2083 "parser.yy"
     7902#line 2082 "parser.yy"
    79037903    {
    79047904                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79117911
    79127912/* Line 1806 of yacc.c  */
    7913 #line 2091 "parser.yy"
     7913#line 2090 "parser.yy"
    79147914    {
    79157915                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79227922
    79237923/* Line 1806 of yacc.c  */
    7924 #line 2097 "parser.yy"
     7924#line 2096 "parser.yy"
    79257925    {
    79267926                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79337933
    79347934/* Line 1806 of yacc.c  */
    7935 #line 2112 "parser.yy"
     7935#line 2111 "parser.yy"
    79367936    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79377937    break;
     
    79407940
    79417941/* Line 1806 of yacc.c  */
    7942 #line 2122 "parser.yy"
     7942#line 2121 "parser.yy"
    79437943    { (yyval.decl) = 0; }
    79447944    break;
     
    79477947
    79487948/* Line 1806 of yacc.c  */
    7949 #line 2129 "parser.yy"
     7949#line 2128 "parser.yy"
    79507950    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79517951    break;
     
    79547954
    79557955/* Line 1806 of yacc.c  */
    7956 #line 2135 "parser.yy"
     7956#line 2134 "parser.yy"
    79577957    { (yyval.decl) = 0; }
    79587958    break;
    79597959
    79607960  case 555:
     7961
     7962/* Line 1806 of yacc.c  */
     7963#line 2149 "parser.yy"
     7964    {}
     7965    break;
     7966
     7967  case 556:
    79617968
    79627969/* Line 1806 of yacc.c  */
     
    79657972    break;
    79667973
    7967   case 556:
     7974  case 557:
    79687975
    79697976/* Line 1806 of yacc.c  */
     
    79727979    break;
    79737980
    7974   case 557:
     7981  case 558:
    79757982
    79767983/* Line 1806 of yacc.c  */
     
    79797986    break;
    79807987
    7981   case 558:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2153 "parser.yy"
    7985     {}
    7986     break;
    7987 
    79887988  case 559:
    79897989
    79907990/* Line 1806 of yacc.c  */
    7991 #line 2188 "parser.yy"
     7991#line 2187 "parser.yy"
    79927992    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79937993    break;
     
    79967996
    79977997/* Line 1806 of yacc.c  */
    7998 #line 2191 "parser.yy"
     7998#line 2190 "parser.yy"
    79997999    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80008000    break;
     
    80038003
    80048004/* Line 1806 of yacc.c  */
    8005 #line 2193 "parser.yy"
     8005#line 2192 "parser.yy"
    80068006    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80078007    break;
     
    80108010
    80118011/* Line 1806 of yacc.c  */
    8012 #line 2198 "parser.yy"
     8012#line 2197 "parser.yy"
    80138013    {
    80148014                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80208020
    80218021/* Line 1806 of yacc.c  */
    8022 #line 2203 "parser.yy"
     8022#line 2202 "parser.yy"
    80238023    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80248024    break;
     
    80278027
    80288028/* Line 1806 of yacc.c  */
    8029 #line 2208 "parser.yy"
     8029#line 2207 "parser.yy"
    80308030    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80318031    break;
     
    80348034
    80358035/* Line 1806 of yacc.c  */
    8036 #line 2210 "parser.yy"
     8036#line 2209 "parser.yy"
    80378037    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80388038    break;
     
    80418041
    80428042/* Line 1806 of yacc.c  */
    8043 #line 2212 "parser.yy"
     8043#line 2211 "parser.yy"
    80448044    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80458045    break;
     
    80488048
    80498049/* Line 1806 of yacc.c  */
    8050 #line 2217 "parser.yy"
     8050#line 2216 "parser.yy"
    80518051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80528052    break;
     
    80558055
    80568056/* Line 1806 of yacc.c  */
    8057 #line 2219 "parser.yy"
     8057#line 2218 "parser.yy"
    80588058    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80598059    break;
     
    80628062
    80638063/* Line 1806 of yacc.c  */
    8064 #line 2221 "parser.yy"
     8064#line 2220 "parser.yy"
    80658065    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80668066    break;
     
    80698069
    80708070/* Line 1806 of yacc.c  */
    8071 #line 2223 "parser.yy"
     8071#line 2222 "parser.yy"
    80728072    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80738073    break;
     
    80768076
    80778077/* Line 1806 of yacc.c  */
    8078 #line 2228 "parser.yy"
     8078#line 2227 "parser.yy"
    80798079    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80808080    break;
     
    80838083
    80848084/* Line 1806 of yacc.c  */
    8085 #line 2230 "parser.yy"
     8085#line 2229 "parser.yy"
    80868086    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80878087    break;
     
    80908090
    80918091/* Line 1806 of yacc.c  */
    8092 #line 2239 "parser.yy"
     8092#line 2238 "parser.yy"
    80938093    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80948094    break;
     
    80978097
    80988098/* Line 1806 of yacc.c  */
    8099 #line 2242 "parser.yy"
     8099#line 2241 "parser.yy"
    81008100    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81018101    break;
     
    81048104
    81058105/* Line 1806 of yacc.c  */
    8106 #line 2247 "parser.yy"
     8106#line 2246 "parser.yy"
    81078107    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81088108    break;
     
    81118111
    81128112/* Line 1806 of yacc.c  */
    8113 #line 2249 "parser.yy"
     8113#line 2248 "parser.yy"
    81148114    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81158115    break;
     
    81188118
    81198119/* Line 1806 of yacc.c  */
    8120 #line 2251 "parser.yy"
     8120#line 2250 "parser.yy"
    81218121    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81228122    break;
     
    81258125
    81268126/* Line 1806 of yacc.c  */
    8127 #line 2256 "parser.yy"
     8127#line 2255 "parser.yy"
    81288128    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81298129    break;
     
    81328132
    81338133/* Line 1806 of yacc.c  */
    8134 #line 2258 "parser.yy"
     8134#line 2257 "parser.yy"
    81358135    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81368136    break;
     
    81398139
    81408140/* Line 1806 of yacc.c  */
    8141 #line 2260 "parser.yy"
     8141#line 2259 "parser.yy"
    81428142    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81438143    break;
     
    81468146
    81478147/* Line 1806 of yacc.c  */
    8148 #line 2265 "parser.yy"
     8148#line 2264 "parser.yy"
    81498149    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81508150    break;
     
    81538153
    81548154/* Line 1806 of yacc.c  */
    8155 #line 2267 "parser.yy"
     8155#line 2266 "parser.yy"
    81568156    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81578157    break;
     
    81608160
    81618161/* Line 1806 of yacc.c  */
    8162 #line 2269 "parser.yy"
     8162#line 2268 "parser.yy"
    81638163    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81648164    break;
     
    81678167
    81688168/* Line 1806 of yacc.c  */
    8169 #line 2284 "parser.yy"
     8169#line 2283 "parser.yy"
    81708170    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    81718171    break;
     
    81748174
    81758175/* Line 1806 of yacc.c  */
    8176 #line 2286 "parser.yy"
     8176#line 2285 "parser.yy"
    81778177    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    81788178    break;
     
    81818181
    81828182/* Line 1806 of yacc.c  */
    8183 #line 2288 "parser.yy"
     8183#line 2287 "parser.yy"
    81848184    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81858185    break;
     
    81888188
    81898189/* Line 1806 of yacc.c  */
    8190 #line 2293 "parser.yy"
     8190#line 2292 "parser.yy"
    81918191    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81928192    break;
     
    81958195
    81968196/* Line 1806 of yacc.c  */
    8197 #line 2295 "parser.yy"
     8197#line 2294 "parser.yy"
    81988198    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81998199    break;
     
    82028202
    82038203/* Line 1806 of yacc.c  */
    8204 #line 2297 "parser.yy"
     8204#line 2296 "parser.yy"
    82058205    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82068206    break;
     
    82098209
    82108210/* Line 1806 of yacc.c  */
    8211 #line 2302 "parser.yy"
     8211#line 2301 "parser.yy"
    82128212    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82138213    break;
     
    82168216
    82178217/* Line 1806 of yacc.c  */
    8218 #line 2304 "parser.yy"
     8218#line 2303 "parser.yy"
    82198219    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82208220    break;
     
    82238223
    82248224/* Line 1806 of yacc.c  */
    8225 #line 2306 "parser.yy"
     8225#line 2305 "parser.yy"
    82268226    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82278227    break;
     
    82308230
    82318231/* Line 1806 of yacc.c  */
    8232 #line 2321 "parser.yy"
     8232#line 2320 "parser.yy"
    82338233    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82348234    break;
     
    82378237
    82388238/* Line 1806 of yacc.c  */
    8239 #line 2324 "parser.yy"
     8239#line 2323 "parser.yy"
    82408240    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82418241    break;
     
    82448244
    82458245/* Line 1806 of yacc.c  */
    8246 #line 2326 "parser.yy"
     8246#line 2325 "parser.yy"
    82478247    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82488248    break;
     
    82518251
    82528252/* Line 1806 of yacc.c  */
    8253 #line 2332 "parser.yy"
     8253#line 2331 "parser.yy"
    82548254    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82558255    break;
     
    82588258
    82598259/* Line 1806 of yacc.c  */
    8260 #line 2337 "parser.yy"
     8260#line 2336 "parser.yy"
    82618261    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82628262    break;
     
    82658265
    82668266/* Line 1806 of yacc.c  */
    8267 #line 2339 "parser.yy"
     8267#line 2338 "parser.yy"
    82688268    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82698269    break;
     
    82728272
    82738273/* Line 1806 of yacc.c  */
    8274 #line 2341 "parser.yy"
     8274#line 2340 "parser.yy"
    82758275    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82768276    break;
     
    82798279
    82808280/* Line 1806 of yacc.c  */
    8281 #line 2346 "parser.yy"
     8281#line 2345 "parser.yy"
    82828282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82838283    break;
     
    82868286
    82878287/* Line 1806 of yacc.c  */
    8288 #line 2348 "parser.yy"
     8288#line 2347 "parser.yy"
    82898289    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82908290    break;
     
    82938293
    82948294/* Line 1806 of yacc.c  */
    8295 #line 2350 "parser.yy"
     8295#line 2349 "parser.yy"
    82968296    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82978297    break;
     
    83008300
    83018301/* Line 1806 of yacc.c  */
    8302 #line 2352 "parser.yy"
     8302#line 2351 "parser.yy"
    83038303    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83048304    break;
     
    83078307
    83088308/* Line 1806 of yacc.c  */
    8309 #line 2357 "parser.yy"
     8309#line 2356 "parser.yy"
    83108310    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83118311    break;
     
    83148314
    83158315/* Line 1806 of yacc.c  */
    8316 #line 2359 "parser.yy"
     8316#line 2358 "parser.yy"
    83178317    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83188318    break;
     
    83218321
    83228322/* Line 1806 of yacc.c  */
    8323 #line 2361 "parser.yy"
     8323#line 2360 "parser.yy"
    83248324    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83258325    break;
     
    83288328
    83298329/* Line 1806 of yacc.c  */
    8330 #line 2371 "parser.yy"
     8330#line 2370 "parser.yy"
    83318331    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83328332    break;
     
    83358335
    83368336/* Line 1806 of yacc.c  */
    8337 #line 2374 "parser.yy"
     8337#line 2373 "parser.yy"
    83388338    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83398339    break;
     
    83428342
    83438343/* Line 1806 of yacc.c  */
    8344 #line 2376 "parser.yy"
     8344#line 2375 "parser.yy"
    83458345    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83468346    break;
     
    83498349
    83508350/* Line 1806 of yacc.c  */
    8351 #line 2381 "parser.yy"
     8351#line 2380 "parser.yy"
    83528352    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83538353    break;
     
    83568356
    83578357/* Line 1806 of yacc.c  */
    8358 #line 2383 "parser.yy"
     8358#line 2382 "parser.yy"
    83598359    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83608360    break;
     
    83638363
    83648364/* Line 1806 of yacc.c  */
    8365 #line 2385 "parser.yy"
     8365#line 2384 "parser.yy"
    83668366    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83678367    break;
     
    83708370
    83718371/* Line 1806 of yacc.c  */
    8372 #line 2390 "parser.yy"
     8372#line 2389 "parser.yy"
    83738373    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83748374    break;
     
    83778377
    83788378/* Line 1806 of yacc.c  */
    8379 #line 2392 "parser.yy"
     8379#line 2391 "parser.yy"
    83808380    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83818381    break;
     
    83848384
    83858385/* Line 1806 of yacc.c  */
    8386 #line 2394 "parser.yy"
     8386#line 2393 "parser.yy"
    83878387    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83888388    break;
     
    83918391
    83928392/* Line 1806 of yacc.c  */
    8393 #line 2396 "parser.yy"
     8393#line 2395 "parser.yy"
    83948394    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83958395    break;
     
    83988398
    83998399/* Line 1806 of yacc.c  */
    8400 #line 2401 "parser.yy"
     8400#line 2400 "parser.yy"
    84018401    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84028402    break;
     
    84058405
    84068406/* Line 1806 of yacc.c  */
    8407 #line 2403 "parser.yy"
     8407#line 2402 "parser.yy"
    84088408    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84098409    break;
     
    84128412
    84138413/* Line 1806 of yacc.c  */
    8414 #line 2405 "parser.yy"
     8414#line 2404 "parser.yy"
    84158415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84168416    break;
     
    84198419
    84208420/* Line 1806 of yacc.c  */
    8421 #line 2436 "parser.yy"
     8421#line 2435 "parser.yy"
    84228422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84238423    break;
     
    84268426
    84278427/* Line 1806 of yacc.c  */
    8428 #line 2439 "parser.yy"
     8428#line 2438 "parser.yy"
    84298429    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84308430    break;
     
    84338433
    84348434/* Line 1806 of yacc.c  */
    8435 #line 2441 "parser.yy"
     8435#line 2440 "parser.yy"
    84368436    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84378437    break;
     
    84408440
    84418441/* Line 1806 of yacc.c  */
    8442 #line 2446 "parser.yy"
     8442#line 2445 "parser.yy"
    84438443    {
    84448444                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84508450
    84518451/* Line 1806 of yacc.c  */
    8452 #line 2451 "parser.yy"
     8452#line 2450 "parser.yy"
    84538453    {
    84548454                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84608460
    84618461/* Line 1806 of yacc.c  */
    8462 #line 2459 "parser.yy"
     8462#line 2458 "parser.yy"
    84638463    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84648464    break;
     
    84678467
    84688468/* Line 1806 of yacc.c  */
    8469 #line 2461 "parser.yy"
     8469#line 2460 "parser.yy"
    84708470    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84718471    break;
     
    84748474
    84758475/* Line 1806 of yacc.c  */
    8476 #line 2463 "parser.yy"
     8476#line 2462 "parser.yy"
    84778477    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84788478    break;
     
    84818481
    84828482/* Line 1806 of yacc.c  */
    8483 #line 2468 "parser.yy"
     8483#line 2467 "parser.yy"
    84848484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84858485    break;
     
    84888488
    84898489/* Line 1806 of yacc.c  */
    8490 #line 2470 "parser.yy"
     8490#line 2469 "parser.yy"
    84918491    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84928492    break;
     
    84958495
    84968496/* Line 1806 of yacc.c  */
    8497 #line 2475 "parser.yy"
     8497#line 2474 "parser.yy"
    84988498    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84998499    break;
     
    85028502
    85038503/* Line 1806 of yacc.c  */
    8504 #line 2477 "parser.yy"
     8504#line 2476 "parser.yy"
    85058505    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85068506    break;
     
    85098509
    85108510/* Line 1806 of yacc.c  */
    8511 #line 2492 "parser.yy"
     8511#line 2491 "parser.yy"
    85128512    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85138513    break;
     
    85168516
    85178517/* Line 1806 of yacc.c  */
    8518 #line 2494 "parser.yy"
     8518#line 2493 "parser.yy"
    85198519    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85208520    break;
     
    85238523
    85248524/* Line 1806 of yacc.c  */
    8525 #line 2499 "parser.yy"
     8525#line 2498 "parser.yy"
    85268526    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85278527    break;
     
    85308530
    85318531/* Line 1806 of yacc.c  */
    8532 #line 2501 "parser.yy"
     8532#line 2500 "parser.yy"
    85338533    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85348534    break;
     
    85378537
    85388538/* Line 1806 of yacc.c  */
    8539 #line 2503 "parser.yy"
     8539#line 2502 "parser.yy"
    85408540    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85418541    break;
     
    85448544
    85458545/* Line 1806 of yacc.c  */
    8546 #line 2505 "parser.yy"
     8546#line 2504 "parser.yy"
    85478547    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85488548    break;
     
    85518551
    85528552/* Line 1806 of yacc.c  */
    8553 #line 2507 "parser.yy"
     8553#line 2506 "parser.yy"
    85548554    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85558555    break;
     
    85588558
    85598559/* Line 1806 of yacc.c  */
    8560 #line 2513 "parser.yy"
     8560#line 2512 "parser.yy"
    85618561    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85628562    break;
     
    85658565
    85668566/* Line 1806 of yacc.c  */
    8567 #line 2515 "parser.yy"
     8567#line 2514 "parser.yy"
    85688568    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85698569    break;
     
    85728572
    85738573/* Line 1806 of yacc.c  */
    8574 #line 2517 "parser.yy"
     8574#line 2516 "parser.yy"
    85758575    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85768576    break;
     
    85798579
    85808580/* Line 1806 of yacc.c  */
    8581 #line 2522 "parser.yy"
     8581#line 2521 "parser.yy"
    85828582    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85838583    break;
     
    85868586
    85878587/* Line 1806 of yacc.c  */
    8588 #line 2524 "parser.yy"
     8588#line 2523 "parser.yy"
    85898589    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85908590    break;
     
    85938593
    85948594/* Line 1806 of yacc.c  */
    8595 #line 2526 "parser.yy"
     8595#line 2525 "parser.yy"
    85968596    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85978597    break;
     
    86008600
    86018601/* Line 1806 of yacc.c  */
    8602 #line 2532 "parser.yy"
     8602#line 2531 "parser.yy"
    86038603    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86048604    break;
     
    86078607
    86088608/* Line 1806 of yacc.c  */
    8609 #line 2534 "parser.yy"
     8609#line 2533 "parser.yy"
    86108610    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86118611    break;
     
    86148614
    86158615/* Line 1806 of yacc.c  */
    8616 #line 2540 "parser.yy"
     8616#line 2539 "parser.yy"
    86178617    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86188618    break;
     
    86218621
    86228622/* Line 1806 of yacc.c  */
    8623 #line 2542 "parser.yy"
     8623#line 2541 "parser.yy"
    86248624    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86258625    break;
     
    86288628
    86298629/* Line 1806 of yacc.c  */
    8630 #line 2544 "parser.yy"
     8630#line 2543 "parser.yy"
    86318631    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86328632    break;
     
    86358635
    86368636/* Line 1806 of yacc.c  */
    8637 #line 2546 "parser.yy"
     8637#line 2545 "parser.yy"
    86388638    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86398639    break;
     
    86428642
    86438643/* Line 1806 of yacc.c  */
    8644 #line 2561 "parser.yy"
     8644#line 2560 "parser.yy"
    86458645    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86468646    break;
     
    86498649
    86508650/* Line 1806 of yacc.c  */
    8651 #line 2563 "parser.yy"
     8651#line 2562 "parser.yy"
    86528652    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86538653    break;
     
    86568656
    86578657/* Line 1806 of yacc.c  */
    8658 #line 2568 "parser.yy"
     8658#line 2567 "parser.yy"
    86598659    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86608660    break;
     
    86638663
    86648664/* Line 1806 of yacc.c  */
    8665 #line 2570 "parser.yy"
     8665#line 2569 "parser.yy"
    86668666    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86678667    break;
     
    86708670
    86718671/* Line 1806 of yacc.c  */
    8672 #line 2572 "parser.yy"
     8672#line 2571 "parser.yy"
    86738673    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86748674    break;
     
    86778677
    86788678/* Line 1806 of yacc.c  */
    8679 #line 2574 "parser.yy"
     8679#line 2573 "parser.yy"
    86808680    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86818681    break;
     
    86848684
    86858685/* Line 1806 of yacc.c  */
    8686 #line 2576 "parser.yy"
     8686#line 2575 "parser.yy"
    86878687    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86888688    break;
     
    86918691
    86928692/* Line 1806 of yacc.c  */
    8693 #line 2582 "parser.yy"
     8693#line 2581 "parser.yy"
    86948694    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86958695    break;
     
    86988698
    86998699/* Line 1806 of yacc.c  */
    8700 #line 2584 "parser.yy"
     8700#line 2583 "parser.yy"
    87018701    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87028702    break;
     
    87058705
    87068706/* Line 1806 of yacc.c  */
    8707 #line 2586 "parser.yy"
     8707#line 2585 "parser.yy"
    87088708    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87098709    break;
     
    87128712
    87138713/* Line 1806 of yacc.c  */
    8714 #line 2591 "parser.yy"
     8714#line 2590 "parser.yy"
    87158715    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    87168716    break;
     
    87198719
    87208720/* Line 1806 of yacc.c  */
    8721 #line 2593 "parser.yy"
     8721#line 2592 "parser.yy"
    87228722    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87238723    break;
     
    87268726
    87278727/* Line 1806 of yacc.c  */
    8728 #line 2595 "parser.yy"
     8728#line 2594 "parser.yy"
    87298729    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87308730    break;
     
    87338733
    87348734/* Line 1806 of yacc.c  */
    8735 #line 2602 "parser.yy"
     8735#line 2601 "parser.yy"
    87368736    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87378737    break;
     
    87408740
    87418741/* Line 1806 of yacc.c  */
    8742 #line 2613 "parser.yy"
     8742#line 2612 "parser.yy"
    87438743    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87448744    break;
     
    87478747
    87488748/* Line 1806 of yacc.c  */
    8749 #line 2616 "parser.yy"
     8749#line 2615 "parser.yy"
    87508750    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87518751    break;
     
    87548754
    87558755/* Line 1806 of yacc.c  */
    8756 #line 2618 "parser.yy"
     8756#line 2617 "parser.yy"
    87578757    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87588758    break;
     
    87618761
    87628762/* Line 1806 of yacc.c  */
    8763 #line 2621 "parser.yy"
     8763#line 2620 "parser.yy"
    87648764    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87658765    break;
     
    87688768
    87698769/* Line 1806 of yacc.c  */
    8770 #line 2623 "parser.yy"
     8770#line 2622 "parser.yy"
    87718771    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87728772    break;
     
    87758775
    87768776/* Line 1806 of yacc.c  */
    8777 #line 2625 "parser.yy"
     8777#line 2624 "parser.yy"
    87788778    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87798779    break;
     
    87828782
    87838783/* Line 1806 of yacc.c  */
    8784 #line 2639 "parser.yy"
     8784#line 2638 "parser.yy"
    87858785    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87868786    break;
     
    87898789
    87908790/* Line 1806 of yacc.c  */
    8791 #line 2641 "parser.yy"
     8791#line 2640 "parser.yy"
    87928792    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87938793    break;
     
    87968796
    87978797/* Line 1806 of yacc.c  */
    8798 #line 2646 "parser.yy"
     8798#line 2645 "parser.yy"
    87998799    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88008800    break;
     
    88038803
    88048804/* Line 1806 of yacc.c  */
    8805 #line 2648 "parser.yy"
     8805#line 2647 "parser.yy"
    88068806    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88078807    break;
     
    88108810
    88118811/* Line 1806 of yacc.c  */
    8812 #line 2650 "parser.yy"
     8812#line 2649 "parser.yy"
    88138813    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88148814    break;
     
    88178817
    88188818/* Line 1806 of yacc.c  */
    8819 #line 2652 "parser.yy"
     8819#line 2651 "parser.yy"
    88208820    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88218821    break;
     
    88248824
    88258825/* Line 1806 of yacc.c  */
    8826 #line 2654 "parser.yy"
     8826#line 2653 "parser.yy"
    88278827    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88288828    break;
     
    88318831
    88328832/* Line 1806 of yacc.c  */
    8833 #line 2660 "parser.yy"
     8833#line 2659 "parser.yy"
    88348834    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88358835    break;
     
    88388838
    88398839/* Line 1806 of yacc.c  */
    8840 #line 2662 "parser.yy"
     8840#line 2661 "parser.yy"
    88418841    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88428842    break;
     
    88458845
    88468846/* Line 1806 of yacc.c  */
    8847 #line 2664 "parser.yy"
     8847#line 2663 "parser.yy"
    88488848    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88498849    break;
     
    88528852
    88538853/* Line 1806 of yacc.c  */
    8854 #line 2669 "parser.yy"
     8854#line 2668 "parser.yy"
    88558855    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88568856    break;
     
    88598859
    88608860/* Line 1806 of yacc.c  */
    8861 #line 2671 "parser.yy"
     8861#line 2670 "parser.yy"
    88628862    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88638863    break;
     
    88668866
    88678867/* Line 1806 of yacc.c  */
    8868 #line 2681 "parser.yy"
     8868#line 2680 "parser.yy"
    88698869    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88708870    break;
     
    88738873
    88748874/* Line 1806 of yacc.c  */
    8875 #line 2691 "parser.yy"
     8875#line 2690 "parser.yy"
    88768876    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88778877    break;
     
    88808880
    88818881/* Line 1806 of yacc.c  */
    8882 #line 2693 "parser.yy"
     8882#line 2692 "parser.yy"
    88838883    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88848884    break;
     
    88878887
    88888888/* Line 1806 of yacc.c  */
    8889 #line 2695 "parser.yy"
     8889#line 2694 "parser.yy"
    88908890    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88918891    break;
     
    88948894
    88958895/* Line 1806 of yacc.c  */
    8896 #line 2697 "parser.yy"
     8896#line 2696 "parser.yy"
    88978897    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88988898    break;
     
    89018901
    89028902/* Line 1806 of yacc.c  */
    8903 #line 2699 "parser.yy"
     8903#line 2698 "parser.yy"
    89048904    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89058905    break;
     
    89088908
    89098909/* Line 1806 of yacc.c  */
    8910 #line 2701 "parser.yy"
     8910#line 2700 "parser.yy"
    89118911    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89128912    break;
     
    89158915
    89168916/* Line 1806 of yacc.c  */
    8917 #line 2708 "parser.yy"
     8917#line 2707 "parser.yy"
    89188918    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89198919    break;
     
    89228922
    89238923/* Line 1806 of yacc.c  */
    8924 #line 2710 "parser.yy"
     8924#line 2709 "parser.yy"
    89258925    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89268926    break;
     
    89298929
    89308930/* Line 1806 of yacc.c  */
    8931 #line 2712 "parser.yy"
     8931#line 2711 "parser.yy"
    89328932    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89338933    break;
     
    89368936
    89378937/* Line 1806 of yacc.c  */
    8938 #line 2714 "parser.yy"
     8938#line 2713 "parser.yy"
    89398939    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89408940    break;
     
    89438943
    89448944/* Line 1806 of yacc.c  */
    8945 #line 2716 "parser.yy"
     8945#line 2715 "parser.yy"
    89468946    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89478947    break;
     
    89508950
    89518951/* Line 1806 of yacc.c  */
    8952 #line 2718 "parser.yy"
     8952#line 2717 "parser.yy"
    89538953    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89548954    break;
     
    89578957
    89588958/* Line 1806 of yacc.c  */
    8959 #line 2720 "parser.yy"
     8959#line 2719 "parser.yy"
    89608960    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89618961    break;
     
    89648964
    89658965/* Line 1806 of yacc.c  */
    8966 #line 2722 "parser.yy"
     8966#line 2721 "parser.yy"
    89678967    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89688968    break;
     
    89718971
    89728972/* Line 1806 of yacc.c  */
    8973 #line 2724 "parser.yy"
     8973#line 2723 "parser.yy"
    89748974    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89758975    break;
     
    89788978
    89798979/* Line 1806 of yacc.c  */
    8980 #line 2726 "parser.yy"
     8980#line 2725 "parser.yy"
    89818981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89828982    break;
     
    89858985
    89868986/* Line 1806 of yacc.c  */
    8987 #line 2731 "parser.yy"
     8987#line 2730 "parser.yy"
    89888988    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89898989    break;
     
    89928992
    89938993/* Line 1806 of yacc.c  */
    8994 #line 2733 "parser.yy"
     8994#line 2732 "parser.yy"
    89958995    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89968996    break;
     
    89998999
    90009000/* Line 1806 of yacc.c  */
    9001 #line 2738 "parser.yy"
     9001#line 2737 "parser.yy"
    90029002    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90039003    break;
     
    90069006
    90079007/* Line 1806 of yacc.c  */
    9008 #line 2740 "parser.yy"
     9008#line 2739 "parser.yy"
    90099009    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90109010    break;
     
    90139013
    90149014/* Line 1806 of yacc.c  */
    9015 #line 2767 "parser.yy"
     9015#line 2766 "parser.yy"
    90169016    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90179017    break;
     
    90209020
    90219021/* Line 1806 of yacc.c  */
    9022 #line 2778 "parser.yy"
     9022#line 2777 "parser.yy"
    90239023    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90249024    break;
     
    90279027
    90289028/* Line 1806 of yacc.c  */
    9029 #line 2780 "parser.yy"
     9029#line 2779 "parser.yy"
    90309030    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90319031    break;
     
    90349034
    90359035/* Line 1806 of yacc.c  */
    9036 #line 2782 "parser.yy"
     9036#line 2781 "parser.yy"
    90379037    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90389038    break;
     
    90419041
    90429042/* Line 1806 of yacc.c  */
    9043 #line 2784 "parser.yy"
     9043#line 2783 "parser.yy"
    90449044    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90459045    break;
     
    90489048
    90499049/* Line 1806 of yacc.c  */
    9050 #line 2786 "parser.yy"
     9050#line 2785 "parser.yy"
    90519051    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90529052    break;
     
    90559055
    90569056/* Line 1806 of yacc.c  */
    9057 #line 2788 "parser.yy"
     9057#line 2787 "parser.yy"
    90589058    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90599059    break;
     
    90629062
    90639063/* Line 1806 of yacc.c  */
    9064 #line 2795 "parser.yy"
     9064#line 2794 "parser.yy"
    90659065    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90669066    break;
     
    90699069
    90709070/* Line 1806 of yacc.c  */
    9071 #line 2797 "parser.yy"
     9071#line 2796 "parser.yy"
    90729072    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90739073    break;
     
    90769076
    90779077/* Line 1806 of yacc.c  */
    9078 #line 2799 "parser.yy"
     9078#line 2798 "parser.yy"
    90799079    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90809080    break;
     
    90839083
    90849084/* Line 1806 of yacc.c  */
    9085 #line 2801 "parser.yy"
     9085#line 2800 "parser.yy"
    90869086    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90879087    break;
     
    90909090
    90919091/* Line 1806 of yacc.c  */
    9092 #line 2803 "parser.yy"
     9092#line 2802 "parser.yy"
    90939093    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90949094    break;
     
    90979097
    90989098/* Line 1806 of yacc.c  */
    9099 #line 2805 "parser.yy"
     9099#line 2804 "parser.yy"
    91009100    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91019101    break;
     
    91049104
    91059105/* Line 1806 of yacc.c  */
    9106 #line 2810 "parser.yy"
     9106#line 2809 "parser.yy"
    91079107    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91089108    break;
     
    91119111
    91129112/* Line 1806 of yacc.c  */
    9113 #line 2815 "parser.yy"
     9113#line 2814 "parser.yy"
    91149114    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91159115    break;
     
    91189118
    91199119/* Line 1806 of yacc.c  */
    9120 #line 2817 "parser.yy"
     9120#line 2816 "parser.yy"
    91219121    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91229122    break;
     
    91259125
    91269126/* Line 1806 of yacc.c  */
    9127 #line 2819 "parser.yy"
     9127#line 2818 "parser.yy"
    91289128    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91299129    break;
     
    91329132
    91339133/* Line 1806 of yacc.c  */
    9134 #line 2843 "parser.yy"
     9134#line 2842 "parser.yy"
    91359135    { (yyval.en) = 0; }
    91369136    break;
     
    91399139
    91409140/* Line 1806 of yacc.c  */
    9141 #line 2845 "parser.yy"
     9141#line 2844 "parser.yy"
    91429142    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91439143    break;
     
    93779377
    93789378/* Line 2067 of yacc.c  */
    9379 #line 2848 "parser.yy"
     9379#line 2847 "parser.yy"
    93809380
    93819381// ----end of grammar----
  • TabularUnified src/Parser/parser.yy

    r1d4580a r777bfcf  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 13 18:59:02 2016
    13 // Update Count     : 1877
     12// Last Modified On : Sun Aug 14 11:03:22 2016
     13// Update Count     : 1879
    1414//
    1515
     
    143143%type<en> constant_expression                   assignment_expression           assignment_expression_opt
    144144%type<en> comma_expression                              comma_expression_opt
    145 //%type<en> argument_expression_list            argument_expression                     for_control_expression          assignment_opt
    146145%type<en> argument_expression_list              argument_expression                     assignment_opt
    147146%type<fctl> for_control_expression
     
    932931asm_statement:
    933932        ASM asm_volatile_opt '(' string_literal_list ')' ';'
    934                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
     933                { $$ = new AsmStmtNode( $2, $4, 0 ); }
    935934        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
    936                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
     935                { $$ = new AsmStmtNode( $2, $4, $6 ); }
    937936        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    938                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
     937                { $$ = new AsmStmtNode( $2, $4, $6, $8 ); }
    939938        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
    940                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
     939                { $$ = new AsmStmtNode( $2, $4, $6, $8, $10 ); }
    941940        | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
    942                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     941                { $$ = new AsmStmtNode( $2, $5, 0, $8, $10, $12 ); }
    943942        ;
    944943
  • TabularUnified src/tests/.expect/64/gccExtensions.txt

    r1d4580a r777bfcf  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
     7extern int __x__i_1;
    78int main(int __argc__i_1, const char **__argv__PPCc_1){
    89    asm ( "nop" :  :  :  );
    910    asm ( "nop" :  :  :  );
    1011    asm ( "nop" :  :  :  );
     12    static int __y__i_2;
     13    int __src__i_2;
     14    int __dst__i_2;
     15    asm volatile ( "mov %1, %0\n\tadd $1, %0" :  :  :  );
     16    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) :  :  );
     17    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
     18    asm ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
    1119    double _Complex __c1__Xd_2;
    1220    double _Complex __c2__Xd_2;
  • TabularUnified src/tests/gccExtensions.c

    r1d4580a r777bfcf  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// gccExtensions.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Sun Aug 14 17:28:17 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Aug 14 17:36:28 2016
     13// Update Count     : 3
     14//
     15
     16extern int x asm( "xx" );
     17
    118int main(int argc, char const *argv[]) {
    219        asm( "nop" );
     
    421        __asm__( "nop" );
    522
     23        static int y asm( "yy" );
     24//      static * int z asm( "zz" );                                                     // CFA declaration
     25
     26        int src;
     27        int dst;
     28
     29        asm volatile ( "mov %1, %0\n\t"
     30                                   "add $1, %0" : : : );
     31
     32        asm volatile ( "mov %1, %0\n\t"
     33                                   "add $1, %0"
     34                                   : "=" "r" (dst));
     35
     36        asm volatile ( "mov %1, %0\n\t"
     37                                   "add $1, %0"
     38                                   : "=r" (dst)
     39                                   : "r" (src));
     40
     41        asm ( "mov %1, %0\n\t"
     42                  "add $1, %0"
     43                  : "=r" (dst), "=r" (src)
     44                  : [src] "r" (dst)
     45                  : "r0");
     46#if 0
     47  L1: L2:
     48        asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5"
     49                           : /* No outputs. */
     50                           : "r"(src), "r"(&dst)
     51                           : "r5", "memory"
     52                           : L1, L2 );
     53#endif
    654        __complex__ c1;
    755        _Complex c2;
     
    57105        return 0;
    58106}
     107
     108// Local Variables: //
     109// tab-width: 4 //
     110// compile-command: "cfa gccExtensions.c" //
     111// End: //
Note: See TracChangeset for help on using the changeset viewer.