Added a new attribute for the entry method. The entry method with such attribute...
authorChao Mei <chaomei2@illinois.edu>
Fri, 18 Sep 2009 22:42:42 +0000 (22:42 +0000)
committerChao Mei <chaomei2@illinois.edu>
Fri, 18 Sep 2009 22:42:42 +0000 (22:42 +0000)
src/xlat-i/xi-grammar.tab.C
src/xlat-i/xi-grammar.tab.h
src/xlat-i/xi-grammar.y
src/xlat-i/xi-scan.C
src/xlat-i/xi-scan.l
src/xlat-i/xi-symbol.C
src/xlat-i/xi-symbol.h

index dc731ab0f1297ba50cfb5a778de92a573bced3a2..01e9eff5fef09f1bfdd453a8d4daf3a7bd5da3ec 100644 (file)
      ACCEL = 323,
      READWRITE = 324,
      WRITEONLY = 325,
-     ACCELBLOCK = 326
+     ACCELBLOCK = 326,
+     MEMCRITICAL = 327
    };
 #endif
 /* Tokens.  */
 #define READWRITE 324
 #define WRITEONLY 325
 #define ACCELBLOCK 326
+#define MEMCRITICAL 327
 
 
 
@@ -288,7 +290,7 @@ typedef union YYSTYPE
   AccelBlock* accelBlock;
 }
 /* Line 187 of yacc.c.  */
-#line 292 "y.tab.c"
+#line 294 "y.tab.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -301,7 +303,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 305 "y.tab.c"
+#line 307 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -516,20 +518,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  9
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   701
+#define YYLAST   705
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  88
+#define YYNTOKENS  89
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  110
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  277
+#define YYNRULES  278
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  574
+#define YYNSTATES  575
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   326
+#define YYMAXUTOK   327
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -540,16 +542,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    82,     2,
-      80,    81,    79,     2,    76,    86,    87,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    73,    72,
-      77,    85,    78,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    83,     2,
+      81,    82,    80,     2,    77,    87,    88,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    74,    73,
+      78,    86,    79,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    83,     2,    84,     2,     2,     2,     2,     2,     2,
+       2,    84,     2,    85,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    74,     2,    75,     2,     2,     2,     2,
+       2,     2,     2,    75,     2,    76,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -569,7 +571,7 @@ static const yytype_uint8 yytranslate[] =
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71
+      65,    66,    67,    68,    69,    70,    71,    72
 };
 
 #if YYDEBUG
@@ -596,150 +598,151 @@ static const yytype_uint16 yyprhs[] =
      508,   512,   519,   529,   531,   535,   537,   540,   542,   550,
      556,   569,   575,   578,   580,   582,   583,   587,   589,   593,
      595,   597,   599,   601,   603,   605,   607,   609,   611,   613,
-     615,   617,   620,   622,   624,   626,   627,   629,   633,   634,
-     636,   642,   648,   654,   659,   663,   665,   667,   669,   673,
-     678,   682,   684,   686,   688,   690,   695,   699,   704,   709,
-     714,   718,   726,   732,   739,   741,   745,   747,   751,   755,
-     758,   762,   765,   766,   770,   771,   773,   777,   779,   782,
-     784,   787,   788,   793,   795,   799,   801,   802,   809,   818,
-     823,   827,   833,   838,   850,   860,   873,   888,   895,   904,
-     910,   918,   922,   926,   927,   930,   935,   937,   941,   943,
-     945,   948,   954,   956,   960,   962,   964,   967
+     615,   617,   620,   622,   624,   626,   628,   629,   631,   635,
+     636,   638,   644,   650,   656,   661,   665,   667,   669,   671,
+     675,   680,   684,   686,   688,   690,   692,   697,   701,   706,
+     711,   716,   720,   728,   734,   741,   743,   747,   749,   753,
+     757,   760,   764,   767,   768,   772,   773,   775,   779,   781,
+     784,   786,   789,   790,   795,   797,   801,   803,   804,   811,
+     820,   825,   829,   835,   840,   852,   862,   875,   890,   897,
+     906,   912,   920,   924,   928,   929,   932,   937,   939,   943,
+     945,   947,   950,   956,   958,   962,   964,   966,   969
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-      89,     0,    -1,    90,    -1,    -1,    95,    90,    -1,    -1,
-       5,    -1,    -1,    72,    -1,    55,    -1,    55,    -1,    94,
-      73,    73,    55,    -1,     3,    93,    96,    -1,     4,    93,
-      96,    -1,    72,    -1,    74,    97,    75,    92,    -1,    -1,
-      98,    97,    -1,    91,    74,    97,    75,    92,    -1,    53,
-      93,    74,    97,    75,    -1,    54,    53,    94,    72,    -1,
-      54,    94,    72,    -1,    91,    95,    -1,    91,   153,    -1,
-      91,   132,    72,    -1,    91,   135,    -1,    91,   136,    -1,
-      91,   137,    -1,    91,   139,    -1,    91,   150,    -1,   196,
-      -1,   197,    -1,   160,    -1,   111,    -1,    56,    -1,    57,
-      -1,    99,    -1,    99,    76,   100,    -1,    -1,   100,    -1,
-      -1,    77,   101,    78,    -1,    61,    -1,    62,    -1,    63,
+      90,     0,    -1,    91,    -1,    -1,    96,    91,    -1,    -1,
+       5,    -1,    -1,    73,    -1,    55,    -1,    55,    -1,    95,
+      74,    74,    55,    -1,     3,    94,    97,    -1,     4,    94,
+      97,    -1,    73,    -1,    75,    98,    76,    93,    -1,    -1,
+      99,    98,    -1,    92,    75,    98,    76,    93,    -1,    53,
+      94,    75,    98,    76,    -1,    54,    53,    95,    73,    -1,
+      54,    95,    73,    -1,    92,    96,    -1,    92,   154,    -1,
+      92,   133,    73,    -1,    92,   136,    -1,    92,   137,    -1,
+      92,   138,    -1,    92,   140,    -1,    92,   151,    -1,   197,
+      -1,   198,    -1,   161,    -1,   112,    -1,    56,    -1,    57,
+      -1,   100,    -1,   100,    77,   101,    -1,    -1,   101,    -1,
+      -1,    78,   102,    79,    -1,    61,    -1,    62,    -1,    63,
       -1,    64,    -1,    67,    61,    -1,    67,    62,    -1,    67,
       62,    61,    -1,    67,    62,    62,    -1,    67,    63,    -1,
       67,    64,    -1,    62,    62,    -1,    65,    -1,    66,    -1,
-      62,    66,    -1,    35,    -1,    93,   102,    -1,    94,   102,
-      -1,   103,    -1,   105,    -1,   106,    79,    -1,   107,    79,
-      -1,   108,    79,    -1,   110,    80,    79,    93,    81,    80,
-     176,    81,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
-      -1,    36,   110,    -1,   110,    36,    -1,   110,    82,    -1,
-     110,    -1,    56,    -1,    94,    -1,    83,   112,    84,    -1,
-      -1,   113,   114,    -1,     6,   111,    94,   114,    -1,     6,
-      16,   106,    79,    93,    -1,    -1,    35,    -1,    -1,    83,
-     119,    84,    -1,   120,    -1,   120,    76,   119,    -1,    37,
-      -1,    38,    -1,    -1,    83,   122,    84,    -1,   127,    -1,
-     127,    76,   122,    -1,    -1,    57,    -1,    51,    -1,    -1,
-      83,   126,    84,    -1,   124,    -1,   124,    76,   126,    -1,
-      30,    -1,    51,    -1,    -1,    17,    -1,    -1,    83,    84,
-      -1,   128,   111,    93,   129,    72,    -1,   130,    -1,   130,
-     131,    -1,    16,   118,   104,    -1,    16,   118,   104,    74,
-     131,    75,    -1,    -1,    73,   134,    -1,   105,    -1,   105,
-      76,   134,    -1,    11,   121,   104,   133,   151,    -1,    12,
-     121,   104,   133,   151,    -1,    13,   121,   104,   133,   151,
-      -1,    14,   121,   104,   133,   151,    -1,    83,    56,    93,
-      84,    -1,    83,    93,    84,    -1,    15,   125,   138,   104,
-     133,   151,    -1,    15,   138,   125,   104,   133,   151,    -1,
-      11,   121,    93,   133,   151,    -1,    12,   121,    93,   133,
-     151,    -1,    13,   121,    93,   133,   151,    -1,    14,   121,
-      93,   133,   151,    -1,    15,   138,    93,   133,   151,    -1,
-      16,   118,    93,    72,    -1,    16,   118,    93,    74,   131,
-      75,    72,    -1,    -1,    85,   111,    -1,    -1,    85,    56,
-      -1,    85,    57,    -1,    18,    93,   145,    -1,   109,   146,
-      -1,   111,    93,   146,    -1,   147,    -1,   147,    76,   148,
-      -1,    22,    77,   148,    78,    -1,   149,   140,    -1,   149,
-     141,    -1,   149,   142,    -1,   149,   143,    -1,   149,   144,
-      -1,    72,    -1,    74,   152,    75,    92,    -1,    -1,   158,
-     152,    -1,   115,    72,    -1,   116,    72,    -1,   155,    72,
-      -1,   154,    72,    -1,    10,   156,    72,    -1,    19,   157,
-      72,    -1,    18,    93,    72,    -1,     8,   117,    94,    -1,
-       8,   117,    94,    80,   117,    81,    -1,     7,   117,    94,
-      -1,     7,   117,    94,    80,   117,    81,    -1,     9,   117,
-      94,    -1,     9,   117,    94,    80,   117,    81,    -1,     9,
-      83,    68,    84,   117,    94,    80,   117,    81,    -1,   105,
-      -1,   105,    76,   156,    -1,    57,    -1,   159,    72,    -1,
-     153,    -1,    39,   162,   161,    93,   178,   180,   181,    -1,
-      39,   162,    93,   178,   181,    -1,    39,    83,    68,    84,
-      35,    93,   178,   179,   169,   167,   170,    93,    -1,    71,
-     169,   167,   170,    72,    -1,    71,    72,    -1,    35,    -1,
-     107,    -1,    -1,    83,   163,    84,    -1,   164,    -1,   164,
-      76,   163,    -1,    21,    -1,    23,    -1,    24,    -1,    25,
+      62,    66,    -1,    35,    -1,    94,   103,    -1,    95,   103,
+      -1,   104,    -1,   106,    -1,   107,    80,    -1,   108,    80,
+      -1,   109,    80,    -1,   111,    81,    80,    94,    82,    81,
+     177,    82,    -1,   107,    -1,   108,    -1,   109,    -1,   110,
+      -1,    36,   111,    -1,   111,    36,    -1,   111,    83,    -1,
+     111,    -1,    56,    -1,    95,    -1,    84,   113,    85,    -1,
+      -1,   114,   115,    -1,     6,   112,    95,   115,    -1,     6,
+      16,   107,    80,    94,    -1,    -1,    35,    -1,    -1,    84,
+     120,    85,    -1,   121,    -1,   121,    77,   120,    -1,    37,
+      -1,    38,    -1,    -1,    84,   123,    85,    -1,   128,    -1,
+     128,    77,   123,    -1,    -1,    57,    -1,    51,    -1,    -1,
+      84,   127,    85,    -1,   125,    -1,   125,    77,   127,    -1,
+      30,    -1,    51,    -1,    -1,    17,    -1,    -1,    84,    85,
+      -1,   129,   112,    94,   130,    73,    -1,   131,    -1,   131,
+     132,    -1,    16,   119,   105,    -1,    16,   119,   105,    75,
+     132,    76,    -1,    -1,    74,   135,    -1,   106,    -1,   106,
+      77,   135,    -1,    11,   122,   105,   134,   152,    -1,    12,
+     122,   105,   134,   152,    -1,    13,   122,   105,   134,   152,
+      -1,    14,   122,   105,   134,   152,    -1,    84,    56,    94,
+      85,    -1,    84,    94,    85,    -1,    15,   126,   139,   105,
+     134,   152,    -1,    15,   139,   126,   105,   134,   152,    -1,
+      11,   122,    94,   134,   152,    -1,    12,   122,    94,   134,
+     152,    -1,    13,   122,    94,   134,   152,    -1,    14,   122,
+      94,   134,   152,    -1,    15,   139,    94,   134,   152,    -1,
+      16,   119,    94,    73,    -1,    16,   119,    94,    75,   132,
+      76,    73,    -1,    -1,    86,   112,    -1,    -1,    86,    56,
+      -1,    86,    57,    -1,    18,    94,   146,    -1,   110,   147,
+      -1,   112,    94,   147,    -1,   148,    -1,   148,    77,   149,
+      -1,    22,    78,   149,    79,    -1,   150,   141,    -1,   150,
+     142,    -1,   150,   143,    -1,   150,   144,    -1,   150,   145,
+      -1,    73,    -1,    75,   153,    76,    93,    -1,    -1,   159,
+     153,    -1,   116,    73,    -1,   117,    73,    -1,   156,    73,
+      -1,   155,    73,    -1,    10,   157,    73,    -1,    19,   158,
+      73,    -1,    18,    94,    73,    -1,     8,   118,    95,    -1,
+       8,   118,    95,    81,   118,    82,    -1,     7,   118,    95,
+      -1,     7,   118,    95,    81,   118,    82,    -1,     9,   118,
+      95,    -1,     9,   118,    95,    81,   118,    82,    -1,     9,
+      84,    68,    85,   118,    95,    81,   118,    82,    -1,   106,
+      -1,   106,    77,   157,    -1,    57,    -1,   160,    73,    -1,
+     154,    -1,    39,   163,   162,    94,   179,   181,   182,    -1,
+      39,   163,    94,   179,   182,    -1,    39,    84,    68,    85,
+      35,    94,   179,   180,   170,   168,   171,    94,    -1,    71,
+     170,   168,   171,    73,    -1,    71,    73,    -1,    35,    -1,
+     108,    -1,    -1,    84,   164,    85,    -1,   165,    -1,   165,
+      77,   164,    -1,    21,    -1,    23,    -1,    24,    -1,    25,
       -1,    31,    -1,    32,    -1,    33,    -1,    34,    -1,    26,
-      -1,    27,    -1,    28,    -1,    52,    -1,    51,   123,    -1,
-      57,    -1,    56,    -1,    94,    -1,    -1,    58,    -1,    58,
-      76,   166,    -1,    -1,    58,    -1,    58,    83,   167,    84,
-     167,    -1,    58,    74,   167,    75,   167,    -1,    58,    80,
-     166,    81,   167,    -1,    80,   167,    81,   167,    -1,   111,
-      93,    83,    -1,    74,    -1,    75,    -1,   111,    -1,   111,
-      93,   128,    -1,   111,    93,    85,   165,    -1,   168,   167,
-      84,    -1,     6,    -1,    69,    -1,    70,    -1,    93,    -1,
-     173,    86,    78,    93,    -1,   173,    87,    93,    -1,   173,
-      83,   173,    84,    -1,   173,    83,    56,    84,    -1,   173,
-      80,   173,    81,    -1,   168,   167,    84,    -1,   172,    73,
-     111,    93,    77,   173,    78,    -1,   111,    93,    77,   173,
-      78,    -1,   172,    73,   174,    77,   173,    78,    -1,   171,
-      -1,   171,    76,   176,    -1,   175,    -1,   175,    76,   177,
-      -1,    80,   176,    81,    -1,    80,    81,    -1,    83,   177,
-      84,    -1,    83,    84,    -1,    -1,    20,    85,    56,    -1,
-      -1,   187,    -1,    74,   182,    75,    -1,   187,    -1,   187,
-     182,    -1,   187,    -1,   187,   182,    -1,    -1,    50,    80,
-     185,    81,    -1,    55,    -1,    55,    76,   185,    -1,    57,
-      -1,    -1,    45,   186,   169,   167,   170,   184,    -1,    49,
-      80,    55,   178,    81,   169,   167,    75,    -1,    43,   193,
-      74,    75,    -1,    43,   193,   187,    -1,    43,   193,    74,
-     182,    75,    -1,    44,    74,   183,    75,    -1,    40,   191,
-     167,    72,   167,    72,   167,   190,    74,   182,    75,    -1,
-      40,   191,   167,    72,   167,    72,   167,   190,   187,    -1,
-      41,    83,    55,    84,   191,   167,    73,   167,    76,   167,
-     190,   187,    -1,    41,    83,    55,    84,   191,   167,    73,
-     167,    76,   167,   190,    74,   182,    75,    -1,    47,   191,
-     167,   190,   187,   188,    -1,    47,   191,   167,   190,    74,
-     182,    75,   188,    -1,    42,   191,   167,   190,   187,    -1,
-      42,   191,   167,   190,    74,   182,    75,    -1,    46,   189,
-      72,    -1,   169,   167,   170,    -1,    -1,    48,   187,    -1,
-      48,    74,   182,    75,    -1,    55,    -1,    55,    76,   189,
-      -1,    81,    -1,    80,    -1,    55,   178,    -1,    55,   194,
-     167,   195,   178,    -1,   192,    -1,   192,    76,   193,    -1,
-      83,    -1,    84,    -1,    59,    93,    -1,    60,    93,    -1
+      -1,    27,    -1,    28,    -1,    52,    -1,    51,   124,    -1,
+      72,    -1,    57,    -1,    56,    -1,    95,    -1,    -1,    58,
+      -1,    58,    77,   167,    -1,    -1,    58,    -1,    58,    84,
+     168,    85,   168,    -1,    58,    75,   168,    76,   168,    -1,
+      58,    81,   167,    82,   168,    -1,    81,   168,    82,   168,
+      -1,   112,    94,    84,    -1,    75,    -1,    76,    -1,   112,
+      -1,   112,    94,   129,    -1,   112,    94,    86,   166,    -1,
+     169,   168,    85,    -1,     6,    -1,    69,    -1,    70,    -1,
+      94,    -1,   174,    87,    79,    94,    -1,   174,    88,    94,
+      -1,   174,    84,   174,    85,    -1,   174,    84,    56,    85,
+      -1,   174,    81,   174,    82,    -1,   169,   168,    85,    -1,
+     173,    74,   112,    94,    78,   174,    79,    -1,   112,    94,
+      78,   174,    79,    -1,   173,    74,   175,    78,   174,    79,
+      -1,   172,    -1,   172,    77,   177,    -1,   176,    -1,   176,
+      77,   178,    -1,    81,   177,    82,    -1,    81,    82,    -1,
+      84,   178,    85,    -1,    84,    85,    -1,    -1,    20,    86,
+      56,    -1,    -1,   188,    -1,    75,   183,    76,    -1,   188,
+      -1,   188,   183,    -1,   188,    -1,   188,   183,    -1,    -1,
+      50,    81,   186,    82,    -1,    55,    -1,    55,    77,   186,
+      -1,    57,    -1,    -1,    45,   187,   170,   168,   171,   185,
+      -1,    49,    81,    55,   179,    82,   170,   168,    76,    -1,
+      43,   194,    75,    76,    -1,    43,   194,   188,    -1,    43,
+     194,    75,   183,    76,    -1,    44,    75,   184,    76,    -1,
+      40,   192,   168,    73,   168,    73,   168,   191,    75,   183,
+      76,    -1,    40,   192,   168,    73,   168,    73,   168,   191,
+     188,    -1,    41,    84,    55,    85,   192,   168,    74,   168,
+      77,   168,   191,   188,    -1,    41,    84,    55,    85,   192,
+     168,    74,   168,    77,   168,   191,    75,   183,    76,    -1,
+      47,   192,   168,   191,   188,   189,    -1,    47,   192,   168,
+     191,    75,   183,    76,   189,    -1,    42,   192,   168,   191,
+     188,    -1,    42,   192,   168,   191,    75,   183,    76,    -1,
+      46,   190,    73,    -1,   170,   168,   171,    -1,    -1,    48,
+     188,    -1,    48,    75,   183,    76,    -1,    55,    -1,    55,
+      77,   190,    -1,    82,    -1,    81,    -1,    55,   179,    -1,
+      55,   195,   168,   196,   179,    -1,   193,    -1,   193,    77,
+     194,    -1,    84,    -1,    85,    -1,    59,    94,    -1,    60,
+      94,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   147,   147,   152,   155,   160,   161,   166,   167,   171,
-     175,   177,   185,   189,   196,   198,   203,   204,   208,   210,
-     212,   214,   216,   218,   220,   222,   224,   226,   228,   230,
-     232,   234,   236,   240,   242,   244,   248,   250,   255,   256,
-     261,   262,   266,   268,   270,   272,   274,   276,   278,   280,
-     282,   284,   286,   288,   290,   292,   294,   298,   299,   306,
-     308,   312,   316,   318,   322,   326,   328,   330,   332,   335,
-     337,   341,   343,   347,   349,   353,   358,   359,   363,   367,
-     372,   373,   378,   379,   389,   391,   395,   397,   402,   403,
-     407,   409,   414,   415,   419,   424,   425,   429,   431,   435,
-     437,   442,   443,   447,   448,   451,   455,   457,   461,   463,
-     468,   469,   473,   475,   479,   481,   485,   489,   493,   499,
-     503,   505,   509,   511,   515,   519,   523,   527,   529,   534,
-     535,   540,   541,   543,   547,   549,   551,   555,   557,   561,
-     565,   567,   569,   571,   573,   577,   579,   584,   602,   606,
-     608,   610,   611,   613,   615,   617,   621,   623,   625,   628,
-     633,   635,   637,   645,   647,   650,   654,   656,   660,   671,
-     682,   700,   702,   706,   708,   713,   714,   718,   720,   724,
-     726,   728,   730,   732,   734,   736,   738,   740,   742,   744,
-     746,   748,   752,   754,   756,   761,   762,   764,   773,   774,
-     776,   782,   788,   794,   802,   809,   817,   824,   826,   828,
-     830,   837,   838,   839,   842,   843,   844,   845,   852,   858,
-     867,   874,   880,   886,   894,   896,   900,   902,   906,   908,
-     912,   914,   919,   920,   925,   926,   928,   932,   934,   938,
-     940,   945,   946,   950,   952,   956,   959,   962,   967,   981,
-     983,   985,   987,   989,   992,   995,   998,  1001,  1003,  1005,
-    1007,  1009,  1011,  1018,  1019,  1021,  1024,  1026,  1030,  1034,
-    1038,  1046,  1054,  1056,  1060,  1063,  1067,  1071
+       0,   148,   148,   153,   156,   161,   162,   167,   168,   172,
+     176,   178,   186,   190,   197,   199,   204,   205,   209,   211,
+     213,   215,   217,   219,   221,   223,   225,   227,   229,   231,
+     233,   235,   237,   241,   243,   245,   249,   251,   256,   257,
+     262,   263,   267,   269,   271,   273,   275,   277,   279,   281,
+     283,   285,   287,   289,   291,   293,   295,   299,   300,   307,
+     309,   313,   317,   319,   323,   327,   329,   331,   333,   336,
+     338,   342,   344,   348,   350,   354,   359,   360,   364,   368,
+     373,   374,   379,   380,   390,   392,   396,   398,   403,   404,
+     408,   410,   415,   416,   420,   425,   426,   430,   432,   436,
+     438,   443,   444,   448,   449,   452,   456,   458,   462,   464,
+     469,   470,   474,   476,   480,   482,   486,   490,   494,   500,
+     504,   506,   510,   512,   516,   520,   524,   528,   530,   535,
+     536,   541,   542,   544,   548,   550,   552,   556,   558,   562,
+     566,   568,   570,   572,   574,   578,   580,   585,   603,   607,
+     609,   611,   612,   614,   616,   618,   622,   624,   626,   629,
+     634,   636,   638,   646,   648,   651,   655,   657,   661,   672,
+     683,   701,   703,   707,   709,   714,   715,   719,   721,   725,
+     727,   729,   731,   733,   735,   737,   739,   741,   743,   745,
+     747,   749,   751,   755,   757,   759,   764,   765,   767,   776,
+     777,   779,   785,   791,   797,   805,   812,   820,   827,   829,
+     831,   833,   840,   841,   842,   845,   846,   847,   848,   855,
+     861,   870,   877,   883,   889,   897,   899,   903,   905,   909,
+     911,   915,   917,   922,   923,   928,   929,   931,   935,   937,
+     941,   943,   948,   949,   953,   955,   959,   962,   965,   970,
+     984,   986,   988,   990,   992,   995,   998,  1001,  1004,  1006,
+    1008,  1010,  1012,  1014,  1021,  1022,  1024,  1027,  1029,  1033,
+    1037,  1041,  1049,  1057,  1059,  1063,  1066,  1070,  1074
 };
 #endif
 
@@ -759,13 +762,13 @@ static const char *const yytname[] =
   "PYTHON", "LOCAL", "NAMESPACE", "USING", "IDENT", "NUMBER", "LITERAL",
   "CPROGRAM", "HASHIF", "HASHIFDEF", "INT", "LONG", "SHORT", "CHAR",
   "FLOAT", "DOUBLE", "UNSIGNED", "ACCEL", "READWRITE", "WRITEONLY",
-  "ACCELBLOCK", "';'", "':'", "'{'", "'}'", "','", "'<'", "'>'", "'*'",
-  "'('", "')'", "'&'", "'['", "']'", "'='", "'-'", "'.'", "$accept",
-  "File", "ModuleEList", "OptExtern", "OptSemiColon", "Name", "QualName",
-  "Module", "ConstructEList", "ConstructList", "Construct", "TParam",
-  "TParamList", "TParamEList", "OptTParams", "BuiltinType", "NamedType",
-  "QualNamedType", "SimpleType", "OnePtrType", "PtrType", "FuncType",
-  "BaseType", "Type", "ArrayDim", "Dim", "DimList", "Readonly",
+  "ACCELBLOCK", "MEMCRITICAL", "';'", "':'", "'{'", "'}'", "','", "'<'",
+  "'>'", "'*'", "'('", "')'", "'&'", "'['", "']'", "'='", "'-'", "'.'",
+  "$accept", "File", "ModuleEList", "OptExtern", "OptSemiColon", "Name",
+  "QualName", "Module", "ConstructEList", "ConstructList", "Construct",
+  "TParam", "TParamList", "TParamEList", "OptTParams", "BuiltinType",
+  "NamedType", "QualNamedType", "SimpleType", "OnePtrType", "PtrType",
+  "FuncType", "BaseType", "Type", "ArrayDim", "Dim", "DimList", "Readonly",
   "ReadonlyMsg", "OptVoid", "MAttribs", "MAttribList", "MAttrib",
   "CAttribs", "CAttribList", "PythonOptions", "ArrayAttrib",
   "ArrayAttribs", "ArrayAttribList", "CAttrib", "OptConditional",
@@ -799,42 +802,42 @@ static const yytype_uint16 yytoknum[] =
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,    59,    58,   123,   125,    44,    60,    62,    42,
-      40,    41,    38,    91,    93,    61,    45,    46
+     325,   326,   327,    59,    58,   123,   125,    44,    60,    62,
+      42,    40,    41,    38,    91,    93,    61,    45,    46
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    88,    89,    90,    90,    91,    91,    92,    92,    93,
-      94,    94,    95,    95,    96,    96,    97,    97,    98,    98,
-      98,    98,    98,    98,    98,    98,    98,    98,    98,    98,
-      98,    98,    98,    99,    99,    99,   100,   100,   101,   101,
-     102,   102,   103,   103,   103,   103,   103,   103,   103,   103,
-     103,   103,   103,   103,   103,   103,   103,   104,   105,   106,
-     106,   107,   108,   108,   109,   110,   110,   110,   110,   110,
-     110,   111,   111,   112,   112,   113,   114,   114,   115,   116,
-     117,   117,   118,   118,   119,   119,   120,   120,   121,   121,
-     122,   122,   123,   123,   124,   125,   125,   126,   126,   127,
-     127,   128,   128,   129,   129,   130,   131,   131,   132,   132,
-     133,   133,   134,   134,   135,   135,   136,   137,   138,   138,
-     139,   139,   140,   140,   141,   142,   143,   144,   144,   145,
-     145,   146,   146,   146,   147,   147,   147,   148,   148,   149,
-     150,   150,   150,   150,   150,   151,   151,   152,   152,   153,
-     153,   153,   153,   153,   153,   153,   154,   154,   154,   154,
-     155,   155,   155,   156,   156,   157,   158,   158,   159,   159,
-     159,   160,   160,   161,   161,   162,   162,   163,   163,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   165,   165,   165,   166,   166,   166,   167,   167,
-     167,   167,   167,   167,   168,   169,   170,   171,   171,   171,
-     171,   172,   172,   172,   173,   173,   173,   173,   173,   173,
-     174,   175,   175,   175,   176,   176,   177,   177,   178,   178,
-     179,   179,   180,   180,   181,   181,   181,   182,   182,   183,
-     183,   184,   184,   185,   185,   186,   186,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   188,   188,   188,   189,   189,   190,   191,
-     192,   192,   193,   193,   194,   195,   196,   197
+       0,    89,    90,    91,    91,    92,    92,    93,    93,    94,
+      95,    95,    96,    96,    97,    97,    98,    98,    99,    99,
+      99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
+      99,    99,    99,   100,   100,   100,   101,   101,   102,   102,
+     103,   103,   104,   104,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   104,   104,   104,   105,   106,   107,
+     107,   108,   109,   109,   110,   111,   111,   111,   111,   111,
+     111,   112,   112,   113,   113,   114,   115,   115,   116,   117,
+     118,   118,   119,   119,   120,   120,   121,   121,   122,   122,
+     123,   123,   124,   124,   125,   126,   126,   127,   127,   128,
+     128,   129,   129,   130,   130,   131,   132,   132,   133,   133,
+     134,   134,   135,   135,   136,   136,   137,   138,   139,   139,
+     140,   140,   141,   141,   142,   143,   144,   145,   145,   146,
+     146,   147,   147,   147,   148,   148,   148,   149,   149,   150,
+     151,   151,   151,   151,   151,   152,   152,   153,   153,   154,
+     154,   154,   154,   154,   154,   154,   155,   155,   155,   155,
+     156,   156,   156,   157,   157,   158,   159,   159,   160,   160,
+     160,   161,   161,   162,   162,   163,   163,   164,   164,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   166,   166,   166,   167,   167,   167,   168,
+     168,   168,   168,   168,   168,   169,   170,   171,   172,   172,
+     172,   172,   173,   173,   173,   174,   174,   174,   174,   174,
+     174,   175,   176,   176,   176,   177,   177,   178,   178,   179,
+     179,   180,   180,   181,   181,   182,   182,   182,   183,   183,
+     184,   184,   185,   185,   186,   186,   187,   187,   188,   188,
+     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
+     188,   188,   188,   188,   189,   189,   189,   190,   190,   191,
+     192,   193,   193,   194,   194,   195,   196,   197,   198
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -859,15 +862,15 @@ static const yytype_uint8 yyr2[] =
        3,     6,     9,     1,     3,     1,     2,     1,     7,     5,
       12,     5,     2,     1,     1,     0,     3,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     1,     1,     1,     0,     1,     3,     0,     1,
-       5,     5,     5,     4,     3,     1,     1,     1,     3,     4,
-       3,     1,     1,     1,     1,     4,     3,     4,     4,     4,
-       3,     7,     5,     6,     1,     3,     1,     3,     3,     2,
-       3,     2,     0,     3,     0,     1,     3,     1,     2,     1,
-       2,     0,     4,     1,     3,     1,     0,     6,     8,     4,
-       3,     5,     4,    11,     9,    12,    14,     6,     8,     5,
-       7,     3,     3,     0,     2,     4,     1,     3,     1,     1,
-       2,     5,     1,     3,     1,     1,     2,     2
+       1,     2,     1,     1,     1,     1,     0,     1,     3,     0,
+       1,     5,     5,     5,     4,     3,     1,     1,     1,     3,
+       4,     3,     1,     1,     1,     1,     4,     3,     4,     4,
+       4,     3,     7,     5,     6,     1,     3,     1,     3,     3,
+       2,     3,     2,     0,     3,     0,     1,     3,     1,     2,
+       1,     2,     0,     4,     1,     3,     1,     0,     6,     8,
+       4,     3,     5,     4,    11,     9,    12,    14,     6,     8,
+       5,     7,     3,     3,     0,     2,     4,     1,     3,     1,
+       1,     2,     5,     1,     3,     1,     1,     2,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -878,61 +881,61 @@ static const yytype_uint16 yydefact[] =
        3,     0,     0,     0,     2,     3,     9,     0,     0,     1,
        4,    14,     5,    12,    13,     6,     0,     0,     0,     0,
        0,     0,     0,     5,    32,    30,    31,     0,     0,    10,
-       0,   276,   277,   172,   205,   198,     0,    80,    80,    80,
+       0,   277,   278,   172,   206,   199,     0,    80,    80,    80,
        0,    88,    88,    88,    88,     0,    82,     0,     0,     0,
        5,    22,     0,     0,     0,    25,    26,    27,    28,     0,
       29,    23,     0,     0,     7,    17,     5,     0,    21,     0,
-     199,   198,     0,     0,    56,     0,    42,    43,    44,    45,
+     200,   199,     0,     0,    56,     0,    42,    43,    44,    45,
       53,    54,     0,    40,    59,    60,    65,    66,    67,    68,
       72,     0,    81,     0,     0,     0,     0,   163,     0,     0,
        0,     0,     0,     0,     0,     0,    95,     0,     0,     0,
      165,     0,     0,     0,   149,   150,    24,    88,    88,    88,
       88,     0,    82,   140,   141,   142,   143,   144,   152,   151,
-       8,    15,     0,    20,     0,   198,   195,   198,     0,   206,
+       8,    15,     0,    20,     0,   199,   196,   199,     0,   207,
        0,     0,    69,    52,    55,    46,    47,    50,    51,    38,
       58,    61,    62,    63,    70,     0,    71,    76,   158,   156,
        0,   160,     0,   153,    99,   100,     0,    90,    40,   110,
      110,   110,   110,    94,     0,     0,    97,     0,     0,     0,
        0,     0,    86,    87,     0,    84,   108,   155,   154,     0,
       68,     0,   137,     0,     7,     0,     0,     0,     0,     0,
-       0,    19,    11,     0,   196,     0,     0,   198,   171,     0,
+       0,    19,    11,     0,   197,     0,     0,   199,   171,     0,
       48,    49,    34,    35,    36,    39,     0,    33,     0,     0,
       76,    78,    80,    80,    80,    80,   164,    89,     0,    57,
        0,     0,     0,     0,     0,     0,   119,     0,    96,   110,
      110,    83,     0,   101,   129,     0,   135,   131,     0,   139,
-      18,   110,   110,   110,   110,   110,     0,   198,   195,   198,
-     198,   203,    79,     0,    41,     0,    73,    74,     0,    77,
+      18,   110,   110,   110,   110,   110,     0,   199,   196,   199,
+     199,   204,    79,     0,    41,     0,    73,    74,     0,    77,
        0,     0,     0,     0,    91,   112,   111,   145,   147,   114,
      115,   116,   117,   118,    98,     0,     0,    85,   102,     0,
      101,     0,     0,   134,   132,   133,   136,   138,     0,     0,
-       0,     0,     0,   127,   101,   201,   197,   202,   200,    37,
+       0,     0,     0,   127,   101,   202,   198,   203,   201,    37,
        0,    75,   159,   157,     0,   161,     0,   175,     0,   167,
      147,     0,   120,   121,     0,   107,   109,   130,   122,   123,
      124,   125,   126,     0,     0,    80,   113,     0,     0,     7,
-     148,   166,   103,     0,   207,   198,   224,     0,     0,   179,
+     148,   166,   103,     0,   208,   199,   225,     0,     0,   179,
      180,   181,   182,   187,   188,   189,   183,   184,   185,   186,
-      92,   190,     0,     0,   177,    56,    10,     0,     0,   174,
-       0,   146,     0,     0,   128,   101,     0,     0,    64,   162,
-      93,   191,     0,   176,     0,     0,   234,     0,   104,   105,
-     204,     0,   208,   210,   225,     0,   178,   229,     0,     0,
-       0,     0,     0,     0,   246,     0,     0,     0,   205,   198,
-     169,   235,   232,   193,   192,   194,   209,     0,   228,   269,
-     198,     0,   198,     0,   272,     0,     0,   245,     0,   266,
-       0,   198,     0,     0,   237,     0,     0,   234,     0,     0,
-       0,     0,   274,   270,   198,     0,   205,   250,     0,   239,
-     198,     0,   261,     0,     0,   236,   238,   262,     0,   168,
-       0,     0,   198,     0,   268,     0,     0,   273,   249,     0,
-     252,   240,     0,   267,     0,     0,   233,   211,   212,   213,
-     231,     0,     0,   226,     0,   198,     0,   198,   205,   259,
-     275,     0,   251,   241,   205,   263,     0,     0,     0,     0,
-     230,     0,   198,     0,     0,   271,     0,   247,     0,     0,
-     257,   198,     0,     0,   198,     0,   227,     0,     0,   198,
-     260,     0,   263,   205,   264,     0,   214,     0,     0,     0,
-       0,   170,     0,     0,   243,     0,   258,     0,   248,   222,
-       0,     0,     0,     0,     0,   220,     0,   205,   254,   198,
-       0,   242,   265,     0,     0,     0,     0,   216,     0,   223,
-       0,     0,   244,   219,   218,   217,   215,   221,   253,     0,
-     205,   255,     0,   256
+      92,   190,     0,   192,     0,   177,    56,    10,     0,     0,
+     174,     0,   146,     0,     0,   128,   101,     0,     0,    64,
+     162,    93,   191,     0,   176,     0,     0,   235,     0,   104,
+     105,   205,     0,   209,   211,   226,     0,   178,   230,     0,
+       0,     0,     0,     0,     0,   247,     0,     0,     0,   206,
+     199,   169,   236,   233,   194,   193,   195,   210,     0,   229,
+     270,   199,     0,   199,     0,   273,     0,     0,   246,     0,
+     267,     0,   199,     0,     0,   238,     0,     0,   235,     0,
+       0,     0,     0,   275,   271,   199,     0,   206,   251,     0,
+     240,   199,     0,   262,     0,     0,   237,   239,   263,     0,
+     168,     0,     0,   199,     0,   269,     0,     0,   274,   250,
+       0,   253,   241,     0,   268,     0,     0,   234,   212,   213,
+     214,   232,     0,     0,   227,     0,   199,     0,   199,   206,
+     260,   276,     0,   252,   242,   206,   264,     0,     0,     0,
+       0,   231,     0,   199,     0,     0,   272,     0,   248,     0,
+       0,   258,   199,     0,     0,   199,     0,   228,     0,     0,
+     199,   261,     0,   264,   206,   265,     0,   215,     0,     0,
+       0,     0,   170,     0,     0,   244,     0,   259,     0,   249,
+     223,     0,     0,     0,     0,     0,   221,     0,   206,   255,
+     199,     0,   243,   266,     0,     0,     0,     0,   217,     0,
+     224,     0,     0,   245,   220,   219,   218,   216,   222,   254,
+       0,   206,   256,     0,   257
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -941,95 +944,95 @@ static const yytype_int16 yydefgoto[] =
       -1,     3,     4,    21,   131,   168,    83,     5,    13,    22,
       23,   214,   215,   216,   150,    84,   169,    85,    86,    87,
       88,    89,    90,   344,   268,   220,   221,    52,    53,    93,
-     108,   184,   185,   100,   166,   381,   176,   105,   177,   167,
-     289,   373,   290,   291,    54,   231,   276,    55,    56,    57,
+     108,   184,   185,   100,   166,   382,   176,   105,   177,   167,
+     289,   374,   290,   291,    54,   231,   276,    55,    56,    57,
      106,    58,   123,   124,   125,   126,   127,   293,   246,   192,
      193,    59,    60,   279,   318,   319,    62,    63,    98,   111,
-     320,   321,    24,   370,   338,   363,   364,   416,   205,    72,
-     345,   409,   140,   346,   482,   527,   515,   483,   347,   484,
-     386,   461,   437,   410,   433,   448,   507,   535,   428,   434,
-     510,   430,   465,   420,   424,   425,   444,   491,    25,    26
+     320,   321,    24,   371,   338,   364,   365,   417,   205,    72,
+     345,   410,   140,   346,   483,   528,   516,   484,   347,   485,
+     387,   462,   438,   411,   434,   449,   508,   536,   429,   435,
+     511,   431,   466,   421,   425,   426,   445,   492,    25,    26
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -447
+#define YYPACT_NINF -448
 static const yytype_int16 yypact[] =
 {
-     145,   -31,   -31,    55,  -447,   145,  -447,     1,     1,  -447,
-    -447,  -447,   211,  -447,  -447,  -447,   -31,   125,   -31,   -31,
-     112,   225,   -32,   211,  -447,  -447,  -447,     7,     8,  -447,
-     154,  -447,  -447,  -447,  -447,   -28,   294,    56,    56,    -6,
-       8,    27,    27,    27,    27,    74,    92,   -31,    69,    62,
-     211,  -447,   109,   132,   135,  -447,  -447,  -447,  -447,   533,
-    -447,  -447,   137,   170,   174,  -447,   211,   181,  -447,   182,
-      15,   -28,   187,   564,  -447,   470,  -447,    38,  -447,  -447,
-    -447,  -447,    97,    35,  -447,  -447,   189,   200,   206,  -447,
-     -24,     8,  -447,     8,     8,   208,     8,   231,   247,    11,
-     -31,   -31,   -31,   -31,    79,   244,   249,   220,   -31,   253,
-    -447,   264,   335,   258,  -447,  -447,  -447,    27,    27,    27,
-      27,   244,    92,  -447,  -447,  -447,  -447,  -447,  -447,  -447,
-    -447,  -447,   263,  -447,   285,   -28,   284,   -28,   269,  -447,
-     279,   275,   -15,  -447,  -447,  -447,   205,  -447,  -447,   551,
-    -447,  -447,  -447,  -447,  -447,   283,  -447,   -22,   -26,    49,
-     280,    58,     8,  -447,  -447,  -447,   282,   291,   295,   308,
-     308,   308,   308,  -447,   -31,   304,   292,   305,   217,   -31,
-     340,   -31,  -447,  -447,   311,   316,   334,  -447,  -447,   -31,
-      -2,   -31,   333,   344,   174,   -31,   -31,   -31,   -31,   -31,
-     -31,  -447,  -447,   336,   347,   343,   341,   -28,  -447,   -31,
-    -447,  -447,  -447,  -447,   353,  -447,   361,  -447,   -31,   235,
-     348,  -447,    56,    56,    56,    56,  -447,  -447,    11,  -447,
-       8,   115,   115,   115,   115,   356,  -447,   340,  -447,   308,
-     308,  -447,   220,   424,   357,   241,  -447,   359,   335,  -447,
-    -447,   308,   308,   308,   308,   308,   119,   -28,   284,   -28,
-     -28,  -447,  -447,   551,  -447,   366,  -447,   375,   365,  -447,
-     369,   370,     8,   374,  -447,   377,  -447,  -447,   242,  -447,
-    -447,  -447,  -447,  -447,  -447,   115,   115,  -447,  -447,   470,
-      -4,   381,   470,  -447,  -447,  -447,  -447,  -447,   115,   115,
-     115,   115,   115,  -447,   424,  -447,  -447,  -447,  -447,  -447,
-     378,  -447,  -447,  -447,    67,  -447,     8,   376,   385,  -447,
-     242,   389,  -447,  -447,   -31,  -447,  -447,  -447,  -447,  -447,
-    -447,  -447,  -447,   388,   470,    56,  -447,   352,   585,   174,
-    -447,  -447,   392,   405,   -31,   -28,   403,   383,   408,  -447,
-    -447,  -447,  -447,  -447,  -447,  -447,  -447,  -447,  -447,  -447,
-     434,  -447,   419,   420,   431,   454,   428,   430,   189,  -447,
-     -31,  -447,   429,   442,  -447,     9,   444,   470,  -447,  -447,
-    -447,  -447,   495,  -447,   570,   371,   372,   430,  -447,  -447,
-    -447,   168,  -447,  -447,  -447,   -31,  -447,  -447,   457,   461,
-     467,   461,   497,   479,   507,   499,   461,   494,   427,   -28,
-    -447,  -447,   568,  -447,  -447,   375,  -447,   430,  -447,  -447,
-     -28,   529,   -28,    89,   513,   441,   427,  -447,   518,   535,
-     537,   -28,   550,   548,   427,   187,   539,   372,   549,   561,
-     552,   553,  -447,  -447,   -28,   497,   271,  -447,   560,   427,
-     -28,   499,  -447,   553,   430,  -447,  -447,  -447,   581,  -447,
-     101,   518,   -28,   461,  -447,   453,   554,  -447,  -447,   566,
-    -447,  -447,   187,  -447,   477,   558,  -447,  -447,  -447,  -447,
-    -447,   -31,   569,   567,   571,   -28,   572,   -28,   427,  -447,
-    -447,   430,  -447,   595,   427,   605,   518,   577,   470,   239,
-    -447,   187,   -28,   583,   582,  -447,   578,  -447,   584,   516,
-    -447,   -28,   -31,   -31,   -28,   586,  -447,   -31,   553,   -28,
-    -447,   606,   605,   427,  -447,   587,  -447,    96,    19,   576,
-     -31,  -447,   526,   588,   589,   590,  -447,   591,  -447,  -447,
-     -31,   266,   592,   -31,   -31,  -447,   248,   427,  -447,   -28,
-     606,  -447,  -447,   197,   593,   209,   -31,  -447,   261,  -447,
-     594,   553,  -447,  -447,  -447,  -447,  -447,  -447,  -447,   536,
-     427,  -447,   597,  -447
+     145,   -16,   -16,    81,  -448,   145,  -448,   -21,   -21,  -448,
+    -448,  -448,   201,  -448,  -448,  -448,   -16,   132,   -16,   -16,
+     116,   225,    13,   201,  -448,  -448,  -448,    39,    75,  -448,
+     184,  -448,  -448,  -448,  -448,   -26,   283,   134,   134,   -22,
+      75,   109,   109,   109,   109,   121,   125,   -16,   159,   146,
+     201,  -448,   169,   172,   177,  -448,  -448,  -448,  -448,   207,
+    -448,  -448,   180,   195,   212,  -448,   201,   192,  -448,   206,
+     -34,   -26,   222,   570,  -448,   372,  -448,    11,  -448,  -448,
+    -448,  -448,    96,    22,  -448,  -448,   226,   234,   237,  -448,
+     -20,    75,  -448,    75,    75,   254,    75,   249,   252,    14,
+     -16,   -16,   -16,   -16,    83,   243,   244,   236,   -16,   257,
+    -448,   278,   117,   276,  -448,  -448,  -448,   109,   109,   109,
+     109,   243,   125,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
+    -448,  -448,   279,  -448,   299,   -26,   300,   -26,   274,  -448,
+     284,   281,    -6,  -448,  -448,  -448,   214,  -448,  -448,   556,
+    -448,  -448,  -448,  -448,  -448,   282,  -448,    -8,    21,    50,
+     280,    66,    75,  -448,  -448,  -448,   288,   286,   289,   294,
+     294,   294,   294,  -448,   -16,   293,   292,   296,   241,   -16,
+     323,   -16,  -448,  -448,   302,   307,   314,  -448,  -448,   -16,
+      15,   -16,   313,   317,   212,   -16,   -16,   -16,   -16,   -16,
+     -16,  -448,  -448,   316,   327,   311,   320,   -26,  -448,   -16,
+    -448,  -448,  -448,  -448,   332,  -448,   340,  -448,   -16,   247,
+     341,  -448,   134,   134,   134,   134,  -448,  -448,    14,  -448,
+      75,   173,   173,   173,   173,   339,  -448,   323,  -448,   294,
+     294,  -448,   236,   409,   344,   248,  -448,   346,   117,  -448,
+    -448,   294,   294,   294,   294,   294,   176,   -26,   300,   -26,
+     -26,  -448,  -448,   556,  -448,   360,  -448,   369,   374,  -448,
+     363,   375,    75,   378,  -448,   385,  -448,  -448,   500,  -448,
+    -448,  -448,  -448,  -448,  -448,   173,   173,  -448,  -448,   372,
+      -5,   388,   372,  -448,  -448,  -448,  -448,  -448,   173,   173,
+     173,   173,   173,  -448,   409,  -448,  -448,  -448,  -448,  -448,
+     384,  -448,  -448,  -448,    80,  -448,    75,   392,   402,  -448,
+     500,   411,  -448,  -448,   -16,  -448,  -448,  -448,  -448,  -448,
+    -448,  -448,  -448,   404,   372,   134,  -448,   308,   589,   212,
+    -448,  -448,   413,   422,   -16,   -26,   423,   420,   429,  -448,
+    -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
+     442,  -448,   430,  -448,   431,   437,   466,   451,   452,   226,
+    -448,   -16,  -448,   449,   462,  -448,     7,   453,   372,  -448,
+    -448,  -448,  -448,   501,  -448,   389,   336,   428,   452,  -448,
+    -448,  -448,   119,  -448,  -448,  -448,   -16,  -448,  -448,   455,
+     461,   469,   461,   511,   480,   519,   523,   461,   498,   445,
+     -26,  -448,  -448,   569,  -448,  -448,   369,  -448,   452,  -448,
+    -448,   -26,   539,   -26,   123,   529,   482,   445,  -448,   532,
+     531,   536,   -26,   559,   534,   445,   222,   540,   428,   543,
+     542,   544,   546,  -448,  -448,   -26,   511,   407,  -448,   562,
+     445,   -26,   523,  -448,   546,   452,  -448,  -448,  -448,   583,
+    -448,   101,   532,   -26,   461,  -448,   505,   557,  -448,  -448,
+     564,  -448,  -448,   222,  -448,   518,   561,  -448,  -448,  -448,
+    -448,  -448,   -16,   567,   568,   563,   -26,   573,   -26,   445,
+    -448,  -448,   452,  -448,   597,   445,   601,   532,   579,   372,
+     246,  -448,   222,   -26,   584,   585,  -448,   578,  -448,   586,
+     528,  -448,   -26,   -16,   -16,   -26,   582,  -448,   -16,   546,
+     -26,  -448,   608,   601,   445,  -448,   588,  -448,   183,    26,
+     580,   -16,  -448,   541,   590,   591,   587,  -448,   594,  -448,
+    -448,   -16,   265,   592,   -16,   -16,  -448,   298,   445,  -448,
+     -26,   608,  -448,  -448,   202,   581,    41,   -16,  -448,   417,
+    -448,   596,   546,  -448,  -448,  -448,  -448,  -448,  -448,  -448,
+     555,   445,  -448,   598,  -448
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -447,  -447,   662,  -447,  -188,    -1,    -9,   647,   665,    43,
-    -447,  -447,   411,  -447,   508,  -447,   -68,   -29,   -69,   337,
-    -447,  -107,   603,   -33,  -447,  -447,   459,  -447,  -447,   -11,
-     559,   438,  -447,    25,   455,  -447,  -447,   579,   445,  -447,
-     309,  -447,  -447,  -259,  -447,  -134,   373,  -447,  -447,  -447,
-     -89,  -447,  -447,  -447,  -447,  -447,  -447,  -447,   439,  -447,
-     440,  -447,  -447,   -80,   367,   669,  -447,  -447,   530,  -447,
-    -447,  -447,  -447,  -447,  -447,   307,  -447,  -447,   435,   -57,
-     196,   -18,  -415,  -447,  -447,  -416,  -447,  -447,  -335,   198,
-    -364,  -447,  -447,   259,  -424,  -447,  -447,   148,  -447,  -377,
-     173,   250,  -446,  -362,  -447,   254,  -447,  -447,  -447,  -447
+    -448,  -448,   668,  -448,  -188,    -1,    -9,   654,   669,     8,
+    -448,  -448,   415,  -448,   508,  -448,   -68,   -29,   -69,   342,
+    -448,  -107,   604,   -33,  -448,  -448,   463,  -448,  -448,   -11,
+     560,   439,  -448,    25,   456,  -448,  -448,   593,   448,  -448,
+     310,  -448,  -448,  -248,  -448,  -134,   371,  -448,  -448,  -448,
+     -76,  -448,  -448,  -448,  -448,  -448,  -448,  -448,   441,  -448,
+     443,  -448,  -448,    -7,   370,   671,  -448,  -448,   527,  -448,
+    -448,  -448,  -448,  -448,  -448,   309,  -448,  -448,   435,   -57,
+     196,   -18,  -416,  -448,  -448,  -433,  -448,  -448,  -335,   197,
+    -365,  -448,  -448,   258,  -425,  -448,  -448,   147,  -448,  -378,
+     178,   250,  -447,  -381,  -448,   259,  -448,  -448,  -448,  -448
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1039,216 +1042,216 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -174
 static const yytype_int16 yytable[] =
 {
-       7,     8,    35,    91,   141,   190,   250,   474,    30,   411,
-     456,    97,   154,   288,   138,    27,   179,    31,    32,    67,
-     457,   154,   469,   412,     6,   471,   288,    94,    96,    92,
-      70,   325,   199,   170,   171,   172,   232,   233,   234,   422,
-     186,   164,   394,    64,   431,   333,   109,    69,   447,   449,
-     398,    69,    71,   438,   222,     9,   155,   493,   156,   443,
-     411,   219,   165,    29,   504,   155,    65,   101,   102,   103,
-     508,  -106,   532,    11,  -131,    12,  -131,    95,   203,   191,
-     206,    66,   157,   245,   158,   159,   517,   161,   489,   135,
-     475,    92,   390,   113,   391,   136,   544,   495,   137,   537,
-     143,   487,   390,   175,   144,   285,   286,   477,    69,   132,
-      99,   239,   149,   240,   546,   569,   217,   298,   299,   300,
-     301,   302,    69,   560,   553,   555,   110,   505,   558,   223,
-     173,    69,   524,    97,     6,   174,    74,    75,   225,   112,
-      69,   190,   195,   196,   197,   198,   572,   335,     1,     2,
-     261,   371,   280,   281,   282,   548,    29,   104,   145,   146,
-     147,   148,    76,    77,    78,    79,    80,    81,    82,   385,
-     478,   479,   442,   235,   539,   107,   540,   175,    28,   541,
-      29,   114,   542,   543,    33,   480,    34,   277,   244,   278,
-     247,   303,   571,   304,   251,   252,   253,   254,   255,   256,
-     305,   275,   307,   308,   115,   322,   323,   116,   262,   128,
-     267,   270,   271,   272,   273,   191,    15,   265,   328,   329,
-     330,   331,   332,    29,   413,   414,    68,    69,     1,     2,
+       7,     8,    35,    91,   141,   190,   250,   475,    30,   412,
+     457,    97,   288,    92,   138,    27,   154,    31,    32,    67,
+     458,   423,   470,   413,   288,   472,   432,    94,    96,   179,
+     154,    65,    70,   170,   171,   172,   232,   233,   234,     6,
+     186,   135,   325,   395,   164,   199,   109,   136,   448,   450,
+     137,   399,    11,   439,    12,    71,   333,   494,   113,   444,
+     412,   155,    95,   156,   505,   165,    69,   101,   102,   103,
+     509,  -106,   533,   143,   132,   155,   219,   144,   203,   191,
+     206,     9,   157,   488,   158,   159,   518,   161,   490,    64,
+     476,   391,  -131,   392,  -131,    69,    69,   496,   547,   538,
+     149,   245,   222,   175,   545,   285,   286,   478,   554,   556,
+     391,   239,   559,   240,    66,   570,   217,   298,   299,   300,
+     301,   302,   541,   561,    69,   542,   566,   506,   543,   544,
+      29,   223,   525,    97,   173,   189,    74,    75,     6,   174,
+      69,   190,   195,   196,   197,   198,   573,   225,     1,     2,
+     261,   372,    74,    75,    69,   549,    29,   145,   146,   147,
+     148,   335,    76,    77,    78,    79,    80,    81,    82,    92,
+     479,   480,    29,   235,    29,   414,   415,   175,    76,    77,
+      78,    79,    80,    81,    82,    28,   481,    29,   244,    33,
+     247,    34,   572,    99,   251,   252,   253,   254,   255,   256,
+     305,   275,   307,   308,   386,   104,    15,   443,   262,   107,
+     267,   270,   271,   272,   273,   191,   110,   265,   117,   118,
+     119,   120,   121,   122,   112,   280,   281,   282,     1,     2,
      217,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,   129,    47,    48,   477,   130,    49,    36,    37,
-      38,    39,    40,   133,    69,   134,   324,   182,   183,   327,
-      47,    48,   139,   314,    16,    17,   210,   211,   151,   368,
-      18,    19,     6,   174,    74,    75,   160,   540,   563,   152,
-     541,   317,    20,   542,   543,   153,   -16,   275,   376,   540,
-      29,   266,   541,   565,    29,   542,   543,   294,   295,    50,
-      76,    77,    78,    79,    80,    81,    82,   162,   478,   479,
-      73,   399,   400,   401,   402,   403,   404,   405,   406,   163,
-     407,     6,   554,   342,   348,   187,   559,   178,   540,    74,
-      75,   541,   180,   194,   542,   543,   188,   367,   201,   567,
-     202,   540,   204,   375,   541,    34,   468,   542,   543,    29,
-     207,   208,   435,   189,   209,    76,    77,    78,    79,    80,
-      81,    82,   218,   439,   224,   441,   227,   228,   237,   387,
-      74,    75,   149,   349,   453,   350,   351,   352,   353,   354,
-     355,   230,   415,   356,   357,   358,   359,   466,   236,   238,
-      29,   173,   242,   472,   417,   241,    76,    77,    78,    79,
-      80,    81,    82,   360,   361,   486,    74,    75,   243,   248,
-     450,   257,   399,   400,   401,   402,   403,   404,   405,   406,
-     362,   407,   249,   258,   259,   260,    29,   481,   501,   263,
-     503,   219,    76,    77,    78,    79,    80,    81,    82,   264,
-     283,   288,   292,   485,   245,   518,   408,   310,    69,   311,
-     312,   313,   397,   316,   525,   315,   326,   529,   334,   337,
-     339,   341,   533,   343,   378,   513,   481,   399,   400,   401,
-     402,   403,   404,   405,   406,   372,   407,   374,   511,   377,
-     497,   399,   400,   401,   402,   403,   404,   405,   406,   379,
-     407,   380,   561,   399,   400,   401,   402,   403,   404,   405,
-     406,    34,   407,   382,   383,    74,    75,   384,    -9,  -173,
-     385,   526,   528,   388,   389,   446,   531,   399,   400,   401,
-     402,   403,   404,   405,   406,    29,   407,   488,   393,   526,
-     395,    76,    77,    78,    79,    80,    81,    82,   418,   526,
-     526,   419,   557,   526,   117,   118,   119,   120,   121,   122,
-     421,   494,   423,   426,   429,   566,   399,   400,   401,   402,
-     403,   404,   405,   406,   427,   407,   399,   400,   401,   402,
-     403,   404,   405,   406,   432,   407,   399,   400,   401,   402,
-     403,   404,   405,   406,   440,   407,    74,    75,   436,   445,
-     523,   349,    34,   350,   351,   352,   353,   354,   355,    74,
-     547,   356,   357,   358,   359,   454,    29,   212,   213,   452,
-     570,   451,    76,    77,    78,    79,    80,    81,    82,    29,
-     365,   360,   361,   455,   458,    76,    77,    78,    79,    80,
-      81,    82,   460,   462,   464,   470,   463,   476,   490,   496,
-     366,   492,   498,   499,   502,   506,    76,    77,    78,    79,
-      80,    81,    82,   509,   512,   500,   519,   520,   521,   522,
-     545,   534,   538,   530,   549,   550,   552,    10,    51,   568,
-     556,   551,   573,    14,   309,   369,   229,   564,   142,   269,
-     287,   200,   284,   274,   392,   181,   296,   340,   297,   336,
-      61,   396,   226,   306,   514,   536,   459,   516,   562,   467,
-       0,   473
+      45,    46,   114,    47,    48,   115,   277,    49,   278,   303,
+     116,   304,   478,   128,    16,    17,   324,    68,    69,   327,
+      18,    19,   540,   314,   541,   133,    69,   542,   129,   369,
+     543,   544,    20,   182,   183,   210,   211,   -16,   322,   323,
+     134,    74,    75,   541,   564,   130,   542,   275,   377,   543,
+     544,   328,   329,   330,   331,   332,     6,   174,   139,    73,
+      50,    29,    29,   266,   294,   295,   151,    76,    77,    78,
+      79,    80,    81,    82,   152,   479,   480,   153,    74,    75,
+       6,   555,   160,   342,   348,   163,   162,   178,   180,   349,
+     187,   350,   351,   352,   353,   354,   355,   368,    29,   356,
+     357,   358,   359,   376,    76,    77,    78,    79,    80,    81,
+      82,   188,   194,   436,   202,   201,   207,   208,   204,   360,
+     361,   209,   218,   228,   440,   224,   442,   149,   230,   237,
+     388,    74,    75,   227,   173,   454,   362,   560,   236,   541,
+     363,   238,   542,   416,   242,   543,   544,   241,   467,   243,
+     248,    29,   257,   259,   473,   418,   249,    76,    77,    78,
+      79,    80,    81,    82,   258,   260,   487,    74,    75,   263,
+     349,   451,   350,   351,   352,   353,   354,   355,   398,   264,
+     356,   357,   358,   359,   283,   219,   288,    29,   482,   502,
+     292,   504,   245,    76,    77,    78,    79,    80,    81,    82,
+     360,   361,   310,    69,   486,   312,   519,   400,   401,   402,
+     403,   404,   405,   406,   407,   526,   408,   313,   530,   311,
+     315,   363,   316,   534,   326,   334,   514,   482,   400,   401,
+     402,   403,   404,   405,   406,   407,   337,   408,   339,   512,
+     343,   498,    34,   469,   341,   400,   401,   402,   403,   404,
+     405,   406,   407,   562,   408,   375,   568,   373,   541,   381,
+     378,   542,   379,   409,   543,   544,    36,    37,    38,    39,
+      40,   380,   527,   529,   385,   383,   384,   532,    47,    48,
+      34,  -173,   400,   401,   402,   403,   404,   405,   406,   407,
+     527,   408,    -9,   386,   389,   390,   396,   419,   394,   317,
+     527,   527,   420,   558,   527,   400,   401,   402,   403,   404,
+     405,   406,   407,   422,   408,   427,   567,   447,   400,   401,
+     402,   403,   404,   405,   406,   407,   424,   408,   400,   401,
+     402,   403,   404,   405,   406,   407,   428,   408,   430,   433,
+     489,   400,   401,   402,   403,   404,   405,   406,   407,   437,
+     408,    74,    75,   495,   441,   400,   401,   402,   403,   404,
+     405,   406,   407,   524,   408,    74,   446,    34,   452,   453,
+     456,    29,   212,   213,   455,   463,   548,    76,    77,    78,
+      79,    80,    81,    82,   366,    29,   459,   461,   465,   464,
+     571,    76,    77,    78,    79,    80,    81,    82,   471,   477,
+     493,   499,   491,   497,   367,   500,   503,   507,   501,   510,
+      76,    77,    78,    79,    80,    81,    82,   513,   520,   522,
+     531,   521,   523,   535,   539,   546,   565,   550,   551,   552,
+     553,   557,   569,    10,   574,    51,   229,    14,   309,   142,
+     370,   287,   200,   269,   274,   284,   393,   336,   296,   226,
+     340,   297,    61,   306,   397,   515,   460,   517,   563,   181,
+       0,   537,   474,     0,     0,   468
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,     2,    20,    36,    73,   112,   194,   453,    17,   386,
-     434,    40,    36,    17,    71,    16,   105,    18,    19,    28,
-     435,    36,   446,   387,    55,   449,    17,    38,    39,    35,
-      58,   290,   121,   101,   102,   103,   170,   171,   172,   401,
-     108,    30,   377,    75,   406,   304,    47,    73,   425,   426,
-     385,    73,    80,   417,    80,     0,    80,   472,    82,   423,
-     437,    83,    51,    55,   488,    80,    23,    42,    43,    44,
-     494,    75,   518,    72,    76,    74,    78,    83,   135,   112,
-     137,    74,    91,    85,    93,    94,   501,    96,   465,    74,
-     454,    35,    83,    50,    85,    80,    77,   474,    83,   523,
-      62,   463,    83,   104,    66,   239,   240,     6,    73,    66,
-      83,   179,    77,   181,   530,   561,   149,   251,   252,   253,
-     254,   255,    73,   547,   540,   541,    57,   491,   544,    80,
-      51,    73,   509,   162,    55,    56,    35,    36,    80,    77,
-      73,   248,   117,   118,   119,   120,   570,    80,     3,     4,
-     207,   339,   232,   233,   234,   532,    55,    83,    61,    62,
-      63,    64,    61,    62,    63,    64,    65,    66,    67,    80,
-      69,    70,    83,   174,    78,    83,    80,   178,    53,    83,
-      55,    72,    86,    87,    72,    84,    74,    72,   189,    74,
-     191,    72,   569,    74,   195,   196,   197,   198,   199,   200,
-     257,   230,   259,   260,    72,   285,   286,    72,   209,    72,
-     219,   222,   223,   224,   225,   248,     5,   218,   298,   299,
-     300,   301,   302,    55,    56,    57,    72,    73,     3,     4,
+       1,     2,    20,    36,    73,   112,   194,   454,    17,   387,
+     435,    40,    17,    35,    71,    16,    36,    18,    19,    28,
+     436,   402,   447,   388,    17,   450,   407,    38,    39,   105,
+      36,    23,    58,   101,   102,   103,   170,   171,   172,    55,
+     108,    75,   290,   378,    30,   121,    47,    81,   426,   427,
+      84,   386,    73,   418,    75,    81,   304,   473,    50,   424,
+     438,    81,    84,    83,   489,    51,    74,    42,    43,    44,
+     495,    76,   519,    62,    66,    81,    84,    66,   135,   112,
+     137,     0,    91,   464,    93,    94,   502,    96,   466,    76,
+     455,    84,    77,    86,    79,    74,    74,   475,   531,   524,
+      78,    86,    81,   104,    78,   239,   240,     6,   541,   542,
+      84,   179,   545,   181,    75,   562,   149,   251,   252,   253,
+     254,   255,    81,   548,    74,    84,    85,   492,    87,    88,
+      55,    81,   510,   162,    51,    18,    35,    36,    55,    56,
+      74,   248,   117,   118,   119,   120,   571,    81,     3,     4,
+     207,   339,    35,    36,    74,   533,    55,    61,    62,    63,
+      64,    81,    61,    62,    63,    64,    65,    66,    67,    35,
+      69,    70,    55,   174,    55,    56,    57,   178,    61,    62,
+      63,    64,    65,    66,    67,    53,    85,    55,   189,    73,
+     191,    75,   570,    84,   195,   196,   197,   198,   199,   200,
+     257,   230,   259,   260,    81,    84,     5,    84,   209,    84,
+     219,   222,   223,   224,   225,   248,    57,   218,    11,    12,
+      13,    14,    15,    16,    78,   232,   233,   234,     3,     4,
      263,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    72,    18,    19,     6,    72,    22,     6,     7,
-       8,     9,    10,    72,    73,    73,   289,    37,    38,   292,
-      18,    19,    75,   272,    53,    54,    61,    62,    79,   338,
-      59,    60,    55,    56,    35,    36,    68,    80,    81,    79,
-      83,    39,    71,    86,    87,    79,    75,   316,   345,    80,
-      55,    56,    83,    84,    55,    86,    87,    56,    57,    74,
-      61,    62,    63,    64,    65,    66,    67,    76,    69,    70,
-      16,    40,    41,    42,    43,    44,    45,    46,    47,    72,
-      49,    55,    56,   324,   335,    72,    78,    83,    80,    35,
-      36,    83,    83,    75,    86,    87,    72,   338,    75,    78,
-      55,    80,    58,   344,    83,    74,    75,    86,    87,    55,
-      81,    72,   409,    18,    79,    61,    62,    63,    64,    65,
-      66,    67,    79,   420,    84,   422,    84,    76,    76,   370,
-      35,    36,    77,    21,   431,    23,    24,    25,    26,    27,
-      28,    73,   391,    31,    32,    33,    34,   444,    84,    84,
-      55,    51,    76,   450,   395,    84,    61,    62,    63,    64,
-      65,    66,    67,    51,    52,   462,    35,    36,    74,    76,
-     428,    75,    40,    41,    42,    43,    44,    45,    46,    47,
-      68,    49,    78,    76,    81,    84,    55,   460,   485,    76,
-     487,    83,    61,    62,    63,    64,    65,    66,    67,    78,
-      84,    17,    85,   461,    85,   502,    74,    81,    73,    84,
-      81,    81,    81,    76,   511,    81,    75,   514,    80,    83,
-      75,    72,   519,    75,    81,   498,   499,    40,    41,    42,
-      43,    44,    45,    46,    47,    83,    49,    72,   496,    76,
-     481,    40,    41,    42,    43,    44,    45,    46,    47,    81,
-      49,    57,   549,    40,    41,    42,    43,    44,    45,    46,
-      47,    74,    49,    84,    84,    35,    36,    76,    80,    55,
-      80,   512,   513,    84,    72,    74,   517,    40,    41,    42,
-      43,    44,    45,    46,    47,    55,    49,    74,    84,   530,
-      35,    61,    62,    63,    64,    65,    66,    67,    81,   540,
-     541,    80,   543,   544,    11,    12,    13,    14,    15,    16,
-      83,    74,    55,    74,    55,   556,    40,    41,    42,    43,
-      44,    45,    46,    47,    57,    49,    40,    41,    42,    43,
-      44,    45,    46,    47,    80,    49,    40,    41,    42,    43,
-      44,    45,    46,    47,    55,    49,    35,    36,    20,    76,
-      74,    21,    74,    23,    24,    25,    26,    27,    28,    35,
-      74,    31,    32,    33,    34,    55,    55,    56,    57,    72,
-      74,    76,    61,    62,    63,    64,    65,    66,    67,    55,
-      35,    51,    52,    75,    85,    61,    62,    63,    64,    65,
-      66,    67,    83,    72,    81,    75,    84,    56,    84,    81,
-      55,    75,    73,    76,    72,    50,    61,    62,    63,    64,
-      65,    66,    67,    48,    77,    84,    73,    75,    80,    75,
-      84,    55,    75,    77,    76,    76,    75,     5,    21,    75,
-      78,    81,    75,     8,   263,   338,   168,    84,    75,   220,
-     242,   122,   237,   228,   375,   106,   247,   320,   248,   316,
-      21,   384,   162,   258,   498,   522,   437,   499,   550,   445,
-      -1,   451
+      15,    16,    73,    18,    19,    73,    73,    22,    75,    73,
+      73,    75,     6,    73,    53,    54,   289,    73,    74,   292,
+      59,    60,    79,   272,    81,    73,    74,    84,    73,   338,
+      87,    88,    71,    37,    38,    61,    62,    76,   285,   286,
+      74,    35,    36,    81,    82,    73,    84,   316,   345,    87,
+      88,   298,   299,   300,   301,   302,    55,    56,    76,    16,
+      75,    55,    55,    56,    56,    57,    80,    61,    62,    63,
+      64,    65,    66,    67,    80,    69,    70,    80,    35,    36,
+      55,    56,    68,   324,   335,    73,    77,    84,    84,    21,
+      73,    23,    24,    25,    26,    27,    28,   338,    55,    31,
+      32,    33,    34,   344,    61,    62,    63,    64,    65,    66,
+      67,    73,    76,   410,    55,    76,    82,    73,    58,    51,
+      52,    80,    80,    77,   421,    85,   423,    78,    74,    77,
+     371,    35,    36,    85,    51,   432,    68,    79,    85,    81,
+      72,    85,    84,   392,    77,    87,    88,    85,   445,    75,
+      77,    55,    76,    82,   451,   396,    79,    61,    62,    63,
+      64,    65,    66,    67,    77,    85,   463,    35,    36,    77,
+      21,   429,    23,    24,    25,    26,    27,    28,    82,    79,
+      31,    32,    33,    34,    85,    84,    17,    55,   461,   486,
+      86,   488,    86,    61,    62,    63,    64,    65,    66,    67,
+      51,    52,    82,    74,   462,    82,   503,    40,    41,    42,
+      43,    44,    45,    46,    47,   512,    49,    82,   515,    85,
+      82,    72,    77,   520,    76,    81,   499,   500,    40,    41,
+      42,    43,    44,    45,    46,    47,    84,    49,    76,   497,
+      76,   482,    75,    76,    73,    40,    41,    42,    43,    44,
+      45,    46,    47,   550,    49,    73,    79,    84,    81,    57,
+      77,    84,    82,    75,    87,    88,     6,     7,     8,     9,
+      10,    82,   513,   514,    77,    85,    85,   518,    18,    19,
+      75,    55,    40,    41,    42,    43,    44,    45,    46,    47,
+     531,    49,    81,    81,    85,    73,    35,    82,    85,    39,
+     541,   542,    81,   544,   545,    40,    41,    42,    43,    44,
+      45,    46,    47,    84,    49,    75,   557,    75,    40,    41,
+      42,    43,    44,    45,    46,    47,    55,    49,    40,    41,
+      42,    43,    44,    45,    46,    47,    57,    49,    55,    81,
+      75,    40,    41,    42,    43,    44,    45,    46,    47,    20,
+      49,    35,    36,    75,    55,    40,    41,    42,    43,    44,
+      45,    46,    47,    75,    49,    35,    77,    75,    77,    73,
+      76,    55,    56,    57,    55,    73,    75,    61,    62,    63,
+      64,    65,    66,    67,    35,    55,    86,    84,    82,    85,
+      75,    61,    62,    63,    64,    65,    66,    67,    76,    56,
+      76,    74,    85,    82,    55,    77,    73,    50,    85,    48,
+      61,    62,    63,    64,    65,    66,    67,    78,    74,    81,
+      78,    76,    76,    55,    76,    85,    85,    77,    77,    82,
+      76,    79,    76,     5,    76,    21,   168,     8,   263,    75,
+     338,   242,   122,   220,   228,   237,   376,   316,   247,   162,
+     320,   248,    21,   258,   385,   499,   438,   500,   551,   106,
+      -1,   523,   452,    -1,    -1,   446
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,    89,    90,    95,    55,    93,    93,     0,
-      90,    72,    74,    96,    96,     5,    53,    54,    59,    60,
-      71,    91,    97,    98,   160,   196,   197,    93,    53,    55,
-      94,    93,    93,    72,    74,   169,     6,     7,     8,     9,
+       0,     3,     4,    90,    91,    96,    55,    94,    94,     0,
+      91,    73,    75,    97,    97,     5,    53,    54,    59,    60,
+      71,    92,    98,    99,   161,   197,   198,    94,    53,    55,
+      95,    94,    94,    73,    75,   170,     6,     7,     8,     9,
       10,    11,    12,    13,    14,    15,    16,    18,    19,    22,
-      74,    95,   115,   116,   132,   135,   136,   137,   139,   149,
-     150,   153,   154,   155,    75,    97,    74,    94,    72,    73,
-      58,    80,   167,    16,    35,    36,    61,    62,    63,    64,
-      65,    66,    67,    94,   103,   105,   106,   107,   108,   109,
-     110,   111,    35,   117,   117,    83,   117,   105,   156,    83,
-     121,   121,   121,   121,    83,   125,   138,    83,   118,    93,
-      57,   157,    77,    97,    72,    72,    72,    11,    12,    13,
-      14,    15,    16,   140,   141,   142,   143,   144,    72,    72,
-      72,    92,    97,    72,    73,    74,    80,    83,   167,    75,
-     170,   106,   110,    62,    66,    61,    62,    63,    64,    77,
-     102,    79,    79,    79,    36,    80,    82,    94,    94,    94,
-      68,    94,    76,    72,    30,    51,   122,   127,    93,   104,
-     104,   104,   104,    51,    56,    93,   124,   126,    83,   138,
-      83,   125,    37,    38,   119,   120,   104,    72,    72,    18,
-     109,   111,   147,   148,    75,   121,   121,   121,   121,   138,
-     118,    75,    55,   167,    58,   166,   167,    81,    72,    79,
-      61,    62,    56,    57,    99,   100,   101,   111,    79,    83,
-     113,   114,    80,    80,    84,    80,   156,    84,    76,   102,
-      73,   133,   133,   133,   133,    93,    84,    76,    84,   104,
-     104,    84,    76,    74,    93,    85,   146,    93,    76,    78,
-      92,    93,    93,    93,    93,    93,    93,    75,    76,    81,
-      84,   167,    93,    76,    78,    93,    56,    94,   112,   114,
-     117,   117,   117,   117,   122,   105,   134,    72,    74,   151,
-     151,   151,   151,    84,   126,   133,   133,   119,    17,   128,
-     130,   131,    85,   145,    56,    57,   146,   148,   133,   133,
-     133,   133,   133,    72,    74,   167,   166,   167,   167,   100,
-      81,    84,    81,    81,    94,    81,    76,    39,   152,   153,
-     158,   159,   151,   151,   111,   131,    75,   111,   151,   151,
-     151,   151,   151,   131,    80,    80,   134,    83,   162,    75,
-     152,    72,    93,    75,   111,   168,   171,   176,   117,    21,
+      75,    96,   116,   117,   133,   136,   137,   138,   140,   150,
+     151,   154,   155,   156,    76,    98,    75,    95,    73,    74,
+      58,    81,   168,    16,    35,    36,    61,    62,    63,    64,
+      65,    66,    67,    95,   104,   106,   107,   108,   109,   110,
+     111,   112,    35,   118,   118,    84,   118,   106,   157,    84,
+     122,   122,   122,   122,    84,   126,   139,    84,   119,    94,
+      57,   158,    78,    98,    73,    73,    73,    11,    12,    13,
+      14,    15,    16,   141,   142,   143,   144,   145,    73,    73,
+      73,    93,    98,    73,    74,    75,    81,    84,   168,    76,
+     171,   107,   111,    62,    66,    61,    62,    63,    64,    78,
+     103,    80,    80,    80,    36,    81,    83,    95,    95,    95,
+      68,    95,    77,    73,    30,    51,   123,   128,    94,   105,
+     105,   105,   105,    51,    56,    94,   125,   127,    84,   139,
+      84,   126,    37,    38,   120,   121,   105,    73,    73,    18,
+     110,   112,   148,   149,    76,   122,   122,   122,   122,   139,
+     119,    76,    55,   168,    58,   167,   168,    82,    73,    80,
+      61,    62,    56,    57,   100,   101,   102,   112,    80,    84,
+     114,   115,    81,    81,    85,    81,   157,    85,    77,   103,
+      74,   134,   134,   134,   134,    94,    85,    77,    85,   105,
+     105,    85,    77,    75,    94,    86,   147,    94,    77,    79,
+      93,    94,    94,    94,    94,    94,    94,    76,    77,    82,
+      85,   168,    94,    77,    79,    94,    56,    95,   113,   115,
+     118,   118,   118,   118,   123,   106,   135,    73,    75,   152,
+     152,   152,   152,    85,   127,   134,   134,   120,    17,   129,
+     131,   132,    86,   146,    56,    57,   147,   149,   134,   134,
+     134,   134,   134,    73,    75,   168,   167,   168,   168,   101,
+      82,    85,    82,    82,    95,    82,    77,    39,   153,   154,
+     159,   160,   152,   152,   112,   132,    76,   112,   152,   152,
+     152,   152,   152,   132,    81,    81,   135,    84,   163,    76,
+     153,    73,    94,    76,   112,   169,   172,   177,   118,    21,
       23,    24,    25,    26,    27,    28,    31,    32,    33,    34,
-      51,    52,    68,   163,   164,    35,    55,    93,   106,   107,
-     161,    92,    83,   129,    72,    93,   167,    76,    81,    81,
-      57,   123,    84,    84,    76,    80,   178,    93,    84,    72,
-      83,    85,   128,    84,   176,    35,   163,    81,   176,    40,
-      41,    42,    43,    44,    45,    46,    47,    49,    74,   169,
-     181,   187,   178,    56,    57,    94,   165,    93,    81,    80,
-     191,    83,   191,    55,   192,   193,    74,    57,   186,    55,
-     189,   191,    80,   182,   187,   167,    20,   180,   178,   167,
-      55,   167,    83,   178,   194,    76,    74,   187,   183,   187,
-     169,    76,    72,   167,    55,    75,   182,   170,    85,   181,
-      83,   179,    72,    84,    81,   190,   167,   193,    75,   182,
-      75,   182,   167,   189,   190,   178,    56,     6,    69,    70,
-      84,   111,   172,   175,   177,   169,   167,   191,    74,   187,
-      84,   195,    75,   170,    74,   187,    81,    93,    73,    76,
-      84,   167,    72,   167,   182,   178,    50,   184,   182,    48,
-     188,   169,    77,   111,   168,   174,   177,   170,   167,    73,
-      75,    80,    75,    74,   187,   167,    93,   173,    93,   167,
-      77,    93,   190,   167,    55,   185,   188,   182,    75,    78,
-      80,    83,    86,    87,    77,    84,   173,    74,   187,    76,
-      76,    81,    75,   173,    56,   173,    78,    93,   173,    78,
-     182,   167,   185,    81,    84,    84,    93,    78,    75,   190,
-      74,   187,   182,    75
+      51,    52,    68,    72,   164,   165,    35,    55,    94,   107,
+     108,   162,    93,    84,   130,    73,    94,   168,    77,    82,
+      82,    57,   124,    85,    85,    77,    81,   179,    94,    85,
+      73,    84,    86,   129,    85,   177,    35,   164,    82,   177,
+      40,    41,    42,    43,    44,    45,    46,    47,    49,    75,
+     170,   182,   188,   179,    56,    57,    95,   166,    94,    82,
+      81,   192,    84,   192,    55,   193,   194,    75,    57,   187,
+      55,   190,   192,    81,   183,   188,   168,    20,   181,   179,
+     168,    55,   168,    84,   179,   195,    77,    75,   188,   184,
+     188,   170,    77,    73,   168,    55,    76,   183,   171,    86,
+     182,    84,   180,    73,    85,    82,   191,   168,   194,    76,
+     183,    76,   183,   168,   190,   191,   179,    56,     6,    69,
+      70,    85,   112,   173,   176,   178,   170,   168,   192,    75,
+     188,    85,   196,    76,   171,    75,   188,    82,    94,    74,
+      77,    85,   168,    73,   168,   183,   179,    50,   185,   183,
+      48,   189,   170,    78,   112,   169,   175,   178,   171,   168,
+      74,    76,    81,    76,    75,   188,   168,    94,   174,    94,
+     168,    78,    94,   191,   168,    55,   186,   189,   183,    76,
+      79,    81,    84,    87,    88,    78,    85,   174,    75,   188,
+      77,    77,    82,    76,   174,    56,   174,    79,    94,   174,
+      79,   183,   168,   186,    82,    85,    85,    94,    79,    76,
+     191,    75,   188,   183,    76
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2063,54 +2066,54 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 148 "xi-grammar.y"
+#line 149 "xi-grammar.y"
     { (yyval.modlist) = (yyvsp[(1) - (1)].modlist); modlist = (yyvsp[(1) - (1)].modlist); }
     break;
 
   case 3:
-#line 152 "xi-grammar.y"
+#line 153 "xi-grammar.y"
     { 
                  (yyval.modlist) = 0; 
                }
     break;
 
   case 4:
-#line 156 "xi-grammar.y"
+#line 157 "xi-grammar.y"
     { (yyval.modlist) = new ModuleList(lineno, (yyvsp[(1) - (2)].module), (yyvsp[(2) - (2)].modlist)); }
     break;
 
   case 5:
-#line 160 "xi-grammar.y"
+#line 161 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 6:
-#line 162 "xi-grammar.y"
+#line 163 "xi-grammar.y"
     { (yyval.intval) = 1; }
     break;
 
   case 7:
-#line 166 "xi-grammar.y"
+#line 167 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 8:
-#line 168 "xi-grammar.y"
+#line 169 "xi-grammar.y"
     { (yyval.intval) = 1; }
     break;
 
   case 9:
-#line 172 "xi-grammar.y"
+#line 173 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
     break;
 
   case 10:
-#line 176 "xi-grammar.y"
+#line 177 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
     break;
 
   case 11:
-#line 178 "xi-grammar.y"
+#line 179 "xi-grammar.y"
     {
                  char *tmp = new char[strlen((yyvsp[(1) - (4)].strval))+strlen((yyvsp[(4) - (4)].strval))+3];
                  sprintf(tmp,"%s::%s", (yyvsp[(1) - (4)].strval), (yyvsp[(4) - (4)].strval));
@@ -2119,14 +2122,14 @@ yyreduce:
     break;
 
   case 12:
-#line 186 "xi-grammar.y"
+#line 187 "xi-grammar.y"
     { 
                    (yyval.module) = new Module(lineno, (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].conslist)); 
                }
     break;
 
   case 13:
-#line 190 "xi-grammar.y"
+#line 191 "xi-grammar.y"
     {  
                    (yyval.module) = new Module(lineno, (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].conslist)); 
                    (yyval.module)->setMain();
@@ -2134,227 +2137,227 @@ yyreduce:
     break;
 
   case 14:
-#line 197 "xi-grammar.y"
+#line 198 "xi-grammar.y"
     { (yyval.conslist) = 0; }
     break;
 
   case 15:
-#line 199 "xi-grammar.y"
+#line 200 "xi-grammar.y"
     { (yyval.conslist) = (yyvsp[(2) - (4)].conslist); }
     break;
 
   case 16:
-#line 203 "xi-grammar.y"
+#line 204 "xi-grammar.y"
     { (yyval.conslist) = 0; }
     break;
 
   case 17:
-#line 205 "xi-grammar.y"
+#line 206 "xi-grammar.y"
     { (yyval.conslist) = new ConstructList(lineno, (yyvsp[(1) - (2)].construct), (yyvsp[(2) - (2)].conslist)); }
     break;
 
   case 18:
-#line 209 "xi-grammar.y"
+#line 210 "xi-grammar.y"
     { if((yyvsp[(3) - (5)].conslist)) (yyvsp[(3) - (5)].conslist)->setExtern((yyvsp[(1) - (5)].intval)); (yyval.construct) = (yyvsp[(3) - (5)].conslist); }
     break;
 
   case 19:
-#line 211 "xi-grammar.y"
+#line 212 "xi-grammar.y"
     { (yyval.construct) = new Scope((yyvsp[(2) - (5)].strval), (yyvsp[(4) - (5)].conslist)); }
     break;
 
   case 20:
-#line 213 "xi-grammar.y"
+#line 214 "xi-grammar.y"
     { (yyval.construct) = new UsingScope((yyvsp[(3) - (4)].strval), false); }
     break;
 
   case 21:
-#line 215 "xi-grammar.y"
+#line 216 "xi-grammar.y"
     { (yyval.construct) = new UsingScope((yyvsp[(2) - (3)].strval), true); }
     break;
 
   case 22:
-#line 217 "xi-grammar.y"
+#line 218 "xi-grammar.y"
     { (yyvsp[(2) - (2)].module)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].module); }
     break;
 
   case 23:
-#line 219 "xi-grammar.y"
+#line 220 "xi-grammar.y"
     { (yyvsp[(2) - (2)].member)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].member); }
     break;
 
   case 24:
-#line 221 "xi-grammar.y"
+#line 222 "xi-grammar.y"
     { (yyvsp[(2) - (3)].message)->setExtern((yyvsp[(1) - (3)].intval)); (yyval.construct) = (yyvsp[(2) - (3)].message); }
     break;
 
   case 25:
-#line 223 "xi-grammar.y"
+#line 224 "xi-grammar.y"
     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
     break;
 
   case 26:
-#line 225 "xi-grammar.y"
+#line 226 "xi-grammar.y"
     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
     break;
 
   case 27:
-#line 227 "xi-grammar.y"
+#line 228 "xi-grammar.y"
     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
     break;
 
   case 28:
-#line 229 "xi-grammar.y"
+#line 230 "xi-grammar.y"
     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
     break;
 
   case 29:
-#line 231 "xi-grammar.y"
+#line 232 "xi-grammar.y"
     { (yyvsp[(2) - (2)].templat)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].templat); }
     break;
 
   case 30:
-#line 233 "xi-grammar.y"
+#line 234 "xi-grammar.y"
     { (yyval.construct) = NULL; }
     break;
 
   case 31:
-#line 235 "xi-grammar.y"
+#line 236 "xi-grammar.y"
     { (yyval.construct) = NULL; }
     break;
 
   case 32:
-#line 237 "xi-grammar.y"
+#line 238 "xi-grammar.y"
     { (yyval.construct) = (yyvsp[(1) - (1)].accelBlock); }
     break;
 
   case 33:
-#line 241 "xi-grammar.y"
+#line 242 "xi-grammar.y"
     { (yyval.tparam) = new TParamType((yyvsp[(1) - (1)].type)); }
     break;
 
   case 34:
-#line 243 "xi-grammar.y"
+#line 244 "xi-grammar.y"
     { (yyval.tparam) = new TParamVal((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 35:
-#line 245 "xi-grammar.y"
+#line 246 "xi-grammar.y"
     { (yyval.tparam) = new TParamVal((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 36:
-#line 249 "xi-grammar.y"
+#line 250 "xi-grammar.y"
     { (yyval.tparlist) = new TParamList((yyvsp[(1) - (1)].tparam)); }
     break;
 
   case 37:
-#line 251 "xi-grammar.y"
+#line 252 "xi-grammar.y"
     { (yyval.tparlist) = new TParamList((yyvsp[(1) - (3)].tparam), (yyvsp[(3) - (3)].tparlist)); }
     break;
 
   case 38:
-#line 255 "xi-grammar.y"
+#line 256 "xi-grammar.y"
     { (yyval.tparlist) = 0; }
     break;
 
   case 39:
-#line 257 "xi-grammar.y"
+#line 258 "xi-grammar.y"
     { (yyval.tparlist) = (yyvsp[(1) - (1)].tparlist); }
     break;
 
   case 40:
-#line 261 "xi-grammar.y"
+#line 262 "xi-grammar.y"
     { (yyval.tparlist) = 0; }
     break;
 
   case 41:
-#line 263 "xi-grammar.y"
+#line 264 "xi-grammar.y"
     { (yyval.tparlist) = (yyvsp[(2) - (3)].tparlist); }
     break;
 
   case 42:
-#line 267 "xi-grammar.y"
+#line 268 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("int"); }
     break;
 
   case 43:
-#line 269 "xi-grammar.y"
+#line 270 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("long"); }
     break;
 
   case 44:
-#line 271 "xi-grammar.y"
+#line 272 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("short"); }
     break;
 
   case 45:
-#line 273 "xi-grammar.y"
+#line 274 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("char"); }
     break;
 
   case 46:
-#line 275 "xi-grammar.y"
+#line 276 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned int"); }
     break;
 
   case 47:
-#line 277 "xi-grammar.y"
+#line 278 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned long"); }
     break;
 
   case 48:
-#line 279 "xi-grammar.y"
+#line 280 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned long"); }
     break;
 
   case 49:
-#line 281 "xi-grammar.y"
+#line 282 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned long long"); }
     break;
 
   case 50:
-#line 283 "xi-grammar.y"
+#line 284 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned short"); }
     break;
 
   case 51:
-#line 285 "xi-grammar.y"
+#line 286 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("unsigned char"); }
     break;
 
   case 52:
-#line 287 "xi-grammar.y"
+#line 288 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("long long"); }
     break;
 
   case 53:
-#line 289 "xi-grammar.y"
+#line 290 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("float"); }
     break;
 
   case 54:
-#line 291 "xi-grammar.y"
+#line 292 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("double"); }
     break;
 
   case 55:
-#line 293 "xi-grammar.y"
+#line 294 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("long double"); }
     break;
 
   case 56:
-#line 295 "xi-grammar.y"
+#line 296 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("void"); }
     break;
 
   case 57:
-#line 298 "xi-grammar.y"
+#line 299 "xi-grammar.y"
     { (yyval.ntype) = new NamedType((yyvsp[(1) - (2)].strval),(yyvsp[(2) - (2)].tparlist)); }
     break;
 
   case 58:
-#line 299 "xi-grammar.y"
+#line 300 "xi-grammar.y"
     { 
                     char* basename, *scope;
                     splitScopedName((yyvsp[(1) - (2)].strval), &scope, &basename);
@@ -2363,127 +2366,127 @@ yyreduce:
     break;
 
   case 59:
-#line 307 "xi-grammar.y"
+#line 308 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 60:
-#line 309 "xi-grammar.y"
+#line 310 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].ntype); }
     break;
 
   case 61:
-#line 313 "xi-grammar.y"
+#line 314 "xi-grammar.y"
     { (yyval.ptype) = new PtrType((yyvsp[(1) - (2)].type)); }
     break;
 
   case 62:
-#line 317 "xi-grammar.y"
+#line 318 "xi-grammar.y"
     { (yyvsp[(1) - (2)].ptype)->indirect(); (yyval.ptype) = (yyvsp[(1) - (2)].ptype); }
     break;
 
   case 63:
-#line 319 "xi-grammar.y"
+#line 320 "xi-grammar.y"
     { (yyvsp[(1) - (2)].ptype)->indirect(); (yyval.ptype) = (yyvsp[(1) - (2)].ptype); }
     break;
 
   case 64:
-#line 323 "xi-grammar.y"
+#line 324 "xi-grammar.y"
     { (yyval.ftype) = new FuncType((yyvsp[(1) - (8)].type), (yyvsp[(4) - (8)].strval), (yyvsp[(7) - (8)].plist)); }
     break;
 
   case 65:
-#line 327 "xi-grammar.y"
+#line 328 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 66:
-#line 329 "xi-grammar.y"
+#line 330 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
     break;
 
   case 67:
-#line 331 "xi-grammar.y"
+#line 332 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
     break;
 
   case 68:
-#line 333 "xi-grammar.y"
+#line 334 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].ftype); }
     break;
 
   case 69:
-#line 336 "xi-grammar.y"
+#line 337 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(2) - (2)].type); }
     break;
 
   case 70:
-#line 338 "xi-grammar.y"
+#line 339 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (2)].type); }
     break;
 
   case 71:
-#line 342 "xi-grammar.y"
+#line 343 "xi-grammar.y"
     { (yyval.type) = new ReferenceType((yyvsp[(1) - (2)].type)); }
     break;
 
   case 72:
-#line 344 "xi-grammar.y"
+#line 345 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 73:
-#line 348 "xi-grammar.y"
+#line 349 "xi-grammar.y"
     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 74:
-#line 350 "xi-grammar.y"
+#line 351 "xi-grammar.y"
     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 75:
-#line 354 "xi-grammar.y"
+#line 355 "xi-grammar.y"
     { (yyval.val) = (yyvsp[(2) - (3)].val); }
     break;
 
   case 76:
-#line 358 "xi-grammar.y"
+#line 359 "xi-grammar.y"
     { (yyval.vallist) = 0; }
     break;
 
   case 77:
-#line 360 "xi-grammar.y"
+#line 361 "xi-grammar.y"
     { (yyval.vallist) = new ValueList((yyvsp[(1) - (2)].val), (yyvsp[(2) - (2)].vallist)); }
     break;
 
   case 78:
-#line 364 "xi-grammar.y"
+#line 365 "xi-grammar.y"
     { (yyval.readonly) = new Readonly(lineno, (yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].strval), (yyvsp[(4) - (4)].vallist)); }
     break;
 
   case 79:
-#line 368 "xi-grammar.y"
+#line 369 "xi-grammar.y"
     { (yyval.readonly) = new Readonly(lineno, (yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].strval), 0, 1); }
     break;
 
   case 80:
-#line 372 "xi-grammar.y"
+#line 373 "xi-grammar.y"
     { (yyval.intval) = 0;}
     break;
 
   case 81:
-#line 374 "xi-grammar.y"
+#line 375 "xi-grammar.y"
     { (yyval.intval) = 0;}
     break;
 
   case 82:
-#line 378 "xi-grammar.y"
+#line 379 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 83:
-#line 380 "xi-grammar.y"
+#line 381 "xi-grammar.y"
     { 
                  /*
                  printf("Warning: Message attributes are being phased out.\n");
@@ -2494,177 +2497,177 @@ yyreduce:
     break;
 
   case 84:
-#line 390 "xi-grammar.y"
+#line 391 "xi-grammar.y"
     { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
     break;
 
   case 85:
-#line 392 "xi-grammar.y"
+#line 393 "xi-grammar.y"
     { (yyval.intval) = (yyvsp[(1) - (3)].intval) | (yyvsp[(3) - (3)].intval); }
     break;
 
   case 86:
-#line 396 "xi-grammar.y"
+#line 397 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 87:
-#line 398 "xi-grammar.y"
+#line 399 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 88:
-#line 402 "xi-grammar.y"
+#line 403 "xi-grammar.y"
     { (yyval.cattr) = 0; }
     break;
 
   case 89:
-#line 404 "xi-grammar.y"
+#line 405 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(2) - (3)].cattr); }
     break;
 
   case 90:
-#line 408 "xi-grammar.y"
+#line 409 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(1) - (1)].cattr); }
     break;
 
   case 91:
-#line 410 "xi-grammar.y"
+#line 411 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(1) - (3)].cattr) | (yyvsp[(3) - (3)].cattr); }
     break;
 
   case 92:
-#line 414 "xi-grammar.y"
+#line 415 "xi-grammar.y"
     { python_doc = NULL; (yyval.intval) = 0; }
     break;
 
   case 93:
-#line 416 "xi-grammar.y"
+#line 417 "xi-grammar.y"
     { python_doc = (yyvsp[(1) - (1)].strval); (yyval.intval) = 0; }
     break;
 
   case 94:
-#line 420 "xi-grammar.y"
+#line 421 "xi-grammar.y"
     { (yyval.cattr) = Chare::CPYTHON; }
     break;
 
   case 95:
-#line 424 "xi-grammar.y"
+#line 425 "xi-grammar.y"
     { (yyval.cattr) = 0; }
     break;
 
   case 96:
-#line 426 "xi-grammar.y"
+#line 427 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(2) - (3)].cattr); }
     break;
 
   case 97:
-#line 430 "xi-grammar.y"
+#line 431 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(1) - (1)].cattr); }
     break;
 
   case 98:
-#line 432 "xi-grammar.y"
+#line 433 "xi-grammar.y"
     { (yyval.cattr) = (yyvsp[(1) - (3)].cattr) | (yyvsp[(3) - (3)].cattr); }
     break;
 
   case 99:
-#line 436 "xi-grammar.y"
+#line 437 "xi-grammar.y"
     { (yyval.cattr) = Chare::CMIGRATABLE; }
     break;
 
   case 100:
-#line 438 "xi-grammar.y"
+#line 439 "xi-grammar.y"
     { (yyval.cattr) = Chare::CPYTHON; }
     break;
 
   case 101:
-#line 442 "xi-grammar.y"
+#line 443 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 102:
-#line 444 "xi-grammar.y"
+#line 445 "xi-grammar.y"
     { (yyval.intval) = 1; }
     break;
 
   case 103:
-#line 447 "xi-grammar.y"
+#line 448 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 104:
-#line 449 "xi-grammar.y"
+#line 450 "xi-grammar.y"
     { (yyval.intval) = 1; }
     break;
 
   case 105:
-#line 452 "xi-grammar.y"
+#line 453 "xi-grammar.y"
     { (yyval.mv) = new MsgVar((yyvsp[(2) - (5)].type), (yyvsp[(3) - (5)].strval), (yyvsp[(1) - (5)].intval), (yyvsp[(4) - (5)].intval)); }
     break;
 
   case 106:
-#line 456 "xi-grammar.y"
+#line 457 "xi-grammar.y"
     { (yyval.mvlist) = new MsgVarList((yyvsp[(1) - (1)].mv)); }
     break;
 
   case 107:
-#line 458 "xi-grammar.y"
+#line 459 "xi-grammar.y"
     { (yyval.mvlist) = new MsgVarList((yyvsp[(1) - (2)].mv), (yyvsp[(2) - (2)].mvlist)); }
     break;
 
   case 108:
-#line 462 "xi-grammar.y"
+#line 463 "xi-grammar.y"
     { (yyval.message) = new Message(lineno, (yyvsp[(3) - (3)].ntype)); }
     break;
 
   case 109:
-#line 464 "xi-grammar.y"
+#line 465 "xi-grammar.y"
     { (yyval.message) = new Message(lineno, (yyvsp[(3) - (6)].ntype), (yyvsp[(5) - (6)].mvlist)); }
     break;
 
   case 110:
-#line 468 "xi-grammar.y"
+#line 469 "xi-grammar.y"
     { (yyval.typelist) = 0; }
     break;
 
   case 111:
-#line 470 "xi-grammar.y"
+#line 471 "xi-grammar.y"
     { (yyval.typelist) = (yyvsp[(2) - (2)].typelist); }
     break;
 
   case 112:
-#line 474 "xi-grammar.y"
+#line 475 "xi-grammar.y"
     { (yyval.typelist) = new TypeList((yyvsp[(1) - (1)].ntype)); }
     break;
 
   case 113:
-#line 476 "xi-grammar.y"
+#line 477 "xi-grammar.y"
     { (yyval.typelist) = new TypeList((yyvsp[(1) - (3)].ntype), (yyvsp[(3) - (3)].typelist)); }
     break;
 
   case 114:
-#line 480 "xi-grammar.y"
+#line 481 "xi-grammar.y"
     { (yyval.chare) = new Chare(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 115:
-#line 482 "xi-grammar.y"
+#line 483 "xi-grammar.y"
     { (yyval.chare) = new MainChare(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 116:
-#line 486 "xi-grammar.y"
+#line 487 "xi-grammar.y"
     { (yyval.chare) = new Group(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 117:
-#line 490 "xi-grammar.y"
+#line 491 "xi-grammar.y"
     { (yyval.chare) = new NodeGroup(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 118:
-#line 494 "xi-grammar.y"
+#line 495 "xi-grammar.y"
     {/*Stupid special case for [1D] indices*/
                        char *buf=new char[40];
                        sprintf(buf,"%sD",(yyvsp[(2) - (4)].strval));
@@ -2673,147 +2676,147 @@ yyreduce:
     break;
 
   case 119:
-#line 500 "xi-grammar.y"
+#line 501 "xi-grammar.y"
     { (yyval.ntype) = new NamedType((yyvsp[(2) - (3)].strval)); }
     break;
 
   case 120:
-#line 504 "xi-grammar.y"
+#line 505 "xi-grammar.y"
     {  (yyval.chare) = new Array(lineno, (yyvsp[(2) - (6)].cattr), (yyvsp[(3) - (6)].ntype), (yyvsp[(4) - (6)].ntype), (yyvsp[(5) - (6)].typelist), (yyvsp[(6) - (6)].mbrlist)); }
     break;
 
   case 121:
-#line 506 "xi-grammar.y"
+#line 507 "xi-grammar.y"
     {  (yyval.chare) = new Array(lineno, (yyvsp[(3) - (6)].cattr), (yyvsp[(2) - (6)].ntype), (yyvsp[(4) - (6)].ntype), (yyvsp[(5) - (6)].typelist), (yyvsp[(6) - (6)].mbrlist)); }
     break;
 
   case 122:
-#line 510 "xi-grammar.y"
+#line 511 "xi-grammar.y"
     { (yyval.chare) = new Chare(lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));}
     break;
 
   case 123:
-#line 512 "xi-grammar.y"
+#line 513 "xi-grammar.y"
     { (yyval.chare) = new MainChare(lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 124:
-#line 516 "xi-grammar.y"
+#line 517 "xi-grammar.y"
     { (yyval.chare) = new Group(lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 125:
-#line 520 "xi-grammar.y"
+#line 521 "xi-grammar.y"
     { (yyval.chare) = new NodeGroup( lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 126:
-#line 524 "xi-grammar.y"
+#line 525 "xi-grammar.y"
     { (yyval.chare) = new Array( lineno, 0, (yyvsp[(2) - (5)].ntype), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist)); }
     break;
 
   case 127:
-#line 528 "xi-grammar.y"
+#line 529 "xi-grammar.y"
     { (yyval.message) = new Message(lineno, new NamedType((yyvsp[(3) - (4)].strval))); }
     break;
 
   case 128:
-#line 530 "xi-grammar.y"
+#line 531 "xi-grammar.y"
     { (yyval.message) = new Message(lineno, new NamedType((yyvsp[(3) - (7)].strval)), (yyvsp[(5) - (7)].mvlist)); }
     break;
 
   case 129:
-#line 534 "xi-grammar.y"
+#line 535 "xi-grammar.y"
     { (yyval.type) = 0; }
     break;
 
   case 130:
-#line 536 "xi-grammar.y"
+#line 537 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(2) - (2)].type); }
     break;
 
   case 131:
-#line 540 "xi-grammar.y"
+#line 541 "xi-grammar.y"
     { (yyval.strval) = 0; }
     break;
 
   case 132:
-#line 542 "xi-grammar.y"
+#line 543 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(2) - (2)].strval); }
     break;
 
   case 133:
-#line 544 "xi-grammar.y"
+#line 545 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(2) - (2)].strval); }
     break;
 
   case 134:
-#line 548 "xi-grammar.y"
+#line 549 "xi-grammar.y"
     { (yyval.tvar) = new TType(new NamedType((yyvsp[(2) - (3)].strval)), (yyvsp[(3) - (3)].type)); }
     break;
 
   case 135:
-#line 550 "xi-grammar.y"
+#line 551 "xi-grammar.y"
     { (yyval.tvar) = new TFunc((yyvsp[(1) - (2)].ftype), (yyvsp[(2) - (2)].strval)); }
     break;
 
   case 136:
-#line 552 "xi-grammar.y"
+#line 553 "xi-grammar.y"
     { (yyval.tvar) = new TName((yyvsp[(1) - (3)].type), (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].strval)); }
     break;
 
   case 137:
-#line 556 "xi-grammar.y"
+#line 557 "xi-grammar.y"
     { (yyval.tvarlist) = new TVarList((yyvsp[(1) - (1)].tvar)); }
     break;
 
   case 138:
-#line 558 "xi-grammar.y"
+#line 559 "xi-grammar.y"
     { (yyval.tvarlist) = new TVarList((yyvsp[(1) - (3)].tvar), (yyvsp[(3) - (3)].tvarlist)); }
     break;
 
   case 139:
-#line 562 "xi-grammar.y"
+#line 563 "xi-grammar.y"
     { (yyval.tvarlist) = (yyvsp[(3) - (4)].tvarlist); }
     break;
 
   case 140:
-#line 566 "xi-grammar.y"
+#line 567 "xi-grammar.y"
     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
     break;
 
   case 141:
-#line 568 "xi-grammar.y"
+#line 569 "xi-grammar.y"
     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
     break;
 
   case 142:
-#line 570 "xi-grammar.y"
+#line 571 "xi-grammar.y"
     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
     break;
 
   case 143:
-#line 572 "xi-grammar.y"
+#line 573 "xi-grammar.y"
     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
     break;
 
   case 144:
-#line 574 "xi-grammar.y"
+#line 575 "xi-grammar.y"
     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].message)); (yyvsp[(2) - (2)].message)->setTemplate((yyval.templat)); }
     break;
 
   case 145:
-#line 578 "xi-grammar.y"
+#line 579 "xi-grammar.y"
     { (yyval.mbrlist) = 0; }
     break;
 
   case 146:
-#line 580 "xi-grammar.y"
+#line 581 "xi-grammar.y"
     { (yyval.mbrlist) = (yyvsp[(2) - (4)].mbrlist); }
     break;
 
   case 147:
-#line 584 "xi-grammar.y"
+#line 585 "xi-grammar.y"
     { 
                  Entry *tempEntry;
                  if (!connectEntries->empty()) {
@@ -2835,74 +2838,74 @@ yyreduce:
     break;
 
   case 148:
-#line 603 "xi-grammar.y"
+#line 604 "xi-grammar.y"
     { (yyval.mbrlist) = new MemberList((yyvsp[(1) - (2)].member), (yyvsp[(2) - (2)].mbrlist)); }
     break;
 
   case 149:
-#line 607 "xi-grammar.y"
+#line 608 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(1) - (2)].readonly); }
     break;
 
   case 150:
-#line 609 "xi-grammar.y"
+#line 610 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(1) - (2)].readonly); }
     break;
 
   case 152:
-#line 612 "xi-grammar.y"
+#line 613 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(1) - (2)].member); }
     break;
 
   case 153:
-#line 614 "xi-grammar.y"
+#line 615 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(2) - (3)].pupable); }
     break;
 
   case 154:
-#line 616 "xi-grammar.y"
+#line 617 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(2) - (3)].includeFile); }
     break;
 
   case 155:
-#line 618 "xi-grammar.y"
+#line 619 "xi-grammar.y"
     { (yyval.member) = new ClassDeclaration(lineno,(yyvsp[(2) - (3)].strval)); }
     break;
 
   case 156:
-#line 622 "xi-grammar.y"
+#line 623 "xi-grammar.y"
     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 1); }
     break;
 
   case 157:
-#line 624 "xi-grammar.y"
+#line 625 "xi-grammar.y"
     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 1); }
     break;
 
   case 158:
-#line 626 "xi-grammar.y"
+#line 627 "xi-grammar.y"
     { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n"); 
                  (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 1); }
     break;
 
   case 159:
-#line 629 "xi-grammar.y"
+#line 630 "xi-grammar.y"
     { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n");
                  (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 1); }
     break;
 
   case 160:
-#line 634 "xi-grammar.y"
+#line 635 "xi-grammar.y"
     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 0); }
     break;
 
   case 161:
-#line 636 "xi-grammar.y"
+#line 637 "xi-grammar.y"
     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 0); }
     break;
 
   case 162:
-#line 638 "xi-grammar.y"
+#line 639 "xi-grammar.y"
     {
                   InitCall* rtn = new InitCall(lineno, (yyvsp[(6) - (9)].strval), 0);
                   rtn->setAccel();
@@ -2911,32 +2914,32 @@ yyreduce:
     break;
 
   case 163:
-#line 646 "xi-grammar.y"
+#line 647 "xi-grammar.y"
     { (yyval.pupable) = new PUPableClass(lineno,(yyvsp[(1) - (1)].ntype),0); }
     break;
 
   case 164:
-#line 648 "xi-grammar.y"
+#line 649 "xi-grammar.y"
     { (yyval.pupable) = new PUPableClass(lineno,(yyvsp[(1) - (3)].ntype),(yyvsp[(3) - (3)].pupable)); }
     break;
 
   case 165:
-#line 651 "xi-grammar.y"
+#line 652 "xi-grammar.y"
     { (yyval.includeFile) = new IncludeFile(lineno,(yyvsp[(1) - (1)].strval)); }
     break;
 
   case 166:
-#line 655 "xi-grammar.y"
+#line 656 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(1) - (2)].entry); }
     break;
 
   case 167:
-#line 657 "xi-grammar.y"
+#line 658 "xi-grammar.y"
     { (yyval.member) = (yyvsp[(1) - (1)].member); }
     break;
 
   case 168:
-#line 661 "xi-grammar.y"
+#line 662 "xi-grammar.y"
     { 
                  if ((yyvsp[(7) - (7)].sc) != 0) { 
                    (yyvsp[(7) - (7)].sc)->con1 = new SdagConstruct(SIDENT, (yyvsp[(4) - (7)].strval));
@@ -2950,7 +2953,7 @@ yyreduce:
     break;
 
   case 169:
-#line 672 "xi-grammar.y"
+#line 673 "xi-grammar.y"
     { 
                  if ((yyvsp[(5) - (5)].sc) != 0) {
                    (yyvsp[(5) - (5)].sc)->con1 = new SdagConstruct(SIDENT, (yyvsp[(3) - (5)].strval));
@@ -2964,7 +2967,7 @@ yyreduce:
     break;
 
   case 170:
-#line 683 "xi-grammar.y"
+#line 684 "xi-grammar.y"
     {
                   int attribs = SACCEL;
                   char* name = (yyvsp[(6) - (12)].strval);
@@ -2983,137 +2986,142 @@ yyreduce:
     break;
 
   case 171:
-#line 701 "xi-grammar.y"
+#line 702 "xi-grammar.y"
     { (yyval.accelBlock) = new AccelBlock(lineno, new XStr((yyvsp[(3) - (5)].strval))); }
     break;
 
   case 172:
-#line 703 "xi-grammar.y"
+#line 704 "xi-grammar.y"
     { (yyval.accelBlock) = new AccelBlock(lineno, NULL); }
     break;
 
   case 173:
-#line 707 "xi-grammar.y"
+#line 708 "xi-grammar.y"
     { (yyval.type) = new BuiltinType("void"); }
     break;
 
   case 174:
-#line 709 "xi-grammar.y"
+#line 710 "xi-grammar.y"
     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
     break;
 
   case 175:
-#line 713 "xi-grammar.y"
+#line 714 "xi-grammar.y"
     { (yyval.intval) = 0; }
     break;
 
   case 176:
-#line 715 "xi-grammar.y"
+#line 716 "xi-grammar.y"
     { (yyval.intval) = (yyvsp[(2) - (3)].intval); }
     break;
 
   case 177:
-#line 719 "xi-grammar.y"
+#line 720 "xi-grammar.y"
     { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
     break;
 
   case 178:
-#line 721 "xi-grammar.y"
+#line 722 "xi-grammar.y"
     { (yyval.intval) = (yyvsp[(1) - (3)].intval) | (yyvsp[(3) - (3)].intval); }
     break;
 
   case 179:
-#line 725 "xi-grammar.y"
+#line 726 "xi-grammar.y"
     { (yyval.intval) = STHREADED; }
     break;
 
   case 180:
-#line 727 "xi-grammar.y"
+#line 728 "xi-grammar.y"
     { (yyval.intval) = SSYNC; }
     break;
 
   case 181:
-#line 729 "xi-grammar.y"
+#line 730 "xi-grammar.y"
     { (yyval.intval) = SIGET; }
     break;
 
   case 182:
-#line 731 "xi-grammar.y"
+#line 732 "xi-grammar.y"
     { (yyval.intval) = SLOCKED; }
     break;
 
   case 183:
-#line 733 "xi-grammar.y"
+#line 734 "xi-grammar.y"
     { (yyval.intval) = SCREATEHERE; }
     break;
 
   case 184:
-#line 735 "xi-grammar.y"
+#line 736 "xi-grammar.y"
     { (yyval.intval) = SCREATEHOME; }
     break;
 
   case 185:
-#line 737 "xi-grammar.y"
+#line 738 "xi-grammar.y"
     { (yyval.intval) = SNOKEEP; }
     break;
 
   case 186:
-#line 739 "xi-grammar.y"
+#line 740 "xi-grammar.y"
     { (yyval.intval) = SNOTRACE; }
     break;
 
   case 187:
-#line 741 "xi-grammar.y"
+#line 742 "xi-grammar.y"
     { (yyval.intval) = SIMMEDIATE; }
     break;
 
   case 188:
-#line 743 "xi-grammar.y"
+#line 744 "xi-grammar.y"
     { (yyval.intval) = SSKIPSCHED; }
     break;
 
   case 189:
-#line 745 "xi-grammar.y"
+#line 746 "xi-grammar.y"
     { (yyval.intval) = SINLINE; }
     break;
 
   case 190:
-#line 747 "xi-grammar.y"
+#line 748 "xi-grammar.y"
     { (yyval.intval) = SLOCAL; }
     break;
 
   case 191:
-#line 749 "xi-grammar.y"
+#line 750 "xi-grammar.y"
     { (yyval.intval) = SPYTHON; }
     break;
 
   case 192:
-#line 753 "xi-grammar.y"
-    { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
+#line 752 "xi-grammar.y"
+    { (yyval.intval) = SMEM; }
     break;
 
   case 193:
-#line 755 "xi-grammar.y"
+#line 756 "xi-grammar.y"
     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 194:
-#line 757 "xi-grammar.y"
+#line 758 "xi-grammar.y"
     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 195:
-#line 761 "xi-grammar.y"
-    { (yyval.strval) = ""; }
+#line 760 "xi-grammar.y"
+    { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
     break;
 
   case 196:
-#line 763 "xi-grammar.y"
-    { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
+#line 764 "xi-grammar.y"
+    { (yyval.strval) = ""; }
     break;
 
   case 197:
-#line 765 "xi-grammar.y"
+#line 766 "xi-grammar.y"
+    { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
+    break;
+
+  case 198:
+#line 768 "xi-grammar.y"
     {  /*Returned only when in_bracket*/
                        char *tmp = new char[strlen((yyvsp[(1) - (3)].strval))+strlen((yyvsp[(3) - (3)].strval))+3];
                        sprintf(tmp,"%s, %s", (yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval));
@@ -3121,18 +3129,18 @@ yyreduce:
                }
     break;
 
-  case 198:
-#line 773 "xi-grammar.y"
+  case 199:
+#line 776 "xi-grammar.y"
     { (yyval.strval) = ""; }
     break;
 
-  case 199:
-#line 775 "xi-grammar.y"
+  case 200:
+#line 778 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
     break;
 
-  case 200:
-#line 777 "xi-grammar.y"
+  case 201:
+#line 780 "xi-grammar.y"
     {  /*Returned only when in_bracket*/
                        char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
                        sprintf(tmp,"%s[%s]%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
@@ -3140,8 +3148,8 @@ yyreduce:
                }
     break;
 
-  case 201:
-#line 783 "xi-grammar.y"
+  case 202:
+#line 786 "xi-grammar.y"
     { /*Returned only when in_braces*/
                        char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
                        sprintf(tmp,"%s{%s}%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
@@ -3149,8 +3157,8 @@ yyreduce:
                }
     break;
 
-  case 202:
-#line 789 "xi-grammar.y"
+  case 203:
+#line 792 "xi-grammar.y"
     { /*Returned only when in_braces*/
                        char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
                        sprintf(tmp,"%s(%s)%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
@@ -3158,8 +3166,8 @@ yyreduce:
                }
     break;
 
-  case 203:
-#line 795 "xi-grammar.y"
+  case 204:
+#line 798 "xi-grammar.y"
     { /*Returned only when in_braces*/
                        char *tmp = new char[strlen((yyvsp[(2) - (4)].strval))+strlen((yyvsp[(4) - (4)].strval))+3];
                        sprintf(tmp,"(%s)%s", (yyvsp[(2) - (4)].strval), (yyvsp[(4) - (4)].strval));
@@ -3167,16 +3175,16 @@ yyreduce:
                }
     break;
 
-  case 204:
-#line 803 "xi-grammar.y"
+  case 205:
+#line 806 "xi-grammar.y"
     {  /*Start grabbing CPROGRAM segments*/
                        in_bracket=1;
                        (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].type),(yyvsp[(2) - (3)].strval));
                }
     break;
 
-  case 205:
-#line 810 "xi-grammar.y"
+  case 206:
+#line 813 "xi-grammar.y"
     { 
                    /*Start grabbing CPROGRAM segments*/
                        in_braces=1;
@@ -3184,69 +3192,69 @@ yyreduce:
                }
     break;
 
-  case 206:
-#line 818 "xi-grammar.y"
+  case 207:
+#line 821 "xi-grammar.y"
     { 
                        in_braces=0;
                        (yyval.intval) = 0;
                }
     break;
 
-  case 207:
-#line 825 "xi-grammar.y"
+  case 208:
+#line 828 "xi-grammar.y"
     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (1)].type));}
     break;
 
-  case 208:
-#line 827 "xi-grammar.y"
+  case 209:
+#line 830 "xi-grammar.y"
     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].type),(yyvsp[(2) - (3)].strval)); (yyval.pname)->setConditional((yyvsp[(3) - (3)].intval)); }
     break;
 
-  case 209:
-#line 829 "xi-grammar.y"
+  case 210:
+#line 832 "xi-grammar.y"
     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (4)].type),(yyvsp[(2) - (4)].strval),0,(yyvsp[(4) - (4)].val));}
     break;
 
-  case 210:
-#line 831 "xi-grammar.y"
+  case 211:
+#line 834 "xi-grammar.y"
     { /*Stop grabbing CPROGRAM segments*/
                        in_bracket=0;
                        (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].pname)->getType(), (yyvsp[(1) - (3)].pname)->getName() ,(yyvsp[(2) - (3)].strval));
                }
     break;
 
-  case 211:
-#line 837 "xi-grammar.y"
+  case 212:
+#line 840 "xi-grammar.y"
     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_READONLY; }
     break;
 
-  case 212:
-#line 838 "xi-grammar.y"
+  case 213:
+#line 841 "xi-grammar.y"
     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_READWRITE; }
     break;
 
-  case 213:
-#line 839 "xi-grammar.y"
+  case 214:
+#line 842 "xi-grammar.y"
     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_WRITEONLY; }
     break;
 
-  case 214:
-#line 842 "xi-grammar.y"
+  case 215:
+#line 845 "xi-grammar.y"
     { (yyval.xstrptr) = new XStr((yyvsp[(1) - (1)].strval)); }
     break;
 
-  case 215:
-#line 843 "xi-grammar.y"
+  case 216:
+#line 846 "xi-grammar.y"
     { (yyval.xstrptr) = new XStr(""); *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "->" << (yyvsp[(4) - (4)].strval); }
     break;
 
-  case 216:
-#line 844 "xi-grammar.y"
+  case 217:
+#line 847 "xi-grammar.y"
     { (yyval.xstrptr) = new XStr(""); *((yyval.xstrptr)) << *((yyvsp[(1) - (3)].xstrptr)) << "." << (yyvsp[(3) - (3)].strval); }
     break;
 
-  case 217:
-#line 846 "xi-grammar.y"
+  case 218:
+#line 849 "xi-grammar.y"
     {
                   (yyval.xstrptr) = new XStr("");
                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "[" << *((yyvsp[(3) - (4)].xstrptr)) << "]";
@@ -3255,8 +3263,8 @@ yyreduce:
                 }
     break;
 
-  case 218:
-#line 853 "xi-grammar.y"
+  case 219:
+#line 856 "xi-grammar.y"
     {
                   (yyval.xstrptr) = new XStr("");
                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "[" << (yyvsp[(3) - (4)].strval) << "]";
@@ -3264,8 +3272,8 @@ yyreduce:
                 }
     break;
 
-  case 219:
-#line 859 "xi-grammar.y"
+  case 220:
+#line 862 "xi-grammar.y"
     {
                   (yyval.xstrptr) = new XStr("");
                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "(" << *((yyvsp[(3) - (4)].xstrptr)) << ")";
@@ -3274,16 +3282,16 @@ yyreduce:
                 }
     break;
 
-  case 220:
-#line 868 "xi-grammar.y"
+  case 221:
+#line 871 "xi-grammar.y"
     {
                   in_bracket = 0;
                   (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].pname)->getType(), (yyvsp[(1) - (3)].pname)->getName(), (yyvsp[(2) - (3)].strval));
                 }
     break;
 
-  case 221:
-#line 875 "xi-grammar.y"
+  case 222:
+#line 878 "xi-grammar.y"
     {
                   (yyval.pname) = new Parameter(lineno, (yyvsp[(3) - (7)].type), (yyvsp[(4) - (7)].strval));
                   (yyval.pname)->setAccelInstName((yyvsp[(6) - (7)].xstrptr));
@@ -3291,8 +3299,8 @@ yyreduce:
                 }
     break;
 
-  case 222:
-#line 881 "xi-grammar.y"
+  case 223:
+#line 884 "xi-grammar.y"
     {
                  (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (5)].type), (yyvsp[(2) - (5)].strval));
                   (yyval.pname)->setAccelInstName((yyvsp[(4) - (5)].xstrptr));
@@ -3300,8 +3308,8 @@ yyreduce:
                }
     break;
 
-  case 223:
-#line 887 "xi-grammar.y"
+  case 224:
+#line 890 "xi-grammar.y"
     {
                   (yyval.pname) = (yyvsp[(3) - (6)].pname);
                   (yyval.pname)->setAccelInstName((yyvsp[(5) - (6)].xstrptr));
@@ -3309,131 +3317,131 @@ yyreduce:
                }
     break;
 
-  case 224:
-#line 895 "xi-grammar.y"
+  case 225:
+#line 898 "xi-grammar.y"
     { (yyval.plist) = new ParamList((yyvsp[(1) - (1)].pname)); }
     break;
 
-  case 225:
-#line 897 "xi-grammar.y"
+  case 226:
+#line 900 "xi-grammar.y"
     { (yyval.plist) = new ParamList((yyvsp[(1) - (3)].pname),(yyvsp[(3) - (3)].plist)); }
     break;
 
-  case 226:
-#line 901 "xi-grammar.y"
+  case 227:
+#line 904 "xi-grammar.y"
     { (yyval.plist) = new ParamList((yyvsp[(1) - (1)].pname)); }
     break;
 
-  case 227:
-#line 903 "xi-grammar.y"
+  case 228:
+#line 906 "xi-grammar.y"
     { (yyval.plist) = new ParamList((yyvsp[(1) - (3)].pname),(yyvsp[(3) - (3)].plist)); }
     break;
 
-  case 228:
-#line 907 "xi-grammar.y"
+  case 229:
+#line 910 "xi-grammar.y"
     { (yyval.plist) = (yyvsp[(2) - (3)].plist); }
     break;
 
-  case 229:
-#line 909 "xi-grammar.y"
+  case 230:
+#line 912 "xi-grammar.y"
     { (yyval.plist) = 0; }
     break;
 
-  case 230:
-#line 913 "xi-grammar.y"
+  case 231:
+#line 916 "xi-grammar.y"
     { (yyval.plist) = (yyvsp[(2) - (3)].plist); }
     break;
 
-  case 231:
-#line 915 "xi-grammar.y"
+  case 232:
+#line 918 "xi-grammar.y"
     { (yyval.plist) = 0; }
     break;
 
-  case 232:
-#line 919 "xi-grammar.y"
+  case 233:
+#line 922 "xi-grammar.y"
     { (yyval.val) = 0; }
     break;
 
-  case 233:
-#line 921 "xi-grammar.y"
+  case 234:
+#line 924 "xi-grammar.y"
     { (yyval.val) = new Value((yyvsp[(3) - (3)].strval)); }
     break;
 
-  case 234:
-#line 925 "xi-grammar.y"
+  case 235:
+#line 928 "xi-grammar.y"
     { (yyval.sc) = 0; }
     break;
 
-  case 235:
-#line 927 "xi-grammar.y"
+  case 236:
+#line 930 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SSDAGENTRY, (yyvsp[(1) - (1)].sc)); }
     break;
 
-  case 236:
-#line 929 "xi-grammar.y"
+  case 237:
+#line 932 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SSDAGENTRY, (yyvsp[(2) - (3)].sc)); }
     break;
 
-  case 237:
-#line 933 "xi-grammar.y"
+  case 238:
+#line 936 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SSLIST, (yyvsp[(1) - (1)].sc)); }
     break;
 
-  case 238:
-#line 935 "xi-grammar.y"
+  case 239:
+#line 938 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SSLIST, (yyvsp[(1) - (2)].sc), (yyvsp[(2) - (2)].sc));  }
     break;
 
-  case 239:
-#line 939 "xi-grammar.y"
+  case 240:
+#line 942 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SOLIST, (yyvsp[(1) - (1)].sc)); }
     break;
 
-  case 240:
-#line 941 "xi-grammar.y"
+  case 241:
+#line 944 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SOLIST, (yyvsp[(1) - (2)].sc), (yyvsp[(2) - (2)].sc)); }
     break;
 
-  case 241:
-#line 945 "xi-grammar.y"
+  case 242:
+#line 948 "xi-grammar.y"
     { (yyval.sc) = 0; }
     break;
 
-  case 242:
-#line 947 "xi-grammar.y"
+  case 243:
+#line 950 "xi-grammar.y"
     { (yyval.sc) = (yyvsp[(3) - (4)].sc); }
     break;
 
-  case 243:
-#line 951 "xi-grammar.y"
+  case 244:
+#line 954 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, (yyvsp[(1) - (1)].strval))); }
     break;
 
-  case 244:
-#line 953 "xi-grammar.y"
+  case 245:
+#line 956 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, (yyvsp[(1) - (3)].strval)), (yyvsp[(3) - (3)].sc));  }
     break;
 
-  case 245:
-#line 957 "xi-grammar.y"
+  case 246:
+#line 960 "xi-grammar.y"
     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
     break;
 
-  case 246:
-#line 959 "xi-grammar.y"
+  case 247:
+#line 962 "xi-grammar.y"
     { (yyval.strval) = 0; }
     break;
 
-  case 247:
-#line 963 "xi-grammar.y"
+  case 248:
+#line 966 "xi-grammar.y"
     { RemoveSdagComments((yyvsp[(4) - (6)].strval));
                   (yyval.sc) = new SdagConstruct(SATOMIC, new XStr((yyvsp[(4) - (6)].strval)), (yyvsp[(6) - (6)].sc), 0,0,0,0, 0 ); 
                   if ((yyvsp[(2) - (6)].strval)) { (yyvsp[(2) - (6)].strval)[strlen((yyvsp[(2) - (6)].strval))-1]=0; (yyval.sc)->traceName = new XStr((yyvsp[(2) - (6)].strval)+1); }
                 }
     break;
 
-  case 248:
-#line 968 "xi-grammar.y"
+  case 249:
+#line 971 "xi-grammar.y"
     {  
                   in_braces = 0;
                   if (((yyvsp[(4) - (8)].plist)->isVoid() == 0) && ((yyvsp[(4) - (8)].plist)->isMessage() == 0))
@@ -3449,119 +3457,119 @@ yyreduce:
                }
     break;
 
-  case 249:
-#line 982 "xi-grammar.y"
+  case 250:
+#line 985 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0,0,0,0,0,(yyvsp[(2) - (4)].entrylist)); }
     break;
 
-  case 250:
-#line 984 "xi-grammar.y"
+  case 251:
+#line 987 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0, 0,0,0, (yyvsp[(3) - (3)].sc), (yyvsp[(2) - (3)].entrylist)); }
     break;
 
-  case 251:
-#line 986 "xi-grammar.y"
+  case 252:
+#line 989 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0, 0,0,0, (yyvsp[(4) - (5)].sc), (yyvsp[(2) - (5)].entrylist)); }
     break;
 
-  case 252:
-#line 988 "xi-grammar.y"
+  case 253:
+#line 991 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SOVERLAP,0, 0,0,0,0,(yyvsp[(3) - (4)].sc), 0); }
     break;
 
-  case 253:
-#line 990 "xi-grammar.y"
+  case 254:
+#line 993 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (11)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(5) - (11)].strval)),
                             new SdagConstruct(SINT_EXPR, (yyvsp[(7) - (11)].strval)), 0, (yyvsp[(10) - (11)].sc), 0); }
     break;
 
-  case 254:
-#line 993 "xi-grammar.y"
+  case 255:
+#line 996 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (9)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(5) - (9)].strval)), 
                         new SdagConstruct(SINT_EXPR, (yyvsp[(7) - (9)].strval)), 0, (yyvsp[(9) - (9)].sc), 0); }
     break;
 
-  case 255:
-#line 996 "xi-grammar.y"
+  case 256:
+#line 999 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, (yyvsp[(3) - (12)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(6) - (12)].strval)), 
                             new SdagConstruct(SINT_EXPR, (yyvsp[(8) - (12)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(10) - (12)].strval)), (yyvsp[(12) - (12)].sc), 0); }
     break;
 
-  case 256:
-#line 999 "xi-grammar.y"
+  case 257:
+#line 1002 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, (yyvsp[(3) - (14)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(6) - (14)].strval)), 
                                 new SdagConstruct(SINT_EXPR, (yyvsp[(8) - (14)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(10) - (14)].strval)), (yyvsp[(13) - (14)].sc), 0); }
     break;
 
-  case 257:
-#line 1002 "xi-grammar.y"
+  case 258:
+#line 1005 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (6)].strval)), (yyvsp[(6) - (6)].sc),0,0,(yyvsp[(5) - (6)].sc),0); }
     break;
 
-  case 258:
-#line 1004 "xi-grammar.y"
+  case 259:
+#line 1007 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (8)].strval)), (yyvsp[(8) - (8)].sc),0,0,(yyvsp[(6) - (8)].sc),0); }
     break;
 
-  case 259:
-#line 1006 "xi-grammar.y"
+  case 260:
+#line 1009 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (5)].strval)), 0,0,0,(yyvsp[(5) - (5)].sc),0); }
     break;
 
-  case 260:
-#line 1008 "xi-grammar.y"
+  case 261:
+#line 1011 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SWHILE, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (7)].strval)), 0,0,0,(yyvsp[(6) - (7)].sc),0); }
     break;
 
-  case 261:
-#line 1010 "xi-grammar.y"
+  case 262:
+#line 1013 "xi-grammar.y"
     { (yyval.sc) = (yyvsp[(2) - (3)].sc); }
     break;
 
-  case 262:
-#line 1012 "xi-grammar.y"
+  case 263:
+#line 1015 "xi-grammar.y"
     { RemoveSdagComments((yyvsp[(2) - (3)].strval));
                    (yyval.sc) = new SdagConstruct(SATOMIC, new XStr((yyvsp[(2) - (3)].strval)), NULL, 0,0,0,0, 0 );
                  }
     break;
 
-  case 263:
-#line 1018 "xi-grammar.y"
+  case 264:
+#line 1021 "xi-grammar.y"
     { (yyval.sc) = 0; }
     break;
 
-  case 264:
-#line 1020 "xi-grammar.y"
+  case 265:
+#line 1023 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SELSE, 0,0,0,0,0, (yyvsp[(2) - (2)].sc),0); }
     break;
 
-  case 265:
-#line 1022 "xi-grammar.y"
+  case 266:
+#line 1025 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SELSE, 0,0,0,0,0, (yyvsp[(3) - (4)].sc),0); }
     break;
 
-  case 266:
-#line 1025 "xi-grammar.y"
+  case 267:
+#line 1028 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, (yyvsp[(1) - (1)].strval))); }
     break;
 
-  case 267:
-#line 1027 "xi-grammar.y"
+  case 268:
+#line 1030 "xi-grammar.y"
     { (yyval.sc) = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, (yyvsp[(1) - (3)].strval)), (yyvsp[(3) - (3)].sc));  }
     break;
 
-  case 268:
-#line 1031 "xi-grammar.y"
+  case 269:
+#line 1034 "xi-grammar.y"
     { in_int_expr = 0; (yyval.intval) = 0; }
     break;
 
-  case 269:
-#line 1035 "xi-grammar.y"
+  case 270:
+#line 1038 "xi-grammar.y"
     { in_int_expr = 1; (yyval.intval) = 0; }
     break;
 
-  case 270:
-#line 1039 "xi-grammar.y"
+  case 271:
+#line 1042 "xi-grammar.y"
     { 
                  if ((yyvsp[(2) - (2)].plist) != 0)
                     (yyval.entry) = new Entry(lineno, 0, 0, (yyvsp[(1) - (2)].strval), (yyvsp[(2) - (2)].plist), 0, 0, 0, 0); 
@@ -3571,8 +3579,8 @@ yyreduce:
                }
     break;
 
-  case 271:
-#line 1047 "xi-grammar.y"
+  case 272:
+#line 1050 "xi-grammar.y"
     { if ((yyvsp[(5) - (5)].plist) != 0)
                    (yyval.entry) = new Entry(lineno, 0, 0, (yyvsp[(1) - (5)].strval), (yyvsp[(5) - (5)].plist), 0, 0, (yyvsp[(3) - (5)].strval), 0); 
                  else
@@ -3580,39 +3588,39 @@ yyreduce:
                }
     break;
 
-  case 272:
-#line 1055 "xi-grammar.y"
+  case 273:
+#line 1058 "xi-grammar.y"
     { (yyval.entrylist) = new EntryList((yyvsp[(1) - (1)].entry)); }
     break;
 
-  case 273:
-#line 1057 "xi-grammar.y"
+  case 274:
+#line 1060 "xi-grammar.y"
     { (yyval.entrylist) = new EntryList((yyvsp[(1) - (3)].entry),(yyvsp[(3) - (3)].entrylist)); }
     break;
 
-  case 274:
-#line 1061 "xi-grammar.y"
+  case 275:
+#line 1064 "xi-grammar.y"
     { in_bracket=1; }
     break;
 
-  case 275:
-#line 1064 "xi-grammar.y"
+  case 276:
+#line 1067 "xi-grammar.y"
     { in_bracket=0; }
     break;
 
-  case 276:
-#line 1068 "xi-grammar.y"
+  case 277:
+#line 1071 "xi-grammar.y"
     { if (!macroDefined((yyvsp[(2) - (2)].strval), 1)) in_comment = 1; }
     break;
 
-  case 277:
-#line 1072 "xi-grammar.y"
+  case 278:
+#line 1075 "xi-grammar.y"
     { if (!macroDefined((yyvsp[(2) - (2)].strval), 0)) in_comment = 1; }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3616 "y.tab.c"
+#line 3624 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3826,7 +3834,7 @@ yyreturn:
 }
 
 
-#line 1075 "xi-grammar.y"
+#line 1078 "xi-grammar.y"
 
 void yyerror(const char *mesg)
 {
index 9fb2b4c48c170793163e9d83c44a1bfc38e9cd2c..fb51380e096eb63267024ed03f68077580dc347e 100644 (file)
      ACCEL = 323,
      READWRITE = 324,
      WRITEONLY = 325,
-     ACCELBLOCK = 326
+     ACCELBLOCK = 326,
+     MEMCRITICAL = 327
    };
 #endif
 /* Tokens.  */
 #define READWRITE 324
 #define WRITEONLY 325
 #define ACCELBLOCK 326
+#define MEMCRITICAL 327
 
 
 
@@ -225,7 +227,7 @@ typedef union YYSTYPE
   AccelBlock* accelBlock;
 }
 /* Line 1489 of yacc.c.  */
-#line 229 "y.tab.h"
+#line 231 "y.tab.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index d7f71a3d6dd9bd5701945e48ab9e1901f7705d43..aa4feaf9d127f067e5685f71bb383dda0f1dfc08 100644 (file)
@@ -96,6 +96,7 @@ void splitScopedName(char* name, char** scope, char** basename);
 %token READWRITE
 %token WRITEONLY
 %token ACCELBLOCK
+%token MEMCRITICAL
 
 %type <modlist>                ModuleEList File
 %type <module>         Module
@@ -747,6 +748,8 @@ EAttrib             : THREADED
                 { $$ = SLOCAL; }
                | PYTHON PythonOptions
                 { $$ = SPYTHON; }
+               | MEMCRITICAL
+               { $$ = SMEM; }
                ;
 
 DefaultParameter: LITERAL
index 96834046155182a0f2bd3e3be742a0a2391840fa..20a51a0d93f9da5b0f18e1a0d14bc4e33fbe3d58 100644 (file)
@@ -8,7 +8,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
+#define YY_FLEX_SUBMINOR_VERSION 34
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -30,7 +30,7 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if __STDC_VERSION__ >= 199901L
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  * if you want the limit (max/min) macros for int types. 
@@ -93,11 +93,12 @@ typedef unsigned int flex_uint32_t;
 
 #else  /* ! __cplusplus */
 
-#if __STDC__
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
 #define YY_USE_CONST
 
-#endif /* __STDC__ */
+#endif /* defined (__STDC__) */
 #endif /* ! __cplusplus */
 
 #ifdef YY_USE_CONST
@@ -180,11 +181,13 @@ extern FILE *yyin, *yyout;
 /* The following is because we cannot portably get our hands on size_t
  * (without autoconf's help, which isn't available because we want
  * flex-generated scanners to compile on their own).
+ * Given that the standard has decreed that size_t exists since 1989,
+ * I guess we can afford to depend on it. Manoj.
  */
 
 #ifndef YY_TYPEDEF_YY_SIZE_T
 #define YY_TYPEDEF_YY_SIZE_T
-typedef unsigned int yy_size_t;
+typedef size_t yy_size_t;
 #endif
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -838,7 +841,7 @@ int search(char *s);
 #undef yywrap
 #endif
 
-#line 842 "lex.yy.c"
+#line 845 "lex.yy.c"
 
 #define INITIAL 0
 
@@ -898,7 +901,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -909,7 +912,7 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               size_t n; \
+               int n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -993,7 +996,7 @@ YY_DECL
     
 #line 56 "xi-scan.l"
 
-#line 997 "lex.yy.c"
+#line 1000 "lex.yy.c"
 
        if ( !(yy_init) )
                {
@@ -1006,6 +1009,8 @@ YY_DECL
         /* Create the reject buffer large enough to save one state per allowed character. */
         if ( ! (yy_state_buf) )
             (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE  );
+            if ( ! (yy_state_buf) )
+                YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
 
                if ( ! (yy_start) )
                        (yy_start) = 1; /* first start state */
@@ -1173,7 +1178,7 @@ YY_RULE_SETUP
 #line 73 "xi-scan.l"
 ECHO;
        YY_BREAK
-#line 1177 "lex.yy.c"
+#line 1182 "lex.yy.c"
                        case YY_STATE_EOF(INITIAL):
                                yyterminate();
 
@@ -1375,7 +1380,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), num_to_read );
+                       (yy_n_chars), (size_t) num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -1399,6 +1404,14 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
+       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+               /* Extend the array by 50%, plus the number we really need. */
+               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+               if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+                       YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+       }
+
        (yy_n_chars) += number_to_move;
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
@@ -1809,7 +1822,9 @@ static void yyensure_buffer_stack (void)
                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
-               
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                                                                 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
                                
                (yy_buffer_stack_max) = num_to_alloc;
@@ -1827,6 +1842,8 @@ static void yyensure_buffer_stack (void)
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
+               if ( ! (yy_buffer_stack) )
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -1871,7 +1888,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 
 /** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
+ * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
@@ -2207,6 +2224,7 @@ struct rwtable rwtable[] = {
   "readwrite",  READWRITE,
   "writeonly",  WRITEONLY,
   "accelblock", ACCELBLOCK,
+  "memcritical", MEMCRITICAL,
   "",          0
 };
 
index 46d188d5cbe2dbec7a4c9eac206916cc0a859c98..f69b0e003daf507140099352e024af46b0eb2e61 100644 (file)
@@ -142,6 +142,7 @@ struct rwtable rwtable[] = {
   "readwrite",  READWRITE,
   "writeonly",  WRITEONLY,
   "accelblock", ACCELBLOCK,
+  "memcritical", MEMCRITICAL,
   "",          0
 };
 
index 88fe7abba2803af6b3b62a798656977ac63a6d1e..ace0679ff82a2d361ea36b87e73556570ea80c3b 100644 (file)
@@ -4419,6 +4419,10 @@ void Entry::genReg(XStr& str)
   if (attribs & SNOKEEP) str << "+CK_EP_NOKEEP";
   if (attribs & SNOTRACE) str << "+CK_EP_TRACEDISABLE";
   if (attribs & SIMMEDIATE) str << "+CK_EP_TRACEDISABLE";
+
+  /*MEICHAO*/
+  if (attribs & SMEM) str << "+CK_EP_MEMCRITICAL";
+  
   if (internalMode) str << "+CK_EP_INTRINSIC";
   str << ");\n";
   if (isConstructor()) {
index a268d97d5ab741db09ea22bf1de712b76a107d67..76bfddf603968f3d89110636dc2d64b37222856c 100644 (file)
@@ -978,6 +978,7 @@ class Message : public TEntity {
 #define SIGET   0x4000 
 #define SLOCAL        0x8000 //<- local message
 #define SACCEL  0x10000
+#define SMEM  0x20000
 
 /* An entry construct */
 class Entry : public Member {
@@ -1096,6 +1097,8 @@ class Entry : public Member {
     // DMK - Accel support
     int isAccel(void) { return (attribs & SACCEL); }
 
+    int isMemCritical(void) { return (attribs & SMEM); }
+
     void print(XStr& str);
     void genIndexDecls(XStr& str);
     void genPub(XStr& declstr, XStr& defstr, XStr& defconstr, int& connectPresent);