Changeset 893256d


Ignore:
Timestamp:
Jul 20, 2015, 2:29:52 PM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
18997b9
Parents:
2794fff (diff), 994ec2c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ctor

Conflicts:

src/Parser/ParseNode.h

Location:
src
Files:
38 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/FixNames.h

    r2794fff r893256d  
    2020
    2121namespace CodeGen {
     22        /// mangles object and function names
    2223        void fixNames( std::list< Declaration* > translationUnit );
    2324} // namespace CodeGen
  • src/CodeGen/GenType.cc

    r2794fff r893256d  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 16:08:24 2015
    13 // Update Count     : 10
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul  9 16:43:52 2015
     13// Update Count     : 13
    1414//
    1515
     
    9393                        os << "_Atomic ";
    9494                } // if
     95                if ( qualifiers.isAttribute ) {
     96                        os << "__attribute(( )) ";
     97                } // if
    9598                if ( dimension != 0 ) {
    9699                        CodeGenerator cg( os );
    97100                        dimension->accept( cg );
    98101                } else if ( isVarLen ) {
    99                         // no dimension expression on a VLA
    100                         // means it came in with the * token
     102                        // no dimension expression on a VLA means it came in with the * token
    101103                        os << "*";
    102104                } // if
     
    202204                        typeString = "_Atomic " + typeString;
    203205                } // if
     206                if ( type->get_isAttribute() ) {
     207                        typeString = "__attribute(( )) " + typeString;
     208                } // if
    204209        }
    205210} // namespace CodeGen
  • src/CodeGen/Generate.h

    r2794fff r893256d  
    2323
    2424namespace CodeGen {
     25        /// Generates code
    2526        void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics );
    2627} // namespace CodeGen
  • src/ControlStruct/CaseRangeMutator.h

    r2794fff r893256d  
    2222
    2323namespace ControlStruct {
     24        /// expand case ranges and turn fallthru into a null statement
    2425        class CaseRangeMutator : public Mutator {
    2526          public:
  • src/ControlStruct/ChooseMutator.h

    r2794fff r893256d  
    2222
    2323namespace ControlStruct {
     24        /// transform choose statements into switch statements
    2425        class ChooseMutator : public Mutator {
    2526          public:
  • src/ControlStruct/LabelFixer.h

    r2794fff r893256d  
    2525
    2626namespace ControlStruct {
     27        /// normalizes label definitions and generates multi-level exit labels
    2728        class LabelFixer : public Visitor {
    2829                typedef Visitor Parent;
  • src/ControlStruct/MLEMutator.cc

    r2794fff r893256d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Sat Jun 27 10:56:14 2015
    13 // Update Count     : 174
    14 //
     12// Last Modified On : Mon Jul 20 13:58:35 2015
     13// Update Count     : 176
     14//
     15
     16// NOTE: There are two known subtle differences from the code that uC++
     17// generates for the same input
     18// -CFA puts the break label inside at the end of a switch, uC++ puts it after
     19// -CFA puts the break label after a block, uC++ puts it inside at the end
     20// we don't yet know if these differences are important, but if they are then
     21// the fix would go in this file, since this is where these labels are generated.
    1522
    1623#include <cassert>
  • src/ControlStruct/Mutate.h

    r2794fff r893256d  
    2323
    2424namespace ControlStruct {
     25        /// Desugars Cforall control structures
    2526        void mutate( std::list< Declaration* > translationUnit );
    2627} // namespace ControlStruct
  • src/GenPoly/Box.cc

    r2794fff r893256d  
    204204                }
    205205
    206                 DeclarationWithType *
    207                 Pass1::mutate( FunctionDecl *functionDecl ) {
     206                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    208207                        if ( functionDecl->get_statements() ) {
    209208                                TyVarMap oldtyVars = scopeTyVars;
  • src/GenPoly/Box.h

    r2794fff r893256d  
    2121
    2222namespace GenPoly {
     23        /// boxes polymorphic function calls
    2324        void box( std::list< Declaration* >& translationUnit );
    2425} // namespace GenPoly
  • src/GenPoly/CopyParams.h

    r2794fff r893256d  
    2020
    2121namespace GenPoly {
     22        /// Clones by-value parameters which have been passed by-reference for polymorphism
    2223        void copyParams( std::list< Declaration* > &translationUnit );
    2324} // namespace GenPoly
  • src/GenPoly/Lvalue.h

    r2794fff r893256d  
    2222
    2323namespace GenPoly {
     24        /// replaces return type of `lvalue T` with `T*`, along with appropriate address-of and dereference operators
    2425        void convertLvalue( std::list< Declaration* >& translationUnit );
    2526} // namespace GenPoly
  • src/GenPoly/Specialize.h

    r2794fff r893256d  
    2222
    2323namespace GenPoly {
     24        /// generates thunks where needed
    2425        void convertSpecializations( std::list< Declaration* >& translationUnit );
    2526} // namespace GenPoly
  • src/InitTweak/RemoveInit.h

    r2794fff r893256d  
    2525
    2626namespace InitTweak {
     27        /// Adds assignment statements for polymorphic type initializers
    2728        void tweak( std::list< Declaration * > translationUnit );
    2829
  • src/Parser/DeclarationNode.cc

    r2794fff r893256d  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 12:34:05 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 16:40:37 2015
    13 // Update Count     : 121
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 14 14:46:32 2015
     13// Update Count     : 126
    1414//
    1515
     
    472472                if ( o->get_link() ) {
    473473                        set_link( o->get_link()->clone() );
    474                 }
    475 
     474                } // if
    476475        } // if
    477476        delete o;
  • src/Parser/ParseNode.h

    r2794fff r893256d  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Jul 03 18:11:50 2015
    13 // Update Count     : 85
     12// Last Modified On : Mon Jul 20 14:28:54 2015
     13// Update Count     : 93
    1414//
    1515
     
    266266class DeclarationNode : public ParseNode {
    267267  public:
    268         enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Attribute };
     268        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic };
    269269        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    270270        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
     
    353353        std::string name;
    354354        std::list< StorageClass > storageClasses;
     355        std::list< std::string > attributes;
    355356        ExpressionNode *bitfieldWidth;
    356357        InitializerNode *initializer;
     
    359360
    360361        static UniqueName anonymous;
    361 };
     362}; // DeclarationNode
    362363
    363364class StatementNode : public ParseNode {
     
    381382        static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    382383
    383         void set_control( ExpressionNode * );
    384         StatementNode * set_block( StatementNode * );
    385 
    386         ExpressionNode *get_control() const ;
    387         StatementNode *get_block() const;
    388         StatementNode::Type get_type() const;
     384        StatementNode *set_block( StatementNode *b ) {  block = b; return this; }
     385        StatementNode *get_block() const { return block; }
     386
     387        void set_control( ExpressionNode *c ) { control = c; }
     388        ExpressionNode *get_control() const { return control; }
     389
     390        StatementNode::Type get_type() const { return type; }
    389391
    390392        StatementNode *add_label( const std::string * );
    391         std::list<std::string> *get_labels() const;
     393        const std::list<std::string> &get_labels() const { return labels; }
    392394
    393395        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
     
    410412        ExpressionNode *control;
    411413        StatementNode *block;
    412         std::list<std::string> *labels;
     414        std::list<std::string> labels;
    413415        std::string *target;                            // target label for jump statements
    414416        DeclarationNode *decl;
    415417
    416418        bool isCatchRest;
    417 };
     419}; // StatementNode
    418420
    419421class CompoundStmtNode : public StatementNode {
  • src/Parser/StatementNode.cc

    r2794fff r893256d  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:20:44 2015
    13 // Update Count     : 21
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 16 16:20:24 2015
     13// Update Count     : 30
    1414//
    1515
     
    7272        delete control;
    7373        delete block;
    74         delete labels;
    7574        delete target;
    7675        delete decl;
     
    103102}
    104103
    105 void StatementNode::set_control( ExpressionNode *c ) {
    106         control = c;
    107 }
    108 
    109 StatementNode * StatementNode::set_block( StatementNode *b ) {
    110         block = b;
    111 
    112         return this;
    113 }
    114 
    115 ExpressionNode *StatementNode::get_control() const {
    116         return control;
    117 }
    118 
    119 StatementNode *StatementNode::get_block() const {
    120         return block;
    121 }
    122 
    123 StatementNode::Type StatementNode::get_type() const {
    124         return type;
    125 }
    126 
    127104StatementNode *StatementNode::add_label( const std::string *l ) {
    128105        if ( l != 0 ) {
    129                 if ( labels == 0 )
    130                         labels = new std::list<std::string>();
    131 
    132                 labels->push_front(*l );
     106                labels.push_front( *l );
    133107                delete l;
    134108        } // if
    135109        return this;
    136110}
    137 
    138 std::list<std::string> *StatementNode::get_labels() const { return labels; }
    139111
    140112StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
     
    170142
    171143void StatementNode::print( std::ostream &os, int indent ) const {
    172         if ( labels != 0 ) {
    173                 if ( ! labels->empty()) {
    174                         std::list<std::string>::const_iterator i;
    175 
    176                         os << string( indent, ' ' );
    177                         for ( i = labels->begin(); i != labels->end(); i++ )
    178                                 os << *i << ":";
    179                         os << endl;
    180                 } // if
     144        if ( ! labels.empty()) {
     145                std::list<std::string>::const_iterator i;
     146
     147                os << string( indent, ' ' );
     148                for ( i = labels.begin(); i != labels.end(); i++ )
     149                        os << *i << ":";
     150                os << endl;
    181151        } // if
    182152
     
    225195        std::list<Label> labs;
    226196
    227         if ( labels != 0 ) {
     197        if ( ! labels.empty() ) {
    228198                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    229                 copy( labels->begin(), labels->end(), lab_it );
     199                copy( labels.begin(), labels.end(), lab_it );
    230200        } // if
    231201
     
    274244                        if ( ctl->get_init() != 0 ) {
    275245                                buildList( ctl->get_init(), init );
    276                         }
     246                        } // if
    277247
    278248                        Expression *cond = 0;
     
    378348Statement *CompoundStmtNode::build() const {
    379349        std::list<Label> labs;
    380         std::list<std::string> *labels = get_labels();
    381 
    382         if ( labels != 0 ) {
     350        const std::list<std::string> &labels = get_labels();
     351
     352        if ( ! labels.empty() ) {
    383353                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    384                 copy( labels->begin(), labels->end(), lab_it );
     354                copy( labels.begin(), labels.end(), lab_it );
    385355        } // if
    386356
  • src/Parser/TypeData.cc

    r2794fff r893256d  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 07:30:06 2015
    13 // Update Count     : 26
     12// Last Modified On : Tue Jul 14 14:57:23 2015
     13// Update Count     : 32
    1414//
    1515
     
    397397                } // if
    398398                break;
     399          default:
     400                os << "internal error: TypeData::print " << kind  << endl;
     401                assert( false );
    399402        } // switch
    400403}
     
    474477                return buildVariable();
    475478        } else {
    476                 if ( isInline || isNoreturn ) {
    477                         throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this );
    478                 } else {
    479                         return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
    480                 } // if
     479                return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, isInline, isNoreturn );
    481480        } // if
    482481        return 0;
     
    536535                  case DeclarationNode::Atomic:
    537536                        q.isAtomic = true;
    538                         break;
    539                   case DeclarationNode::Attribute:
    540                         q.isAttribute = true;
    541537                        break;
    542538                } // switch
  • src/Parser/parser.cc

    r2794fff r893256d  
    8080#include "lex.h"
    8181#include "ParseNode.h"
     82#include "TypeData.h"
    8283#include "LinkageSpec.h"
    8384
     
    8990
    9091/* Line 268 of yacc.c  */
    91 #line 92 "Parser/parser.cc"
     92#line 93 "Parser/parser.cc"
    9293
    9394/* Enabling traces.  */
     
    324325
    325326/* Line 293 of yacc.c  */
    326 #line 107 "parser.yy"
     327#line 108 "parser.yy"
    327328
    328329        Token tok;
     
    339340
    340341/* Line 293 of yacc.c  */
    341 #line 342 "Parser/parser.cc"
     342#line 343 "Parser/parser.cc"
    342343} YYSTYPE;
    343344# define YYSTYPE_IS_TRIVIAL 1
     
    351352
    352353/* Line 343 of yacc.c  */
    353 #line 354 "Parser/parser.cc"
     354#line 355 "Parser/parser.cc"
    354355
    355356#ifdef short
     
    982983static const yytype_uint16 yyrline[] =
    983984{
    984        0,   279,   279,   285,   294,   295,   296,   300,   301,   302,
    985      306,   307,   311,   315,   316,   320,   321,   327,   329,   331,
    986      333,   335,   337,   342,   343,   349,   351,   353,   354,   356,
    987      357,   359,   362,   367,   368,   374,   375,   376,   381,   383,
    988      388,   389,   393,   395,   397,   399,   401,   406,   407,   409,
    989      411,   413,   415,   417,   423,   425,   427,   429,   431,   433,
    990      435,   437,   442,   443,   444,   445,   449,   450,   452,   457,
    991      458,   460,   462,   467,   468,   470,   475,   476,   478,   483,
    992      484,   486,   488,   490,   495,   496,   498,   503,   504,   509,
    993      510,   515,   516,   521,   522,   527,   528,   533,   534,   536,
    994      538,   543,   548,   549,   551,   553,   559,   560,   566,   568,
    995      570,   572,   577,   578,   583,   584,   585,   586,   587,   588,
    996      589,   590,   591,   592,   596,   597,   603,   604,   610,   611,
    997      612,   613,   614,   615,   616,   617,   621,   626,   628,   638,
    998      639,   644,   646,   648,   650,   654,   655,   660,   665,   668,
    999      670,   672,   677,   679,   687,   688,   690,   694,   695,   700,
    1000      701,   706,   707,   711,   716,   717,   721,   723,   729,   730,
    1001      734,   736,   738,   740,   746,   747,   751,   752,   756,   758,
    1002      760,   765,   767,   772,   774,   778,   781,   785,   788,   792,
    1003      794,   796,   801,   803,   805,   814,   816,   818,   823,   825,
    1004      830,   843,   844,   849,   851,   856,   860,   862,   864,   866,
    1005      870,   872,   876,   877,   881,   885,   886,   892,   894,   898,
    1006      899,   904,   906,   910,   911,   915,   917,   921,   922,   926,
    1007      927,   931,   932,   947,   948,   949,   950,   951,   955,   960,
    1008      967,   977,   982,   987,   995,  1000,  1005,  1010,  1015,  1023,
    1009     1045,  1050,  1057,  1059,  1066,  1071,  1076,  1087,  1092,  1097,
    1010     1102,  1107,  1116,  1121,  1129,  1130,  1131,  1132,  1138,  1143,
    1011     1151,  1152,  1153,  1154,  1158,  1159,  1160,  1161,  1166,  1167,
    1012     1176,  1177,  1182,  1183,  1188,  1190,  1192,  1194,  1196,  1199,
    1013     1198,  1210,  1211,  1213,  1223,  1224,  1229,  1233,  1235,  1237,
    1014     1239,  1241,  1243,  1245,  1247,  1252,  1254,  1256,  1258,  1260,
    1015     1262,  1264,  1266,  1268,  1270,  1272,  1274,  1280,  1281,  1283,
    1016     1285,  1287,  1292,  1293,  1299,  1300,  1302,  1304,  1309,  1311,
    1017     1313,  1315,  1320,  1321,  1323,  1325,  1330,  1331,  1333,  1338,
    1018     1339,  1341,  1343,  1348,  1350,  1352,  1357,  1358,  1362,  1364,
    1019     1366,  1368,  1370,  1375,  1377,  1382,  1384,  1389,  1390,  1392,
    1020     1393,  1398,  1399,  1401,  1403,  1408,  1410,  1416,  1417,  1419,
    1021     1422,  1425,  1430,  1431,  1436,  1441,  1445,  1447,  1449,  1454,
    1022     1456,  1462,  1463,  1471,  1472,  1476,  1477,  1478,  1480,  1482,
    1023     1489,  1490,  1492,  1494,  1499,  1500,  1506,  1507,  1511,  1512,
    1024     1517,  1518,  1519,  1521,  1529,  1530,  1532,  1535,  1537,  1541,
    1025     1542,  1543,  1545,  1547,  1551,  1556,  1564,  1565,  1574,  1576,
    1026     1581,  1582,  1583,  1587,  1588,  1589,  1593,  1594,  1595,  1599,
    1027     1600,  1601,  1606,  1607,  1608,  1609,  1615,  1616,  1621,  1622,
    1028     1626,  1627,  1628,  1629,  1644,  1645,  1650,  1651,  1657,  1659,
    1029     1662,  1664,  1666,  1689,  1690,  1692,  1694,  1699,  1700,  1702,
    1030     1707,  1712,  1713,  1719,  1718,  1722,  1726,  1728,  1730,  1736,
    1031     1737,  1742,  1747,  1749,  1754,  1756,  1757,  1759,  1764,  1766,
    1032     1768,  1773,  1775,  1780,  1785,  1793,  1799,  1798,  1812,  1813,
    1033     1818,  1819,  1823,  1828,  1833,  1841,  1846,  1857,  1858,  1869,
    1034     1870,  1876,  1877,  1881,  1882,  1883,  1886,  1885,  1896,  1901,
    1035     1906,  1912,  1921,  1927,  1933,  1939,  1945,  1953,  1959,  1967,
    1036     1973,  1982,  1983,  1984,  1988,  1992,  1994,  1997,  1999,  2003,
    1037     2004,  2008,  2012,  2013,  2016,  2018,  2019,  2023,  2024,  2025,
    1038     2026,  2060,  2061,  2062,  2063,  2067,  2072,  2077,  2079,  2081,
    1039     2086,  2088,  2090,  2092,  2097,  2099,  2109,  2110,  2111,  2115,
    1040     2117,  2119,  2124,  2126,  2128,  2133,  2135,  2137,  2146,  2147,
    1041     2148,  2152,  2154,  2156,  2161,  2163,  2165,  2170,  2172,  2174,
    1042     2189,  2190,  2191,  2192,  2196,  2197,  2202,  2204,  2206,  2211,
    1043     2213,  2215,  2217,  2222,  2224,  2226,  2236,  2237,  2238,  2239,
    1044     2243,  2245,  2247,  2252,  2254,  2256,  2258,  2263,  2265,  2267,
    1045     2298,  2299,  2300,  2301,  2305,  2310,  2318,  2320,  2322,  2327,
    1046     2329,  2334,  2336,  2350,  2351,  2352,  2356,  2358,  2360,  2362,
    1047     2364,  2369,  2370,  2372,  2374,  2379,  2381,  2383,  2389,  2391,
    1048     2393,  2397,  2399,  2401,  2403,  2417,  2418,  2419,  2423,  2425,
    1049     2427,  2429,  2431,  2436,  2437,  2439,  2441,  2446,  2448,  2450,
    1050     2456,  2457,  2459,  2468,  2471,  2473,  2476,  2478,  2480,  2493,
    1051     2494,  2495,  2499,  2501,  2503,  2505,  2507,  2512,  2513,  2515,
    1052     2517,  2522,  2524,  2532,  2533,  2534,  2539,  2540,  2544,  2546,
    1053     2548,  2550,  2552,  2554,  2561,  2563,  2565,  2567,  2569,  2571,
    1054     2573,  2575,  2577,  2579,  2584,  2586,  2588,  2593,  2619,  2620,
    1055     2622,  2626,  2627,  2631,  2633,  2635,  2637,  2639,  2641,  2648,
    1056     2650,  2652,  2654,  2656,  2658,  2663,  2668,  2670,  2672,  2690,
    1057     2692,  2697,  2698
     985       0,   282,   282,   288,   297,   298,   299,   303,   304,   305,
     986     309,   310,   314,   318,   319,   323,   324,   330,   332,   334,
     987     336,   338,   340,   345,   346,   352,   354,   356,   357,   359,
     988     360,   362,   365,   370,   371,   377,   378,   379,   384,   386,
     989     391,   392,   396,   398,   400,   402,   404,   409,   410,   412,
     990     414,   416,   418,   420,   426,   428,   430,   432,   434,   436,
     991     438,   440,   445,   446,   447,   448,   452,   453,   455,   460,
     992     461,   463,   465,   470,   471,   473,   478,   479,   481,   486,
     993     487,   489,   491,   493,   498,   499,   501,   506,   507,   512,
     994     513,   518,   519,   524,   525,   530,   531,   536,   537,   539,
     995     541,   546,   551,   552,   554,   556,   562,   563,   569,   571,
     996     573,   575,   580,   581,   586,   587,   588,   589,   590,   591,
     997     592,   593,   594,   595,   599,   600,   606,   607,   613,   614,
     998     615,   616,   617,   618,   619,   620,   624,   631,   633,   643,
     999     644,   649,   651,   653,   655,   659,   660,   665,   670,   673,
     1000     675,   677,   682,   684,   692,   693,   695,   699,   700,   705,
     1001     706,   711,   712,   716,   721,   722,   726,   728,   734,   735,
     1002     739,   741,   743,   745,   751,   752,   756,   757,   761,   763,
     1003     765,   770,   772,   777,   779,   783,   786,   790,   793,   797,
     1004     799,   801,   806,   808,   810,   819,   821,   823,   828,   830,
     1005     835,   848,   849,   854,   856,   861,   865,   867,   869,   871,
     1006     875,   877,   881,   882,   886,   890,   891,   897,   899,   903,
     1007     904,   909,   911,   915,   916,   920,   922,   926,   927,   931,
     1008     932,   936,   937,   952,   953,   954,   955,   956,   960,   965,
     1009     972,   982,   987,   992,  1000,  1005,  1010,  1015,  1020,  1028,
     1010    1050,  1055,  1062,  1064,  1071,  1076,  1081,  1092,  1097,  1102,
     1011    1107,  1112,  1121,  1126,  1134,  1135,  1136,  1137,  1143,  1148,
     1012    1156,  1157,  1158,  1159,  1163,  1164,  1165,  1166,  1171,  1172,
     1013    1181,  1182,  1187,  1188,  1193,  1195,  1197,  1199,  1201,  1204,
     1014    1203,  1215,  1216,  1218,  1228,  1229,  1234,  1238,  1240,  1242,
     1015    1244,  1246,  1248,  1250,  1252,  1257,  1259,  1261,  1263,  1265,
     1016    1267,  1269,  1271,  1273,  1275,  1277,  1279,  1285,  1286,  1288,
     1017    1290,  1292,  1297,  1298,  1304,  1305,  1307,  1309,  1314,  1316,
     1018    1318,  1320,  1325,  1326,  1328,  1330,  1335,  1336,  1338,  1343,
     1019    1344,  1346,  1348,  1353,  1355,  1357,  1362,  1363,  1367,  1369,
     1020    1371,  1373,  1375,  1380,  1382,  1387,  1389,  1394,  1395,  1397,
     1021    1398,  1403,  1404,  1406,  1408,  1413,  1415,  1421,  1422,  1424,
     1022    1427,  1430,  1435,  1436,  1441,  1446,  1450,  1452,  1454,  1459,
     1023    1461,  1467,  1468,  1476,  1477,  1481,  1482,  1483,  1485,  1487,
     1024    1494,  1495,  1497,  1499,  1504,  1505,  1511,  1512,  1516,  1517,
     1025    1522,  1523,  1524,  1526,  1534,  1535,  1537,  1540,  1542,  1546,
     1026    1547,  1548,  1550,  1552,  1556,  1561,  1569,  1570,  1579,  1581,
     1027    1586,  1587,  1588,  1592,  1593,  1594,  1598,  1599,  1600,  1604,
     1028    1605,  1606,  1611,  1612,  1613,  1614,  1620,  1621,  1626,  1627,
     1029    1631,  1632,  1633,  1634,  1649,  1650,  1655,  1656,  1662,  1664,
     1030    1667,  1669,  1671,  1694,  1695,  1697,  1699,  1704,  1705,  1707,
     1031    1712,  1717,  1718,  1724,  1723,  1727,  1731,  1733,  1735,  1741,
     1032    1742,  1747,  1752,  1754,  1759,  1761,  1762,  1764,  1769,  1771,
     1033    1773,  1778,  1780,  1785,  1790,  1798,  1804,  1803,  1817,  1818,
     1034    1823,  1824,  1828,  1833,  1838,  1846,  1851,  1862,  1863,  1874,
     1035    1875,  1881,  1882,  1886,  1887,  1888,  1891,  1890,  1901,  1906,
     1036    1911,  1917,  1926,  1932,  1938,  1944,  1950,  1958,  1964,  1972,
     1037    1978,  1987,  1988,  1989,  1993,  1997,  1999,  2004,  2005,  2009,
     1038    2010,  2015,  2021,  2022,  2025,  2027,  2028,  2032,  2033,  2034,
     1039    2035,  2069,  2071,  2072,  2074,  2079,  2084,  2089,  2091,  2093,
     1040    2098,  2100,  2102,  2104,  2109,  2111,  2121,  2123,  2124,  2129,
     1041    2131,  2133,  2138,  2140,  2142,  2147,  2149,  2151,  2160,  2161,
     1042    2162,  2166,  2168,  2170,  2175,  2177,  2179,  2184,  2186,  2188,
     1043    2203,  2205,  2206,  2208,  2213,  2214,  2219,  2221,  2223,  2228,
     1044    2230,  2232,  2234,  2239,  2241,  2243,  2253,  2255,  2256,  2258,
     1045    2263,  2265,  2267,  2272,  2274,  2276,  2278,  2283,  2285,  2287,
     1046    2318,  2320,  2321,  2323,  2328,  2333,  2341,  2343,  2345,  2350,
     1047    2352,  2357,  2359,  2373,  2374,  2376,  2381,  2383,  2385,  2387,
     1048    2389,  2394,  2395,  2397,  2399,  2404,  2406,  2408,  2414,  2416,
     1049    2418,  2422,  2424,  2426,  2428,  2442,  2443,  2445,  2450,  2452,
     1050    2454,  2456,  2458,  2463,  2464,  2466,  2468,  2473,  2475,  2477,
     1051    2483,  2484,  2486,  2495,  2498,  2500,  2503,  2505,  2507,  2520,
     1052    2521,  2523,  2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,
     1053    2546,  2551,  2553,  2561,  2562,  2563,  2568,  2569,  2573,  2575,
     1054    2577,  2579,  2581,  2583,  2590,  2592,  2594,  2596,  2598,  2600,
     1055    2602,  2604,  2606,  2608,  2613,  2615,  2617,  2622,  2648,  2649,
     1056    2651,  2655,  2656,  2660,  2662,  2664,  2666,  2668,  2670,  2677,
     1057    2679,  2681,  2683,  2685,  2687,  2692,  2697,  2699,  2701,  2719,
     1058    2721,  2726,  2727
    10581059};
    10591060#endif
     
    50075008
    50085009/* Line 1806 of yacc.c  */
    5009 #line 279 "parser.yy"
     5010#line 282 "parser.yy"
    50105011    {
    50115012                        typedefTable.enterScope();
     
    50165017
    50175018/* Line 1806 of yacc.c  */
    5018 #line 285 "parser.yy"
     5019#line 288 "parser.yy"
    50195020    {
    50205021                        typedefTable.leaveScope();
     
    50255026
    50265027/* Line 1806 of yacc.c  */
    5027 #line 294 "parser.yy"
     5028#line 297 "parser.yy"
    50285029    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50295030    break;
     
    50325033
    50335034/* Line 1806 of yacc.c  */
    5034 #line 295 "parser.yy"
     5035#line 298 "parser.yy"
    50355036    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50365037    break;
     
    50395040
    50405041/* Line 1806 of yacc.c  */
    5041 #line 296 "parser.yy"
     5042#line 299 "parser.yy"
    50425043    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50435044    break;
     
    50465047
    50475048/* Line 1806 of yacc.c  */
    5048 #line 320 "parser.yy"
     5049#line 323 "parser.yy"
    50495050    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50505051    break;
     
    50535054
    50545055/* Line 1806 of yacc.c  */
    5055 #line 321 "parser.yy"
     5056#line 324 "parser.yy"
    50565057    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50575058    break;
     
    50605061
    50615062/* Line 1806 of yacc.c  */
    5062 #line 328 "parser.yy"
     5063#line 331 "parser.yy"
    50635064    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50645065    break;
     
    50675068
    50685069/* Line 1806 of yacc.c  */
    5069 #line 330 "parser.yy"
     5070#line 333 "parser.yy"
    50705071    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50715072    break;
     
    50745075
    50755076/* Line 1806 of yacc.c  */
    5076 #line 332 "parser.yy"
     5077#line 335 "parser.yy"
    50775078    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50785079    break;
     
    50815082
    50825083/* Line 1806 of yacc.c  */
    5083 #line 334 "parser.yy"
     5084#line 337 "parser.yy"
    50845085    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50855086    break;
     
    50885089
    50895090/* Line 1806 of yacc.c  */
    5090 #line 336 "parser.yy"
     5091#line 339 "parser.yy"
    50915092    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50925093    break;
     
    50955096
    50965097/* Line 1806 of yacc.c  */
    5097 #line 338 "parser.yy"
     5098#line 341 "parser.yy"
    50985099    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    50995100    break;
     
    51025103
    51035104/* Line 1806 of yacc.c  */
    5104 #line 348 "parser.yy"
     5105#line 351 "parser.yy"
    51055106    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    51065107    break;
     
    51095110
    51105111/* Line 1806 of yacc.c  */
    5111 #line 350 "parser.yy"
     5112#line 353 "parser.yy"
    51125113    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    51135114    break;
     
    51165117
    51175118/* Line 1806 of yacc.c  */
    5118 #line 352 "parser.yy"
     5119#line 355 "parser.yy"
    51195120    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51205121    break;
     
    51235124
    51245125/* Line 1806 of yacc.c  */
    5125 #line 355 "parser.yy"
     5126#line 358 "parser.yy"
    51265127    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51275128    break;
     
    51305131
    51315132/* Line 1806 of yacc.c  */
    5132 #line 358 "parser.yy"
     5133#line 361 "parser.yy"
    51335134    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    51345135    break;
     
    51375138
    51385139/* Line 1806 of yacc.c  */
    5139 #line 360 "parser.yy"
     5140#line 363 "parser.yy"
    51405141    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    51415142    break;
     
    51445145
    51455146/* Line 1806 of yacc.c  */
    5146 #line 363 "parser.yy"
     5147#line 366 "parser.yy"
    51475148    { (yyval.en) = 0; }
    51485149    break;
     
    51515152
    51525153/* Line 1806 of yacc.c  */
    5153 #line 369 "parser.yy"
     5154#line 372 "parser.yy"
    51545155    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    51555156    break;
     
    51585159
    51595160/* Line 1806 of yacc.c  */
    5160 #line 374 "parser.yy"
     5161#line 377 "parser.yy"
    51615162    { (yyval.en) = 0; }
    51625163    break;
     
    51655166
    51665167/* Line 1806 of yacc.c  */
    5167 #line 377 "parser.yy"
     5168#line 380 "parser.yy"
    51685169    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
    51695170    break;
     
    51725173
    51735174/* Line 1806 of yacc.c  */
    5174 #line 382 "parser.yy"
     5175#line 385 "parser.yy"
    51755176    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
    51765177    break;
     
    51795180
    51805181/* Line 1806 of yacc.c  */
    5181 #line 384 "parser.yy"
     5182#line 387 "parser.yy"
    51825183    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    51835184    break;
     
    51865187
    51875188/* Line 1806 of yacc.c  */
    5188 #line 389 "parser.yy"
     5189#line 392 "parser.yy"
    51895190    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51905191    break;
     
    51935194
    51945195/* Line 1806 of yacc.c  */
    5195 #line 394 "parser.yy"
     5196#line 397 "parser.yy"
    51965197    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    51975198    break;
     
    52005201
    52015202/* Line 1806 of yacc.c  */
    5202 #line 396 "parser.yy"
     5203#line 399 "parser.yy"
    52035204    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52045205    break;
     
    52075208
    52085209/* Line 1806 of yacc.c  */
    5209 #line 398 "parser.yy"
     5210#line 401 "parser.yy"
    52105211    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52115212    break;
     
    52145215
    52155216/* Line 1806 of yacc.c  */
    5216 #line 400 "parser.yy"
     5217#line 403 "parser.yy"
    52175218    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52185219    break;
     
    52215222
    52225223/* Line 1806 of yacc.c  */
    5223 #line 402 "parser.yy"
     5224#line 405 "parser.yy"
    52245225    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52255226    break;
     
    52285229
    52295230/* Line 1806 of yacc.c  */
    5230 #line 408 "parser.yy"
     5231#line 411 "parser.yy"
    52315232    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    52325233    break;
     
    52355236
    52365237/* Line 1806 of yacc.c  */
    5237 #line 410 "parser.yy"
     5238#line 413 "parser.yy"
    52385239    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    52395240    break;
     
    52425243
    52435244/* Line 1806 of yacc.c  */
    5244 #line 412 "parser.yy"
     5245#line 415 "parser.yy"
    52455246    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    52465247    break;
     
    52495250
    52505251/* Line 1806 of yacc.c  */
    5251 #line 414 "parser.yy"
     5252#line 417 "parser.yy"
    52525253    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    52535254    break;
     
    52565257
    52575258/* Line 1806 of yacc.c  */
    5258 #line 416 "parser.yy"
     5259#line 419 "parser.yy"
    52595260    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    52605261    break;
     
    52635264
    52645265/* Line 1806 of yacc.c  */
    5265 #line 418 "parser.yy"
     5266#line 421 "parser.yy"
    52665267    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    52675268    break;
     
    52705271
    52715272/* Line 1806 of yacc.c  */
    5272 #line 424 "parser.yy"
     5273#line 427 "parser.yy"
    52735274    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    52745275    break;
     
    52775278
    52785279/* Line 1806 of yacc.c  */
    5279 #line 426 "parser.yy"
     5280#line 429 "parser.yy"
    52805281    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    52815282    break;
     
    52845285
    52855286/* Line 1806 of yacc.c  */
    5286 #line 428 "parser.yy"
     5287#line 431 "parser.yy"
    52875288    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    52885289    break;
     
    52915292
    52925293/* Line 1806 of yacc.c  */
    5293 #line 430 "parser.yy"
     5294#line 433 "parser.yy"
    52945295    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    52955296    break;
     
    52985299
    52995300/* Line 1806 of yacc.c  */
    5300 #line 432 "parser.yy"
     5301#line 435 "parser.yy"
    53015302    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    53025303    break;
     
    53055306
    53065307/* Line 1806 of yacc.c  */
    5307 #line 434 "parser.yy"
     5308#line 437 "parser.yy"
    53085309    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    53095310    break;
     
    53125313
    53135314/* Line 1806 of yacc.c  */
    5314 #line 436 "parser.yy"
     5315#line 439 "parser.yy"
    53155316    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53165317    break;
     
    53195320
    53205321/* Line 1806 of yacc.c  */
    5321 #line 438 "parser.yy"
     5322#line 441 "parser.yy"
    53225323    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
    53235324    break;
     
    53265327
    53275328/* Line 1806 of yacc.c  */
    5328 #line 442 "parser.yy"
     5329#line 445 "parser.yy"
    53295330    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    53305331    break;
     
    53335334
    53345335/* Line 1806 of yacc.c  */
    5335 #line 443 "parser.yy"
     5336#line 446 "parser.yy"
    53365337    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    53375338    break;
     
    53405341
    53415342/* Line 1806 of yacc.c  */
    5342 #line 444 "parser.yy"
     5343#line 447 "parser.yy"
    53435344    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    53445345    break;
     
    53475348
    53485349/* Line 1806 of yacc.c  */
    5349 #line 445 "parser.yy"
     5350#line 448 "parser.yy"
    53505351    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    53515352    break;
     
    53545355
    53555356/* Line 1806 of yacc.c  */
    5356 #line 451 "parser.yy"
     5357#line 454 "parser.yy"
    53575358    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    53585359    break;
     
    53615362
    53625363/* Line 1806 of yacc.c  */
    5363 #line 453 "parser.yy"
     5364#line 456 "parser.yy"
    53645365    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    53655366    break;
     
    53685369
    53695370/* Line 1806 of yacc.c  */
    5370 #line 459 "parser.yy"
     5371#line 462 "parser.yy"
    53715372    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53725373    break;
     
    53755376
    53765377/* Line 1806 of yacc.c  */
    5377 #line 461 "parser.yy"
     5378#line 464 "parser.yy"
    53785379    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53795380    break;
     
    53825383
    53835384/* Line 1806 of yacc.c  */
    5384 #line 463 "parser.yy"
     5385#line 466 "parser.yy"
    53855386    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53865387    break;
     
    53895390
    53905391/* Line 1806 of yacc.c  */
    5391 #line 469 "parser.yy"
     5392#line 472 "parser.yy"
    53925393    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53935394    break;
     
    53965397
    53975398/* Line 1806 of yacc.c  */
    5398 #line 471 "parser.yy"
     5399#line 474 "parser.yy"
    53995400    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54005401    break;
     
    54035404
    54045405/* Line 1806 of yacc.c  */
    5405 #line 477 "parser.yy"
     5406#line 480 "parser.yy"
    54065407    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54075408    break;
     
    54105411
    54115412/* Line 1806 of yacc.c  */
    5412 #line 479 "parser.yy"
     5413#line 482 "parser.yy"
    54135414    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54145415    break;
     
    54175418
    54185419/* Line 1806 of yacc.c  */
    5419 #line 485 "parser.yy"
     5420#line 488 "parser.yy"
    54205421    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54215422    break;
     
    54245425
    54255426/* Line 1806 of yacc.c  */
    5426 #line 487 "parser.yy"
     5427#line 490 "parser.yy"
    54275428    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54285429    break;
     
    54315432
    54325433/* Line 1806 of yacc.c  */
    5433 #line 489 "parser.yy"
     5434#line 492 "parser.yy"
    54345435    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54355436    break;
     
    54385439
    54395440/* Line 1806 of yacc.c  */
    5440 #line 491 "parser.yy"
     5441#line 494 "parser.yy"
    54415442    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54425443    break;
     
    54455446
    54465447/* Line 1806 of yacc.c  */
    5447 #line 497 "parser.yy"
     5448#line 500 "parser.yy"
    54485449    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54495450    break;
     
    54525453
    54535454/* Line 1806 of yacc.c  */
    5454 #line 499 "parser.yy"
     5455#line 502 "parser.yy"
    54555456    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54565457    break;
     
    54595460
    54605461/* Line 1806 of yacc.c  */
    5461 #line 505 "parser.yy"
     5462#line 508 "parser.yy"
    54625463    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54635464    break;
     
    54665467
    54675468/* Line 1806 of yacc.c  */
    5468 #line 511 "parser.yy"
     5469#line 514 "parser.yy"
    54695470    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54705471    break;
     
    54735474
    54745475/* Line 1806 of yacc.c  */
    5475 #line 517 "parser.yy"
     5476#line 520 "parser.yy"
    54765477    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54775478    break;
     
    54805481
    54815482/* Line 1806 of yacc.c  */
    5482 #line 523 "parser.yy"
     5483#line 526 "parser.yy"
    54835484    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54845485    break;
     
    54875488
    54885489/* Line 1806 of yacc.c  */
    5489 #line 529 "parser.yy"
     5490#line 532 "parser.yy"
    54905491    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54915492    break;
     
    54945495
    54955496/* Line 1806 of yacc.c  */
    5496 #line 535 "parser.yy"
     5497#line 538 "parser.yy"
    54975498    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    54985499    break;
     
    55015502
    55025503/* Line 1806 of yacc.c  */
    5503 #line 537 "parser.yy"
     5504#line 540 "parser.yy"
    55045505    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    55055506    break;
     
    55085509
    55095510/* Line 1806 of yacc.c  */
    5510 #line 539 "parser.yy"
     5511#line 542 "parser.yy"
    55115512    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55125513    break;
     
    55155516
    55165517/* Line 1806 of yacc.c  */
    5517 #line 550 "parser.yy"
     5518#line 553 "parser.yy"
    55185519    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55195520    break;
     
    55225523
    55235524/* Line 1806 of yacc.c  */
    5524 #line 552 "parser.yy"
     5525#line 555 "parser.yy"
    55255526    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55265527    break;
     
    55295530
    55305531/* Line 1806 of yacc.c  */
    5531 #line 554 "parser.yy"
     5532#line 557 "parser.yy"
    55325533    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    55335534    break;
     
    55365537
    55375538/* Line 1806 of yacc.c  */
    5538 #line 559 "parser.yy"
     5539#line 562 "parser.yy"
    55395540    { (yyval.en) = new NullExprNode; }
    55405541    break;
     
    55435544
    55445545/* Line 1806 of yacc.c  */
    5545 #line 567 "parser.yy"
     5546#line 570 "parser.yy"
    55465547    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    55475548    break;
     
    55505551
    55515552/* Line 1806 of yacc.c  */
    5552 #line 569 "parser.yy"
     5553#line 572 "parser.yy"
    55535554    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    55545555    break;
     
    55575558
    55585559/* Line 1806 of yacc.c  */
    5559 #line 571 "parser.yy"
     5560#line 574 "parser.yy"
    55605561    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    55615562    break;
     
    55645565
    55655566/* Line 1806 of yacc.c  */
    5566 #line 573 "parser.yy"
     5567#line 576 "parser.yy"
    55675568    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    55685569    break;
     
    55715572
    55725573/* Line 1806 of yacc.c  */
    5573 #line 579 "parser.yy"
     5574#line 582 "parser.yy"
    55745575    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    55755576    break;
     
    55785579
    55795580/* Line 1806 of yacc.c  */
    5580 #line 583 "parser.yy"
     5581#line 586 "parser.yy"
    55815582    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    55825583    break;
     
    55855586
    55865587/* Line 1806 of yacc.c  */
    5587 #line 584 "parser.yy"
     5588#line 587 "parser.yy"
    55885589    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    55895590    break;
     
    55925593
    55935594/* Line 1806 of yacc.c  */
    5594 #line 585 "parser.yy"
     5595#line 588 "parser.yy"
    55955596    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    55965597    break;
     
    55995600
    56005601/* Line 1806 of yacc.c  */
    5601 #line 586 "parser.yy"
     5602#line 589 "parser.yy"
    56025603    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    56035604    break;
     
    56065607
    56075608/* Line 1806 of yacc.c  */
    5608 #line 587 "parser.yy"
     5609#line 590 "parser.yy"
    56095610    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    56105611    break;
     
    56135614
    56145615/* Line 1806 of yacc.c  */
    5615 #line 588 "parser.yy"
     5616#line 591 "parser.yy"
    56165617    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    56175618    break;
     
    56205621
    56215622/* Line 1806 of yacc.c  */
    5622 #line 589 "parser.yy"
     5623#line 592 "parser.yy"
    56235624    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    56245625    break;
     
    56275628
    56285629/* Line 1806 of yacc.c  */
    5629 #line 590 "parser.yy"
     5630#line 593 "parser.yy"
    56305631    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    56315632    break;
     
    56345635
    56355636/* Line 1806 of yacc.c  */
    5636 #line 591 "parser.yy"
     5637#line 594 "parser.yy"
    56375638    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    56385639    break;
     
    56415642
    56425643/* Line 1806 of yacc.c  */
    5643 #line 592 "parser.yy"
     5644#line 595 "parser.yy"
    56445645    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    56455646    break;
     
    56485649
    56495650/* Line 1806 of yacc.c  */
    5650 #line 598 "parser.yy"
     5651#line 601 "parser.yy"
    56515652    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56525653    break;
     
    56555656
    56565657/* Line 1806 of yacc.c  */
    5657 #line 603 "parser.yy"
     5658#line 606 "parser.yy"
    56585659    { (yyval.en) = 0; }
    56595660    break;
     
    56625663
    56635664/* Line 1806 of yacc.c  */
    5664 #line 612 "parser.yy"
     5665#line 615 "parser.yy"
    56655666    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56665667    break;
     
    56695670
    56705671/* Line 1806 of yacc.c  */
    5671 #line 622 "parser.yy"
    5672     { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );}
     5672#line 625 "parser.yy"
     5673    {
     5674                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     5675                }
    56735676    break;
    56745677
     
    56765679
    56775680/* Line 1806 of yacc.c  */
    5678 #line 627 "parser.yy"
     5681#line 632 "parser.yy"
    56795682    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56805683    break;
     
    56835686
    56845687/* Line 1806 of yacc.c  */
    5685 #line 634 "parser.yy"
     5688#line 639 "parser.yy"
    56865689    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56875690    break;
     
    56905693
    56915694/* Line 1806 of yacc.c  */
    5692 #line 640 "parser.yy"
     5695#line 645 "parser.yy"
    56935696    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56945697    break;
     
    56975700
    56985701/* Line 1806 of yacc.c  */
    5699 #line 645 "parser.yy"
     5702#line 650 "parser.yy"
    57005703    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57015704    break;
     
    57045707
    57055708/* Line 1806 of yacc.c  */
    5706 #line 647 "parser.yy"
     5709#line 652 "parser.yy"
    57075710    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57085711    break;
     
    57115714
    57125715/* Line 1806 of yacc.c  */
    5713 #line 649 "parser.yy"
     5716#line 654 "parser.yy"
    57145717    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57155718    break;
     
    57185721
    57195722/* Line 1806 of yacc.c  */
    5720 #line 656 "parser.yy"
     5723#line 661 "parser.yy"
    57215724    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57225725    break;
     
    57255728
    57265729/* Line 1806 of yacc.c  */
    5727 #line 661 "parser.yy"
     5730#line 666 "parser.yy"
    57285731    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57295732    break;
     
    57325735
    57335736/* Line 1806 of yacc.c  */
    5734 #line 667 "parser.yy"
     5737#line 672 "parser.yy"
    57355738    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57365739    break;
     
    57395742
    57405743/* Line 1806 of yacc.c  */
    5741 #line 669 "parser.yy"
     5744#line 674 "parser.yy"
    57425745    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57435746    break;
     
    57465749
    57475750/* Line 1806 of yacc.c  */
    5748 #line 671 "parser.yy"
     5751#line 676 "parser.yy"
    57495752    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57505753    break;
     
    57535756
    57545757/* Line 1806 of yacc.c  */
    5755 #line 673 "parser.yy"
     5758#line 678 "parser.yy"
    57565759    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    57575760    break;
     
    57605763
    57615764/* Line 1806 of yacc.c  */
    5762 #line 678 "parser.yy"
     5765#line 683 "parser.yy"
    57635766    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57645767    break;
     
    57675770
    57685771/* Line 1806 of yacc.c  */
    5769 #line 680 "parser.yy"
     5772#line 685 "parser.yy"
    57705773    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57715774    break;
     
    57745777
    57755778/* Line 1806 of yacc.c  */
    5776 #line 687 "parser.yy"
     5779#line 692 "parser.yy"
    57775780    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57785781    break;
     
    57815784
    57825785/* Line 1806 of yacc.c  */
    5783 #line 689 "parser.yy"
     5786#line 694 "parser.yy"
    57845787    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57855788    break;
     
    57885791
    57895792/* Line 1806 of yacc.c  */
    5790 #line 696 "parser.yy"
     5793#line 701 "parser.yy"
    57915794    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    57925795    break;
     
    57955798
    57965799/* Line 1806 of yacc.c  */
    5797 #line 700 "parser.yy"
     5800#line 705 "parser.yy"
    57985801    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    57995802    break;
     
    58025805
    58035806/* Line 1806 of yacc.c  */
    5804 #line 701 "parser.yy"
     5807#line 706 "parser.yy"
    58055808    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58065809    break;
     
    58095812
    58105813/* Line 1806 of yacc.c  */
    5811 #line 707 "parser.yy"
     5814#line 712 "parser.yy"
    58125815    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58135816    break;
     
    58165819
    58175820/* Line 1806 of yacc.c  */
    5818 #line 711 "parser.yy"
     5821#line 716 "parser.yy"
    58195822    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58205823    break;
     
    58235826
    58245827/* Line 1806 of yacc.c  */
    5825 #line 716 "parser.yy"
     5828#line 721 "parser.yy"
    58265829    { (yyval.sn) = 0; }
    58275830    break;
     
    58305833
    58315834/* Line 1806 of yacc.c  */
    5832 #line 722 "parser.yy"
     5835#line 727 "parser.yy"
    58335836    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58345837    break;
     
    58375840
    58385841/* Line 1806 of yacc.c  */
    5839 #line 724 "parser.yy"
     5842#line 729 "parser.yy"
    58405843    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58415844    break;
     
    58445847
    58455848/* Line 1806 of yacc.c  */
    5846 #line 729 "parser.yy"
     5849#line 734 "parser.yy"
    58475850    { (yyval.sn) = 0; }
    58485851    break;
     
    58515854
    58525855/* Line 1806 of yacc.c  */
    5853 #line 735 "parser.yy"
     5856#line 740 "parser.yy"
    58545857    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58555858    break;
     
    58585861
    58595862/* Line 1806 of yacc.c  */
    5860 #line 737 "parser.yy"
     5863#line 742 "parser.yy"
    58615864    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    58625865    break;
     
    58655868
    58665869/* Line 1806 of yacc.c  */
    5867 #line 739 "parser.yy"
     5870#line 744 "parser.yy"
    58685871    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58695872    break;
     
    58725875
    58735876/* Line 1806 of yacc.c  */
    5874 #line 741 "parser.yy"
     5877#line 746 "parser.yy"
    58755878    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    58765879    break;
     
    58795882
    58805883/* Line 1806 of yacc.c  */
    5881 #line 746 "parser.yy"
     5884#line 751 "parser.yy"
    58825885    { (yyval.sn) = 0; }
    58835886    break;
     
    58865889
    58875890/* Line 1806 of yacc.c  */
    5888 #line 751 "parser.yy"
     5891#line 756 "parser.yy"
    58895892    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    58905893    break;
     
    58935896
    58945897/* Line 1806 of yacc.c  */
    5895 #line 752 "parser.yy"
     5898#line 757 "parser.yy"
    58965899    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    58975900    break;
     
    59005903
    59015904/* Line 1806 of yacc.c  */
    5902 #line 757 "parser.yy"
     5905#line 762 "parser.yy"
    59035906    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59045907    break;
     
    59075910
    59085911/* Line 1806 of yacc.c  */
    5909 #line 759 "parser.yy"
     5912#line 764 "parser.yy"
    59105913    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59115914    break;
     
    59145917
    59155918/* Line 1806 of yacc.c  */
    5916 #line 761 "parser.yy"
     5919#line 766 "parser.yy"
    59175920    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59185921    break;
     
    59215924
    59225925/* Line 1806 of yacc.c  */
    5923 #line 766 "parser.yy"
     5926#line 771 "parser.yy"
    59245927    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59255928    break;
     
    59285931
    59295932/* Line 1806 of yacc.c  */
    5930 #line 768 "parser.yy"
     5933#line 773 "parser.yy"
    59315934    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59325935    break;
     
    59355938
    59365939/* Line 1806 of yacc.c  */
    5937 #line 773 "parser.yy"
     5940#line 778 "parser.yy"
    59385941    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    59395942    break;
     
    59425945
    59435946/* Line 1806 of yacc.c  */
    5944 #line 777 "parser.yy"
     5947#line 782 "parser.yy"
    59455948    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    59465949    break;
     
    59495952
    59505953/* Line 1806 of yacc.c  */
    5951 #line 780 "parser.yy"
     5954#line 785 "parser.yy"
    59525955    { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
    59535956    break;
     
    59565959
    59575960/* Line 1806 of yacc.c  */
    5958 #line 784 "parser.yy"
     5961#line 789 "parser.yy"
    59595962    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59605963    break;
     
    59635966
    59645967/* Line 1806 of yacc.c  */
    5965 #line 787 "parser.yy"
     5968#line 792 "parser.yy"
    59665969    { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
    59675970    break;
     
    59705973
    59715974/* Line 1806 of yacc.c  */
    5972 #line 791 "parser.yy"
     5975#line 796 "parser.yy"
    59735976    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59745977    break;
     
    59775980
    59785981/* Line 1806 of yacc.c  */
    5979 #line 793 "parser.yy"
     5982#line 798 "parser.yy"
    59805983    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    59815984    break;
     
    59845987
    59855988/* Line 1806 of yacc.c  */
    5986 #line 795 "parser.yy"
     5989#line 800 "parser.yy"
    59875990    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    59885991    break;
     
    59915994
    59925995/* Line 1806 of yacc.c  */
    5993 #line 797 "parser.yy"
     5996#line 802 "parser.yy"
    59945997    { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
    59955998    break;
     
    59986001
    59996002/* Line 1806 of yacc.c  */
    6000 #line 802 "parser.yy"
     6003#line 807 "parser.yy"
    60016004    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60026005    break;
     
    60056008
    60066009/* Line 1806 of yacc.c  */
    6007 #line 804 "parser.yy"
     6010#line 809 "parser.yy"
    60086011    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60096012    break;
     
    60126015
    60136016/* Line 1806 of yacc.c  */
    6014 #line 806 "parser.yy"
     6017#line 811 "parser.yy"
    60156018    {
    60166019                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60226025
    60236026/* Line 1806 of yacc.c  */
    6024 #line 817 "parser.yy"
     6027#line 822 "parser.yy"
    60256028    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60266029    break;
     
    60296032
    60306033/* Line 1806 of yacc.c  */
    6031 #line 819 "parser.yy"
     6034#line 824 "parser.yy"
    60326035    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60336036    break;
     
    60366039
    60376040/* Line 1806 of yacc.c  */
    6038 #line 824 "parser.yy"
     6041#line 829 "parser.yy"
    60396042    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60406043    break;
     
    60436046
    60446047/* Line 1806 of yacc.c  */
    6045 #line 826 "parser.yy"
     6048#line 831 "parser.yy"
    60466049    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60476050    break;
     
    60506053
    60516054/* Line 1806 of yacc.c  */
    6052 #line 831 "parser.yy"
     6055#line 836 "parser.yy"
    60536056    {
    60546057                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60606063
    60616064/* Line 1806 of yacc.c  */
    6062 #line 845 "parser.yy"
     6065#line 850 "parser.yy"
    60636066    {
    60646067                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60706073
    60716074/* Line 1806 of yacc.c  */
    6072 #line 850 "parser.yy"
     6075#line 855 "parser.yy"
    60736076    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60746077    break;
     
    60776080
    60786081/* Line 1806 of yacc.c  */
    6079 #line 852 "parser.yy"
     6082#line 857 "parser.yy"
    60806083    {
    60816084                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60876090
    60886091/* Line 1806 of yacc.c  */
    6089 #line 861 "parser.yy"
     6092#line 866 "parser.yy"
    60906093    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    60916094    break;
     
    60946097
    60956098/* Line 1806 of yacc.c  */
    6096 #line 863 "parser.yy"
     6099#line 868 "parser.yy"
    60976100    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    60986101    break;
     
    61016104
    61026105/* Line 1806 of yacc.c  */
    6103 #line 865 "parser.yy"
     6106#line 870 "parser.yy"
    61046107    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    61056108    break;
     
    61086111
    61096112/* Line 1806 of yacc.c  */
    6110 #line 867 "parser.yy"
     6113#line 872 "parser.yy"
    61116114    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    61126115    break;
     
    61156118
    61166119/* Line 1806 of yacc.c  */
    6117 #line 881 "parser.yy"
     6120#line 886 "parser.yy"
    61186121    {}
    61196122    break;
     
    61226125
    61236126/* Line 1806 of yacc.c  */
    6124 #line 885 "parser.yy"
     6127#line 890 "parser.yy"
    61256128    {}
    61266129    break;
     
    61296132
    61306133/* Line 1806 of yacc.c  */
    6131 #line 893 "parser.yy"
     6134#line 898 "parser.yy"
    61326135    { (yyval.decl) = 0; }
    61336136    break;
     
    61366139
    61376140/* Line 1806 of yacc.c  */
    6138 #line 900 "parser.yy"
     6141#line 905 "parser.yy"
    61396142    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61406143    break;
     
    61436146
    61446147/* Line 1806 of yacc.c  */
    6145 #line 905 "parser.yy"
     6148#line 910 "parser.yy"
    61466149    { (yyval.decl) = 0; }
    61476150    break;
     
    61506153
    61516154/* Line 1806 of yacc.c  */
    6152 #line 912 "parser.yy"
     6155#line 917 "parser.yy"
    61536156    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61546157    break;
     
    61576160
    61586161/* Line 1806 of yacc.c  */
    6159 #line 926 "parser.yy"
     6162#line 931 "parser.yy"
    61606163    {}
    61616164    break;
     
    61646167
    61656168/* Line 1806 of yacc.c  */
    6166 #line 927 "parser.yy"
     6169#line 932 "parser.yy"
    61676170    {}
    61686171    break;
     
    61716174
    61726175/* Line 1806 of yacc.c  */
    6173 #line 956 "parser.yy"
     6176#line 961 "parser.yy"
    61746177    {
    61756178                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61816184
    61826185/* Line 1806 of yacc.c  */
    6183 #line 963 "parser.yy"
     6186#line 968 "parser.yy"
    61846187    {
    61856188                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61916194
    61926195/* Line 1806 of yacc.c  */
    6193 #line 968 "parser.yy"
     6196#line 973 "parser.yy"
    61946197    {
    61956198                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    61996202
    62006203  case 241:
    6201 
    6202 /* Line 1806 of yacc.c  */
    6203 #line 978 "parser.yy"
    6204     {
    6205                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6206                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
    6207                 }
    6208     break;
    6209 
    6210   case 242:
    62116204
    62126205/* Line 1806 of yacc.c  */
     
    62186211    break;
    62196212
     6213  case 242:
     6214
     6215/* Line 1806 of yacc.c  */
     6216#line 988 "parser.yy"
     6217    {
     6218                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     6219                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     6220                }
     6221    break;
     6222
    62206223  case 243:
    62216224
    62226225/* Line 1806 of yacc.c  */
    6223 #line 988 "parser.yy"
     6226#line 993 "parser.yy"
    62246227    {
    62256228                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    62316234
    62326235/* Line 1806 of yacc.c  */
    6233 #line 996 "parser.yy"
     6236#line 1001 "parser.yy"
    62346237    {
    62356238                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62396242
    62406243  case 245:
    6241 
    6242 /* Line 1806 of yacc.c  */
    6243 #line 1001 "parser.yy"
    6244     {
    6245                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    6246                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
    6247                 }
    6248     break;
    6249 
    6250   case 246:
    62516244
    62526245/* Line 1806 of yacc.c  */
     
    62586251    break;
    62596252
     6253  case 246:
     6254
     6255/* Line 1806 of yacc.c  */
     6256#line 1011 "parser.yy"
     6257    {
     6258                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     6259                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     6260                }
     6261    break;
     6262
    62606263  case 247:
    62616264
    62626265/* Line 1806 of yacc.c  */
    6263 #line 1011 "parser.yy"
     6266#line 1016 "parser.yy"
    62646267    {
    62656268                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62716274
    62726275/* Line 1806 of yacc.c  */
    6273 #line 1016 "parser.yy"
     6276#line 1021 "parser.yy"
    62746277    {
    62756278                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    62816284
    62826285/* Line 1806 of yacc.c  */
    6283 #line 1024 "parser.yy"
     6286#line 1029 "parser.yy"
    62846287    {
    62856288                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    62906293
    62916294/* Line 1806 of yacc.c  */
    6292 #line 1047 "parser.yy"
     6295#line 1052 "parser.yy"
    62936296    {
    62946297                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    62996302
    63006303/* Line 1806 of yacc.c  */
    6301 #line 1051 "parser.yy"
     6304#line 1056 "parser.yy"
    63026305    {
    63036306                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63086311
    63096312/* Line 1806 of yacc.c  */
    6310 #line 1058 "parser.yy"
     6313#line 1063 "parser.yy"
    63116314    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63126315    break;
     
    63156318
    63166319/* Line 1806 of yacc.c  */
    6317 #line 1062 "parser.yy"
     6320#line 1067 "parser.yy"
    63186321    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63196322    break;
    63206323
    63216324  case 254:
    6322 
    6323 /* Line 1806 of yacc.c  */
    6324 #line 1067 "parser.yy"
    6325     {
    6326                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6327                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    6328                 }
    6329     break;
    6330 
    6331   case 255:
    63326325
    63336326/* Line 1806 of yacc.c  */
     
    63396332    break;
    63406333
     6334  case 255:
     6335
     6336/* Line 1806 of yacc.c  */
     6337#line 1077 "parser.yy"
     6338    {
     6339                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     6340                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     6341                }
     6342    break;
     6343
    63416344  case 256:
    63426345
    63436346/* Line 1806 of yacc.c  */
    6344 #line 1077 "parser.yy"
     6347#line 1082 "parser.yy"
    63456348    {
    63466349                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    63526355
    63536356/* Line 1806 of yacc.c  */
    6354 #line 1088 "parser.yy"
     6357#line 1093 "parser.yy"
    63556358    {
    63566359                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63626365
    63636366/* Line 1806 of yacc.c  */
    6364 #line 1093 "parser.yy"
     6367#line 1098 "parser.yy"
    63656368    {
    63666369                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63726375
    63736376/* Line 1806 of yacc.c  */
    6374 #line 1098 "parser.yy"
     6377#line 1103 "parser.yy"
    63756378    {
    63766379                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63826385
    63836386/* Line 1806 of yacc.c  */
    6384 #line 1103 "parser.yy"
     6387#line 1108 "parser.yy"
    63856388    {
    63866389                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63926395
    63936396/* Line 1806 of yacc.c  */
    6394 #line 1108 "parser.yy"
     6397#line 1113 "parser.yy"
    63956398    {
    63966399                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64026405
    64036406/* Line 1806 of yacc.c  */
    6404 #line 1117 "parser.yy"
     6407#line 1122 "parser.yy"
    64056408    {
    64066409                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64126415
    64136416/* Line 1806 of yacc.c  */
    6414 #line 1122 "parser.yy"
     6417#line 1127 "parser.yy"
    64156418    {
    64166419                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64226425
    64236426/* Line 1806 of yacc.c  */
    6424 #line 1139 "parser.yy"
     6427#line 1144 "parser.yy"
    64256428    {
    64266429                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64326435
    64336436/* Line 1806 of yacc.c  */
    6434 #line 1144 "parser.yy"
     6437#line 1149 "parser.yy"
    64356438    {
    64366439                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64426445
    64436446/* Line 1806 of yacc.c  */
    6444 #line 1166 "parser.yy"
     6447#line 1171 "parser.yy"
    64456448    { (yyval.decl) = 0; }
    64466449    break;
     
    64496452
    64506453/* Line 1806 of yacc.c  */
    6451 #line 1178 "parser.yy"
     6454#line 1183 "parser.yy"
    64526455    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    64536456    break;
    64546457
    6455   case 283:
    6456 
    6457 /* Line 1806 of yacc.c  */
    6458 #line 1184 "parser.yy"
    6459     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    6460     break;
    6461 
    64626458  case 284:
    64636459
    64646460/* Line 1806 of yacc.c  */
    6465 #line 1189 "parser.yy"
     6461#line 1194 "parser.yy"
    64666462    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    64676463    break;
     
    64706466
    64716467/* Line 1806 of yacc.c  */
    6472 #line 1191 "parser.yy"
     6468#line 1196 "parser.yy"
    64736469    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    64746470    break;
     
    64776473
    64786474/* Line 1806 of yacc.c  */
    6479 #line 1193 "parser.yy"
     6475#line 1198 "parser.yy"
    64806476    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    64816477    break;
     
    64846480
    64856481/* Line 1806 of yacc.c  */
    6486 #line 1195 "parser.yy"
     6482#line 1200 "parser.yy"
    64876483    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    64886484    break;
     
    64916487
    64926488/* Line 1806 of yacc.c  */
    6493 #line 1197 "parser.yy"
     6489#line 1202 "parser.yy"
    64946490    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    64956491    break;
     
    64986494
    64996495/* Line 1806 of yacc.c  */
    6500 #line 1199 "parser.yy"
     6496#line 1204 "parser.yy"
    65016497    {
    65026498                        typedefTable.enterScope();
     
    65076503
    65086504/* Line 1806 of yacc.c  */
    6509 #line 1203 "parser.yy"
     6505#line 1208 "parser.yy"
    65106506    {
    65116507                        typedefTable.leaveScope();
     
    65176513
    65186514/* Line 1806 of yacc.c  */
    6519 #line 1212 "parser.yy"
     6515#line 1217 "parser.yy"
    65206516    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65216517    break;
     
    65246520
    65256521/* Line 1806 of yacc.c  */
    6526 #line 1214 "parser.yy"
     6522#line 1219 "parser.yy"
    65276523    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65286524    break;
     
    65316527
    65326528/* Line 1806 of yacc.c  */
    6533 #line 1225 "parser.yy"
     6529#line 1230 "parser.yy"
    65346530    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65356531    break;
     
    65386534
    65396535/* Line 1806 of yacc.c  */
    6540 #line 1234 "parser.yy"
     6536#line 1239 "parser.yy"
    65416537    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    65426538    break;
     
    65456541
    65466542/* Line 1806 of yacc.c  */
    6547 #line 1236 "parser.yy"
     6543#line 1241 "parser.yy"
    65486544    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    65496545    break;
     
    65526548
    65536549/* Line 1806 of yacc.c  */
    6554 #line 1238 "parser.yy"
     6550#line 1243 "parser.yy"
    65556551    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    65566552    break;
     
    65596555
    65606556/* Line 1806 of yacc.c  */
    6561 #line 1240 "parser.yy"
     6557#line 1245 "parser.yy"
    65626558    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    65636559    break;
     
    65666562
    65676563/* Line 1806 of yacc.c  */
    6568 #line 1242 "parser.yy"
     6564#line 1247 "parser.yy"
    65696565    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    65706566    break;
     
    65736569
    65746570/* Line 1806 of yacc.c  */
    6575 #line 1244 "parser.yy"
     6571#line 1249 "parser.yy"
    65766572    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    65776573    break;
     
    65806576
    65816577/* Line 1806 of yacc.c  */
    6582 #line 1246 "parser.yy"
     6578#line 1251 "parser.yy"
    65836579    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    65846580    break;
     
    65876583
    65886584/* Line 1806 of yacc.c  */
    6589 #line 1248 "parser.yy"
     6585#line 1253 "parser.yy"
    65906586    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    65916587    break;
     
    65946590
    65956591/* Line 1806 of yacc.c  */
    6596 #line 1253 "parser.yy"
     6592#line 1258 "parser.yy"
    65976593    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    65986594    break;
     
    66016597
    66026598/* Line 1806 of yacc.c  */
    6603 #line 1255 "parser.yy"
     6599#line 1260 "parser.yy"
    66046600    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66056601    break;
     
    66086604
    66096605/* Line 1806 of yacc.c  */
    6610 #line 1257 "parser.yy"
     6606#line 1262 "parser.yy"
    66116607    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66126608    break;
     
    66156611
    66166612/* Line 1806 of yacc.c  */
    6617 #line 1259 "parser.yy"
     6613#line 1264 "parser.yy"
    66186614    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66196615    break;
     
    66226618
    66236619/* Line 1806 of yacc.c  */
    6624 #line 1261 "parser.yy"
     6620#line 1266 "parser.yy"
    66256621    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    66266622    break;
     
    66296625
    66306626/* Line 1806 of yacc.c  */
    6631 #line 1263 "parser.yy"
     6627#line 1268 "parser.yy"
    66326628    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    66336629    break;
     
    66366632
    66376633/* Line 1806 of yacc.c  */
    6638 #line 1265 "parser.yy"
     6634#line 1270 "parser.yy"
    66396635    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    66406636    break;
     
    66436639
    66446640/* Line 1806 of yacc.c  */
    6645 #line 1267 "parser.yy"
     6641#line 1272 "parser.yy"
    66466642    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    66476643    break;
     
    66506646
    66516647/* Line 1806 of yacc.c  */
    6652 #line 1269 "parser.yy"
     6648#line 1274 "parser.yy"
    66536649    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    66546650    break;
     
    66576653
    66586654/* Line 1806 of yacc.c  */
    6659 #line 1271 "parser.yy"
     6655#line 1276 "parser.yy"
    66606656    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    66616657    break;
     
    66646660
    66656661/* Line 1806 of yacc.c  */
    6666 #line 1273 "parser.yy"
     6662#line 1278 "parser.yy"
    66676663    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    66686664    break;
     
    66716667
    66726668/* Line 1806 of yacc.c  */
    6673 #line 1275 "parser.yy"
     6669#line 1280 "parser.yy"
    66746670    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    66756671    break;
     
    66786674
    66796675/* Line 1806 of yacc.c  */
    6680 #line 1282 "parser.yy"
     6676#line 1287 "parser.yy"
    66816677    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66826678    break;
     
    66856681
    66866682/* Line 1806 of yacc.c  */
    6687 #line 1284 "parser.yy"
     6683#line 1289 "parser.yy"
    66886684    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66896685    break;
     
    66926688
    66936689/* Line 1806 of yacc.c  */
    6694 #line 1286 "parser.yy"
     6690#line 1291 "parser.yy"
    66956691    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66966692    break;
     
    66996695
    67006696/* Line 1806 of yacc.c  */
    6701 #line 1288 "parser.yy"
     6697#line 1293 "parser.yy"
    67026698    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67036699    break;
     
    67066702
    67076703/* Line 1806 of yacc.c  */
    6708 #line 1294 "parser.yy"
     6704#line 1299 "parser.yy"
    67096705    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67106706    break;
     
    67136709
    67146710/* Line 1806 of yacc.c  */
    6715 #line 1301 "parser.yy"
     6711#line 1306 "parser.yy"
    67166712    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67176713    break;
     
    67206716
    67216717/* Line 1806 of yacc.c  */
    6722 #line 1303 "parser.yy"
     6718#line 1308 "parser.yy"
    67236719    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67246720    break;
     
    67276723
    67286724/* Line 1806 of yacc.c  */
    6729 #line 1305 "parser.yy"
     6725#line 1310 "parser.yy"
    67306726    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    67316727    break;
     
    67346730
    67356731/* Line 1806 of yacc.c  */
    6736 #line 1310 "parser.yy"
     6732#line 1315 "parser.yy"
    67376733    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    67386734    break;
     
    67416737
    67426738/* Line 1806 of yacc.c  */
    6743 #line 1312 "parser.yy"
     6739#line 1317 "parser.yy"
    67446740    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    67456741    break;
     
    67486744
    67496745/* Line 1806 of yacc.c  */
    6750 #line 1314 "parser.yy"
     6746#line 1319 "parser.yy"
    67516747    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    67526748    break;
     
    67556751
    67566752/* Line 1806 of yacc.c  */
    6757 #line 1316 "parser.yy"
     6753#line 1321 "parser.yy"
    67586754    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    67596755    break;
     
    67626758
    67636759/* Line 1806 of yacc.c  */
    6764 #line 1322 "parser.yy"
     6760#line 1327 "parser.yy"
    67656761    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67666762    break;
     
    67696765
    67706766/* Line 1806 of yacc.c  */
    6771 #line 1324 "parser.yy"
     6767#line 1329 "parser.yy"
    67726768    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67736769    break;
     
    67766772
    67776773/* Line 1806 of yacc.c  */
    6778 #line 1326 "parser.yy"
     6774#line 1331 "parser.yy"
    67796775    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67806776    break;
     
    67836779
    67846780/* Line 1806 of yacc.c  */
    6785 #line 1332 "parser.yy"
     6781#line 1337 "parser.yy"
    67866782    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67876783    break;
     
    67906786
    67916787/* Line 1806 of yacc.c  */
    6792 #line 1334 "parser.yy"
     6788#line 1339 "parser.yy"
    67936789    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67946790    break;
     
    67976793
    67986794/* Line 1806 of yacc.c  */
    6799 #line 1340 "parser.yy"
     6795#line 1345 "parser.yy"
    68006796    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68016797    break;
     
    68046800
    68056801/* Line 1806 of yacc.c  */
    6806 #line 1342 "parser.yy"
     6802#line 1347 "parser.yy"
    68076803    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68086804    break;
     
    68116807
    68126808/* Line 1806 of yacc.c  */
    6813 #line 1344 "parser.yy"
     6809#line 1349 "parser.yy"
    68146810    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68156811    break;
     
    68186814
    68196815/* Line 1806 of yacc.c  */
    6820 #line 1349 "parser.yy"
     6816#line 1354 "parser.yy"
    68216817    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68226818    break;
     
    68256821
    68266822/* Line 1806 of yacc.c  */
    6827 #line 1351 "parser.yy"
     6823#line 1356 "parser.yy"
    68286824    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68296825    break;
     
    68326828
    68336829/* Line 1806 of yacc.c  */
    6834 #line 1353 "parser.yy"
     6830#line 1358 "parser.yy"
    68356831    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68366832    break;
     
    68396835
    68406836/* Line 1806 of yacc.c  */
    6841 #line 1363 "parser.yy"
     6837#line 1368 "parser.yy"
    68426838    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    68436839    break;
     
    68466842
    68476843/* Line 1806 of yacc.c  */
    6848 #line 1365 "parser.yy"
     6844#line 1370 "parser.yy"
    68496845    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    68506846    break;
     
    68536849
    68546850/* Line 1806 of yacc.c  */
    6855 #line 1367 "parser.yy"
     6851#line 1372 "parser.yy"
    68566852    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    68576853    break;
     
    68606856
    68616857/* Line 1806 of yacc.c  */
    6862 #line 1369 "parser.yy"
     6858#line 1374 "parser.yy"
    68636859    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    68646860    break;
     
    68676863
    68686864/* Line 1806 of yacc.c  */
    6869 #line 1371 "parser.yy"
     6865#line 1376 "parser.yy"
    68706866    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    68716867    break;
     
    68746870
    68756871/* Line 1806 of yacc.c  */
    6876 #line 1376 "parser.yy"
     6872#line 1381 "parser.yy"
    68776873    { (yyval.aggKey) = DeclarationNode::Struct; }
    68786874    break;
     
    68816877
    68826878/* Line 1806 of yacc.c  */
    6883 #line 1378 "parser.yy"
     6879#line 1383 "parser.yy"
    68846880    { (yyval.aggKey) = DeclarationNode::Union; }
    68856881    break;
     
    68886884
    68896885/* Line 1806 of yacc.c  */
    6890 #line 1383 "parser.yy"
     6886#line 1388 "parser.yy"
    68916887    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    68926888    break;
     
    68956891
    68966892/* Line 1806 of yacc.c  */
    6897 #line 1385 "parser.yy"
     6893#line 1390 "parser.yy"
    68986894    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    68996895    break;
     
    69026898
    69036899/* Line 1806 of yacc.c  */
    6904 #line 1391 "parser.yy"
     6900#line 1396 "parser.yy"
    69056901    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69066902    break;
     
    69096905
    69106906/* Line 1806 of yacc.c  */
    6911 #line 1394 "parser.yy"
     6907#line 1399 "parser.yy"
    69126908    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69136909    break;
     
    69166912
    69176913/* Line 1806 of yacc.c  */
    6918 #line 1400 "parser.yy"
     6914#line 1405 "parser.yy"
    69196915    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69206916    break;
     
    69236919
    69246920/* Line 1806 of yacc.c  */
    6925 #line 1402 "parser.yy"
     6921#line 1407 "parser.yy"
    69266922    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    69276923    break;
     
    69306926
    69316927/* Line 1806 of yacc.c  */
    6932 #line 1404 "parser.yy"
     6928#line 1409 "parser.yy"
    69336929    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69346930    break;
     
    69376933
    69386934/* Line 1806 of yacc.c  */
    6939 #line 1409 "parser.yy"
     6935#line 1414 "parser.yy"
    69406936    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    69416937    break;
     
    69446940
    69456941/* Line 1806 of yacc.c  */
    6946 #line 1411 "parser.yy"
     6942#line 1416 "parser.yy"
    69476943    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    69486944    break;
     
    69516947
    69526948/* Line 1806 of yacc.c  */
    6953 #line 1416 "parser.yy"
     6949#line 1421 "parser.yy"
    69546950    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    69556951    break;
     
    69586954
    69596955/* Line 1806 of yacc.c  */
    6960 #line 1418 "parser.yy"
     6956#line 1423 "parser.yy"
    69616957    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    69626958    break;
     
    69656961
    69666962/* Line 1806 of yacc.c  */
    6967 #line 1421 "parser.yy"
     6963#line 1426 "parser.yy"
    69686964    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69696965    break;
     
    69726968
    69736969/* Line 1806 of yacc.c  */
    6974 #line 1424 "parser.yy"
     6970#line 1429 "parser.yy"
    69756971    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69766972    break;
     
    69796975
    69806976/* Line 1806 of yacc.c  */
    6981 #line 1430 "parser.yy"
     6977#line 1435 "parser.yy"
    69826978    { (yyval.en) = 0; }
    69836979    break;
     
    69866982
    69876983/* Line 1806 of yacc.c  */
    6988 #line 1432 "parser.yy"
     6984#line 1437 "parser.yy"
    69896985    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    69906986    break;
     
    69936989
    69946990/* Line 1806 of yacc.c  */
    6995 #line 1437 "parser.yy"
     6991#line 1442 "parser.yy"
    69966992    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    69976993    break;
     
    70006996
    70016997/* Line 1806 of yacc.c  */
    7002 #line 1446 "parser.yy"
     6998#line 1451 "parser.yy"
    70036999    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    70047000    break;
     
    70077003
    70087004/* Line 1806 of yacc.c  */
    7009 #line 1448 "parser.yy"
     7005#line 1453 "parser.yy"
    70107006    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    70117007    break;
     
    70147010
    70157011/* Line 1806 of yacc.c  */
    7016 #line 1450 "parser.yy"
     7012#line 1455 "parser.yy"
    70177013    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    70187014    break;
     
    70217017
    70227018/* Line 1806 of yacc.c  */
    7023 #line 1455 "parser.yy"
     7019#line 1460 "parser.yy"
    70247020    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70257021    break;
     
    70287024
    70297025/* Line 1806 of yacc.c  */
    7030 #line 1457 "parser.yy"
     7026#line 1462 "parser.yy"
    70317027    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    70327028    break;
     
    70357031
    70367032/* Line 1806 of yacc.c  */
    7037 #line 1462 "parser.yy"
     7033#line 1467 "parser.yy"
    70387034    { (yyval.en) = 0; }
    70397035    break;
     
    70427038
    70437039/* Line 1806 of yacc.c  */
    7044 #line 1464 "parser.yy"
     7040#line 1469 "parser.yy"
    70457041    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70467042    break;
     
    70497045
    70507046/* Line 1806 of yacc.c  */
    7051 #line 1471 "parser.yy"
     7047#line 1476 "parser.yy"
    70527048    { (yyval.decl) = 0; }
    70537049    break;
     
    70567052
    70577053/* Line 1806 of yacc.c  */
    7058 #line 1479 "parser.yy"
     7054#line 1484 "parser.yy"
    70597055    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70607056    break;
     
    70637059
    70647060/* Line 1806 of yacc.c  */
    7065 #line 1481 "parser.yy"
     7061#line 1486 "parser.yy"
    70667062    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70677063    break;
     
    70707066
    70717067/* Line 1806 of yacc.c  */
    7072 #line 1483 "parser.yy"
     7068#line 1488 "parser.yy"
    70737069    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70747070    break;
     
    70777073
    70787074/* Line 1806 of yacc.c  */
    7079 #line 1491 "parser.yy"
     7075#line 1496 "parser.yy"
    70807076    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70817077    break;
     
    70847080
    70857081/* Line 1806 of yacc.c  */
    7086 #line 1493 "parser.yy"
     7082#line 1498 "parser.yy"
    70877083    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70887084    break;
     
    70917087
    70927088/* Line 1806 of yacc.c  */
    7093 #line 1495 "parser.yy"
     7089#line 1500 "parser.yy"
    70947090    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    70957091    break;
     
    70987094
    70997095/* Line 1806 of yacc.c  */
    7100 #line 1501 "parser.yy"
     7096#line 1506 "parser.yy"
    71017097    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71027098    break;
     
    71057101
    71067102/* Line 1806 of yacc.c  */
    7107 #line 1506 "parser.yy"
     7103#line 1511 "parser.yy"
    71087104    { (yyval.decl) = 0; }
    71097105    break;
     
    71127108
    71137109/* Line 1806 of yacc.c  */
    7114 #line 1513 "parser.yy"
     7110#line 1518 "parser.yy"
    71157111    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71167112    break;
     
    71197115
    71207116/* Line 1806 of yacc.c  */
    7121 #line 1520 "parser.yy"
     7117#line 1525 "parser.yy"
    71227118    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71237119    break;
     
    71267122
    71277123/* Line 1806 of yacc.c  */
    7128 #line 1522 "parser.yy"
     7124#line 1527 "parser.yy"
    71297125    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71307126    break;
     
    71337129
    71347130/* Line 1806 of yacc.c  */
    7135 #line 1531 "parser.yy"
     7131#line 1536 "parser.yy"
    71367132    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71377133    break;
     
    71407136
    71417137/* Line 1806 of yacc.c  */
    7142 #line 1534 "parser.yy"
     7138#line 1539 "parser.yy"
    71437139    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71447140    break;
     
    71477143
    71487144/* Line 1806 of yacc.c  */
    7149 #line 1536 "parser.yy"
     7145#line 1541 "parser.yy"
    71507146    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    71517147    break;
     
    71547150
    71557151/* Line 1806 of yacc.c  */
    7156 #line 1546 "parser.yy"
     7152#line 1551 "parser.yy"
    71577153    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71587154    break;
    71597155
    71607156  case 414:
    7161 
    7162 /* Line 1806 of yacc.c  */
    7163 #line 1552 "parser.yy"
    7164     {
    7165                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7166                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    7167                 }
    7168     break;
    7169 
    7170   case 415:
    71717157
    71727158/* Line 1806 of yacc.c  */
     
    71787164    break;
    71797165
     7166  case 415:
     7167
     7168/* Line 1806 of yacc.c  */
     7169#line 1562 "parser.yy"
     7170    {
     7171                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7172                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7173                }
     7174    break;
     7175
    71807176  case 417:
    71817177
    71827178/* Line 1806 of yacc.c  */
    7183 #line 1566 "parser.yy"
     7179#line 1571 "parser.yy"
    71847180    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71857181    break;
     
    71887184
    71897185/* Line 1806 of yacc.c  */
    7190 #line 1575 "parser.yy"
     7186#line 1580 "parser.yy"
    71917187    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    71927188    break;
     
    71957191
    71967192/* Line 1806 of yacc.c  */
    7197 #line 1577 "parser.yy"
     7193#line 1582 "parser.yy"
    71987194    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    71997195    break;
     
    72027198
    72037199/* Line 1806 of yacc.c  */
    7204 #line 1602 "parser.yy"
     7200#line 1607 "parser.yy"
    72057201    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72067202    break;
     
    72097205
    72107206/* Line 1806 of yacc.c  */
    7211 #line 1610 "parser.yy"
     7207#line 1615 "parser.yy"
    72127208    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72137209    break;
     
    72167212
    72177213/* Line 1806 of yacc.c  */
    7218 #line 1615 "parser.yy"
     7214#line 1620 "parser.yy"
    72197215    { (yyval.in) = 0; }
    72207216    break;
     
    72237219
    72247220/* Line 1806 of yacc.c  */
    7225 #line 1617 "parser.yy"
     7221#line 1622 "parser.yy"
    72267222    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72277223    break;
     
    72307226
    72317227/* Line 1806 of yacc.c  */
    7232 #line 1621 "parser.yy"
     7228#line 1626 "parser.yy"
    72337229    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    72347230    break;
     
    72377233
    72387234/* Line 1806 of yacc.c  */
    7239 #line 1622 "parser.yy"
     7235#line 1627 "parser.yy"
    72407236    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    72417237    break;
     
    72447240
    72457241/* Line 1806 of yacc.c  */
    7246 #line 1627 "parser.yy"
     7242#line 1632 "parser.yy"
    72477243    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    72487244    break;
     
    72517247
    72527248/* Line 1806 of yacc.c  */
    7253 #line 1628 "parser.yy"
     7249#line 1633 "parser.yy"
    72547250    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    72557251    break;
     
    72587254
    72597255/* Line 1806 of yacc.c  */
    7260 #line 1630 "parser.yy"
     7256#line 1635 "parser.yy"
    72617257    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    72627258    break;
     
    72657261
    72667262/* Line 1806 of yacc.c  */
    7267 #line 1646 "parser.yy"
     7263#line 1651 "parser.yy"
    72687264    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    72697265    break;
     
    72727268
    72737269/* Line 1806 of yacc.c  */
    7274 #line 1652 "parser.yy"
     7270#line 1657 "parser.yy"
    72757271    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    72767272    break;
     
    72797275
    72807276/* Line 1806 of yacc.c  */
    7281 #line 1658 "parser.yy"
     7277#line 1663 "parser.yy"
    72827278    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    72837279    break;
     
    72867282
    72877283/* Line 1806 of yacc.c  */
    7288 #line 1661 "parser.yy"
     7284#line 1666 "parser.yy"
    72897285    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    72907286    break;
     
    72937289
    72947290/* Line 1806 of yacc.c  */
    7295 #line 1663 "parser.yy"
     7291#line 1668 "parser.yy"
    72967292    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    72977293    break;
     
    73007296
    73017297/* Line 1806 of yacc.c  */
    7302 #line 1665 "parser.yy"
     7298#line 1670 "parser.yy"
    73037299    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
    73047300    break;
     
    73077303
    73087304/* Line 1806 of yacc.c  */
    7309 #line 1667 "parser.yy"
     7305#line 1672 "parser.yy"
    73107306    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    73117307    break;
     
    73147310
    73157311/* Line 1806 of yacc.c  */
    7316 #line 1691 "parser.yy"
     7312#line 1696 "parser.yy"
    73177313    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73187314    break;
     
    73217317
    73227318/* Line 1806 of yacc.c  */
    7323 #line 1693 "parser.yy"
     7319#line 1698 "parser.yy"
    73247320    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73257321    break;
     
    73287324
    73297325/* Line 1806 of yacc.c  */
    7330 #line 1695 "parser.yy"
     7326#line 1700 "parser.yy"
    73317327    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73327328    break;
     
    73357331
    73367332/* Line 1806 of yacc.c  */
    7337 #line 1701 "parser.yy"
     7333#line 1706 "parser.yy"
    73387334    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73397335    break;
     
    73427338
    73437339/* Line 1806 of yacc.c  */
    7344 #line 1703 "parser.yy"
     7340#line 1708 "parser.yy"
    73457341    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73467342    break;
     
    73497345
    73507346/* Line 1806 of yacc.c  */
    7351 #line 1708 "parser.yy"
     7347#line 1713 "parser.yy"
    73527348    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    73537349    break;
     
    73567352
    73577353/* Line 1806 of yacc.c  */
    7358 #line 1714 "parser.yy"
     7354#line 1719 "parser.yy"
    73597355    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    73607356    break;
     
    73637359
    73647360/* Line 1806 of yacc.c  */
    7365 #line 1719 "parser.yy"
     7361#line 1724 "parser.yy"
    73667362    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    73677363    break;
     
    73707366
    73717367/* Line 1806 of yacc.c  */
    7372 #line 1721 "parser.yy"
     7368#line 1726 "parser.yy"
    73737369    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    73747370    break;
     
    73777373
    73787374/* Line 1806 of yacc.c  */
    7379 #line 1727 "parser.yy"
     7375#line 1732 "parser.yy"
    73807376    { (yyval.tclass) = DeclarationNode::Type; }
    73817377    break;
     
    73847380
    73857381/* Line 1806 of yacc.c  */
    7386 #line 1729 "parser.yy"
     7382#line 1734 "parser.yy"
    73877383    { (yyval.tclass) = DeclarationNode::Ftype; }
    73887384    break;
     
    73917387
    73927388/* Line 1806 of yacc.c  */
    7393 #line 1731 "parser.yy"
     7389#line 1736 "parser.yy"
    73947390    { (yyval.tclass) = DeclarationNode::Dtype; }
    73957391    break;
     
    73987394
    73997395/* Line 1806 of yacc.c  */
    7400 #line 1736 "parser.yy"
     7396#line 1741 "parser.yy"
    74017397    { (yyval.decl) = 0; }
    74027398    break;
     
    74057401
    74067402/* Line 1806 of yacc.c  */
    7407 #line 1738 "parser.yy"
     7403#line 1743 "parser.yy"
    74087404    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    74097405    break;
     
    74127408
    74137409/* Line 1806 of yacc.c  */
    7414 #line 1743 "parser.yy"
     7410#line 1748 "parser.yy"
    74157411    {
    74167412                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     
    74227418
    74237419/* Line 1806 of yacc.c  */
    7424 #line 1748 "parser.yy"
     7420#line 1753 "parser.yy"
    74257421    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    74267422    break;
     
    74297425
    74307426/* Line 1806 of yacc.c  */
    7431 #line 1750 "parser.yy"
     7427#line 1755 "parser.yy"
    74327428    { (yyval.decl) = 0; }
    74337429    break;
     
    74367432
    74377433/* Line 1806 of yacc.c  */
    7438 #line 1755 "parser.yy"
     7434#line 1760 "parser.yy"
    74397435    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    74407436    break;
     
    74437439
    74447440/* Line 1806 of yacc.c  */
    7445 #line 1758 "parser.yy"
     7441#line 1763 "parser.yy"
    74467442    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    74477443    break;
     
    74507446
    74517447/* Line 1806 of yacc.c  */
    7452 #line 1760 "parser.yy"
     7448#line 1765 "parser.yy"
    74537449    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    74547450    break;
     
    74577453
    74587454/* Line 1806 of yacc.c  */
    7459 #line 1765 "parser.yy"
     7455#line 1770 "parser.yy"
    74607456    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    74617457    break;
     
    74647460
    74657461/* Line 1806 of yacc.c  */
    7466 #line 1767 "parser.yy"
     7462#line 1772 "parser.yy"
    74677463    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    74687464    break;
     
    74717467
    74727468/* Line 1806 of yacc.c  */
    7473 #line 1769 "parser.yy"
     7469#line 1774 "parser.yy"
    74747470    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    74757471    break;
     
    74787474
    74797475/* Line 1806 of yacc.c  */
    7480 #line 1774 "parser.yy"
     7476#line 1779 "parser.yy"
    74817477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    74827478    break;
     
    74857481
    74867482/* Line 1806 of yacc.c  */
    7487 #line 1776 "parser.yy"
     7483#line 1781 "parser.yy"
    74887484    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    74897485    break;
     
    74927488
    74937489/* Line 1806 of yacc.c  */
    7494 #line 1781 "parser.yy"
     7490#line 1786 "parser.yy"
    74957491    {
    74967492                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75027498
    75037499/* Line 1806 of yacc.c  */
    7504 #line 1786 "parser.yy"
     7500#line 1791 "parser.yy"
    75057501    {
    75067502                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75127508
    75137509/* Line 1806 of yacc.c  */
    7514 #line 1794 "parser.yy"
     7510#line 1799 "parser.yy"
    75157511    {
    75167512                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    75227518
    75237519/* Line 1806 of yacc.c  */
    7524 #line 1799 "parser.yy"
     7520#line 1804 "parser.yy"
    75257521    {
    75267522                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    75327528
    75337529/* Line 1806 of yacc.c  */
    7534 #line 1804 "parser.yy"
     7530#line 1809 "parser.yy"
    75357531    {
    75367532                        typedefTable.leaveContext();
     
    75437539
    75447540/* Line 1806 of yacc.c  */
    7545 #line 1814 "parser.yy"
     7541#line 1819 "parser.yy"
    75467542    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    75477543    break;
    75487544
    75497545  case 492:
    7550 
    7551 /* Line 1806 of yacc.c  */
    7552 #line 1824 "parser.yy"
    7553     {
    7554                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7555                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
    7556                 }
    7557     break;
    7558 
    7559   case 493:
    75607546
    75617547/* Line 1806 of yacc.c  */
     
    75677553    break;
    75687554
     7555  case 493:
     7556
     7557/* Line 1806 of yacc.c  */
     7558#line 1834 "parser.yy"
     7559    {
     7560                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     7561                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
     7562                }
     7563    break;
     7564
    75697565  case 494:
    75707566
    75717567/* Line 1806 of yacc.c  */
    7572 #line 1834 "parser.yy"
     7568#line 1839 "parser.yy"
    75737569    {
    75747570                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    75807576
    75817577/* Line 1806 of yacc.c  */
    7582 #line 1842 "parser.yy"
     7578#line 1847 "parser.yy"
    75837579    {
    75847580                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75907586
    75917587/* Line 1806 of yacc.c  */
    7592 #line 1847 "parser.yy"
     7588#line 1852 "parser.yy"
    75937589    {
    75947590                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76007596
    76017597/* Line 1806 of yacc.c  */
    7602 #line 1857 "parser.yy"
     7598#line 1862 "parser.yy"
    76037599    {}
    76047600    break;
     
    76077603
    76087604/* Line 1806 of yacc.c  */
    7609 #line 1859 "parser.yy"
     7605#line 1864 "parser.yy"
    76107606    {
    76117607                        if ( theTree ) {
     
    76207616
    76217617/* Line 1806 of yacc.c  */
    7622 #line 1871 "parser.yy"
     7618#line 1876 "parser.yy"
    76237619    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    76247620    break;
     
    76277623
    76287624/* Line 1806 of yacc.c  */
    7629 #line 1876 "parser.yy"
     7625#line 1881 "parser.yy"
    76307626    { (yyval.decl) = 0; }
    76317627    break;
     
    76347630
    76357631/* Line 1806 of yacc.c  */
    7636 #line 1884 "parser.yy"
     7632#line 1889 "parser.yy"
    76377633    {}
    76387634    break;
     
    76417637
    76427638/* Line 1806 of yacc.c  */
    7643 #line 1886 "parser.yy"
     7639#line 1891 "parser.yy"
    76447640    {
    76457641                        linkageStack.push( linkage );
     
    76517647
    76527648/* Line 1806 of yacc.c  */
    7653 #line 1891 "parser.yy"
     7649#line 1896 "parser.yy"
    76547650    {
    76557651                        linkage = linkageStack.top();
     
    76627658
    76637659/* Line 1806 of yacc.c  */
    7664 #line 1897 "parser.yy"
     7660#line 1902 "parser.yy"
    76657661    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76667662    break;
     
    76697665
    76707666/* Line 1806 of yacc.c  */
    7671 #line 1907 "parser.yy"
     7667#line 1912 "parser.yy"
    76727668    {
    76737669                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76807676
    76817677/* Line 1806 of yacc.c  */
    7682 #line 1913 "parser.yy"
     7678#line 1918 "parser.yy"
    76837679    {
    76847680                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76917687
    76927688/* Line 1806 of yacc.c  */
    7693 #line 1922 "parser.yy"
     7689#line 1927 "parser.yy"
    76947690    {
    76957691                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77027698
    77037699/* Line 1806 of yacc.c  */
    7704 #line 1928 "parser.yy"
     7700#line 1933 "parser.yy"
    77057701    {
    77067702                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77137709
    77147710/* Line 1806 of yacc.c  */
    7715 #line 1934 "parser.yy"
     7711#line 1939 "parser.yy"
    77167712    {
    77177713                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77247720
    77257721/* Line 1806 of yacc.c  */
    7726 #line 1940 "parser.yy"
     7722#line 1945 "parser.yy"
    77277723    {
    77287724                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77357731
    77367732/* Line 1806 of yacc.c  */
    7737 #line 1946 "parser.yy"
     7733#line 1951 "parser.yy"
    77387734    {
    77397735                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77467742
    77477743/* Line 1806 of yacc.c  */
    7748 #line 1954 "parser.yy"
     7744#line 1959 "parser.yy"
    77497745    {
    77507746                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77577753
    77587754/* Line 1806 of yacc.c  */
    7759 #line 1960 "parser.yy"
     7755#line 1965 "parser.yy"
    77607756    {
    77617757                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77687764
    77697765/* Line 1806 of yacc.c  */
    7770 #line 1968 "parser.yy"
     7766#line 1973 "parser.yy"
    77717767    {
    77727768                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77797775
    77807776/* Line 1806 of yacc.c  */
    7781 #line 1974 "parser.yy"
     7777#line 1979 "parser.yy"
    77827778    {
    77837779                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77907786
    77917787/* Line 1806 of yacc.c  */
    7792 #line 1989 "parser.yy"
     7788#line 1994 "parser.yy"
    77937789    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    77947790    break;
    77957791
     7792  case 527:
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2004 "parser.yy"
     7796    { (yyval.decl) = 0; }
     7797    break;
     7798
     7799  case 530:
     7800
     7801/* Line 1806 of yacc.c  */
     7802#line 2011 "parser.yy"
     7803    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7804    break;
     7805
     7806  case 531:
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2017 "parser.yy"
     7810    { (yyval.decl) = 0; }
     7811    break;
     7812
    77967813  case 537:
    77977814
    77987815/* Line 1806 of yacc.c  */
    7799 #line 2023 "parser.yy"
     7816#line 2032 "parser.yy"
    78007817    {}
    78017818    break;
     
    78047821
    78057822/* Line 1806 of yacc.c  */
    7806 #line 2024 "parser.yy"
     7823#line 2033 "parser.yy"
    78077824    {}
    78087825    break;
     
    78117828
    78127829/* Line 1806 of yacc.c  */
    7813 #line 2025 "parser.yy"
     7830#line 2034 "parser.yy"
    78147831    {}
    78157832    break;
     
    78187835
    78197836/* Line 1806 of yacc.c  */
    7820 #line 2026 "parser.yy"
     7837#line 2035 "parser.yy"
    78217838    {}
    78227839    break;
    78237840
     7841  case 541:
     7842
     7843/* Line 1806 of yacc.c  */
     7844#line 2070 "parser.yy"
     7845    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7846    break;
     7847
     7848  case 543:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2073 "parser.yy"
     7852    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7853    break;
     7854
     7855  case 544:
     7856
     7857/* Line 1806 of yacc.c  */
     7858#line 2075 "parser.yy"
     7859    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7860    break;
     7861
    78247862  case 545:
    78257863
    78267864/* Line 1806 of yacc.c  */
    7827 #line 2068 "parser.yy"
     7865#line 2080 "parser.yy"
    78287866    {
    78297867                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    78357873
    78367874/* Line 1806 of yacc.c  */
    7837 #line 2073 "parser.yy"
     7875#line 2085 "parser.yy"
    78387876    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78397877    break;
     
    78427880
    78437881/* Line 1806 of yacc.c  */
    7844 #line 2078 "parser.yy"
     7882#line 2090 "parser.yy"
    78457883    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    78467884    break;
     
    78497887
    78507888/* Line 1806 of yacc.c  */
    7851 #line 2080 "parser.yy"
     7889#line 2092 "parser.yy"
    78527890    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    78537891    break;
     
    78567894
    78577895/* Line 1806 of yacc.c  */
    7858 #line 2082 "parser.yy"
     7896#line 2094 "parser.yy"
    78597897    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78607898    break;
     
    78637901
    78647902/* Line 1806 of yacc.c  */
    7865 #line 2087 "parser.yy"
     7903#line 2099 "parser.yy"
    78667904    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    78677905    break;
     
    78707908
    78717909/* Line 1806 of yacc.c  */
    7872 #line 2089 "parser.yy"
     7910#line 2101 "parser.yy"
    78737911    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78747912    break;
     
    78777915
    78787916/* Line 1806 of yacc.c  */
    7879 #line 2091 "parser.yy"
     7917#line 2103 "parser.yy"
    78807918    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78817919    break;
     
    78847922
    78857923/* Line 1806 of yacc.c  */
    7886 #line 2093 "parser.yy"
     7924#line 2105 "parser.yy"
    78877925    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78887926    break;
     
    78917929
    78927930/* Line 1806 of yacc.c  */
    7893 #line 2098 "parser.yy"
     7931#line 2110 "parser.yy"
    78947932    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    78957933    break;
     
    78987936
    78997937/* Line 1806 of yacc.c  */
    7900 #line 2100 "parser.yy"
     7938#line 2112 "parser.yy"
    79017939    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79027940    break;
    79037941
     7942  case 556:
     7943
     7944/* Line 1806 of yacc.c  */
     7945#line 2122 "parser.yy"
     7946    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7947    break;
     7948
     7949  case 558:
     7950
     7951/* Line 1806 of yacc.c  */
     7952#line 2125 "parser.yy"
     7953    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7954    break;
     7955
    79047956  case 559:
    79057957
    79067958/* Line 1806 of yacc.c  */
    7907 #line 2116 "parser.yy"
     7959#line 2130 "parser.yy"
    79087960    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    79097961    break;
     
    79127964
    79137965/* Line 1806 of yacc.c  */
    7914 #line 2118 "parser.yy"
     7966#line 2132 "parser.yy"
    79157967    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    79167968    break;
     
    79197971
    79207972/* Line 1806 of yacc.c  */
    7921 #line 2120 "parser.yy"
     7973#line 2134 "parser.yy"
    79227974    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79237975    break;
     
    79267978
    79277979/* Line 1806 of yacc.c  */
    7928 #line 2125 "parser.yy"
     7980#line 2139 "parser.yy"
    79297981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79307982    break;
     
    79337985
    79347986/* Line 1806 of yacc.c  */
    7935 #line 2127 "parser.yy"
     7987#line 2141 "parser.yy"
    79367988    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79377989    break;
     
    79407992
    79417993/* Line 1806 of yacc.c  */
    7942 #line 2129 "parser.yy"
     7994#line 2143 "parser.yy"
    79437995    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79447996    break;
     
    79477999
    79488000/* Line 1806 of yacc.c  */
    7949 #line 2134 "parser.yy"
     8001#line 2148 "parser.yy"
    79508002    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79518003    break;
     
    79548006
    79558007/* Line 1806 of yacc.c  */
    7956 #line 2136 "parser.yy"
     8008#line 2150 "parser.yy"
    79578009    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79588010    break;
     
    79618013
    79628014/* Line 1806 of yacc.c  */
    7963 #line 2138 "parser.yy"
     8015#line 2152 "parser.yy"
    79648016    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79658017    break;
     
    79688020
    79698021/* Line 1806 of yacc.c  */
    7970 #line 2153 "parser.yy"
     8022#line 2167 "parser.yy"
    79718023    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    79728024    break;
     
    79758027
    79768028/* Line 1806 of yacc.c  */
    7977 #line 2155 "parser.yy"
     8029#line 2169 "parser.yy"
    79788030    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    79798031    break;
     
    79828034
    79838035/* Line 1806 of yacc.c  */
    7984 #line 2157 "parser.yy"
     8036#line 2171 "parser.yy"
    79858037    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79868038    break;
     
    79898041
    79908042/* Line 1806 of yacc.c  */
    7991 #line 2162 "parser.yy"
     8043#line 2176 "parser.yy"
    79928044    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79938045    break;
     
    79968048
    79978049/* Line 1806 of yacc.c  */
    7998 #line 2164 "parser.yy"
     8050#line 2178 "parser.yy"
    79998051    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80008052    break;
     
    80038055
    80048056/* Line 1806 of yacc.c  */
    8005 #line 2166 "parser.yy"
     8057#line 2180 "parser.yy"
    80068058    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80078059    break;
     
    80108062
    80118063/* Line 1806 of yacc.c  */
    8012 #line 2171 "parser.yy"
     8064#line 2185 "parser.yy"
    80138065    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80148066    break;
     
    80178069
    80188070/* Line 1806 of yacc.c  */
    8019 #line 2173 "parser.yy"
     8071#line 2187 "parser.yy"
    80208072    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80218073    break;
     
    80248076
    80258077/* Line 1806 of yacc.c  */
    8026 #line 2175 "parser.yy"
     8078#line 2189 "parser.yy"
    80278079    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80288080    break;
    80298081
     8082  case 580:
     8083
     8084/* Line 1806 of yacc.c  */
     8085#line 2204 "parser.yy"
     8086    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8087    break;
     8088
     8089  case 582:
     8090
     8091/* Line 1806 of yacc.c  */
     8092#line 2207 "parser.yy"
     8093    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8094    break;
     8095
     8096  case 583:
     8097
     8098/* Line 1806 of yacc.c  */
     8099#line 2209 "parser.yy"
     8100    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8101    break;
     8102
    80308103  case 585:
    80318104
    80328105/* Line 1806 of yacc.c  */
    8033 #line 2198 "parser.yy"
     8106#line 2215 "parser.yy"
    80348107    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80358108    break;
     
    80388111
    80398112/* Line 1806 of yacc.c  */
    8040 #line 2203 "parser.yy"
     8113#line 2220 "parser.yy"
    80418114    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80428115    break;
     
    80458118
    80468119/* Line 1806 of yacc.c  */
    8047 #line 2205 "parser.yy"
     8120#line 2222 "parser.yy"
    80488121    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80498122    break;
     
    80528125
    80538126/* Line 1806 of yacc.c  */
    8054 #line 2207 "parser.yy"
     8127#line 2224 "parser.yy"
    80558128    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80568129    break;
     
    80598132
    80608133/* Line 1806 of yacc.c  */
    8061 #line 2212 "parser.yy"
     8134#line 2229 "parser.yy"
    80628135    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80638136    break;
     
    80668139
    80678140/* Line 1806 of yacc.c  */
    8068 #line 2214 "parser.yy"
     8141#line 2231 "parser.yy"
    80698142    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80708143    break;
     
    80738146
    80748147/* Line 1806 of yacc.c  */
    8075 #line 2216 "parser.yy"
     8148#line 2233 "parser.yy"
    80768149    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80778150    break;
     
    80808153
    80818154/* Line 1806 of yacc.c  */
    8082 #line 2218 "parser.yy"
     8155#line 2235 "parser.yy"
    80838156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80848157    break;
     
    80878160
    80888161/* Line 1806 of yacc.c  */
    8089 #line 2223 "parser.yy"
     8162#line 2240 "parser.yy"
    80908163    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80918164    break;
     
    80948167
    80958168/* Line 1806 of yacc.c  */
    8096 #line 2225 "parser.yy"
     8169#line 2242 "parser.yy"
    80978170    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80988171    break;
     
    81018174
    81028175/* Line 1806 of yacc.c  */
    8103 #line 2227 "parser.yy"
     8176#line 2244 "parser.yy"
    81048177    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81058178    break;
    81068179
     8180  case 596:
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2254 "parser.yy"
     8184    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8185    break;
     8186
     8187  case 598:
     8188
     8189/* Line 1806 of yacc.c  */
     8190#line 2257 "parser.yy"
     8191    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8192    break;
     8193
     8194  case 599:
     8195
     8196/* Line 1806 of yacc.c  */
     8197#line 2259 "parser.yy"
     8198    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8199    break;
     8200
    81078201  case 600:
    81088202
    81098203/* Line 1806 of yacc.c  */
    8110 #line 2244 "parser.yy"
     8204#line 2264 "parser.yy"
    81118205    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81128206    break;
     
    81158209
    81168210/* Line 1806 of yacc.c  */
    8117 #line 2246 "parser.yy"
     8211#line 2266 "parser.yy"
    81188212    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81198213    break;
    81208214
    81218215  case 602:
    8122 
    8123 /* Line 1806 of yacc.c  */
    8124 #line 2248 "parser.yy"
    8125     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8126     break;
    8127 
    8128   case 603:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2253 "parser.yy"
    8132     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8133     break;
    8134 
    8135   case 604:
    8136 
    8137 /* Line 1806 of yacc.c  */
    8138 #line 2255 "parser.yy"
    8139     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8140     break;
    8141 
    8142   case 605:
    8143 
    8144 /* Line 1806 of yacc.c  */
    8145 #line 2257 "parser.yy"
    8146     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8147     break;
    8148 
    8149   case 606:
    8150 
    8151 /* Line 1806 of yacc.c  */
    8152 #line 2259 "parser.yy"
    8153     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8154     break;
    8155 
    8156   case 607:
    8157 
    8158 /* Line 1806 of yacc.c  */
    8159 #line 2264 "parser.yy"
    8160     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8161     break;
    8162 
    8163   case 608:
    8164 
    8165 /* Line 1806 of yacc.c  */
    8166 #line 2266 "parser.yy"
    8167     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8168     break;
    8169 
    8170   case 609:
    81718216
    81728217/* Line 1806 of yacc.c  */
     
    81758220    break;
    81768221
     8222  case 603:
     8223
     8224/* Line 1806 of yacc.c  */
     8225#line 2273 "parser.yy"
     8226    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8227    break;
     8228
     8229  case 604:
     8230
     8231/* Line 1806 of yacc.c  */
     8232#line 2275 "parser.yy"
     8233    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8234    break;
     8235
     8236  case 605:
     8237
     8238/* Line 1806 of yacc.c  */
     8239#line 2277 "parser.yy"
     8240    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8241    break;
     8242
     8243  case 606:
     8244
     8245/* Line 1806 of yacc.c  */
     8246#line 2279 "parser.yy"
     8247    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8248    break;
     8249
     8250  case 607:
     8251
     8252/* Line 1806 of yacc.c  */
     8253#line 2284 "parser.yy"
     8254    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8255    break;
     8256
     8257  case 608:
     8258
     8259/* Line 1806 of yacc.c  */
     8260#line 2286 "parser.yy"
     8261    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8262    break;
     8263
     8264  case 609:
     8265
     8266/* Line 1806 of yacc.c  */
     8267#line 2288 "parser.yy"
     8268    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8269    break;
     8270
     8271  case 610:
     8272
     8273/* Line 1806 of yacc.c  */
     8274#line 2319 "parser.yy"
     8275    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8276    break;
     8277
     8278  case 612:
     8279
     8280/* Line 1806 of yacc.c  */
     8281#line 2322 "parser.yy"
     8282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8283    break;
     8284
     8285  case 613:
     8286
     8287/* Line 1806 of yacc.c  */
     8288#line 2324 "parser.yy"
     8289    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8290    break;
     8291
    81778292  case 614:
    81788293
    81798294/* Line 1806 of yacc.c  */
    8180 #line 2306 "parser.yy"
     8295#line 2329 "parser.yy"
    81818296    {
    81828297                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    81888303
    81898304/* Line 1806 of yacc.c  */
    8190 #line 2311 "parser.yy"
     8305#line 2334 "parser.yy"
    81918306    {
    81928307                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    81988313
    81998314/* Line 1806 of yacc.c  */
    8200 #line 2319 "parser.yy"
     8315#line 2342 "parser.yy"
    82018316    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82028317    break;
     
    82058320
    82068321/* Line 1806 of yacc.c  */
    8207 #line 2321 "parser.yy"
     8322#line 2344 "parser.yy"
    82088323    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82098324    break;
     
    82128327
    82138328/* Line 1806 of yacc.c  */
    8214 #line 2323 "parser.yy"
     8329#line 2346 "parser.yy"
    82158330    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82168331    break;
     
    82198334
    82208335/* Line 1806 of yacc.c  */
    8221 #line 2328 "parser.yy"
     8336#line 2351 "parser.yy"
    82228337    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82238338    break;
     
    82268341
    82278342/* Line 1806 of yacc.c  */
    8228 #line 2330 "parser.yy"
     8343#line 2353 "parser.yy"
    82298344    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82308345    break;
     
    82338348
    82348349/* Line 1806 of yacc.c  */
    8235 #line 2335 "parser.yy"
     8350#line 2358 "parser.yy"
    82368351    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82378352    break;
     
    82408355
    82418356/* Line 1806 of yacc.c  */
    8242 #line 2337 "parser.yy"
     8357#line 2360 "parser.yy"
    82438358    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82448359    break;
    82458360
     8361  case 624:
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2375 "parser.yy"
     8365    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8366    break;
     8367
     8368  case 625:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2377 "parser.yy"
     8372    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8373    break;
     8374
    82468375  case 626:
    82478376
    82488377/* Line 1806 of yacc.c  */
    8249 #line 2357 "parser.yy"
     8378#line 2382 "parser.yy"
    82508379    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    82518380    break;
     
    82548383
    82558384/* Line 1806 of yacc.c  */
    8256 #line 2359 "parser.yy"
     8385#line 2384 "parser.yy"
    82578386    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    82588387    break;
     
    82618390
    82628391/* Line 1806 of yacc.c  */
    8263 #line 2361 "parser.yy"
     8392#line 2386 "parser.yy"
    82648393    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82658394    break;
     
    82688397
    82698398/* Line 1806 of yacc.c  */
    8270 #line 2363 "parser.yy"
     8399#line 2388 "parser.yy"
    82718400    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82728401    break;
     
    82758404
    82768405/* Line 1806 of yacc.c  */
    8277 #line 2365 "parser.yy"
     8406#line 2390 "parser.yy"
    82788407    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82798408    break;
     
    82828411
    82838412/* Line 1806 of yacc.c  */
    8284 #line 2371 "parser.yy"
     8413#line 2396 "parser.yy"
    82858414    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82868415    break;
     
    82898418
    82908419/* Line 1806 of yacc.c  */
    8291 #line 2373 "parser.yy"
     8420#line 2398 "parser.yy"
    82928421    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82938422    break;
     
    82968425
    82978426/* Line 1806 of yacc.c  */
    8298 #line 2375 "parser.yy"
     8427#line 2400 "parser.yy"
    82998428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83008429    break;
     
    83038432
    83048433/* Line 1806 of yacc.c  */
    8305 #line 2380 "parser.yy"
     8434#line 2405 "parser.yy"
    83068435    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    83078436    break;
     
    83108439
    83118440/* Line 1806 of yacc.c  */
    8312 #line 2382 "parser.yy"
     8441#line 2407 "parser.yy"
    83138442    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83148443    break;
     
    83178446
    83188447/* Line 1806 of yacc.c  */
    8319 #line 2384 "parser.yy"
     8448#line 2409 "parser.yy"
    83208449    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83218450    break;
     
    83248453
    83258454/* Line 1806 of yacc.c  */
    8326 #line 2390 "parser.yy"
     8455#line 2415 "parser.yy"
    83278456    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    83288457    break;
     
    83318460
    83328461/* Line 1806 of yacc.c  */
    8333 #line 2392 "parser.yy"
     8462#line 2417 "parser.yy"
    83348463    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    83358464    break;
     
    83388467
    83398468/* Line 1806 of yacc.c  */
    8340 #line 2398 "parser.yy"
     8469#line 2423 "parser.yy"
    83418470    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    83428471    break;
     
    83458474
    83468475/* Line 1806 of yacc.c  */
    8347 #line 2400 "parser.yy"
     8476#line 2425 "parser.yy"
    83488477    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    83498478    break;
     
    83528481
    83538482/* Line 1806 of yacc.c  */
    8354 #line 2402 "parser.yy"
     8483#line 2427 "parser.yy"
    83558484    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    83568485    break;
     
    83598488
    83608489/* Line 1806 of yacc.c  */
    8361 #line 2404 "parser.yy"
     8490#line 2429 "parser.yy"
    83628491    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    83638492    break;
    83648493
     8494  case 646:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2444 "parser.yy"
     8498    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8499    break;
     8500
     8501  case 647:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2446 "parser.yy"
     8505    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8506    break;
     8507
    83658508  case 648:
    83668509
    83678510/* Line 1806 of yacc.c  */
    8368 #line 2424 "parser.yy"
     8511#line 2451 "parser.yy"
    83698512    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    83708513    break;
     
    83738516
    83748517/* Line 1806 of yacc.c  */
    8375 #line 2426 "parser.yy"
     8518#line 2453 "parser.yy"
    83768519    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    83778520    break;
     
    83808523
    83818524/* Line 1806 of yacc.c  */
    8382 #line 2428 "parser.yy"
     8525#line 2455 "parser.yy"
    83838526    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83848527    break;
     
    83878530
    83888531/* Line 1806 of yacc.c  */
    8389 #line 2430 "parser.yy"
     8532#line 2457 "parser.yy"
    83908533    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83918534    break;
     
    83948537
    83958538/* Line 1806 of yacc.c  */
    8396 #line 2432 "parser.yy"
     8539#line 2459 "parser.yy"
    83978540    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83988541    break;
     
    84018544
    84028545/* Line 1806 of yacc.c  */
    8403 #line 2438 "parser.yy"
     8546#line 2465 "parser.yy"
    84048547    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84058548    break;
     
    84088551
    84098552/* Line 1806 of yacc.c  */
    8410 #line 2440 "parser.yy"
     8553#line 2467 "parser.yy"
    84118554    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84128555    break;
     
    84158558
    84168559/* Line 1806 of yacc.c  */
    8417 #line 2442 "parser.yy"
     8560#line 2469 "parser.yy"
    84188561    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84198562    break;
     
    84228565
    84238566/* Line 1806 of yacc.c  */
    8424 #line 2447 "parser.yy"
     8567#line 2474 "parser.yy"
    84258568    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    84268569    break;
     
    84298572
    84308573/* Line 1806 of yacc.c  */
    8431 #line 2449 "parser.yy"
     8574#line 2476 "parser.yy"
    84328575    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84338576    break;
     
    84368579
    84378580/* Line 1806 of yacc.c  */
    8438 #line 2451 "parser.yy"
     8581#line 2478 "parser.yy"
    84398582    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84408583    break;
     
    84438586
    84448587/* Line 1806 of yacc.c  */
    8445 #line 2458 "parser.yy"
     8588#line 2485 "parser.yy"
    84468589    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84478590    break;
     
    84508593
    84518594/* Line 1806 of yacc.c  */
    8452 #line 2469 "parser.yy"
     8595#line 2496 "parser.yy"
    84538596    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    84548597    break;
     
    84578600
    84588601/* Line 1806 of yacc.c  */
    8459 #line 2472 "parser.yy"
     8602#line 2499 "parser.yy"
    84608603    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    84618604    break;
     
    84648607
    84658608/* Line 1806 of yacc.c  */
    8466 #line 2474 "parser.yy"
     8609#line 2501 "parser.yy"
    84678610    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    84688611    break;
     
    84718614
    84728615/* Line 1806 of yacc.c  */
    8473 #line 2477 "parser.yy"
     8616#line 2504 "parser.yy"
    84748617    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    84758618    break;
     
    84788621
    84798622/* Line 1806 of yacc.c  */
    8480 #line 2479 "parser.yy"
     8623#line 2506 "parser.yy"
    84818624    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    84828625    break;
     
    84858628
    84868629/* Line 1806 of yacc.c  */
    8487 #line 2481 "parser.yy"
     8630#line 2508 "parser.yy"
    84888631    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    84898632    break;
    84908633
     8634  case 670:
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2522 "parser.yy"
     8638    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8639    break;
     8640
     8641  case 671:
     8642
     8643/* Line 1806 of yacc.c  */
     8644#line 2524 "parser.yy"
     8645    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8646    break;
     8647
    84918648  case 672:
    84928649
    84938650/* Line 1806 of yacc.c  */
    8494 #line 2500 "parser.yy"
     8651#line 2529 "parser.yy"
    84958652    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84968653    break;
     
    84998656
    85008657/* Line 1806 of yacc.c  */
    8501 #line 2502 "parser.yy"
     8658#line 2531 "parser.yy"
    85028659    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85038660    break;
     
    85068663
    85078664/* Line 1806 of yacc.c  */
    8508 #line 2504 "parser.yy"
     8665#line 2533 "parser.yy"
    85098666    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85108667    break;
     
    85138670
    85148671/* Line 1806 of yacc.c  */
    8515 #line 2506 "parser.yy"
     8672#line 2535 "parser.yy"
    85168673    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85178674    break;
     
    85208677
    85218678/* Line 1806 of yacc.c  */
    8522 #line 2508 "parser.yy"
     8679#line 2537 "parser.yy"
    85238680    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85248681    break;
     
    85278684
    85288685/* Line 1806 of yacc.c  */
    8529 #line 2514 "parser.yy"
     8686#line 2543 "parser.yy"
    85308687    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85318688    break;
     
    85348691
    85358692/* Line 1806 of yacc.c  */
    8536 #line 2516 "parser.yy"
     8693#line 2545 "parser.yy"
    85378694    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85388695    break;
     
    85418698
    85428699/* Line 1806 of yacc.c  */
    8543 #line 2518 "parser.yy"
     8700#line 2547 "parser.yy"
    85448701    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85458702    break;
     
    85488705
    85498706/* Line 1806 of yacc.c  */
    8550 #line 2523 "parser.yy"
     8707#line 2552 "parser.yy"
    85518708    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85528709    break;
     
    85558712
    85568713/* Line 1806 of yacc.c  */
    8557 #line 2525 "parser.yy"
     8714#line 2554 "parser.yy"
    85588715    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85598716    break;
     
    85628719
    85638720/* Line 1806 of yacc.c  */
    8564 #line 2535 "parser.yy"
     8721#line 2564 "parser.yy"
    85658722    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    85668723    break;
     
    85698726
    85708727/* Line 1806 of yacc.c  */
    8571 #line 2545 "parser.yy"
     8728#line 2574 "parser.yy"
    85728729    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    85738730    break;
     
    85768733
    85778734/* Line 1806 of yacc.c  */
    8578 #line 2547 "parser.yy"
     8735#line 2576 "parser.yy"
    85798736    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    85808737    break;
     
    85838740
    85848741/* Line 1806 of yacc.c  */
    8585 #line 2549 "parser.yy"
     8742#line 2578 "parser.yy"
    85868743    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    85878744    break;
     
    85908747
    85918748/* Line 1806 of yacc.c  */
    8592 #line 2551 "parser.yy"
     8749#line 2580 "parser.yy"
    85938750    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    85948751    break;
     
    85978754
    85988755/* Line 1806 of yacc.c  */
    8599 #line 2553 "parser.yy"
     8756#line 2582 "parser.yy"
    86008757    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    86018758    break;
     
    86048761
    86058762/* Line 1806 of yacc.c  */
    8606 #line 2555 "parser.yy"
     8763#line 2584 "parser.yy"
    86078764    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    86088765    break;
     
    86118768
    86128769/* Line 1806 of yacc.c  */
    8613 #line 2562 "parser.yy"
     8770#line 2591 "parser.yy"
    86148771    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86158772    break;
     
    86188775
    86198776/* Line 1806 of yacc.c  */
    8620 #line 2564 "parser.yy"
     8777#line 2593 "parser.yy"
    86218778    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86228779    break;
     
    86258782
    86268783/* Line 1806 of yacc.c  */
    8627 #line 2566 "parser.yy"
     8784#line 2595 "parser.yy"
    86288785    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86298786    break;
     
    86328789
    86338790/* Line 1806 of yacc.c  */
    8634 #line 2568 "parser.yy"
     8791#line 2597 "parser.yy"
    86358792    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    86368793    break;
     
    86398796
    86408797/* Line 1806 of yacc.c  */
    8641 #line 2570 "parser.yy"
     8798#line 2599 "parser.yy"
    86428799    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86438800    break;
     
    86468803
    86478804/* Line 1806 of yacc.c  */
    8648 #line 2572 "parser.yy"
     8805#line 2601 "parser.yy"
    86498806    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86508807    break;
     
    86538810
    86548811/* Line 1806 of yacc.c  */
    8655 #line 2574 "parser.yy"
     8812#line 2603 "parser.yy"
    86568813    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86578814    break;
     
    86608817
    86618818/* Line 1806 of yacc.c  */
    8662 #line 2576 "parser.yy"
     8819#line 2605 "parser.yy"
    86638820    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86648821    break;
     
    86678824
    86688825/* Line 1806 of yacc.c  */
    8669 #line 2578 "parser.yy"
     8826#line 2607 "parser.yy"
    86708827    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    86718828    break;
     
    86748831
    86758832/* Line 1806 of yacc.c  */
    8676 #line 2580 "parser.yy"
     8833#line 2609 "parser.yy"
    86778834    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86788835    break;
     
    86818838
    86828839/* Line 1806 of yacc.c  */
    8683 #line 2585 "parser.yy"
     8840#line 2614 "parser.yy"
    86848841    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86858842    break;
     
    86888845
    86898846/* Line 1806 of yacc.c  */
    8690 #line 2587 "parser.yy"
     8847#line 2616 "parser.yy"
    86918848    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    86928849    break;
     
    86958852
    86968853/* Line 1806 of yacc.c  */
    8697 #line 2592 "parser.yy"
     8854#line 2621 "parser.yy"
    86988855    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    86998856    break;
     
    87028859
    87038860/* Line 1806 of yacc.c  */
    8704 #line 2594 "parser.yy"
     8861#line 2623 "parser.yy"
    87058862    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    87068863    break;
     
    87098866
    87108867/* Line 1806 of yacc.c  */
    8711 #line 2621 "parser.yy"
     8868#line 2650 "parser.yy"
    87128869    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87138870    break;
     
    87168873
    87178874/* Line 1806 of yacc.c  */
    8718 #line 2632 "parser.yy"
     8875#line 2661 "parser.yy"
    87198876    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87208877    break;
     
    87238880
    87248881/* Line 1806 of yacc.c  */
    8725 #line 2634 "parser.yy"
     8882#line 2663 "parser.yy"
    87268883    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87278884    break;
     
    87308887
    87318888/* Line 1806 of yacc.c  */
    8732 #line 2636 "parser.yy"
     8889#line 2665 "parser.yy"
    87338890    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87348891    break;
     
    87378894
    87388895/* Line 1806 of yacc.c  */
    8739 #line 2638 "parser.yy"
     8896#line 2667 "parser.yy"
    87408897    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87418898    break;
     
    87448901
    87458902/* Line 1806 of yacc.c  */
    8746 #line 2640 "parser.yy"
     8903#line 2669 "parser.yy"
    87478904    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87488905    break;
     
    87518908
    87528909/* Line 1806 of yacc.c  */
    8753 #line 2642 "parser.yy"
     8910#line 2671 "parser.yy"
    87548911    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87558912    break;
     
    87588915
    87598916/* Line 1806 of yacc.c  */
    8760 #line 2649 "parser.yy"
     8917#line 2678 "parser.yy"
    87618918    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87628919    break;
     
    87658922
    87668923/* Line 1806 of yacc.c  */
    8767 #line 2651 "parser.yy"
     8924#line 2680 "parser.yy"
    87688925    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87698926    break;
     
    87728929
    87738930/* Line 1806 of yacc.c  */
    8774 #line 2653 "parser.yy"
     8931#line 2682 "parser.yy"
    87758932    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    87768933    break;
     
    87798936
    87808937/* Line 1806 of yacc.c  */
    8781 #line 2655 "parser.yy"
     8938#line 2684 "parser.yy"
    87828939    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87838940    break;
     
    87868943
    87878944/* Line 1806 of yacc.c  */
    8788 #line 2657 "parser.yy"
     8945#line 2686 "parser.yy"
    87898946    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87908947    break;
     
    87938950
    87948951/* Line 1806 of yacc.c  */
    8795 #line 2659 "parser.yy"
     8952#line 2688 "parser.yy"
    87968953    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    87978954    break;
     
    88008957
    88018958/* Line 1806 of yacc.c  */
    8802 #line 2664 "parser.yy"
     8959#line 2693 "parser.yy"
    88038960    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    88048961    break;
     
    88078964
    88088965/* Line 1806 of yacc.c  */
    8809 #line 2669 "parser.yy"
     8966#line 2698 "parser.yy"
    88108967    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    88118968    break;
     
    88148971
    88158972/* Line 1806 of yacc.c  */
    8816 #line 2671 "parser.yy"
     8973#line 2700 "parser.yy"
    88178974    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    88188975    break;
     
    88218978
    88228979/* Line 1806 of yacc.c  */
    8823 #line 2673 "parser.yy"
     8980#line 2702 "parser.yy"
    88248981    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    88258982    break;
     
    88288985
    88298986/* Line 1806 of yacc.c  */
    8830 #line 2697 "parser.yy"
     8987#line 2726 "parser.yy"
    88318988    { (yyval.en) = 0; }
    88328989    break;
     
    88358992
    88368993/* Line 1806 of yacc.c  */
    8837 #line 2699 "parser.yy"
     8994#line 2728 "parser.yy"
    88388995    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    88398996    break;
     
    88428999
    88439000/* Line 1806 of yacc.c  */
    8844 #line 8845 "Parser/parser.cc"
     9001#line 9002 "Parser/parser.cc"
    88459002      default: break;
    88469003    }
     
    90739230
    90749231/* Line 2067 of yacc.c  */
    9075 #line 2702 "parser.yy"
     9232#line 2731 "parser.yy"
    90769233
    90779234// ----end of grammar----
  • src/Parser/parser.h

    r2794fff r893256d  
    246246
    247247/* Line 2068 of yacc.c  */
    248 #line 107 "parser.yy"
     248#line 108 "parser.yy"
    249249
    250250        Token tok;
  • src/Parser/parser.yy

    r2794fff r893256d  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul  3 13:53:45 2015
    13 // Update Count     : 1220
     12// Last Modified On : Thu Jul 16 16:25:12 2015
     13// Update Count     : 1267
    1414//
    1515
     
    5454#include "lex.h"
    5555#include "ParseNode.h"
     56#include "TypeData.h"
    5657#include "LinkageSpec.h"
    5758
     
    227228%type<decl> variable_abstract_array variable_abstract_declarator variable_abstract_function
    228229%type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr
     230
     231%type<decl> attribute_list_opt attribute_list attribute
    229232
    230233// initializers
     
    620623labeled_statement:
    621624        no_attr_identifier ':' attribute_list_opt statement
    622                 { $$ = $4->add_label( $1 );}
     625                {
     626                        $$ = $4->add_label( $1 );
     627                }
    623628        ;
    624629
     
    11821187        type_qualifier_name
    11831188        | attribute
    1184                 { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     1189        //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    11851190        ;
    11861191
     
    19972002attribute_list_opt:                                                                             // GCC
    19982003        // empty
     2004                { $$ = 0; }
    19992005        | attribute_list
    20002006        ;
     
    20032009        attribute
    20042010        | attribute_list attribute
     2011                { $$ = $2->addQualifiers( $1 ); }
    20052012        ;
    20062013
    20072014attribute:                                                                                              // GCC
    20082015        ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
     2016        //              { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     2017                { $$ = 0; }
    20092018        ;
    20102019
     
    20592068variable_declarator:
    20602069        paren_identifier attribute_list_opt
     2070                { $$ = $1->addQualifiers( $2 ); }
    20612071        | variable_ptr
    20622072        | variable_array attribute_list_opt
     2073                { $$ = $1->addQualifiers( $2 ); }
    20632074        | variable_function attribute_list_opt
     2075                { $$ = $1->addQualifiers( $2 ); }
    20642076        ;
    20652077
     
    21082120function_declarator:
    21092121        function_no_ptr attribute_list_opt
     2122                { $$ = $1->addQualifiers( $2 ); }
    21102123        | function_ptr
    21112124        | function_array attribute_list_opt
     2125                { $$ = $1->addQualifiers( $2 ); }
    21122126        ;
    21132127
     
    21882202type_redeclarator:
    21892203        paren_type attribute_list_opt
     2204                { $$ = $1->addQualifiers( $2 ); }
    21902205        | type_ptr
    21912206        | type_array attribute_list_opt
     2207                { $$ = $1->addQualifiers( $2 ); }
    21922208        | type_function attribute_list_opt
     2209                { $$ = $1->addQualifiers( $2 ); }
    21932210        ;
    21942211
     
    22352252identifier_parameter_declarator:
    22362253        paren_identifier attribute_list_opt
     2254                { $$ = $1->addQualifiers( $2 ); }
    22372255        | identifier_parameter_ptr
    22382256        | identifier_parameter_array attribute_list_opt
     2257                { $$ = $1->addQualifiers( $2 ); }
    22392258        | identifier_parameter_function attribute_list_opt
     2259                { $$ = $1->addQualifiers( $2 ); }
    22402260        ;
    22412261
     
    22972317type_parameter_redeclarator:
    22982318        typedef attribute_list_opt
     2319                { $$ = $1->addQualifiers( $2 ); }
    22992320        | type_parameter_ptr
    23002321        | type_parameter_array attribute_list_opt
     2322                { $$ = $1->addQualifiers( $2 ); }
    23012323        | type_parameter_function attribute_list_opt
     2324                { $$ = $1->addQualifiers( $2 ); }
    23022325        ;
    23032326
     
    23502373        abstract_ptr
    23512374        | abstract_array attribute_list_opt
     2375                { $$ = $1->addQualifiers( $2 ); }
    23522376        | abstract_function attribute_list_opt
     2377                { $$ = $1->addQualifiers( $2 ); }
    23532378        ;
    23542379
     
    24172442        abstract_parameter_ptr
    24182443        | abstract_parameter_array attribute_list_opt
     2444                { $$ = $1->addQualifiers( $2 ); }
    24192445        | abstract_parameter_function attribute_list_opt
     2446                { $$ = $1->addQualifiers( $2 ); }
    24202447        ;
    24212448
     
    24932520        variable_abstract_ptr
    24942521        | variable_abstract_array attribute_list_opt
     2522                { $$ = $1->addQualifiers( $2 ); }
    24952523        | variable_abstract_function attribute_list_opt
     2524                { $$ = $1->addQualifiers( $2 ); }
    24962525        ;
    24972526
  • src/ResolvExpr/Resolver.h

    r2794fff r893256d  
    2121
    2222namespace ResolvExpr {
     23        /// Checks types and binds syntactic constructs to typed representations
    2324        void resolve( std::list< Declaration * > translationUnit );
    2425        Expression *resolveInVoidContext( Expression *expr, const SymTab::Indexer &indexer );
  • src/SymTab/FixFunction.h

    r2794fff r893256d  
    2020
    2121namespace SymTab {
     22        /// Replaces function and array types by equivalent pointer types.
    2223        class FixFunction : public Mutator {
    2324                typedef Mutator Parent;
  • src/SymTab/TypeEquality.cc

    r2794fff r893256d  
    1010// Created On       : Tue Jul 07 16:28:29 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jul 09 11:18:46 2015
    13 // Update Count     : 36
     12// Last Modified On : Mon Jul 20 14:16:11 2015
     13// Update Count     : 37
    1414//
    1515
     
    9191                        // and must both have a dimension expression or not have a dimension
    9292                        result = result && arrayType->get_isVarLen() == at->get_isVarLen()
    93                                 && (arrayType->get_dimension() != 0 && at->get_dimension() != 0
    94                                         || arrayType->get_dimension() == 0 && at->get_dimension() == 0);
     93                                && ((arrayType->get_dimension() != 0 && at->get_dimension() != 0)
     94                                        || (arrayType->get_dimension() == 0 && at->get_dimension() == 0));
    9595
    9696                        if ( vlaErr ) {
  • src/SymTab/Validate.cc

    r2794fff r893256d  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:27:54 2015
    13 // Update Count     : 186
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 16 16:10:02 2015
     13// Update Count     : 189
    1414//
    1515
     
    6060        class HoistStruct : public Visitor {
    6161          public:
     62                /// Flattens nested struct types
    6263                static void hoistStruct( std::list< Declaration * > &translationUnit );
    6364