]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/5a, cmd/6a, cmd/8a: parse PCDATA
authorRuss Cox <rsc@golang.org>
Tue, 16 Jul 2013 20:23:28 +0000 (16:23 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 16 Jul 2013 20:23:28 +0000 (16:23 -0400)
In cmd/5a, also add support for argument size in TEXT instruction.

R=ken2
CC=golang-dev
https://golang.org/cl/11357044

13 files changed:
src/cmd/5a/a.h
src/cmd/5a/a.y
src/cmd/5a/lex.c
src/cmd/5a/y.tab.c
src/cmd/5a/y.tab.h
src/cmd/6a/a.y
src/cmd/6a/lex.c
src/cmd/6a/y.tab.c
src/cmd/6a/y.tab.h
src/cmd/8a/a.y
src/cmd/8a/lex.c
src/cmd/8a/y.tab.c
src/cmd/8a/y.tab.h

index a2c87cf489d6c593d4dc0e73cefbefbc465f6ec4..8b39d610f60f7917e3bdb315be1f26ffff797e3c 100644 (file)
@@ -98,6 +98,7 @@ struct        Gen
 {
        Sym*    sym;
        int32   offset;
+       int32   offset2;
        short   type;
        short   reg;
        short   name;
index c9fdf05d519f3d2ef8fc5df71fe0a8e1f1359892..467f9289276c5475b6c54f654977ef1c0ccde10b 100644 (file)
@@ -54,7 +54,7 @@
 %token <lval>  LTYPEG LTYPEH LTYPEI LTYPEJ LTYPEK
 %token <lval>  LTYPEL LTYPEM LTYPEN LTYPEBX LTYPEPLD
 %token <lval>  LCONST LSP LSB LFP LPC
-%token <lval>  LTYPEX LR LREG LF LFREG LC LCREG LPSR LFCR
+%token <lval>  LTYPEX LTYPEPC LR LREG LF LFREG LC LCREG LPSR LFCR
 %token <lval>  LCOND LS LAT
 %token <dval>  LFCONST
 %token <sval>  LSCONST
@@ -223,6 +223,16 @@ inst:
        {
                outcode($1, Always, &$2, $4, &$6);
        }
+|      LTYPEB name ',' con ',' imm '-' con
+       {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if($8 == 0)
+                       $8 = 1;
+               $6.type = D_CONST2;
+               $6.offset2 = $8;
+               outcode($1, Always, &$2, $4, &$6);
+       }
 /*
  * DATA
  */
@@ -309,6 +319,13 @@ inst:
        {
                outcode($1, Always, &$2, NREG, &nullgen);
        }
+/*
+ * PCDATA
+ */
+|      LTYPEPC imm ',' imm
+       {
+               outcode($1, Always, &$2, NREG, &$4);
+       }
 /*
  * END
  */
index d997754fd3a65186273c4654d4b7f790236f62fe..5e31b243c803eef8ff644fb906cf80b5edbbed9b 100644 (file)
@@ -414,6 +414,7 @@ struct
        "MULAWB",       LTYPEN, AMULAWB,
 
        "USEFIELD",     LTYPEN, AUSEFIELD,
+       "PCDATA",       LTYPEPC,        APCDATA,
 
        0
 };
@@ -523,6 +524,13 @@ zaddr(Gen *a, int s)
                Bputc(&obuf, a->offset);
                break;
 
+       case D_CONST2:
+               l = a->offset2;
+               Bputc(&obuf, l);
+               Bputc(&obuf, l>>8);
+               Bputc(&obuf, l>>16);
+               Bputc(&obuf, l>>24);
+               // fall through
        case D_OREG:
        case D_CONST:
        case D_BRANCH:
index ce97ee315139c4ee138f37e9b31bea2cb5455416..da76656bf815d187a88a6906a7a467f18908a509 100644 (file)
@@ -1,23 +1,24 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-   
-   This program is free software: you can redistribute it and/or modify
+
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -28,7 +29,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -46,7 +47,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 /* Pure parsers.  */
 #define YYPURE 0
 
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
-#line 31 "a.y"
-
-#include <u.h>
-#include <stdio.h>     /* if we don't, bison will, and a.h re-#defines getc */
-#include <libc.h>
-#include "a.h"
-
-
-/* Line 189 of yacc.c  */
-#line 81 "y.tab.c"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
      LFP = 286,
      LPC = 287,
      LTYPEX = 288,
-     LR = 289,
-     LREG = 290,
-     LF = 291,
-     LFREG = 292,
-     LC = 293,
-     LCREG = 294,
-     LPSR = 295,
-     LFCR = 296,
-     LCOND = 297,
-     LS = 298,
-     LAT = 299,
-     LFCONST = 300,
-     LSCONST = 301,
-     LNAME = 302,
-     LLAB = 303,
-     LVAR = 304
+     LTYPEPC = 289,
+     LR = 290,
+     LREG = 291,
+     LF = 292,
+     LFREG = 293,
+     LC = 294,
+     LCREG = 295,
+     LPSR = 296,
+     LFCR = 297,
+     LCOND = 298,
+     LS = 299,
+     LAT = 300,
+     LFCONST = 301,
+     LSCONST = 302,
+     LNAME = 303,
+     LLAB = 304,
+     LVAR = 305
    };
 #endif
 /* Tokens.  */
 #define LFP 286
 #define LPC 287
 #define LTYPEX 288
-#define LR 289
-#define LREG 290
-#define LF 291
-#define LFREG 292
-#define LC 293
-#define LCREG 294
-#define LPSR 295
-#define LFCR 296
-#define LCOND 297
-#define LS 298
-#define LAT 299
-#define LFCONST 300
-#define LSCONST 301
-#define LNAME 302
-#define LLAB 303
-#define LVAR 304
+#define LTYPEPC 289
+#define LR 290
+#define LREG 291
+#define LF 292
+#define LFREG 293
+#define LC 294
+#define LCREG 295
+#define LPSR 296
+#define LFCR 297
+#define LCOND 298
+#define LS 299
+#define LAT 300
+#define LFCONST 301
+#define LSCONST 302
+#define LNAME 303
+#define LLAB 304
+#define LVAR 305
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 31 "a.y"
+
+#include <u.h>
+#include <stdio.h>     /* if we don't, bison will, and a.h re-#defines getc */
+#include <libc.h>
+#include "a.h"
 
 
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
 
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-{
-
-/* Line 214 of yacc.c  */
 #line 38 "a.y"
-
+{
        Sym     *sym;
        int32   lval;
        double  dval;
        char    sval[8];
        Gen     gen;
-
-
-
-/* Line 214 of yacc.c  */
-#line 225 "y.tab.c"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+}
+/* Line 193 of yacc.c.  */
+#line 211 "y.tab.c"
+       YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
+
 /* Copy the second part of user declarations.  */
 
 
-/* Line 264 of yacc.c  */
-#line 237 "y.tab.c"
+/* Line 216 of yacc.c.  */
+#line 224 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -283,7 +270,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -308,14 +295,14 @@ typedef short int yytype_int16;
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int yyi)
+YYID (int i)
 #else
 static int
-YYID (yyi)
-    int yyi;
+YYID (i)
+    int i;
 #endif
 {
-  return yyi;
+  return i;
 }
 #endif
 
@@ -396,9 +383,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -432,12 +419,12 @@ union yyalloc
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                          \
+# define YYSTACK_RELOCATE(Stack)                                       \
     do                                                                 \
       {                                                                        \
        YYSIZE_T yynewbytes;                                            \
-       YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-       Stack = &yyptr->Stack_alloc;                                    \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / sizeof (*yyptr);                          \
       }                                                                        \
@@ -448,20 +435,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   603
+#define YYLAST   615
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  70
+#define YYNTOKENS  71
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  130
+#define YYNRULES  132
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  329
+#define YYNSTATES  335
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   304
+#define YYMAXUTOK   305
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -472,16 +459,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,    68,    12,     5,     2,
-      66,    67,    10,     8,    63,     9,     2,    11,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    60,    62,
-       6,    61,     7,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,    69,    12,     5,     2,
+      67,    68,    10,     8,    64,     9,     2,    11,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    61,    63,
+       6,    62,     7,     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,    64,     2,    65,     4,     2,     2,     2,     2,     2,
+       2,    65,     2,    66,     4,     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,     3,     2,    69,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,    70,     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,
@@ -499,7 +486,7 @@ static const yytype_uint8 yytranslate[] =
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       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
+      55,    56,    57,    58,    59,    60
 };
 
 #if YYDEBUG
@@ -510,73 +497,74 @@ static const yytype_uint16 yyprhs[] =
        0,     0,     3,     4,     5,     9,    10,    15,    16,    21,
       26,    31,    33,    36,    39,    47,    54,    60,    66,    72,
       77,    82,    86,    90,    95,   102,   110,   118,   126,   133,
-     140,   144,   149,   156,   163,   168,   172,   178,   184,   192,
-     199,   212,   220,   230,   233,   236,   237,   240,   243,   244,
-     247,   252,   255,   258,   261,   264,   269,   272,   274,   277,
-     281,   283,   287,   291,   293,   295,   297,   302,   304,   306,
-     308,   310,   312,   314,   316,   320,   322,   327,   329,   334,
-     336,   338,   340,   342,   345,   347,   353,   358,   363,   368,
-     373,   375,   377,   379,   381,   386,   388,   390,   392,   397,
-     399,   401,   403,   408,   413,   419,   427,   428,   431,   434,
-     436,   438,   440,   442,   444,   447,   450,   453,   457,   458,
-     461,   463,   467,   471,   475,   479,   483,   488,   493,   497,
-     501
+     140,   144,   149,   156,   165,   172,   177,   181,   187,   193,
+     201,   208,   221,   229,   239,   242,   247,   250,   251,   254,
+     257,   258,   261,   266,   269,   272,   275,   278,   283,   286,
+     288,   291,   295,   297,   301,   305,   307,   309,   311,   316,
+     318,   320,   322,   324,   326,   328,   330,   334,   336,   341,
+     343,   348,   350,   352,   354,   356,   359,   361,   367,   372,
+     377,   382,   387,   389,   391,   393,   395,   400,   402,   404,
+     406,   411,   413,   415,   417,   422,   427,   433,   441,   442,
+     445,   448,   450,   452,   454,   456,   458,   461,   464,   467,
+     471,   472,   475,   477,   481,   485,   489,   493,   497,   502,
+     507,   511,   515
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      71,     0,    -1,    -1,    -1,    71,    72,    73,    -1,    -1,
-      58,    60,    74,    73,    -1,    -1,    57,    60,    75,    73,
-      -1,    57,    61,   104,    62,    -1,    59,    61,   104,    62,
-      -1,    62,    -1,    76,    62,    -1,     1,    62,    -1,    13,
-      77,    88,    63,    95,    63,    90,    -1,    13,    77,    88,
-      63,    95,    63,    -1,    13,    77,    88,    63,    90,    -1,
-      14,    77,    88,    63,    90,    -1,    15,    77,    83,    63,
-      83,    -1,    16,    77,    78,    79,    -1,    16,    77,    78,
-      84,    -1,    36,    78,    85,    -1,    17,    78,    79,    -1,
-      18,    77,    78,    83,    -1,    19,    77,    88,    63,    95,
-      78,    -1,    20,    77,    86,    63,    64,    82,    65,    -1,
-      20,    77,    64,    82,    65,    63,    86,    -1,    21,    77,
-      90,    63,    85,    63,    90,    -1,    21,    77,    90,    63,
-      85,    78,    -1,    21,    77,    78,    85,    63,    90,    -1,
-      22,    77,    78,    -1,    23,    99,    63,    89,    -1,    23,
-      99,    63,   102,    63,    89,    -1,    24,    99,    11,   102,
-      63,    80,    -1,    25,    77,    90,    78,    -1,    29,    78,
-      80,    -1,    30,    77,    98,    63,    98,    -1,    32,    77,
-      97,    63,    98,    -1,    32,    77,    97,    63,    47,    63,
-      98,    -1,    33,    77,    98,    63,    98,    78,    -1,    31,
-      77,   102,    63,   104,    63,    95,    63,    96,    63,    96,
-     103,    -1,    34,    77,    90,    63,    90,    63,    91,    -1,
-      35,    77,    90,    63,    90,    63,    90,    63,    95,    -1,
-      37,    87,    -1,    26,    78,    -1,    -1,    77,    52,    -1,
-      77,    53,    -1,    -1,    63,    78,    -1,   102,    66,    42,
-      67,    -1,    57,   100,    -1,    58,   100,    -1,    68,   102,
-      -1,    68,    87,    -1,    68,    10,    68,    87,    -1,    68,
-      56,    -1,    81,    -1,    68,    55,    -1,    68,     9,    55,
-      -1,    95,    -1,    95,     9,    95,    -1,    95,    78,    82,
-      -1,    90,    -1,    80,    -1,    92,    -1,    92,    66,    95,
-      67,    -1,    50,    -1,    51,    -1,   102,    -1,    87,    -1,
-      98,    -1,    85,    -1,    99,    -1,    66,    95,    67,    -1,
-      85,    -1,   102,    66,    94,    67,    -1,    99,    -1,    99,
-      66,    94,    67,    -1,    86,    -1,    90,    -1,    89,    -1,
-      92,    -1,    68,   102,    -1,    95,    -1,    66,    95,    63,
-      95,    67,    -1,    95,     6,     6,    93,    -1,    95,     7,
-       7,    93,    -1,    95,     9,     7,    93,    -1,    95,    54,
-       7,    93,    -1,    95,    -1,   102,    -1,    45,    -1,    42,
-      -1,    44,    66,   104,    67,    -1,    94,    -1,    39,    -1,
-      49,    -1,    48,    66,   104,    67,    -1,    98,    -1,    81,
-      -1,    47,    -1,    46,    66,   102,    67,    -1,   102,    66,
-     101,    67,    -1,    57,   100,    66,   101,    67,    -1,    57,
-       6,     7,   100,    66,    40,    67,    -1,    -1,     8,   102,
-      -1,     9,   102,    -1,    40,    -1,    39,    -1,    41,    -1,
-      38,    -1,    59,    -1,     9,   102,    -1,     8,   102,    -1,
-      69,   102,    -1,    66,   104,    67,    -1,    -1,    63,   104,
-      -1,   102,    -1,   104,     8,   104,    -1,   104,     9,   104,
-      -1,   104,    10,   104,    -1,   104,    11,   104,    -1,   104,
-      12,   104,    -1,   104,     6,     6,   104,    -1,   104,     7,
-       7,   104,    -1,   104,     5,   104,    -1,   104,     4,   104,
-      -1,   104,     3,   104,    -1
+      72,     0,    -1,    -1,    -1,    72,    73,    74,    -1,    -1,
+      59,    61,    75,    74,    -1,    -1,    58,    61,    76,    74,
+      -1,    58,    62,   105,    63,    -1,    60,    62,   105,    63,
+      -1,    63,    -1,    77,    63,    -1,     1,    63,    -1,    13,
+      78,    89,    64,    96,    64,    91,    -1,    13,    78,    89,
+      64,    96,    64,    -1,    13,    78,    89,    64,    91,    -1,
+      14,    78,    89,    64,    91,    -1,    15,    78,    84,    64,
+      84,    -1,    16,    78,    79,    80,    -1,    16,    78,    79,
+      85,    -1,    36,    79,    86,    -1,    17,    79,    80,    -1,
+      18,    78,    79,    84,    -1,    19,    78,    89,    64,    96,
+      79,    -1,    20,    78,    87,    64,    65,    83,    66,    -1,
+      20,    78,    65,    83,    66,    64,    87,    -1,    21,    78,
+      91,    64,    86,    64,    91,    -1,    21,    78,    91,    64,
+      86,    79,    -1,    21,    78,    79,    86,    64,    91,    -1,
+      22,    78,    79,    -1,    23,   100,    64,    90,    -1,    23,
+     100,    64,   103,    64,    90,    -1,    23,   100,    64,   103,
+      64,    90,     9,   103,    -1,    24,   100,    11,   103,    64,
+      81,    -1,    25,    78,    91,    79,    -1,    29,    79,    81,
+      -1,    30,    78,    99,    64,    99,    -1,    32,    78,    98,
+      64,    99,    -1,    32,    78,    98,    64,    48,    64,    99,
+      -1,    33,    78,    99,    64,    99,    79,    -1,    31,    78,
+     103,    64,   105,    64,    96,    64,    97,    64,    97,   104,
+      -1,    34,    78,    91,    64,    91,    64,    92,    -1,    35,
+      78,    91,    64,    91,    64,    91,    64,    96,    -1,    37,
+      88,    -1,    44,    90,    64,    90,    -1,    26,    79,    -1,
+      -1,    78,    53,    -1,    78,    54,    -1,    -1,    64,    79,
+      -1,   103,    67,    42,    68,    -1,    58,   101,    -1,    59,
+     101,    -1,    69,   103,    -1,    69,    88,    -1,    69,    10,
+      69,    88,    -1,    69,    57,    -1,    82,    -1,    69,    56,
+      -1,    69,     9,    56,    -1,    96,    -1,    96,     9,    96,
+      -1,    96,    79,    83,    -1,    91,    -1,    81,    -1,    93,
+      -1,    93,    67,    96,    68,    -1,    51,    -1,    52,    -1,
+     103,    -1,    88,    -1,    99,    -1,    86,    -1,   100,    -1,
+      67,    96,    68,    -1,    86,    -1,   103,    67,    95,    68,
+      -1,   100,    -1,   100,    67,    95,    68,    -1,    87,    -1,
+      91,    -1,    90,    -1,    93,    -1,    69,   103,    -1,    96,
+      -1,    67,    96,    64,    96,    68,    -1,    96,     6,     6,
+      94,    -1,    96,     7,     7,    94,    -1,    96,     9,     7,
+      94,    -1,    96,    55,     7,    94,    -1,    96,    -1,   103,
+      -1,    46,    -1,    42,    -1,    45,    67,   105,    68,    -1,
+      95,    -1,    39,    -1,    50,    -1,    49,    67,   105,    68,
+      -1,    99,    -1,    82,    -1,    48,    -1,    47,    67,   103,
+      68,    -1,   103,    67,   102,    68,    -1,    58,   101,    67,
+     102,    68,    -1,    58,     6,     7,   101,    67,    40,    68,
+      -1,    -1,     8,   103,    -1,     9,   103,    -1,    40,    -1,
+      39,    -1,    41,    -1,    38,    -1,    60,    -1,     9,   103,
+      -1,     8,   103,    -1,    70,   103,    -1,    67,   105,    68,
+      -1,    -1,    64,   105,    -1,   103,    -1,   105,     8,   105,
+      -1,   105,     9,   105,    -1,   105,    10,   105,    -1,   105,
+      11,   105,    -1,   105,    12,   105,    -1,   105,     6,     6,
+     105,    -1,   105,     7,     7,   105,    -1,   105,     5,   105,
+      -1,   105,     4,   105,    -1,   105,     3,   105,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -585,17 +573,17 @@ static const yytype_uint16 yyrline[] =
        0,    67,    67,    69,    68,    76,    75,    83,    82,    88,
       93,    99,   100,   101,   107,   111,   115,   122,   129,   136,
      140,   147,   154,   161,   168,   175,   184,   196,   200,   204,
-     211,   218,   222,   229,   236,   243,   250,   254,   258,   262,
-     269,   291,   299,   308,   315,   321,   324,   328,   333,   334,
-     337,   343,   352,   360,   366,   371,   376,   382,   385,   391,
-     399,   403,   412,   418,   419,   420,   421,   426,   432,   438,
-     444,   445,   448,   449,   457,   466,   467,   476,   477,   483,
-     486,   487,   488,   490,   498,   506,   515,   521,   527,   533,
-     541,   547,   555,   556,   560,   568,   569,   575,   576,   584,
-     585,   588,   594,   602,   610,   618,   628,   631,   635,   641,
-     642,   643,   646,   647,   651,   655,   659,   663,   669,   672,
-     678,   679,   683,   687,   691,   695,   699,   703,   707,   711,
-     715
+     211,   218,   222,   226,   239,   246,   253,   260,   264,   268,
+     272,   279,   301,   309,   318,   325,   332,   338,   341,   345,
+     350,   351,   354,   360,   369,   377,   383,   388,   393,   399,
+     402,   408,   416,   420,   429,   435,   436,   437,   438,   443,
+     449,   455,   461,   462,   465,   466,   474,   483,   484,   493,
+     494,   500,   503,   504,   505,   507,   515,   523,   532,   538,
+     544,   550,   558,   564,   572,   573,   577,   585,   586,   592,
+     593,   601,   602,   605,   611,   619,   627,   635,   645,   648,
+     652,   658,   659,   660,   663,   664,   668,   672,   676,   680,
+     686,   689,   695,   696,   700,   704,   708,   712,   716,   720,
+     724,   728,   732
 };
 #endif
 
@@ -609,14 +597,14 @@ static const char *const yytname[] =
   "LTYPE5", "LTYPE6", "LTYPE7", "LTYPE8", "LTYPE9", "LTYPEA", "LTYPEB",
   "LTYPEC", "LTYPED", "LTYPEE", "LTYPEF", "LTYPEG", "LTYPEH", "LTYPEI",
   "LTYPEJ", "LTYPEK", "LTYPEL", "LTYPEM", "LTYPEN", "LTYPEBX", "LTYPEPLD",
-  "LCONST", "LSP", "LSB", "LFP", "LPC", "LTYPEX", "LR", "LREG", "LF",
-  "LFREG", "LC", "LCREG", "LPSR", "LFCR", "LCOND", "LS", "LAT", "LFCONST",
-  "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", "';'", "','", "'['",
-  "']'", "'('", "')'", "'$'", "'~'", "$accept", "prog", "$@1", "line",
-  "$@2", "$@3", "inst", "cond", "comma", "rel", "ximm", "fcon", "reglist",
-  "gen", "nireg", "ireg", "ioreg", "oreg", "imsr", "imm", "reg", "regreg",
-  "shift", "rcon", "sreg", "spreg", "creg", "frcon", "freg", "name",
-  "offset", "pointer", "con", "oexpr", "expr", 0
+  "LCONST", "LSP", "LSB", "LFP", "LPC", "LTYPEX", "LTYPEPC", "LR", "LREG",
+  "LF", "LFREG", "LC", "LCREG", "LPSR", "LFCR", "LCOND", "LS", "LAT",
+  "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", "';'",
+  "','", "'['", "']'", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1",
+  "line", "@2", "@3", "inst", "cond", "comma", "rel", "ximm", "fcon",
+  "reglist", "gen", "nireg", "ireg", "ioreg", "oreg", "imsr", "imm", "reg",
+  "regreg", "shift", "rcon", "sreg", "spreg", "creg", "frcon", "freg",
+  "name", "offset", "pointer", "con", "oexpr", "expr", 0
 };
 #endif
 
@@ -631,27 +619,28 @@ static const yytype_uint16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-      58,    61,    59,    44,    91,    93,    40,    41,    36,   126
+     305,    58,    61,    59,    44,    91,    93,    40,    41,    36,
+     126
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    70,    71,    72,    71,    74,    73,    75,    73,    73,
-      73,    73,    73,    73,    76,    76,    76,    76,    76,    76,
-      76,    76,    76,    76,    76,    76,    76,    76,    76,    76,
-      76,    76,    76,    76,    76,    76,    76,    76,    76,    76,
-      76,    76,    76,    76,    76,    77,    77,    77,    78,    78,
-      79,    79,    79,    80,    80,    80,    80,    80,    81,    81,
-      82,    82,    82,    83,    83,    83,    83,    83,    83,    83,
-      83,    83,    84,    84,    85,    86,    86,    87,    87,    87,
-      88,    88,    88,    89,    90,    91,    92,    92,    92,    92,
-      93,    93,    94,    94,    94,    95,    95,    96,    96,    97,
-      97,    98,    98,    99,    99,    99,   100,   100,   100,   101,
-     101,   101,   102,   102,   102,   102,   102,   102,   103,   103,
-     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
-     104
+       0,    71,    72,    73,    72,    75,    74,    76,    74,    74,
+      74,    74,    74,    74,    77,    77,    77,    77,    77,    77,
+      77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
+      77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
+      77,    77,    77,    77,    77,    77,    77,    78,    78,    78,
+      79,    79,    80,    80,    80,    81,    81,    81,    81,    81,
+      82,    82,    83,    83,    83,    84,    84,    84,    84,    84,
+      84,    84,    84,    84,    85,    85,    86,    87,    87,    88,
+      88,    88,    89,    89,    89,    90,    91,    92,    93,    93,
+      93,    93,    94,    94,    95,    95,    95,    96,    96,    97,
+      97,    98,    98,    99,    99,   100,   100,   100,   101,   101,
+     101,   102,   102,   102,   103,   103,   103,   103,   103,   103,
+     104,   104,   105,   105,   105,   105,   105,   105,   105,   105,
+     105,   105,   105
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -660,17 +649,17 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     0,     3,     0,     4,     0,     4,     4,
        4,     1,     2,     2,     7,     6,     5,     5,     5,     4,
        4,     3,     3,     4,     6,     7,     7,     7,     6,     6,
-       3,     4,     6,     6,     4,     3,     5,     5,     7,     6,
-      12,     7,     9,     2,     2,     0,     2,     2,     0,     2,
-       4,     2,     2,     2,     2,     4,     2,     1,     2,     3,
-       1,     3,     3,     1,     1,     1,     4,     1,     1,     1,
-       1,     1,     1,     1,     3,     1,     4,     1,     4,     1,
-       1,     1,     1,     2,     1,     5,     4,     4,     4,     4,
-       1,     1,     1,     1,     4,     1,     1,     1,     4,     1,
-       1,     1,     4,     4,     5,     7,     0,     2,     2,     1,
-       1,     1,     1,     1,     2,     2,     2,     3,     0,     2,
-       1,     3,     3,     3,     3,     3,     4,     4,     3,     3,
-       3
+       3,     4,     6,     8,     6,     4,     3,     5,     5,     7,
+       6,    12,     7,     9,     2,     4,     2,     0,     2,     2,
+       0,     2,     4,     2,     2,     2,     2,     4,     2,     1,
+       2,     3,     1,     3,     3,     1,     1,     1,     4,     1,
+       1,     1,     1,     1,     1,     1,     3,     1,     4,     1,
+       4,     1,     1,     1,     1,     2,     1,     5,     4,     4,
+       4,     4,     1,     1,     1,     1,     4,     1,     1,     1,
+       4,     1,     1,     1,     4,     4,     5,     7,     0,     2,
+       2,     1,     1,     1,     1,     1,     2,     2,     2,     3,
+       0,     2,     1,     3,     3,     3,     3,     3,     4,     4,
+       3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -678,271 +667,276 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     3,     1,     0,     0,    45,    45,    45,    45,    48,
-      45,    45,    45,    45,    45,     0,     0,    45,    48,    48,
-      45,    45,    45,    45,    45,    45,    48,     0,     0,     0,
-       0,    11,     4,     0,    13,     0,     0,     0,    48,    48,
-       0,    48,     0,     0,    48,    48,     0,     0,   112,   106,
-     113,     0,     0,     0,     0,     0,     0,    44,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    75,    79,    43,
-      77,     0,     7,     0,     5,     0,    12,    96,    93,     0,
-      92,    46,    47,     0,     0,    81,    80,    82,    95,    84,
-       0,     0,   101,    67,    68,     0,    64,    57,     0,    70,
-      63,    65,    71,    69,     0,    49,   106,   106,    22,     0,
-       0,     0,     0,     0,     0,     0,     0,    84,    30,   115,
-     114,     0,     0,     0,     0,   120,     0,   116,     0,     0,
-       0,    48,    35,     0,     0,     0,   100,     0,    99,     0,
-       0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
-       0,     0,    83,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    58,    56,    54,    53,     0,     0,   106,    19,
-      20,    72,    73,     0,    51,    52,     0,    23,     0,     0,
-      48,     0,     0,     0,     0,   106,   107,   108,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   117,
-      31,     0,   110,   109,   111,     0,     0,    34,     0,     0,
-       0,     0,     0,     0,     0,    74,     0,     0,     8,     9,
-       6,    10,     0,    16,    84,     0,     0,     0,     0,    17,
-       0,    59,     0,    18,     0,    51,     0,     0,    48,     0,
-       0,     0,     0,     0,    48,     0,     0,   130,   129,   128,
-       0,     0,   121,   122,   123,   124,   125,     0,   103,     0,
-      36,     0,   101,    37,    48,     0,     0,    78,    76,    94,
-      15,    86,    90,    91,    87,    88,    89,   102,    55,    66,
-      50,    24,     0,    61,    62,     0,    29,    48,    28,     0,
-     104,   126,   127,    32,    33,     0,     0,    39,     0,     0,
-      14,    26,    25,    27,     0,     0,    38,     0,    41,     0,
-     105,     0,     0,     0,     0,    97,     0,     0,    42,     0,
-       0,     0,     0,   118,    85,    98,     0,    40,   119
+       2,     3,     1,     0,     0,    47,    47,    47,    47,    50,
+      47,    47,    47,    47,    47,     0,     0,    47,    50,    50,
+      47,    47,    47,    47,    47,    47,    50,     0,     0,     0,
+       0,     0,    11,     4,     0,    13,     0,     0,     0,    50,
+      50,     0,    50,     0,     0,    50,    50,     0,     0,   114,
+     108,   115,     0,     0,     0,     0,     0,     0,    46,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    77,    81,
+      44,    79,     0,     0,     0,     7,     0,     5,     0,    12,
+      98,    95,     0,    94,    48,    49,     0,    83,    82,    84,
+      97,    86,     0,     0,   103,    69,    70,     0,    66,    59,
+       0,    72,    65,    67,    73,    71,     0,    51,   108,   108,
+      22,     0,     0,     0,     0,     0,     0,     0,     0,    86,
+      30,   117,   116,     0,     0,     0,     0,   122,     0,   118,
+       0,     0,     0,    50,    36,     0,     0,     0,   102,     0,
+     101,     0,     0,     0,     0,    21,     0,     0,     0,    85,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    60,    58,    56,    55,     0,
+       0,   108,    19,    20,    74,    75,     0,    53,    54,     0,
+      23,     0,     0,    50,     0,     0,     0,     0,   108,   109,
+     110,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   119,    31,     0,   112,   111,   113,     0,     0,
+      35,     0,     0,     0,     0,     0,     0,     0,    76,     0,
+       0,    45,     8,     9,     6,    10,     0,    16,    86,     0,
+       0,     0,     0,    17,     0,    61,     0,    18,     0,    53,
+       0,     0,    50,     0,     0,     0,     0,     0,    50,     0,
+       0,   132,   131,   130,     0,     0,   123,   124,   125,   126,
+     127,     0,   105,     0,    37,     0,   103,    38,    50,     0,
+       0,    80,    78,    96,    15,    88,    92,    93,    89,    90,
+      91,   104,    57,    68,    52,    24,     0,    63,    64,     0,
+      29,    50,    28,     0,   106,   128,   129,    32,    34,     0,
+       0,    40,     0,     0,    14,    26,    25,    27,     0,     0,
+       0,    39,     0,    42,     0,   107,    33,     0,     0,     0,
+       0,    99,     0,     0,    43,     0,     0,     0,     0,   120,
+      87,   100,     0,    41,   121
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     3,    32,   149,   147,    33,    35,   105,   108,
-      96,    97,   179,    98,   170,    67,    68,    99,    84,    85,
-      86,   308,    87,   271,    88,   117,   316,   137,   102,    70,
-     124,   205,   125,   327,   126
+      -1,     1,     3,    33,   153,   151,    34,    36,   107,   110,
+      98,    99,   182,   100,   173,    68,    69,   101,    86,    87,
+      88,   313,    89,   275,    90,   119,   322,   139,   104,    71,
+     126,   208,   127,   333,   128
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -114
+#define YYPACT_NINF -127
 static const yytype_int16 yypact[] =
 {
-    -114,    19,  -114,   311,   -20,  -114,  -114,  -114,  -114,   -36,
-    -114,  -114,  -114,  -114,  -114,   413,   413,  -114,   -36,   -36,
-    -114,  -114,  -114,  -114,  -114,  -114,   -36,   427,   -22,    -9,
-      -7,  -114,  -114,    11,  -114,   480,   480,   341,    45,   -36,
-     229,    45,   480,   210,   436,    45,   435,   435,  -114,   152,
-    -114,   435,   435,    25,    15,    79,   517,  -114,    24,   134,
-     393,   197,   134,   517,   517,    28,    71,  -114,  -114,  -114,
-      35,    58,  -114,   435,  -114,   435,  -114,  -114,  -114,    69,
-    -114,  -114,  -114,   435,    51,  -114,  -114,  -114,  -114,    46,
-      57,    75,  -114,  -114,  -114,   119,  -114,  -114,    82,  -114,
-    -114,    88,  -114,    58,   368,  -114,   159,   159,  -114,   113,
-     373,   114,   411,   120,   123,    28,   145,  -114,  -114,  -114,
-    -114,   193,   435,   435,   173,  -114,    54,  -114,   395,   111,
-     435,   -36,  -114,   178,   182,    21,  -114,   198,  -114,   201,
-     207,   212,   411,  -114,   206,   168,   558,   311,   310,   311,
-     506,   435,  -114,   411,   271,   274,   285,   286,   411,   435,
-      87,   228,  -114,  -114,  -114,    58,   373,   411,   152,  -114,
-    -114,  -114,  -114,   231,  -114,  -114,   257,  -114,   411,   235,
-       5,   259,   168,   275,    28,   159,  -114,  -114,   111,   435,
-     435,   435,   333,   344,   435,   435,   435,   435,   435,  -114,
-    -114,   289,  -114,  -114,  -114,   300,   308,  -114,   151,   435,
-     319,   176,   151,   411,   411,  -114,   317,   322,  -114,  -114,
-    -114,  -114,   224,  -114,   312,    71,    71,    71,    71,  -114,
-     323,  -114,   427,  -114,   328,   173,    64,   329,   -36,   315,
-     411,   411,   411,   411,   334,   339,   332,   577,   247,   584,
-     435,   435,   273,   273,  -114,  -114,  -114,   340,  -114,    24,
-    -114,   350,   351,  -114,   -36,   353,   365,  -114,  -114,  -114,
-     411,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
-    -114,  -114,   439,  -114,  -114,   364,  -114,   157,  -114,   398,
-    -114,   518,   518,  -114,  -114,   411,   151,  -114,   374,   411,
-    -114,  -114,  -114,  -114,   382,   394,  -114,   411,  -114,   397,
-    -114,   155,   403,   411,   392,  -114,   404,   411,  -114,   435,
-     155,   401,   299,   406,  -114,  -114,   435,  -114,   568
+    -127,    39,  -127,   320,   -20,  -127,  -127,  -127,  -127,   -13,
+    -127,  -127,  -127,  -127,  -127,   260,   260,  -127,   -13,   -13,
+    -127,  -127,  -127,  -127,  -127,  -127,   -13,   421,    -6,    28,
+     -12,     9,  -127,  -127,    -9,  -127,   321,   321,   350,     3,
+     -13,   122,     3,   321,   397,   323,     3,   444,   444,  -127,
+     385,  -127,   444,   444,    13,     7,    74,   467,  -127,    23,
+      91,   417,   248,    91,   467,   467,    29,   194,  -127,  -127,
+    -127,    41,    44,   444,    54,  -127,   444,  -127,   444,  -127,
+    -127,  -127,    79,  -127,  -127,  -127,    77,  -127,  -127,  -127,
+    -127,    69,    85,    86,  -127,  -127,  -127,    56,  -127,  -127,
+      92,  -127,  -127,   109,  -127,    44,   200,  -127,   161,   161,
+    -127,   112,   376,   142,    42,   160,   174,    29,   183,  -127,
+    -127,  -127,  -127,   239,   444,   444,   188,  -127,    95,  -127,
+     182,    20,   444,   -13,  -127,   184,   186,    -1,  -127,   192,
+    -127,   193,   201,   202,    42,  -127,   204,   119,   159,  -127,
+      -6,   320,   535,   320,   545,   444,    42,   275,   266,   290,
+     296,    42,   444,   430,   236,  -127,  -127,  -127,    44,   376,
+      42,   385,  -127,  -127,  -127,  -127,   252,  -127,  -127,   284,
+    -127,    42,   262,     6,   264,   119,   268,    29,   161,  -127,
+    -127,    20,   444,   444,   444,   325,   340,   444,   444,   444,
+     444,   444,  -127,  -127,   297,  -127,  -127,  -127,   302,   307,
+    -127,   147,   444,   317,   175,   147,    42,    42,  -127,   313,
+     314,  -127,  -127,  -127,  -127,  -127,   280,  -127,   322,   194,
+     194,   194,   194,  -127,   331,  -127,   421,  -127,   332,   188,
+     283,   339,   -13,   345,    42,    42,    42,    42,   347,   346,
+     344,   595,   585,   603,   444,   444,   123,   123,  -127,  -127,
+    -127,    -6,  -127,    23,  -127,   525,   352,  -127,   -13,   367,
+     368,  -127,  -127,  -127,    42,  -127,  -127,  -127,  -127,  -127,
+    -127,  -127,  -127,  -127,  -127,  -127,   457,  -127,  -127,   371,
+    -127,   113,  -127,   393,  -127,   267,   267,   431,  -127,    42,
+     147,  -127,   374,    42,  -127,  -127,  -127,  -127,   379,   444,
+     378,  -127,    42,  -127,   380,  -127,  -127,   181,   384,    42,
+     382,  -127,   390,    42,  -127,   444,   181,   388,   304,   394,
+    -127,  -127,   444,  -127,   575
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -114,  -114,  -114,   -78,  -114,  -114,  -114,   529,     2,   367,
-     -50,   415,    48,   -88,  -114,   -48,   -40,   -21,    47,  -113,
-     -19,  -114,   -28,   137,   -59,   -35,   154,  -114,   -49,    18,
-     -83,   295,   -11,  -114,   -25
+    -127,  -127,  -127,  -126,  -127,  -127,  -127,   552,    -5,   354,
+     -56,   399,   -11,  -101,  -127,   -44,   -42,   -17,    10,    -8,
+     -29,  -127,   -33,   -47,   -28,   -19,   137,  -127,   -18,    15,
+    -102,   278,   -15,  -127,   -26
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -61
+#define YYTABLE_NINF -63
 static const yytype_int16 yytable[] =
 {
-      89,    89,    89,   113,    54,    54,    69,    89,   132,   101,
-     133,    40,   138,   139,   240,   200,    71,   143,   100,     2,
-      57,    58,   177,   174,   175,   116,   103,    39,    65,   109,
-     210,   144,   114,    53,    55,   119,   120,   131,    72,    73,
-     104,   127,    34,   110,   140,   141,   115,   118,   148,   134,
-     150,    74,   154,   155,    75,   156,   171,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,   183,    39,   218,
-     -60,   220,   152,    76,   164,    89,   162,   180,   233,    46,
-      47,   129,   101,    90,   165,   235,   216,   217,   128,   111,
-     130,   100,    95,   173,   142,    46,    47,    81,    82,   103,
-     157,   145,   245,   202,   203,   204,   237,   144,    39,    48,
-      77,   186,   187,    78,   153,    79,    80,   201,   224,   206,
-     158,   199,   172,   217,   146,    48,   222,    46,   160,   161,
-      50,    89,   234,   207,   223,   151,   244,    51,   101,   229,
-      52,   159,   231,   238,   293,   166,    50,   100,   230,   120,
-     202,   203,   204,    51,   167,   103,    52,    48,   121,   260,
-     122,   123,   263,   264,   247,   248,   249,   122,   123,   252,
-     253,   254,   255,   256,   162,   163,    49,   178,    50,   176,
-      91,    92,   241,   181,   261,    66,    81,    82,    52,   182,
-     272,   272,   272,   272,   265,   266,    77,    91,    92,    78,
-     185,    79,    80,   314,   315,   283,   180,   180,   184,   294,
-      78,   278,    79,    80,   273,   273,   273,   273,    46,    47,
-      39,    71,    91,   262,   286,   291,   292,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   198,    46,    47,   188,
-     281,   208,   301,    91,    92,   209,   288,   306,    48,    81,
-      82,   300,   191,   192,   193,   194,   195,   196,   197,   198,
-     305,   211,    81,    82,   212,   135,   297,    48,   303,    50,
-     213,   114,   312,   215,   112,   214,    66,   225,   318,    52,
-     309,   226,   321,   196,   197,   198,   106,   107,    50,   284,
-     285,   269,   227,   228,   322,    51,   232,   236,    52,   237,
-     239,   328,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,     4,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   242,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,   243,   250,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    46,
-      47,   251,   257,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,   274,   275,   276,   325,   258,    28,    29,
-      30,   259,   219,    31,   231,   270,    46,    47,   282,    48,
-      77,    46,    47,    78,   267,    79,    80,    91,    92,   268,
-     277,    93,    94,    81,    82,   279,   280,   287,    49,   290,
-      50,    46,    47,    46,    47,   289,    48,    66,    83,    95,
-      52,    48,    77,   295,   296,    78,   298,    79,    80,    91,
-      92,    46,    47,    93,    94,   168,   107,    50,   299,   302,
-      49,    48,    50,    48,    66,    46,    47,    52,   304,    66,
-     307,    95,    52,    46,    47,    81,    82,    46,    47,   310,
-      77,    48,    50,    78,    50,    79,    80,   311,   319,    51,
-     313,    51,    52,    83,    52,    48,   317,   320,   324,   326,
-      49,   169,    50,    48,   323,    77,   136,    48,    78,    51,
-      79,    80,    52,   246,    49,     0,    50,     0,    81,    82,
-       0,     0,     0,    66,    50,     0,    52,     0,    50,    39,
-       0,    51,     0,     0,    52,    66,     0,     0,    52,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   198,    77,
-       0,     0,    78,     0,    79,    80,   194,   195,   196,   197,
-     198,     0,    81,    82,     0,    36,    37,    38,     0,    41,
-      42,    43,    44,    45,     0,     0,    56,     0,    83,    59,
-      60,    61,    62,    63,    64,     0,    77,     0,     0,    78,
-       0,    79,    80,     0,     0,     0,     0,     0,   221,    81,
-      82,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     192,   193,   194,   195,   196,   197,   198,   202,   203,   204,
-      78,     0,    79,    80
+      55,    55,   115,   134,    41,   103,   177,   178,   213,   102,
+      70,   180,    72,    58,    59,   244,   118,    91,    91,    91,
+      74,    66,   145,   105,    91,   222,   111,   224,   133,   116,
+      54,    56,   121,   122,   106,   142,   143,   112,   129,     2,
+     117,   120,   135,    35,   140,   141,   136,    92,   146,    77,
+     152,    40,   154,   113,    79,   165,    84,    85,   149,   205,
+     206,   207,   174,    73,    47,   163,   164,    40,   237,   239,
+      40,    78,   -62,   186,   131,   157,   158,   130,   159,   103,
+     167,    80,   168,   102,    81,   132,   249,    82,    83,    75,
+      76,   176,    97,    91,    49,   183,   144,   105,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   147,   189,
+     190,   148,   165,   166,    50,   204,    51,   209,   150,   219,
+     220,   175,   203,    67,   160,   146,    53,   227,   210,   226,
+      47,    48,   233,   199,   200,   201,   103,   228,    93,    94,
+     102,   156,   221,   248,    84,    85,   155,   234,   122,   161,
+      91,   238,    80,   162,   105,    81,   169,   220,    82,    83,
+      49,    81,   242,   202,    82,    83,   251,   252,   253,   124,
+     125,   256,   257,   258,   259,   260,   170,    40,   245,   179,
+     108,   109,    51,   278,   279,   280,   265,   269,   270,    52,
+      47,    48,    53,   264,    93,    94,   267,   268,   205,   206,
+     207,    81,    47,    48,    82,    83,   181,   298,    47,    48,
+     276,   276,   276,   276,   277,   277,   277,   277,   290,   282,
+      49,    72,    93,   266,   184,   287,   183,   183,   295,   296,
+     320,   321,    49,    80,   288,   289,    81,   285,    49,    82,
+      83,   185,    51,   292,   305,   304,   188,   187,   211,    52,
+     212,    73,    53,   297,    51,   191,   214,   215,   171,   109,
+      51,    52,   307,   301,    53,   216,   217,    67,    47,    48,
+      53,   116,   218,   230,   314,   197,   198,   199,   200,   201,
+     310,   229,   311,   192,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   318,   316,    93,    94,   231,    49,   328,
+     324,    84,    85,   232,   327,   236,   334,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   137,    50,   240,
+      51,     4,   205,   206,   207,   241,   241,    52,   243,   246,
+      53,   254,   247,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,   255,   273,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    47,    48,
+      80,   261,    80,    81,    28,    81,    82,    83,    82,    83,
+     262,   263,   331,   235,    84,    85,    84,    85,    29,    30,
+      31,   271,   272,    32,    47,    48,   274,    40,    49,    80,
+      73,   123,    81,   124,   125,    82,    83,    93,    94,   281,
+     283,    95,    96,    84,    85,    47,    48,   284,    50,   286,
+      51,   291,   294,   293,    49,    80,   300,    67,    81,    97,
+      53,    82,    83,    93,    94,    47,    48,    95,    96,    47,
+      48,   302,   303,   308,    50,    49,    51,   306,    47,    48,
+     309,   312,   317,    67,   319,    97,    53,   315,   323,   325,
+      84,    85,    47,    48,   326,    49,   330,    51,   332,    49,
+     172,   138,   114,   329,    67,    47,    48,    53,    49,   250,
+      84,    85,     0,     0,     0,     0,     0,    51,     0,    50,
+       0,    51,    49,     0,    52,     0,   235,    53,    67,     0,
+      51,    53,     0,     0,     0,    49,     0,    52,     0,     0,
+      53,     0,     0,     0,    51,     0,    80,     0,     0,    81,
+       0,    52,    82,    83,    53,     0,     0,    51,     0,     0,
+      84,    85,     0,     0,    67,     0,     0,    53,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,    37,    38,
+      39,     0,    42,    43,    44,    45,    46,     0,     0,    57,
+       0,     0,    60,    61,    62,    63,    64,    65,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,     0,   299,
+     194,   195,   196,   197,   198,   199,   200,   201,   223,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   225,   195,
+     196,   197,   198,   199,   200,   201
 };
 
 static const yytype_int16 yycheck[] =
 {
-      35,    36,    37,    43,    15,    16,    27,    42,    58,    37,
-      59,     9,    61,    62,     9,   128,    27,    65,    37,     0,
-      18,    19,   110,   106,   107,    44,    37,    63,    26,    40,
-       9,    66,    43,    15,    16,    46,    47,    56,    60,    61,
-      38,    52,    62,    41,    63,    64,    44,    45,    73,    60,
-      75,    60,     6,     7,    61,     9,   104,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,   115,    63,   147,
-      65,   149,    83,    62,    95,   110,    55,   112,   166,     8,
-       9,    66,   110,    36,    95,   168,   145,   146,    63,    42,
-      11,   110,    68,   104,    66,     8,     9,    52,    53,   110,
-      54,    66,   185,    39,    40,    41,    42,   142,    63,    38,
-      39,   122,   123,    42,    63,    44,    45,   128,   153,   130,
-      63,    67,   104,   182,    66,    38,   151,     8,     9,    10,
-      59,   166,   167,   131,   153,    66,   184,    66,   166,   158,
-      69,    66,    55,   178,   257,    63,    59,   166,   159,   160,
-      39,    40,    41,    66,    66,   166,    69,    38,     6,   208,
-       8,     9,   211,   212,   189,   190,   191,     8,     9,   194,
-     195,   196,   197,   198,    55,    56,    57,    63,    59,    66,
-      46,    47,   180,    63,   209,    66,    52,    53,    69,    66,
-     225,   226,   227,   228,   213,   214,    39,    46,    47,    42,
-       7,    44,    45,    48,    49,   240,   241,   242,    63,   259,
-      42,   232,    44,    45,   225,   226,   227,   228,     8,     9,
-      63,   232,    46,    47,   243,   250,   251,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,     8,     9,    66,
-     238,    63,   282,    46,    47,    63,   244,   296,    38,    52,
-      53,   270,     5,     6,     7,     8,     9,    10,    11,    12,
-     295,    63,    52,    53,    63,    68,   264,    38,   287,    59,
-      63,   282,   307,    67,    64,    63,    66,     6,   313,    69,
-     299,     7,   317,    10,    11,    12,    57,    58,    59,   241,
-     242,    67,     7,     7,   319,    66,    68,    66,    69,    42,
-      65,   326,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,     1,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    64,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    63,     6,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,     8,
-       9,     7,    63,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,   226,   227,   228,    67,    67,    57,    58,
-      59,    63,    62,    62,    55,    63,     8,     9,    63,    38,
-      39,     8,     9,    42,    67,    44,    45,    46,    47,    67,
-      67,    50,    51,    52,    53,    67,    67,    63,    57,    67,
-      59,     8,     9,     8,     9,    66,    38,    66,    68,    68,
-      69,    38,    39,    63,    63,    42,    63,    44,    45,    46,
-      47,     8,     9,    50,    51,    57,    58,    59,    63,    65,
-      57,    38,    59,    38,    66,     8,     9,    69,    40,    66,
-      66,    68,    69,     8,     9,    52,    53,     8,     9,    67,
-      39,    38,    59,    42,    59,    44,    45,    63,    66,    66,
-      63,    66,    69,    68,    69,    38,    63,    63,    67,    63,
-      57,   104,    59,    38,   320,    39,    61,    38,    42,    66,
-      44,    45,    69,   188,    57,    -1,    59,    -1,    52,    53,
-      -1,    -1,    -1,    66,    59,    -1,    69,    -1,    59,    63,
-      -1,    66,    -1,    -1,    69,    66,    -1,    -1,    69,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    39,
-      -1,    -1,    42,    -1,    44,    45,     8,     9,    10,    11,
-      12,    -1,    52,    53,    -1,     6,     7,     8,    -1,    10,
-      11,    12,    13,    14,    -1,    -1,    17,    -1,    68,    20,
-      21,    22,    23,    24,    25,    -1,    39,    -1,    -1,    42,
-      -1,    44,    45,    -1,    -1,    -1,    -1,    -1,    62,    52,
-      53,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-       6,     7,     8,     9,    10,    11,    12,    39,    40,    41,
-      42,    -1,    44,    45
+      15,    16,    44,    59,     9,    38,   108,   109,     9,    38,
+      27,   112,    27,    18,    19,     9,    45,    36,    37,    38,
+      28,    26,    66,    38,    43,   151,    41,   153,    57,    44,
+      15,    16,    47,    48,    39,    64,    65,    42,    53,     0,
+      45,    46,    60,    63,    62,    63,    61,    37,    67,    61,
+      76,    64,    78,    43,    63,    56,    53,    54,    73,    39,
+      40,    41,   106,    69,     8,     9,    10,    64,   169,   171,
+      64,    62,    66,   117,    67,     6,     7,    64,     9,   112,
+      97,    39,    97,   112,    42,    11,   188,    45,    46,    61,
+      62,   106,    69,   112,    38,   114,    67,   112,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    67,   124,
+     125,    67,    56,    57,    58,   130,    60,   132,    64,   147,
+     148,   106,   130,    67,    55,   144,    70,   156,   133,   155,
+       8,     9,   161,    10,    11,    12,   169,   156,    47,    48,
+     169,    64,   150,   187,    53,    54,    67,   162,   163,    64,
+     169,   170,    39,    67,   169,    42,    64,   185,    45,    46,
+      38,    42,   181,    68,    45,    46,   192,   193,   194,     8,
+       9,   197,   198,   199,   200,   201,    67,    64,   183,    67,
+      58,    59,    60,   230,   231,   232,   212,   216,   217,    67,
+       8,     9,    70,   211,    47,    48,   214,   215,    39,    40,
+      41,    42,     8,     9,    45,    46,    64,   263,     8,     9,
+     229,   230,   231,   232,   229,   230,   231,   232,   247,   236,
+      38,   236,    47,    48,    64,   244,   245,   246,   254,   255,
+      49,    50,    38,    39,   245,   246,    42,   242,    38,    45,
+      46,    67,    60,   248,   286,   274,     7,    64,    64,    67,
+      64,    69,    70,   261,    60,    67,    64,    64,    58,    59,
+      60,    67,   291,   268,    70,    64,    64,    67,     8,     9,
+      70,   286,    68,     7,   303,     8,     9,    10,    11,    12,
+     299,     6,   300,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,   312,   309,    47,    48,     7,    38,   325,
+     319,    53,    54,     7,   323,    69,   332,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    69,    58,    67,
+      60,     1,    39,    40,    41,    42,    42,    67,    66,    65,
+      70,     6,    64,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,     7,    68,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,     8,     9,
+      39,    64,    39,    42,    44,    42,    45,    46,    45,    46,
+      68,    64,    68,    56,    53,    54,    53,    54,    58,    59,
+      60,    68,    68,    63,     8,     9,    64,    64,    38,    39,
+      69,     6,    42,     8,     9,    45,    46,    47,    48,    68,
+      68,    51,    52,    53,    54,     8,     9,    68,    58,    64,
+      60,    64,    68,    67,    38,    39,    64,    67,    42,    69,
+      70,    45,    46,    47,    48,     8,     9,    51,    52,     8,
+       9,    64,    64,    40,    58,    38,    60,    66,     8,     9,
+       9,    67,    64,    67,    64,    69,    70,    68,    64,    67,
+      53,    54,     8,     9,    64,    38,    68,    60,    64,    38,
+     106,    62,    65,   326,    67,     8,     9,    70,    38,   191,
+      53,    54,    -1,    -1,    -1,    -1,    -1,    60,    -1,    58,
+      -1,    60,    38,    -1,    67,    -1,    56,    70,    67,    -1,
+      60,    70,    -1,    -1,    -1,    38,    -1,    67,    -1,    -1,
+      70,    -1,    -1,    -1,    60,    -1,    39,    -1,    -1,    42,
+      -1,    67,    45,    46,    70,    -1,    -1,    60,    -1,    -1,
+      53,    54,    -1,    -1,    67,    -1,    -1,    70,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,     6,     7,
+       8,    -1,    10,    11,    12,    13,    14,    -1,    -1,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    25,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    -1,    64,
+       5,     6,     7,     8,     9,    10,    11,    12,    63,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    63,     6,
+       7,     8,     9,    10,    11,    12
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    71,     0,    72,     1,    13,    14,    15,    16,    17,
+       0,    72,     0,    73,     1,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    57,    58,
-      59,    62,    73,    76,    62,    77,    77,    77,    77,    63,
-      78,    77,    77,    77,    77,    77,     8,     9,    38,    57,
-      59,    66,    69,    99,   102,    99,    77,    78,    78,    77,
-      77,    77,    77,    77,    77,    78,    66,    85,    86,    87,
-      99,   102,    60,    61,    60,    61,    62,    39,    42,    44,
-      45,    52,    53,    68,    88,    89,    90,    92,    94,    95,
-      88,    46,    47,    50,    51,    68,    80,    81,    83,    87,
-      90,    92,    98,   102,    78,    78,    57,    58,    79,   102,
-      78,    88,    64,    86,   102,    78,    90,    95,    78,   102,
-     102,     6,     8,     9,   100,   102,   104,   102,    63,    66,
-      11,    90,    80,    98,   102,    68,    81,    97,    98,    98,
-      90,    90,    66,    85,    95,    66,    66,    75,   104,    74,
-     104,    66,   102,    63,     6,     7,     9,    54,    63,    66,
-       9,    10,    55,    56,    87,   102,    63,    66,    57,    79,
-      84,    85,    99,   102,   100,   100,    66,    83,    63,    82,
-      95,    63,    66,    85,    63,     7,   102,   102,    66,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    67,
-      89,   102,    39,    40,    41,   101,   102,    78,    63,    63,
-       9,    63,    63,    63,    63,    67,    94,    94,    73,    62,
-      73,    62,   104,    90,    95,     6,     7,     7,     7,    90,
-     102,    55,    68,    83,    95,   100,    66,    42,    95,    65,
-       9,    78,    64,    63,    85,   100,   101,   104,   104,   104,
-       6,     7,   104,   104,   104,   104,   104,    63,    67,    63,
-      98,   104,    47,    98,    98,    90,    90,    67,    67,    67,
-      63,    93,    95,   102,    93,    93,    93,    67,    87,    67,
-      67,    78,    63,    95,    82,    82,    90,    63,    78,    66,
-      67,   104,   104,    89,    80,    63,    63,    78,    63,    63,
-      90,    86,    65,    90,    40,    95,    98,    66,    91,    90,
-      67,    63,    95,    63,    48,    49,    96,    63,    95,    66,
-      63,    95,   104,    96,    67,    67,    63,   103,   104
+      30,    31,    32,    33,    34,    35,    36,    37,    44,    58,
+      59,    60,    63,    74,    77,    63,    78,    78,    78,    78,
+      64,    79,    78,    78,    78,    78,    78,     8,     9,    38,
+      58,    60,    67,    70,   100,   103,   100,    78,    79,    79,
+      78,    78,    78,    78,    78,    78,    79,    67,    86,    87,
+      88,   100,   103,    69,    90,    61,    62,    61,    62,    63,
+      39,    42,    45,    46,    53,    54,    89,    90,    91,    93,
+      95,    96,    89,    47,    48,    51,    52,    69,    81,    82,
+      84,    88,    91,    93,    99,   103,    79,    79,    58,    59,
+      80,   103,    79,    89,    65,    87,   103,    79,    91,    96,
+      79,   103,   103,     6,     8,     9,   101,   103,   105,   103,
+      64,    67,    11,    91,    81,    99,   103,    69,    82,    98,
+      99,    99,    91,    91,    67,    86,    96,    67,    67,   103,
+      64,    76,   105,    75,   105,    67,    64,     6,     7,     9,
+      55,    64,    67,     9,    10,    56,    57,    88,   103,    64,
+      67,    58,    80,    85,    86,   100,   103,   101,   101,    67,
+      84,    64,    83,    96,    64,    67,    86,    64,     7,   103,
+     103,    67,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    68,    90,   103,    39,    40,    41,   102,   103,
+      79,    64,    64,     9,    64,    64,    64,    64,    68,    95,
+      95,    90,    74,    63,    74,    63,   105,    91,    96,     6,
+       7,     7,     7,    91,   103,    56,    69,    84,    96,   101,
+      67,    42,    96,    66,     9,    79,    65,    64,    86,   101,
+     102,   105,   105,   105,     6,     7,   105,   105,   105,   105,
+     105,    64,    68,    64,    99,   105,    48,    99,    99,    91,
+      91,    68,    68,    68,    64,    94,    96,   103,    94,    94,
+      94,    68,    88,    68,    68,    79,    64,    96,    83,    83,
+      91,    64,    79,    67,    68,   105,   105,    90,    81,    64,
+      64,    79,    64,    64,    91,    87,    66,    91,    40,     9,
+      96,    99,    67,    92,    91,    68,   103,    64,    96,    64,
+      49,    50,    97,    64,    96,    67,    64,    96,   105,    97,
+      68,    68,    64,   104,   105
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1016,7 +1010,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)                 \
      fprintf (File, "%d.%d-%d.%d",                     \
              (Loc).first_line, (Loc).first_column,     \
@@ -1127,20 +1121,17 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
 #else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
   YYFPRINTF (stderr, "\n");
 }
 
@@ -1174,11 +1165,11 @@ yy_reduce_print (yyvsp, yyrule)
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+      fprintf (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
                       &(yyvsp[(yyi + 1) - (yynrhs)])
                                       );
-      YYFPRINTF (stderr, "\n");
+      fprintf (stderr, "\n");
     }
 }
 
@@ -1458,8 +1449,10 @@ yydestruct (yymsg, yytype, yyvaluep)
        break;
     }
 }
+\f
 
 /* Prevent warnings from -Wmissing-prototypes.  */
+
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -1475,10 +1468,11 @@ int yyparse ();
 #endif /* ! YYPARSE_PARAM */
 
 
-/* The lookahead symbol.  */
+
+/* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
@@ -1486,9 +1480,9 @@ int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+/*----------.
+| yyparse.  |
+`----------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1512,68 +1506,66 @@ yyparse ()
 #endif
 #endif
 {
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
 
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
 
-    int yystate;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
 
-    /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
 
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
 
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-  int yyn;
-  int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY; /* Cause a token to be read.  */
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
+
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -1603,6 +1595,7 @@ yyparse ()
        YYSTYPE *yyvs1 = yyvs;
        yytype_int16 *yyss1 = yyss;
 
+
        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
@@ -1610,6 +1603,7 @@ yyparse ()
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * sizeof (*yyssp),
                    &yyvs1, yysize * sizeof (*yyvsp),
+
                    &yystacksize);
 
        yyss = yyss1;
@@ -1632,8 +1626,9 @@ yyparse ()
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
        if (! yyptr)
          goto yyexhaustedlab;
-       YYSTACK_RELOCATE (yyss_alloc, yyss);
-       YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
 #  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
@@ -1644,6 +1639,7 @@ yyparse ()
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
+
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
                  (unsigned long int) yystacksize));
 
@@ -1653,9 +1649,6 @@ yyparse ()
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
-  if (yystate == YYFINAL)
-    YYACCEPT;
-
   goto yybackup;
 
 /*-----------.
@@ -1664,16 +1657,16 @@ yyparse ()
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
+     look-ahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -1705,16 +1698,20 @@ yybackup:
       goto yyreduce;
     }
 
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the lookahead token.  */
+  /* Shift the look-ahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -1754,8 +1751,6 @@ yyreduce:
   switch (yyn)
     {
         case 3:
-
-/* Line 1455 of yacc.c  */
 #line 69 "a.y"
     {
                stmtline = lineno;
@@ -1763,8 +1758,6 @@ yyreduce:
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
 #line 76 "a.y"
     {
                if((yyvsp[(1) - (2)].sym)->value != pc)
@@ -1774,8 +1767,6 @@ yyreduce:
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 83 "a.y"
     {
                (yyvsp[(1) - (2)].sym)->type = LLAB;
@@ -1784,8 +1775,6 @@ yyreduce:
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 89 "a.y"
     {
                (yyvsp[(1) - (4)].sym)->type = LVAR;
@@ -1794,8 +1783,6 @@ yyreduce:
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 94 "a.y"
     {
                if((yyvsp[(1) - (4)].sym)->value != (yyvsp[(3) - (4)].lval))
@@ -1805,8 +1792,6 @@ yyreduce:
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 108 "a.y"
     {
                outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].gen));
@@ -1814,8 +1799,6 @@ yyreduce:
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 112 "a.y"
     {
                outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].lval), &nullgen);
@@ -1823,8 +1806,6 @@ yyreduce:
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 116 "a.y"
     {
                outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
@@ -1832,8 +1813,6 @@ yyreduce:
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 123 "a.y"
     {
                outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
@@ -1841,8 +1820,6 @@ yyreduce:
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 130 "a.y"
     {
                outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
@@ -1850,8 +1827,6 @@ yyreduce:
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 137 "a.y"
     {
                outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen));
@@ -1859,8 +1834,6 @@ yyreduce:
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 141 "a.y"
     {
                outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen));
@@ -1868,8 +1841,6 @@ yyreduce:
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 148 "a.y"
     {
                outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen));
@@ -1877,8 +1848,6 @@ yyreduce:
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 155 "a.y"
     {
                outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen));
@@ -1886,8 +1855,6 @@ yyreduce:
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 162 "a.y"
     {
                outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].gen));
@@ -1895,8 +1862,6 @@ yyreduce:
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 169 "a.y"
     {
                outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].lval), &nullgen);
@@ -1904,8 +1869,6 @@ yyreduce:
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 176 "a.y"
     {
                Gen g;
@@ -1918,8 +1881,6 @@ yyreduce:
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 185 "a.y"
     {
                Gen g;
@@ -1932,8 +1893,6 @@ yyreduce:
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 197 "a.y"
     {
                outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(5) - (7)].gen), (yyvsp[(3) - (7)].gen).reg, &(yyvsp[(7) - (7)].gen));
@@ -1941,8 +1900,6 @@ yyreduce:
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 201 "a.y"
     {
                outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].gen), (yyvsp[(3) - (6)].gen).reg, &(yyvsp[(3) - (6)].gen));
@@ -1950,8 +1907,6 @@ yyreduce:
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 205 "a.y"
     {
                outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(4) - (6)].gen), (yyvsp[(6) - (6)].gen).reg, &(yyvsp[(6) - (6)].gen));
@@ -1959,8 +1914,6 @@ yyreduce:
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 212 "a.y"
     {
                outcode((yyvsp[(1) - (3)].lval), (yyvsp[(2) - (3)].lval), &nullgen, NREG, &nullgen);
@@ -1968,8 +1921,6 @@ yyreduce:
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 219 "a.y"
     {
                outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].gen), 0, &(yyvsp[(4) - (4)].gen));
@@ -1977,8 +1928,6 @@ yyreduce:
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 223 "a.y"
     {
                outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].gen), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].gen));
@@ -1986,72 +1935,69 @@ yyreduce:
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
-#line 230 "a.y"
+#line 227 "a.y"
     {
-               outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].gen), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].gen));
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if((yyvsp[(8) - (8)].lval) == 0)
+                       (yyvsp[(8) - (8)].lval) = 1;
+               (yyvsp[(6) - (8)].gen).type = D_CONST2;
+               (yyvsp[(6) - (8)].gen).offset2 = (yyvsp[(8) - (8)].lval);
+               outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].gen), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].gen));
        }
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
-#line 237 "a.y"
+#line 240 "a.y"
     {
-               outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].gen), NREG, &nullgen);
+               outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].gen), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].gen));
        }
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 244 "a.y"
+#line 247 "a.y"
     {
-               outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen));
+               outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].gen), NREG, &nullgen);
        }
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 251 "a.y"
+#line 254 "a.y"
     {
-               outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
+               outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].gen));
        }
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 255 "a.y"
+#line 261 "a.y"
     {
                outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
        }
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 259 "a.y"
+#line 265 "a.y"
     {
-               outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].gen));
+               outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].gen), NREG, &(yyvsp[(5) - (5)].gen));
        }
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 263 "a.y"
+#line 269 "a.y"
     {
-               outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].gen).reg, &nullgen);
+               outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].gen));
        }
     break;
 
   case 40:
+#line 273 "a.y"
+    {
+               outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].gen), (yyvsp[(5) - (6)].gen).reg, &nullgen);
+       }
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 270 "a.y"
+  case 41:
+#line 280 "a.y"
     {
                Gen g;
 
@@ -2072,19 +2018,15 @@ yyreduce:
        }
     break;
 
-  case 41:
-
-/* Line 1455 of yacc.c  */
-#line 292 "a.y"
+  case 42:
+#line 302 "a.y"
     {
                outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].gen), (yyvsp[(5) - (7)].gen).reg, &(yyvsp[(7) - (7)].gen));
        }
     break;
 
-  case 42:
-
-/* Line 1455 of yacc.c  */
-#line 300 "a.y"
+  case 43:
+#line 310 "a.y"
     {
                (yyvsp[(7) - (9)].gen).type = D_REGREG2;
                (yyvsp[(7) - (9)].gen).offset = (yyvsp[(9) - (9)].lval);
@@ -2092,55 +2034,50 @@ yyreduce:
        }
     break;
 
-  case 43:
-
-/* Line 1455 of yacc.c  */
-#line 309 "a.y"
+  case 44:
+#line 319 "a.y"
     {
                outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].gen), NREG, &nullgen);
        }
     break;
 
-  case 44:
+  case 45:
+#line 326 "a.y"
+    {
+               outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].gen), NREG, &(yyvsp[(4) - (4)].gen));
+       }
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 316 "a.y"
+  case 46:
+#line 333 "a.y"
     {
                outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, NREG, &nullgen);
        }
     break;
 
-  case 45:
-
-/* Line 1455 of yacc.c  */
-#line 321 "a.y"
+  case 47:
+#line 338 "a.y"
     {
                (yyval.lval) = Always;
        }
     break;
 
-  case 46:
-
-/* Line 1455 of yacc.c  */
-#line 325 "a.y"
+  case 48:
+#line 342 "a.y"
     {
                (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 47:
-
-/* Line 1455 of yacc.c  */
-#line 329 "a.y"
+  case 49:
+#line 346 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 50:
-
-/* Line 1455 of yacc.c  */
-#line 338 "a.y"
+  case 52:
+#line 355 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2148,10 +2085,8 @@ yyreduce:
        }
     break;
 
-  case 51:
-
-/* Line 1455 of yacc.c  */
-#line 344 "a.y"
+  case 53:
+#line 361 "a.y"
     {
                (yyval.gen) = nullgen;
                if(pass == 2)
@@ -2162,10 +2097,8 @@ yyreduce:
        }
     break;
 
-  case 52:
-
-/* Line 1455 of yacc.c  */
-#line 353 "a.y"
+  case 54:
+#line 370 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2174,10 +2107,8 @@ yyreduce:
        }
     break;
 
-  case 53:
-
-/* Line 1455 of yacc.c  */
-#line 361 "a.y"
+  case 55:
+#line 378 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST;
@@ -2185,30 +2116,24 @@ yyreduce:
        }
     break;
 
-  case 54:
-
-/* Line 1455 of yacc.c  */
-#line 367 "a.y"
+  case 56:
+#line 384 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
                (yyval.gen).type = D_CONST;
        }
     break;
 
-  case 55:
-
-/* Line 1455 of yacc.c  */
-#line 372 "a.y"
+  case 57:
+#line 389 "a.y"
     {
                (yyval.gen) = (yyvsp[(4) - (4)].gen);
                (yyval.gen).type = D_OCONST;
        }
     break;
 
-  case 56:
-
-/* Line 1455 of yacc.c  */
-#line 377 "a.y"
+  case 58:
+#line 394 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SCONST;
@@ -2216,10 +2141,8 @@ yyreduce:
        }
     break;
 
-  case 58:
-
-/* Line 1455 of yacc.c  */
-#line 386 "a.y"
+  case 60:
+#line 403 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2227,10 +2150,8 @@ yyreduce:
        }
     break;
 
-  case 59:
-
-/* Line 1455 of yacc.c  */
-#line 392 "a.y"
+  case 61:
+#line 409 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2238,19 +2159,15 @@ yyreduce:
        }
     break;
 
-  case 60:
-
-/* Line 1455 of yacc.c  */
-#line 400 "a.y"
+  case 62:
+#line 417 "a.y"
     {
                (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 61:
-
-/* Line 1455 of yacc.c  */
-#line 404 "a.y"
+  case 63:
+#line 421 "a.y"
     {
                int i;
                (yyval.lval)=0;
@@ -2261,29 +2178,23 @@ yyreduce:
        }
     break;
 
-  case 62:
-
-/* Line 1455 of yacc.c  */
-#line 413 "a.y"
+  case 64:
+#line 430 "a.y"
     {
                (yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 66:
-
-/* Line 1455 of yacc.c  */
-#line 422 "a.y"
+  case 68:
+#line 439 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (4)].gen);
                (yyval.gen).reg = (yyvsp[(3) - (4)].lval);
        }
     break;
 
-  case 67:
-
-/* Line 1455 of yacc.c  */
-#line 427 "a.y"
+  case 69:
+#line 444 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_PSR;
@@ -2291,10 +2202,8 @@ yyreduce:
        }
     break;
 
-  case 68:
-
-/* Line 1455 of yacc.c  */
-#line 433 "a.y"
+  case 70:
+#line 450 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FPCR;
@@ -2302,10 +2211,8 @@ yyreduce:
        }
     break;
 
-  case 69:
-
-/* Line 1455 of yacc.c  */
-#line 439 "a.y"
+  case 71:
+#line 456 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2313,10 +2220,8 @@ yyreduce:
        }
     break;
 
-  case 73:
-
-/* Line 1455 of yacc.c  */
-#line 450 "a.y"
+  case 75:
+#line 467 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (1)].gen);
                if((yyvsp[(1) - (1)].gen).name != D_EXTERN && (yyvsp[(1) - (1)].gen).name != D_STATIC) {
@@ -2324,10 +2229,8 @@ yyreduce:
        }
     break;
 
-  case 74:
-
-/* Line 1455 of yacc.c  */
-#line 458 "a.y"
+  case 76:
+#line 475 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2336,10 +2239,8 @@ yyreduce:
        }
     break;
 
-  case 76:
-
-/* Line 1455 of yacc.c  */
-#line 468 "a.y"
+  case 78:
+#line 485 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2348,10 +2249,8 @@ yyreduce:
        }
     break;
 
-  case 78:
-
-/* Line 1455 of yacc.c  */
-#line 478 "a.y"
+  case 80:
+#line 495 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (4)].gen);
                (yyval.gen).type = D_OREG;
@@ -2359,10 +2258,8 @@ yyreduce:
        }
     break;
 
-  case 83:
-
-/* Line 1455 of yacc.c  */
-#line 491 "a.y"
+  case 85:
+#line 508 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST;
@@ -2370,10 +2267,8 @@ yyreduce:
        }
     break;
 
-  case 84:
-
-/* Line 1455 of yacc.c  */
-#line 499 "a.y"
+  case 86:
+#line 516 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_REG;
@@ -2381,10 +2276,8 @@ yyreduce:
        }
     break;
 
-  case 85:
-
-/* Line 1455 of yacc.c  */
-#line 507 "a.y"
+  case 87:
+#line 524 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_REGREG;
@@ -2393,10 +2286,8 @@ yyreduce:
        }
     break;
 
-  case 86:
-
-/* Line 1455 of yacc.c  */
-#line 516 "a.y"
+  case 88:
+#line 533 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SHIFT;
@@ -2404,10 +2295,8 @@ yyreduce:
        }
     break;
 
-  case 87:
-
-/* Line 1455 of yacc.c  */
-#line 522 "a.y"
+  case 89:
+#line 539 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SHIFT;
@@ -2415,10 +2304,8 @@ yyreduce:
        }
     break;
 
-  case 88:
-
-/* Line 1455 of yacc.c  */
-#line 528 "a.y"
+  case 90:
+#line 545 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SHIFT;
@@ -2426,10 +2313,8 @@ yyreduce:
        }
     break;
 
-  case 89:
-
-/* Line 1455 of yacc.c  */
-#line 534 "a.y"
+  case 91:
+#line 551 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SHIFT;
@@ -2437,10 +2322,8 @@ yyreduce:
        }
     break;
 
-  case 90:
-
-/* Line 1455 of yacc.c  */
-#line 542 "a.y"
+  case 92:
+#line 559 "a.y"
     {
                if((yyval.lval) < 0 || (yyval.lval) >= 16)
                        print("register value out of range\n");
@@ -2448,10 +2331,8 @@ yyreduce:
        }
     break;
 
-  case 91:
-
-/* Line 1455 of yacc.c  */
-#line 548 "a.y"
+  case 93:
+#line 565 "a.y"
     {
                if((yyval.lval) < 0 || (yyval.lval) >= 32)
                        print("shift value out of range\n");
@@ -2459,19 +2340,15 @@ yyreduce:
        }
     break;
 
-  case 93:
-
-/* Line 1455 of yacc.c  */
-#line 557 "a.y"
+  case 95:
+#line 574 "a.y"
     {
                (yyval.lval) = REGPC;
        }
     break;
 
-  case 94:
-
-/* Line 1455 of yacc.c  */
-#line 561 "a.y"
+  case 96:
+#line 578 "a.y"
     {
                if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG)
                        print("register value out of range\n");
@@ -2479,19 +2356,15 @@ yyreduce:
        }
     break;
 
-  case 96:
-
-/* Line 1455 of yacc.c  */
-#line 570 "a.y"
+  case 98:
+#line 587 "a.y"
     {
                (yyval.lval) = REGSP;
        }
     break;
 
-  case 98:
-
-/* Line 1455 of yacc.c  */
-#line 577 "a.y"
+  case 100:
+#line 594 "a.y"
     {
                if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG)
                        print("register value out of range\n");
@@ -2499,10 +2372,8 @@ yyreduce:
        }
     break;
 
-  case 101:
-
-/* Line 1455 of yacc.c  */
-#line 589 "a.y"
+  case 103:
+#line 606 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FREG;
@@ -2510,10 +2381,8 @@ yyreduce:
        }
     break;
 
-  case 102:
-
-/* Line 1455 of yacc.c  */
-#line 595 "a.y"
+  case 104:
+#line 612 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FREG;
@@ -2521,10 +2390,8 @@ yyreduce:
        }
     break;
 
-  case 103:
-
-/* Line 1455 of yacc.c  */
-#line 603 "a.y"
+  case 105:
+#line 620 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2534,10 +2401,8 @@ yyreduce:
        }
     break;
 
-  case 104:
-
-/* Line 1455 of yacc.c  */
-#line 611 "a.y"
+  case 106:
+#line 628 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2547,10 +2412,8 @@ yyreduce:
        }
     break;
 
-  case 105:
-
-/* Line 1455 of yacc.c  */
-#line 619 "a.y"
+  case 107:
+#line 636 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_OREG;
@@ -2560,190 +2423,149 @@ yyreduce:
        }
     break;
 
-  case 106:
-
-/* Line 1455 of yacc.c  */
-#line 628 "a.y"
+  case 108:
+#line 645 "a.y"
     {
                (yyval.lval) = 0;
        }
     break;
 
-  case 107:
-
-/* Line 1455 of yacc.c  */
-#line 632 "a.y"
+  case 109:
+#line 649 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 108:
-
-/* Line 1455 of yacc.c  */
-#line 636 "a.y"
+  case 110:
+#line 653 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 113:
-
-/* Line 1455 of yacc.c  */
-#line 648 "a.y"
+  case 115:
+#line 665 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
        }
     break;
 
-  case 114:
-
-/* Line 1455 of yacc.c  */
-#line 652 "a.y"
+  case 116:
+#line 669 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 115:
-
-/* Line 1455 of yacc.c  */
-#line 656 "a.y"
+  case 117:
+#line 673 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 116:
-
-/* Line 1455 of yacc.c  */
-#line 660 "a.y"
+  case 118:
+#line 677 "a.y"
     {
                (yyval.lval) = ~(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 117:
-
-/* Line 1455 of yacc.c  */
-#line 664 "a.y"
+  case 119:
+#line 681 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (3)].lval);
        }
     break;
 
-  case 118:
-
-/* Line 1455 of yacc.c  */
-#line 669 "a.y"
+  case 120:
+#line 686 "a.y"
     {
                (yyval.lval) = 0;
        }
     break;
 
-  case 119:
-
-/* Line 1455 of yacc.c  */
-#line 673 "a.y"
+  case 121:
+#line 690 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 121:
-
-/* Line 1455 of yacc.c  */
-#line 680 "a.y"
+  case 123:
+#line 697 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 122:
-
-/* Line 1455 of yacc.c  */
-#line 684 "a.y"
+  case 124:
+#line 701 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 123:
-
-/* Line 1455 of yacc.c  */
-#line 688 "a.y"
+  case 125:
+#line 705 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 124:
-
-/* Line 1455 of yacc.c  */
-#line 692 "a.y"
+  case 126:
+#line 709 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 125:
-
-/* Line 1455 of yacc.c  */
-#line 696 "a.y"
+  case 127:
+#line 713 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 126:
-
-/* Line 1455 of yacc.c  */
-#line 700 "a.y"
+  case 128:
+#line 717 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 127:
-
-/* Line 1455 of yacc.c  */
-#line 704 "a.y"
+  case 129:
+#line 721 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 128:
-
-/* Line 1455 of yacc.c  */
-#line 708 "a.y"
+  case 130:
+#line 725 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 129:
-
-/* Line 1455 of yacc.c  */
-#line 712 "a.y"
+  case 131:
+#line 729 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 130:
-
-/* Line 1455 of yacc.c  */
-#line 716 "a.y"
+  case 132:
+#line 733 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
        }
     break;
 
 
-
-/* Line 1455 of yacc.c  */
-#line 2747 "y.tab.c"
+/* Line 1267 of yacc.c.  */
+#line 2569 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2754,6 +2576,7 @@ yyreduce:
 
   *++yyvsp = yyval;
 
+
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -2818,7 +2641,7 @@ yyerrlab:
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
+      /* If just tried and failed to reuse look-ahead token after an
         error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -2835,7 +2658,7 @@ yyerrlab:
        }
     }
 
-  /* Else will try to reuse lookahead token after shifting the error
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -2892,6 +2715,9 @@ yyerrlab1:
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
   *++yyvsp = yylval;
 
 
@@ -2916,7 +2742,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#ifndef yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2927,7 +2753,7 @@ yyexhaustedlab:
 #endif
 
 yyreturn:
-  if (yychar != YYEMPTY)
+  if (yychar != YYEOF && yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
                 yytoken, &yylval);
   /* Do not reclaim the symbols of the rule which action triggered
index 1dd0cb08aaa3e6959c8e85fc87b743e4b47e5cb8..3354f39337915623550df87a2e3a978a9d45c1db 100644 (file)
@@ -1,23 +1,24 @@
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-   
-   This program is free software: you can redistribute it and/or modify
+
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
-   
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
      LFP = 286,
      LPC = 287,
      LTYPEX = 288,
-     LR = 289,
-     LREG = 290,
-     LF = 291,
-     LFREG = 292,
-     LC = 293,
-     LCREG = 294,
-     LPSR = 295,
-     LFCR = 296,
-     LCOND = 297,
-     LS = 298,
-     LAT = 299,
-     LFCONST = 300,
-     LSCONST = 301,
-     LNAME = 302,
-     LLAB = 303,
-     LVAR = 304
+     LTYPEPC = 289,
+     LR = 290,
+     LREG = 291,
+     LF = 292,
+     LFREG = 293,
+     LC = 294,
+     LCREG = 295,
+     LPSR = 296,
+     LFCR = 297,
+     LCOND = 298,
+     LS = 299,
+     LAT = 300,
+     LFCONST = 301,
+     LSCONST = 302,
+     LNAME = 303,
+     LLAB = 304,
+     LVAR = 305
    };
 #endif
 /* Tokens.  */
 #define LFP 286
 #define LPC 287
 #define LTYPEX 288
-#define LR 289
-#define LREG 290
-#define LF 291
-#define LFREG 292
-#define LC 293
-#define LCREG 294
-#define LPSR 295
-#define LFCR 296
-#define LCOND 297
-#define LS 298
-#define LAT 299
-#define LFCONST 300
-#define LSCONST 301
-#define LNAME 302
-#define LLAB 303
-#define LVAR 304
+#define LTYPEPC 289
+#define LR 290
+#define LREG 291
+#define LF 292
+#define LFREG 293
+#define LC 294
+#define LCREG 295
+#define LPSR 296
+#define LFCR 297
+#define LCOND 298
+#define LS 299
+#define LAT 300
+#define LFCONST 301
+#define LSCONST 302
+#define LNAME 303
+#define LLAB 304
+#define LVAR 305
 
 
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-{
-
-/* Line 1676 of yacc.c  */
 #line 38 "a.y"
-
+{
        Sym     *sym;
        int32   lval;
        double  dval;
        char    sval[8];
        Gen     gen;
-
-
-
-/* Line 1676 of yacc.c  */
-#line 160 "y.tab.h"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+}
+/* Line 1529 of yacc.c.  */
+#line 157 "y.tab.h"
+       YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE yylval;
 
-
index 42af65e35f401ba764dd744c946f9cf6f51aa685..4f2672842bb022df7f77ff3c8a641bb66cf0dcac 100644 (file)
@@ -49,7 +49,7 @@
 %left  '+' '-'
 %left  '*' '/' '%'
 %token <lval>  LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4
-%token <lval>  LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPEG
+%token <lval>  LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPEG LTYPEPC
 %token <lval>  LTYPES LTYPEM LTYPEI LTYPEXC LTYPEX LTYPERT
 %token <lval>  LCONST LFP LPC LSB
 %token <lval>  LBREG LLREG LSREG LFREG LMREG LXREG
@@ -58,7 +58,7 @@
 %token <sym>   LNAME LLAB LVAR
 %type  <lval>  con con2 expr pointer offset
 %type  <gen>   mem imm imm2 reg nam rel rem rim rom omem nmem
-%type  <gen2>  nonnon nonrel nonrem rimnon rimrem remrim spec10 spec11
+%type  <gen2>  nonnon nonrel nonrem rimnon rimrem remrim spec10 spec11 spec12
 %type  <gen2>  spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9
 %%
 prog:
@@ -115,6 +115,7 @@ inst:
 |      LTYPEX spec9    { outcode($1, &$2); }
 |      LTYPERT spec10  { outcode($1, &$2); }
 |      LTYPEG spec11   { outcode($1, &$2); }
+|      LTYPEPC spec12  { outcode($1, &$2); }
 
 nonnon:
        {
@@ -308,6 +309,13 @@ spec11:    /* GLOBL */
                $$.to = $5;
        }
 
+spec12:        /* PCDATA */
+       imm ',' imm
+       {
+               $$.from = $1;
+               $$.to = $3;
+       }
+
 rem:
        reg
 |      mem
@@ -605,11 +613,19 @@ con2:
        }
 |      LCONST '-' LCONST
        {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if($3 == 0)
+                       $3 = 1;
                $$ = ($1 & 0xffffffffLL) +
                        (($3 & 0xffffLL) << 32);
        }
 |      '-' LCONST '-' LCONST
        {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if($4 == 0)
+                       $4 = 1;
                $$ = (-$2 & 0xffffffffLL) +
                        (($4 & 0xffffLL) << 32);
        }
index 290785c551d5b1539dd3bc78b94499f3278aab8d..46e5342c322c4f70d884dfee76cbe88d96d19661 100644 (file)
@@ -1020,7 +1020,7 @@ struct
        "PSHUFD",       LTYPEX, APSHUFD,
        "USEFIELD",     LTYPEN, AUSEFIELD,
        "PCLMULQDQ",    LTYPEX, APCLMULQDQ,
-
+       "PCDATA",       LTYPEPC,        APCDATA,
        0
 };
 
index 75c4ad5ea320eb846882879a96bbdf6874af718c..4e1faa6b9cd2c29c6985a404e02ed490cf003439 100644 (file)
      LTYPER = 266,
      LTYPET = 267,
      LTYPEG = 268,
-     LTYPES = 269,
-     LTYPEM = 270,
-     LTYPEI = 271,
-     LTYPEXC = 272,
-     LTYPEX = 273,
-     LTYPERT = 274,
-     LCONST = 275,
-     LFP = 276,
-     LPC = 277,
-     LSB = 278,
-     LBREG = 279,
-     LLREG = 280,
-     LSREG = 281,
-     LFREG = 282,
-     LMREG = 283,
-     LXREG = 284,
-     LFCONST = 285,
-     LSCONST = 286,
-     LSP = 287,
-     LNAME = 288,
-     LLAB = 289,
-     LVAR = 290
+     LTYPEPC = 269,
+     LTYPES = 270,
+     LTYPEM = 271,
+     LTYPEI = 272,
+     LTYPEXC = 273,
+     LTYPEX = 274,
+     LTYPERT = 275,
+     LCONST = 276,
+     LFP = 277,
+     LPC = 278,
+     LSB = 279,
+     LBREG = 280,
+     LLREG = 281,
+     LSREG = 282,
+     LFREG = 283,
+     LMREG = 284,
+     LXREG = 285,
+     LFCONST = 286,
+     LSCONST = 287,
+     LSP = 288,
+     LNAME = 289,
+     LLAB = 290,
+     LVAR = 291
    };
 #endif
 /* Tokens.  */
 #define LTYPER 266
 #define LTYPET 267
 #define LTYPEG 268
-#define LTYPES 269
-#define LTYPEM 270
-#define LTYPEI 271
-#define LTYPEXC 272
-#define LTYPEX 273
-#define LTYPERT 274
-#define LCONST 275
-#define LFP 276
-#define LPC 277
-#define LSB 278
-#define LBREG 279
-#define LLREG 280
-#define LSREG 281
-#define LFREG 282
-#define LMREG 283
-#define LXREG 284
-#define LFCONST 285
-#define LSCONST 286
-#define LSP 287
-#define LNAME 288
-#define LLAB 289
-#define LVAR 290
+#define LTYPEPC 269
+#define LTYPES 270
+#define LTYPEM 271
+#define LTYPEI 272
+#define LTYPEXC 273
+#define LTYPEX 274
+#define LTYPERT 275
+#define LCONST 276
+#define LFP 277
+#define LPC 278
+#define LSB 279
+#define LBREG 280
+#define LLREG 281
+#define LSREG 282
+#define LFREG 283
+#define LMREG 284
+#define LXREG 285
+#define LFCONST 286
+#define LSCONST 287
+#define LSP 288
+#define LNAME 289
+#define LLAB 290
+#define LVAR 291
 
 
 
@@ -178,7 +180,7 @@ typedef union YYSTYPE
        Gen2    gen2;
 }
 /* Line 193 of yacc.c.  */
-#line 182 "y.tab.c"
+#line 184 "y.tab.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -191,7 +193,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 195 "y.tab.c"
+#line 197 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -406,20 +408,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   554
+#define YYLAST   543
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  54
+#define YYNTOKENS  55
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  40
+#define YYNNTS  41
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  132
+#define YYNRULES  134
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  263
+#define YYNSTATES  268
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   290
+#define YYMAXUTOK   291
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -430,16 +432,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,    52,    12,     5,     2,
-      50,    51,    10,     8,    49,     9,     2,    11,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    46,    47,
-       6,    48,     7,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,    53,    12,     5,     2,
+      51,    52,    10,     8,    50,     9,     2,    11,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    47,    48,
+       6,    49,     7,     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,     4,     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,     3,     2,    53,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,    54,     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,
@@ -456,7 +458,7 @@ static const yytype_uint8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45
+      45,    46
 };
 
 #if YYDEBUG
@@ -467,67 +469,68 @@ static const yytype_uint16 yyprhs[] =
        0,     0,     3,     4,     5,     9,    10,    15,    16,    21,
       23,    26,    29,    33,    37,    40,    43,    46,    49,    52,
       55,    58,    61,    64,    67,    70,    73,    76,    79,    82,
-      85,    88,    89,    91,    95,    99,   102,   104,   107,   109,
-     112,   114,   118,   124,   128,   134,   137,   139,   141,   143,
-     147,   153,   157,   163,   166,   168,   172,   178,   184,   185,
-     187,   191,   197,   199,   201,   203,   205,   208,   211,   213,
-     215,   217,   219,   224,   227,   230,   232,   234,   236,   238,
-     240,   242,   244,   247,   250,   253,   256,   259,   264,   270,
-     274,   276,   278,   280,   285,   290,   295,   302,   312,   316,
-     320,   326,   335,   337,   344,   350,   358,   359,   362,   365,
-     367,   369,   371,   373,   375,   378,   381,   384,   388,   390,
-     393,   397,   402,   404,   408,   412,   416,   420,   424,   429,
-     434,   438,   442
+      85,    88,    91,    92,    94,    98,   102,   105,   107,   110,
+     112,   115,   117,   121,   127,   131,   137,   140,   142,   144,
+     146,   150,   156,   160,   166,   169,   171,   175,   181,   187,
+     188,   190,   194,   200,   204,   206,   208,   210,   212,   215,
+     218,   220,   222,   224,   226,   231,   234,   237,   239,   241,
+     243,   245,   247,   249,   251,   254,   257,   260,   263,   266,
+     271,   277,   281,   283,   285,   287,   292,   297,   302,   309,
+     319,   323,   327,   333,   342,   344,   351,   357,   365,   366,
+     369,   372,   374,   376,   378,   380,   382,   385,   388,   391,
+     395,   397,   400,   404,   409,   411,   415,   419,   423,   427,
+     431,   436,   441,   445,   449
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      55,     0,    -1,    -1,    -1,    55,    56,    57,    -1,    -1,
-      44,    46,    58,    57,    -1,    -1,    43,    46,    59,    57,
-      -1,    47,    -1,    60,    47,    -1,     1,    47,    -1,    43,
-      48,    93,    -1,    45,    48,    93,    -1,    13,    61,    -1,
-      14,    65,    -1,    15,    64,    -1,    16,    62,    -1,    17,
-      63,    -1,    21,    66,    -1,    19,    67,    -1,    22,    68,
-      -1,    18,    69,    -1,    20,    70,    -1,    24,    71,    -1,
-      25,    72,    -1,    26,    73,    -1,    27,    74,    -1,    28,
-      75,    -1,    29,    76,    -1,    23,    77,    -1,    -1,    49,
-      -1,    80,    49,    78,    -1,    78,    49,    80,    -1,    80,
-      49,    -1,    80,    -1,    49,    78,    -1,    78,    -1,    49,
-      81,    -1,    81,    -1,    84,    49,    81,    -1,    88,    11,
-      91,    49,    84,    -1,    85,    49,    83,    -1,    85,    49,
-      91,    49,    83,    -1,    49,    79,    -1,    79,    -1,    61,
-      -1,    65,    -1,    80,    49,    78,    -1,    80,    49,    78,
-      46,    35,    -1,    80,    49,    78,    -1,    80,    49,    78,
-      46,    36,    -1,    80,    49,    -1,    80,    -1,    80,    49,
-      78,    -1,    82,    49,    78,    49,    91,    -1,    84,    49,
-      78,    49,    82,    -1,    -1,    84,    -1,    85,    49,    84,
-      -1,    85,    49,    91,    49,    84,    -1,    82,    -1,    85,
-      -1,    81,    -1,    87,    -1,    10,    82,    -1,    10,    86,
-      -1,    82,    -1,    86,    -1,    78,    -1,    84,    -1,    91,
-      50,    32,    51,    -1,    43,    89,    -1,    44,    89,    -1,
-      34,    -1,    37,    -1,    35,    -1,    38,    -1,    42,    -1,
-      36,    -1,    39,    -1,    52,    92,    -1,    52,    91,    -1,
-      52,    88,    -1,    52,    41,    -1,    52,    40,    -1,    52,
-      50,    40,    51,    -1,    52,    50,     9,    40,    51,    -1,
-      52,     9,    40,    -1,    86,    -1,    87,    -1,    91,    -1,
-      91,    50,    35,    51,    -1,    91,    50,    42,    51,    -1,
-      91,    50,    36,    51,    -1,    91,    50,    35,    10,    91,
-      51,    -1,    91,    50,    35,    51,    50,    35,    10,    91,
-      51,    -1,    50,    35,    51,    -1,    50,    42,    51,    -1,
-      50,    35,    10,    91,    51,    -1,    50,    35,    51,    50,
-      35,    10,    91,    51,    -1,    88,    -1,    88,    50,    35,
-      10,    91,    51,    -1,    43,    89,    50,    90,    51,    -1,
-      43,     6,     7,    89,    50,    33,    51,    -1,    -1,     8,
-      91,    -1,     9,    91,    -1,    33,    -1,    42,    -1,    31,
-      -1,    30,    -1,    45,    -1,     9,    91,    -1,     8,    91,
-      -1,    53,    91,    -1,    50,    93,    51,    -1,    30,    -1,
-       9,    30,    -1,    30,     9,    30,    -1,     9,    30,     9,
-      30,    -1,    91,    -1,    93,     8,    93,    -1,    93,     9,
-      93,    -1,    93,    10,    93,    -1,    93,    11,    93,    -1,
-      93,    12,    93,    -1,    93,     6,     6,    93,    -1,    93,
-       7,     7,    93,    -1,    93,     5,    93,    -1,    93,     4,
-      93,    -1,    93,     3,    93,    -1
+      56,     0,    -1,    -1,    -1,    56,    57,    58,    -1,    -1,
+      45,    47,    59,    58,    -1,    -1,    44,    47,    60,    58,
+      -1,    48,    -1,    61,    48,    -1,     1,    48,    -1,    44,
+      49,    95,    -1,    46,    49,    95,    -1,    13,    62,    -1,
+      14,    66,    -1,    15,    65,    -1,    16,    63,    -1,    17,
+      64,    -1,    21,    67,    -1,    19,    68,    -1,    22,    69,
+      -1,    18,    70,    -1,    20,    71,    -1,    25,    72,    -1,
+      26,    73,    -1,    27,    74,    -1,    28,    75,    -1,    29,
+      76,    -1,    30,    77,    -1,    23,    78,    -1,    24,    79,
+      -1,    -1,    50,    -1,    82,    50,    80,    -1,    80,    50,
+      82,    -1,    82,    50,    -1,    82,    -1,    50,    80,    -1,
+      80,    -1,    50,    83,    -1,    83,    -1,    86,    50,    83,
+      -1,    90,    11,    93,    50,    86,    -1,    87,    50,    85,
+      -1,    87,    50,    93,    50,    85,    -1,    50,    81,    -1,
+      81,    -1,    62,    -1,    66,    -1,    82,    50,    80,    -1,
+      82,    50,    80,    47,    36,    -1,    82,    50,    80,    -1,
+      82,    50,    80,    47,    37,    -1,    82,    50,    -1,    82,
+      -1,    82,    50,    80,    -1,    84,    50,    80,    50,    93,
+      -1,    86,    50,    80,    50,    84,    -1,    -1,    86,    -1,
+      87,    50,    86,    -1,    87,    50,    93,    50,    86,    -1,
+      86,    50,    86,    -1,    84,    -1,    87,    -1,    83,    -1,
+      89,    -1,    10,    84,    -1,    10,    88,    -1,    84,    -1,
+      88,    -1,    80,    -1,    86,    -1,    93,    51,    33,    52,
+      -1,    44,    91,    -1,    45,    91,    -1,    35,    -1,    38,
+      -1,    36,    -1,    39,    -1,    43,    -1,    37,    -1,    40,
+      -1,    53,    94,    -1,    53,    93,    -1,    53,    90,    -1,
+      53,    42,    -1,    53,    41,    -1,    53,    51,    41,    52,
+      -1,    53,    51,     9,    41,    52,    -1,    53,     9,    41,
+      -1,    88,    -1,    89,    -1,    93,    -1,    93,    51,    36,
+      52,    -1,    93,    51,    43,    52,    -1,    93,    51,    37,
+      52,    -1,    93,    51,    36,    10,    93,    52,    -1,    93,
+      51,    36,    52,    51,    36,    10,    93,    52,    -1,    51,
+      36,    52,    -1,    51,    43,    52,    -1,    51,    36,    10,
+      93,    52,    -1,    51,    36,    52,    51,    36,    10,    93,
+      52,    -1,    90,    -1,    90,    51,    36,    10,    93,    52,
+      -1,    44,    91,    51,    92,    52,    -1,    44,     6,     7,
+      91,    51,    34,    52,    -1,    -1,     8,    93,    -1,     9,
+      93,    -1,    34,    -1,    43,    -1,    32,    -1,    31,    -1,
+      46,    -1,     9,    93,    -1,     8,    93,    -1,    54,    93,
+      -1,    51,    95,    52,    -1,    31,    -1,     9,    31,    -1,
+      31,     9,    31,    -1,     9,    31,     9,    31,    -1,    93,
+      -1,    95,     8,    95,    -1,    95,     9,    95,    -1,    95,
+      10,    95,    -1,    95,    11,    95,    -1,    95,    12,    95,
+      -1,    95,     6,     6,    95,    -1,    95,     7,     7,    95,
+      -1,    95,     5,    95,    -1,    95,     4,    95,    -1,    95,
+       3,    95,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -536,17 +539,17 @@ static const yytype_uint16 yyrline[] =
        0,    64,    64,    66,    65,    73,    72,    80,    79,    85,
       86,    87,    90,    95,   101,   102,   103,   104,   105,   106,
      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   120,   124,   131,   138,   145,   150,   157,   162,   169,
-     174,   179,   186,   194,   199,   207,   212,   219,   220,   223,
-     228,   238,   243,   253,   258,   263,   270,   278,   288,   292,
-     299,   304,   312,   313,   316,   317,   318,   322,   326,   327,
-     330,   331,   334,   340,   349,   358,   363,   368,   373,   378,
-     383,   388,   394,   402,   408,   419,   425,   431,   437,   443,
-     451,   452,   455,   461,   467,   473,   479,   488,   497,   502,
-     507,   515,   525,   529,   538,   545,   554,   557,   561,   567,
-     568,   572,   575,   576,   580,   584,   588,   592,   598,   602,
-     606,   611,   618,   619,   623,   627,   631,   635,   639,   643,
-     647,   651,   655
+     117,   118,   121,   125,   132,   139,   146,   151,   158,   163,
+     170,   175,   180,   187,   195,   200,   208,   213,   220,   221,
+     224,   229,   239,   244,   254,   259,   264,   271,   279,   289,
+     293,   300,   305,   313,   320,   321,   324,   325,   326,   330,
+     334,   335,   338,   339,   342,   348,   357,   366,   371,   376,
+     381,   386,   391,   396,   402,   410,   416,   427,   433,   439,
+     445,   451,   459,   460,   463,   469,   475,   481,   487,   496,
+     505,   510,   515,   523,   533,   537,   546,   553,   562,   565,
+     569,   575,   576,   580,   583,   584,   588,   592,   596,   600,
+     606,   610,   614,   619,   626,   627,   631,   635,   639,   643,
+     647,   651,   655,   659,   663
 };
 #endif
 
@@ -558,15 +561,15 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'",
   "'-'", "'*'", "'/'", "'%'", "LTYPE0", "LTYPE1", "LTYPE2", "LTYPE3",
   "LTYPE4", "LTYPEC", "LTYPED", "LTYPEN", "LTYPER", "LTYPET", "LTYPEG",
-  "LTYPES", "LTYPEM", "LTYPEI", "LTYPEXC", "LTYPEX", "LTYPERT", "LCONST",
-  "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LMREG",
-  "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'",
-  "';'", "'='", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1",
-  "line", "@2", "@3", "inst", "nonnon", "rimrem", "remrim", "rimnon",
-  "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6",
-  "spec7", "spec8", "spec9", "spec10", "spec11", "rem", "rom", "rim",
-  "rel", "reg", "imm2", "imm", "mem", "omem", "nmem", "nam", "offset",
-  "pointer", "con", "con2", "expr", 0
+  "LTYPEPC", "LTYPES", "LTYPEM", "LTYPEI", "LTYPEXC", "LTYPEX", "LTYPERT",
+  "LCONST", "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG",
+  "LMREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR",
+  "':'", "';'", "'='", "','", "'('", "')'", "'$'", "'~'", "$accept",
+  "prog", "@1", "line", "@2", "@3", "inst", "nonnon", "rimrem", "remrim",
+  "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4",
+  "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11",
+  "spec12", "rem", "rom", "rim", "rel", "reg", "imm2", "imm", "mem",
+  "omem", "nmem", "nam", "offset", "pointer", "con", "con2", "expr", 0
 };
 #endif
 
@@ -579,28 +582,28 @@ static const yytype_uint16 yytoknum[] =
       42,    47,    37,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,    58,    59,    61,    44,
-      40,    41,    36,   126
+     285,   286,   287,   288,   289,   290,   291,    58,    59,    61,
+      44,    40,    41,    36,   126
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    54,    55,    56,    55,    58,    57,    59,    57,    57,
-      57,    57,    60,    60,    60,    60,    60,    60,    60,    60,
-      60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
-      60,    61,    61,    62,    63,    64,    64,    65,    65,    66,
-      66,    66,    67,    68,    68,    69,    69,    70,    70,    71,
-      71,    72,    72,    73,    73,    73,    74,    75,    76,    76,
-      77,    77,    78,    78,    79,    79,    79,    79,    79,    79,
-      80,    80,    81,    81,    81,    82,    82,    82,    82,    82,
-      82,    82,    83,    84,    84,    84,    84,    84,    84,    84,
-      85,    85,    86,    86,    86,    86,    86,    86,    86,    86,
-      86,    86,    87,    87,    88,    88,    89,    89,    89,    90,
-      90,    90,    91,    91,    91,    91,    91,    91,    92,    92,
-      92,    92,    93,    93,    93,    93,    93,    93,    93,    93,
-      93,    93,    93
+       0,    55,    56,    57,    56,    59,    58,    60,    58,    58,
+      58,    58,    61,    61,    61,    61,    61,    61,    61,    61,
+      61,    61,    61,    61,    61,    61,    61,    61,    61,    61,
+      61,    61,    62,    62,    63,    64,    65,    65,    66,    66,
+      67,    67,    67,    68,    69,    69,    70,    70,    71,    71,
+      72,    72,    73,    73,    74,    74,    74,    75,    76,    77,
+      77,    78,    78,    79,    80,    80,    81,    81,    81,    81,
+      81,    81,    82,    82,    83,    83,    83,    84,    84,    84,
+      84,    84,    84,    84,    85,    86,    86,    86,    86,    86,
+      86,    86,    87,    87,    88,    88,    88,    88,    88,    88,
+      88,    88,    88,    88,    89,    89,    90,    90,    91,    91,
+      91,    92,    92,    92,    93,    93,    93,    93,    93,    93,
+      94,    94,    94,    94,    95,    95,    95,    95,    95,    95,
+      95,    95,    95,    95,    95
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -609,17 +612,17 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     0,     3,     0,     4,     0,     4,     1,
        2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     0,     1,     3,     3,     2,     1,     2,     1,     2,
-       1,     3,     5,     3,     5,     2,     1,     1,     1,     3,
-       5,     3,     5,     2,     1,     3,     5,     5,     0,     1,
-       3,     5,     1,     1,     1,     1,     2,     2,     1,     1,
-       1,     1,     4,     2,     2,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     4,     5,     3,
-       1,     1,     1,     4,     4,     4,     6,     9,     3,     3,
-       5,     8,     1,     6,     5,     7,     0,     2,     2,     1,
-       1,     1,     1,     1,     2,     2,     2,     3,     1,     2,
-       3,     4,     1,     3,     3,     3,     3,     3,     4,     4,
-       3,     3,     3
+       2,     2,     0,     1,     3,     3,     2,     1,     2,     1,
+       2,     1,     3,     5,     3,     5,     2,     1,     1,     1,
+       3,     5,     3,     5,     2,     1,     3,     5,     5,     0,
+       1,     3,     5,     3,     1,     1,     1,     1,     2,     2,
+       1,     1,     1,     1,     4,     2,     2,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     4,
+       5,     3,     1,     1,     1,     4,     4,     4,     6,     9,
+       3,     3,     5,     8,     1,     6,     5,     7,     0,     2,
+       2,     1,     1,     1,     1,     1,     2,     2,     2,     3,
+       1,     2,     3,     4,     1,     3,     3,     3,     3,     3,
+       4,     4,     3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -627,85 +630,87 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     3,     1,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,    58,     0,     0,     0,     9,     4,     0,    11,    32,
-      14,     0,     0,   112,    75,    77,    80,    76,    78,    81,
-      79,   106,   113,     0,     0,     0,    15,    38,    62,    63,
-      90,    91,   102,    92,     0,    16,    70,    36,    71,    17,
-       0,    18,     0,     0,   106,   106,     0,    22,    46,    64,
-      68,    69,    65,    92,    20,     0,    32,    47,    48,    23,
-     106,     0,     0,    19,    40,     0,     0,    21,     0,    30,
-       0,    24,     0,    25,     0,    26,    54,    27,     0,    28,
-       0,    29,    59,     7,     0,     5,     0,    10,   115,   114,
-       0,     0,     0,     0,    37,     0,     0,   122,     0,   116,
-       0,     0,     0,    86,    85,     0,    84,    83,    35,     0,
-       0,    66,    67,    73,    74,    45,     0,     0,    73,    39,
-       0,     0,     0,     0,     0,     0,    53,     0,     0,     0,
-      12,     0,    13,   106,   107,   108,     0,     0,    98,    99,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     117,     0,     0,     0,     0,    89,     0,     0,    33,    34,
-       0,     0,    41,     0,    43,     0,    60,     0,    49,    51,
-      55,     0,     0,     8,     6,     0,   111,   109,   110,     0,
-       0,     0,   132,   131,   130,     0,     0,   123,   124,   125,
-     126,   127,     0,     0,    93,    95,    94,     0,    87,    72,
-       0,     0,   118,    82,     0,     0,     0,     0,     0,     0,
-       0,   104,   100,     0,   128,   129,     0,     0,     0,    88,
-      42,   119,     0,    44,    61,    50,    52,    56,    57,     0,
-       0,   103,    96,     0,     0,   120,   105,     0,     0,   121,
-     101,     0,    97
+       2,     3,     1,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    59,     0,     0,     0,     9,     4,     0,    11,
+      33,    14,     0,     0,   114,    77,    79,    82,    78,    80,
+      83,    81,   108,   115,     0,     0,     0,    15,    39,    64,
+      65,    92,    93,   104,    94,     0,    16,    72,    37,    73,
+      17,     0,    18,     0,     0,   108,   108,     0,    22,    47,
+      66,    70,    71,    67,    94,    20,     0,    33,    48,    49,
+      23,   108,     0,     0,    19,    41,     0,     0,    21,     0,
+      30,     0,    31,     0,    24,     0,    25,     0,    26,    55,
+      27,     0,    28,     0,    29,    60,     7,     0,     5,     0,
+      10,   117,   116,     0,     0,     0,     0,    38,     0,     0,
+     124,     0,   118,     0,     0,     0,    88,    87,     0,    86,
+      85,    36,     0,     0,    68,    69,    75,    76,    46,     0,
+       0,    75,    40,     0,     0,     0,     0,     0,     0,     0,
+      54,     0,     0,     0,    12,     0,    13,   108,   109,   110,
+       0,     0,   100,   101,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   119,     0,     0,     0,     0,    91,
+       0,     0,    34,    35,     0,     0,    42,     0,    44,     0,
+      61,     0,    63,    50,    52,    56,     0,     0,     8,     6,
+       0,   113,   111,   112,     0,     0,     0,   134,   133,   132,
+       0,     0,   125,   126,   127,   128,   129,     0,     0,    95,
+      97,    96,     0,    89,    74,     0,     0,   120,    84,     0,
+       0,     0,     0,     0,     0,     0,   106,   102,     0,   130,
+     131,     0,     0,     0,    90,    43,   121,     0,    45,    62,
+      51,    53,    57,    58,     0,     0,   105,    98,     0,     0,
+     122,   107,     0,     0,   123,   103,     0,    99
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     3,    26,   151,   149,    27,    30,    59,    61,
-      55,    46,    83,    74,    87,    67,    79,    91,    93,    95,
-      97,    99,   101,    89,    56,    68,    57,    69,    48,   184,
-      58,    49,    50,    51,    52,   113,   199,    53,   223,   118
+      -1,     1,     3,    27,   155,   153,    28,    31,    60,    62,
+      56,    47,    84,    75,    88,    68,    80,    94,    96,    98,
+     100,   102,   104,    90,    92,    57,    69,    58,    70,    49,
+     188,    59,    50,    51,    52,    53,   116,   204,    54,   228,
+     121
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -97
+#define YYPACT_NINF -110
 static const yytype_int16 yypact[] =
 {
-     -97,    40,   -97,   208,     5,    -4,   140,   295,   295,   343,
-     233,    15,   319,   381,    91,    91,   295,   295,   295,   222,
-      24,    24,   -15,    22,    14,   -97,   -97,    30,   -97,   -97,
-     -97,   486,   486,   -97,   -97,   -97,   -97,   -97,   -97,   -97,
-     -97,    42,   -97,   343,   406,   486,   -97,   -97,   -97,   -97,
-     -97,   -97,    45,    48,   399,   -97,   -97,    20,   -97,   -97,
-      67,   -97,    68,   367,    42,    19,   271,   -97,   -97,   -97,
-     -97,   -97,   -97,    87,   -97,   127,   343,   -97,   -97,   -97,
-      19,   437,   486,   -97,   -97,    90,    92,   -97,    94,   -97,
-      96,   -97,   104,   -97,   105,   -97,   111,   -97,   118,   -97,
-     119,   -97,   -97,   -97,   486,   -97,   486,   -97,   -97,   -97,
-     133,   486,   486,   121,   -97,     8,   122,   -97,    80,   -97,
-     134,    78,   413,   -97,   -97,   446,   -97,   -97,   -97,   343,
-     295,   -97,   -97,   121,   -97,   -97,     7,   486,   -97,   -97,
-     437,   148,   453,   462,   343,   343,   343,   343,   343,   208,
-     284,   208,   284,    19,   -97,   -97,    -1,   486,   131,   -97,
-     486,   486,   486,   166,   177,   486,   486,   486,   486,   486,
-     -97,   176,    10,   136,   137,   -97,   480,   141,   -97,   -97,
-     143,   142,   -97,    16,   -97,   149,   -97,   150,   151,   154,
-     -97,   152,   155,   -97,   -97,   156,   -97,   -97,   -97,   157,
-     159,   170,    99,   535,   542,   486,   486,    26,    26,   -97,
-     -97,   -97,   486,   486,   161,   -97,   -97,   162,   -97,   -97,
-      24,   184,   198,   -97,   163,    24,   181,   183,   486,   222,
-     205,   -97,   -97,   229,   114,   114,   193,   194,   211,   -97,
-     -97,   238,   219,   -97,   -97,   -97,   -97,   -97,   -97,   199,
-     486,   -97,   -97,   244,   232,   -97,   -97,   214,   486,   -97,
-     -97,   215,   -97
+    -110,    40,  -110,   165,    -1,    15,   253,   274,   274,   328,
+     196,    12,   307,   372,   411,   411,     7,   274,   274,   274,
+      73,     7,     7,   -21,    20,    19,  -110,  -110,    22,  -110,
+    -110,  -110,   462,   462,  -110,  -110,  -110,  -110,  -110,  -110,
+    -110,  -110,    24,  -110,   328,   378,   462,  -110,  -110,  -110,
+    -110,  -110,  -110,    23,    28,   397,  -110,  -110,    45,  -110,
+    -110,    46,  -110,    50,   361,    24,    42,   220,  -110,  -110,
+    -110,  -110,  -110,  -110,    47,  -110,    92,   328,  -110,  -110,
+    -110,    42,    98,   462,  -110,  -110,    64,    66,  -110,    69,
+    -110,    70,  -110,    78,  -110,    87,  -110,    90,  -110,    91,
+    -110,   100,  -110,   103,  -110,  -110,  -110,   462,  -110,   462,
+    -110,  -110,  -110,   141,   462,   462,   107,  -110,     2,   112,
+    -110,    82,  -110,   129,    16,   422,  -110,  -110,   428,  -110,
+    -110,  -110,   328,   274,  -110,  -110,   107,  -110,  -110,     6,
+     462,  -110,  -110,    98,   134,   441,   452,     7,   328,   328,
+     328,   328,   328,   165,   514,   165,   514,    42,  -110,  -110,
+      -5,   462,   117,  -110,   462,   462,   462,   163,   164,   462,
+     462,   462,   462,   462,  -110,   162,    14,   144,   145,  -110,
+     458,   146,  -110,  -110,   147,   152,  -110,    10,  -110,   153,
+    -110,   166,  -110,   167,   168,  -110,   169,   170,  -110,  -110,
+     161,  -110,  -110,  -110,   172,   174,   182,   523,   531,   269,
+     462,   462,   135,   135,  -110,  -110,  -110,   462,   462,   186,
+    -110,  -110,   191,  -110,  -110,     7,   190,   229,  -110,   195,
+       7,   208,   212,   462,    73,   218,  -110,  -110,   244,   115,
+     115,   215,   216,   233,  -110,  -110,   261,   241,  -110,  -110,
+    -110,  -110,  -110,  -110,   221,   462,  -110,  -110,   275,   255,
+    -110,  -110,   235,   462,  -110,  -110,   242,  -110
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-     -97,   -97,   -97,   -96,   -97,   -97,   -97,   261,   -97,   -97,
-     -97,   262,   -97,   -97,   -97,   -97,   -97,   -97,   -97,   -97,
-     -97,   -97,   -97,   -97,    17,   218,    -2,   -11,    -9,    61,
-      -8,    51,     1,    -3,    -7,   -56,   -97,   -10,   -97,   -87
+    -110,  -110,  -110,  -109,  -110,  -110,  -110,   283,  -110,  -110,
+    -110,   286,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
+    -110,  -110,  -110,  -110,  -110,    25,   234,    -2,   -11,    -9,
+      71,    -8,    48,    -3,    11,    -7,   -56,  -110,   -10,  -110,
+     -89
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -715,155 +720,153 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint16 yytable[] =
 {
-      73,    70,    84,    86,    75,    85,    60,    72,   133,   134,
-      98,    71,   100,   102,    92,    94,    96,   150,   157,   152,
-     213,   108,   109,    47,   138,   221,    62,   111,   112,    47,
-     196,   103,   197,   104,   117,   119,   167,   168,   169,   180,
-       2,   198,   172,   173,   127,    29,   222,   126,   110,   174,
-     111,   112,    28,   193,   131,   194,    73,    70,    41,   158,
-     114,   214,   106,    72,   132,    88,    90,    71,   105,   128,
-     139,    86,   117,   202,   203,   204,    54,   107,   207,   208,
-     209,   210,   211,   160,   161,   162,   163,   164,   165,   166,
-     167,   168,   169,   114,   117,   120,   117,   195,   121,    31,
-      32,   154,   155,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   109,   172,   173,   117,   129,   130,   234,   235,
-     174,    33,   165,   166,   167,   168,   169,   181,   179,   182,
-      86,   170,   185,   187,    41,   186,    42,   136,   137,   140,
-     153,    44,   141,   142,    45,   143,   178,   200,    31,    32,
-     117,   117,   117,   144,   145,   117,   117,   117,   117,   117,
-     146,   188,   189,   190,   191,   192,   109,   147,   148,   171,
-      33,   156,   205,   159,    34,    35,    36,    37,    38,    39,
-     180,   201,    40,    41,   206,    42,   212,   215,   216,    43,
-      44,   220,   218,    45,   219,   117,   117,   226,   224,   225,
-     227,   228,   236,   237,   229,   233,   230,   242,   231,     4,
-     232,   238,   240,   239,   241,   183,   245,   244,   247,   246,
-     248,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,   249,   250,
-     257,    31,    32,    63,   251,   252,   253,   254,   261,   255,
-     256,    22,    23,    24,   258,    25,    34,    35,    36,    37,
-      38,    39,   259,    33,    40,   260,   262,    34,    35,    36,
-      37,    38,    39,    77,    78,    40,    64,    65,    42,    31,
-      32,    63,    66,    44,   135,   243,    45,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,     0,     0,     0,
-       0,    33,     0,    31,    32,    34,    35,    36,    37,    38,
-      39,     0,     0,    40,    64,    65,    42,     0,     0,     0,
-       0,    44,     0,     0,    45,    33,     0,    31,    32,    34,
-      35,    36,    37,    38,    39,     0,     0,    40,    41,     0,
-      42,     0,     0,     0,     0,    44,     0,    54,    45,    33,
-       0,    31,    32,    34,    35,    36,    37,    38,    39,     0,
-       0,    40,    41,     0,    42,     0,     0,     0,    76,    44,
-       0,     0,    45,    33,     0,    31,    32,    34,    35,    36,
-      37,    38,    39,     0,     0,    40,    41,     0,    42,    31,
-      32,     0,     0,    44,     0,     0,    45,    33,     0,     0,
-       0,    34,    35,    36,    37,    38,    39,    31,   122,    40,
-       0,    33,    42,     0,    31,    32,     0,    44,     0,     0,
-      45,    31,    32,     0,    80,    65,    42,     0,     0,    33,
-      81,    82,     0,    54,    45,     0,    33,     0,     0,   123,
-     124,   115,    41,    33,    42,    31,    32,     0,   116,   125,
-       0,    42,    45,   175,    31,   176,    82,     0,    42,    45,
-       0,    31,    32,    82,     0,     0,    45,    33,     0,     0,
-      31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
-      80,    65,    42,    33,     0,     0,   177,    82,    31,    32,
-      45,    42,    33,     0,    31,    32,    82,     0,    42,    45,
-       0,     0,     0,    82,     0,   183,    45,    42,     0,     0,
-      33,     0,    82,     0,    54,    45,    33,     0,     0,     0,
-     217,     0,     0,     0,     0,    42,     0,     0,     0,     0,
-      82,    42,     0,    45,     0,     0,    82,     0,     0,    45,
-     162,   163,   164,   165,   166,   167,   168,   169,   163,   164,
-     165,   166,   167,   168,   169
+      74,    71,    85,    87,    76,    86,    61,    72,    93,   136,
+     137,   101,   161,   103,   105,    95,    97,    99,   154,   226,
+     156,    73,   111,   112,   218,   141,   106,   201,   107,   202,
+     113,    48,   114,   115,    63,   120,   122,    48,   203,   184,
+       2,   227,   176,   177,   198,   130,   199,    29,   129,   178,
+     114,   115,   176,   177,   162,   134,    42,    74,    71,   178,
+      55,   135,    89,    91,    72,    30,   219,   108,   109,   117,
+     110,   142,    87,   120,   123,   207,   208,   209,    73,   124,
+     212,   213,   214,   215,   216,   164,   165,   166,   167,   168,
+     169,   170,   171,   172,   173,   131,   132,   120,   139,   120,
+     133,   200,   117,   140,   158,   159,    32,    33,    35,    36,
+      37,    38,    39,    40,   143,   112,    41,   144,   120,   145,
+     146,   239,   240,   169,   170,   171,   172,   173,   147,    34,
+     185,   183,   186,    87,   174,   189,   191,   148,   190,   192,
+     149,   150,    81,    66,    43,   171,   172,   173,   157,    83,
+     151,   205,    46,   152,   120,   120,   120,   182,   160,   120,
+     120,   120,   120,   120,   163,   175,     4,   184,   206,   210,
+     112,   211,   217,   193,   194,   195,   196,   197,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,   220,   221,   223,   224,
+     120,   120,   225,   229,    32,    33,    64,   241,   242,    23,
+      24,    25,   235,    26,   231,   232,   230,   245,   238,   233,
+     234,   246,   249,   252,   236,   253,   237,    34,    32,    33,
+      64,    35,    36,    37,    38,    39,    40,   243,   247,    41,
+      65,    66,    43,   244,   250,   262,    67,    45,   187,   251,
+      46,    34,   254,   266,   255,    35,    36,    37,    38,    39,
+      40,    32,    33,    41,    65,    66,    43,   256,   257,   258,
+     259,    45,   260,   261,    46,   167,   168,   169,   170,   171,
+     172,   173,    32,    33,    34,   263,   264,   265,    35,    36,
+      37,    38,    39,    40,   267,    78,    41,    42,    79,    43,
+     248,   138,     0,    44,    45,    34,     0,    46,     0,    35,
+      36,    37,    38,    39,    40,    32,    33,    41,    42,     0,
+      43,     0,     0,     0,     0,    45,     0,    55,    46,     0,
+       0,     0,     0,     0,     0,     0,    32,    33,    34,     0,
+       0,     0,    35,    36,    37,    38,    39,    40,     0,     0,
+      41,    42,     0,    43,     0,     0,     0,    77,    45,    34,
+       0,    46,     0,    35,    36,    37,    38,    39,    40,    32,
+      33,    41,    42,     0,    43,     0,     0,     0,     0,    45,
+      32,    33,    46,     0,     0,     0,    32,    33,     0,     0,
+       0,     0,    34,     0,     0,     0,    35,    36,    37,    38,
+      39,    40,     0,    34,    41,    32,   125,    43,     0,    34,
+       0,     0,    45,     0,   118,    46,    81,    66,    43,    32,
+      33,   119,    82,    83,    43,    55,    46,     0,    34,    83,
+      32,    33,    46,     0,     0,     0,    32,   180,   126,   127,
+       0,    42,    34,    43,     0,     0,     0,     0,   128,    32,
+      33,    46,     0,    34,     0,    42,     0,    43,     0,    34,
+      32,    33,    45,   179,     0,    46,    32,    33,    43,   181,
+      32,    33,    34,    83,    43,     0,    46,     0,     0,    83,
+       0,     0,    46,    34,     0,     0,     0,    43,     0,    34,
+       0,     0,    83,    34,   187,    46,     0,     0,    43,   222,
+       0,     0,     0,    83,    43,    55,    46,     0,    43,    83,
+       0,     0,    46,    83,     0,     0,    46,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   166,   167,   168,   169,
+     170,   171,   172,   173
 };
 
 static const yytype_int16 yycheck[] =
 {
-      10,    10,    13,    13,    11,    13,     8,    10,    64,    65,
-      19,    10,    20,    21,    16,    17,    18,   104,    10,   106,
-      10,    31,    32,     6,    80,     9,     9,     8,     9,    12,
-      31,    46,    33,    48,    44,    45,    10,    11,    12,    32,
-       0,    42,    35,    36,    54,    49,    30,    54,     6,    42,
-       8,     9,    47,   149,    63,   151,    66,    66,    43,    51,
-      43,    51,    48,    66,    63,    14,    15,    66,    46,    49,
-      81,    81,    82,   160,   161,   162,    52,    47,   165,   166,
-     167,   168,   169,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    76,   104,    50,   106,   153,    50,     8,
-       9,   111,   112,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,   122,    35,    36,   125,    49,    49,   205,   206,
-      42,    30,     8,     9,    10,    11,    12,   137,   130,   140,
-     140,    51,   142,   143,    43,   143,    45,    50,    11,    49,
-       7,    50,    50,    49,    53,    49,   129,   157,     8,     9,
-     160,   161,   162,    49,    49,   165,   166,   167,   168,   169,
-      49,   144,   145,   146,   147,   148,   176,    49,    49,    35,
-      30,    50,     6,    51,    34,    35,    36,    37,    38,    39,
-      32,    50,    42,    43,     7,    45,    10,    51,    51,    49,
-      50,    49,    51,    53,    51,   205,   206,    46,    49,    49,
-      46,    49,   212,   213,    49,    35,    50,     9,    51,     1,
-      51,    50,   220,    51,    30,    52,    35,   225,   228,    36,
-     229,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    33,    10,
-     250,     8,     9,    10,    51,    51,    35,     9,   258,    30,
-      51,    43,    44,    45,    10,    47,    34,    35,    36,    37,
-      38,    39,    30,    30,    42,    51,    51,    34,    35,    36,
-      37,    38,    39,    12,    12,    42,    43,    44,    45,     8,
-       9,    10,    49,    50,    66,   224,    53,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
-      -1,    30,    -1,     8,     9,    34,    35,    36,    37,    38,
-      39,    -1,    -1,    42,    43,    44,    45,    -1,    -1,    -1,
-      -1,    50,    -1,    -1,    53,    30,    -1,     8,     9,    34,
-      35,    36,    37,    38,    39,    -1,    -1,    42,    43,    -1,
-      45,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,    30,
-      -1,     8,     9,    34,    35,    36,    37,    38,    39,    -1,
-      -1,    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,
-      -1,    -1,    53,    30,    -1,     8,     9,    34,    35,    36,
-      37,    38,    39,    -1,    -1,    42,    43,    -1,    45,     8,
-       9,    -1,    -1,    50,    -1,    -1,    53,    30,    -1,    -1,
-      -1,    34,    35,    36,    37,    38,    39,     8,     9,    42,
-      -1,    30,    45,    -1,     8,     9,    -1,    50,    -1,    -1,
-      53,     8,     9,    -1,    43,    44,    45,    -1,    -1,    30,
-      49,    50,    -1,    52,    53,    -1,    30,    -1,    -1,    40,
-      41,    35,    43,    30,    45,     8,     9,    -1,    42,    50,
-      -1,    45,    53,    40,     8,     9,    50,    -1,    45,    53,
-      -1,     8,     9,    50,    -1,    -1,    53,    30,    -1,    -1,
-       8,     9,    -1,    -1,    -1,    -1,    30,    -1,    -1,    -1,
-      43,    44,    45,    30,    -1,    -1,    40,    50,     8,     9,
-      53,    45,    30,    -1,     8,     9,    50,    -1,    45,    53,
-      -1,    -1,    -1,    50,    -1,    52,    53,    45,    -1,    -1,
-      30,    -1,    50,    -1,    52,    53,    30,    -1,    -1,    -1,
-      40,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-      50,    45,    -1,    53,    -1,    -1,    50,    -1,    -1,    53,
-       5,     6,     7,     8,     9,    10,    11,    12,     6,     7,
-       8,     9,    10,    11,    12
+      10,    10,    13,    13,    11,    13,     8,    10,    16,    65,
+      66,    20,    10,    21,    22,    17,    18,    19,   107,     9,
+     109,    10,    32,    33,    10,    81,    47,    32,    49,    34,
+       6,     6,     8,     9,     9,    45,    46,    12,    43,    33,
+       0,    31,    36,    37,   153,    55,   155,    48,    55,    43,
+       8,     9,    36,    37,    52,    64,    44,    67,    67,    43,
+      53,    64,    14,    15,    67,    50,    52,    47,    49,    44,
+      48,    82,    82,    83,    51,   164,   165,   166,    67,    51,
+     169,   170,   171,   172,   173,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    50,    50,   107,    51,   109,
+      50,   157,    77,    11,   114,   115,     8,     9,    35,    36,
+      37,    38,    39,    40,    50,   125,    43,    51,   128,    50,
+      50,   210,   211,     8,     9,    10,    11,    12,    50,    31,
+     140,   133,   143,   143,    52,   145,   146,    50,   146,   147,
+      50,    50,    44,    45,    46,    10,    11,    12,     7,    51,
+      50,   161,    54,    50,   164,   165,   166,   132,    51,   169,
+     170,   171,   172,   173,    52,    36,     1,    33,    51,     6,
+     180,     7,    10,   148,   149,   150,   151,   152,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    52,    52,    52,    52,
+     210,   211,    50,    50,     8,     9,    10,   217,   218,    44,
+      45,    46,    51,    48,    47,    47,    50,   225,    36,    50,
+      50,    31,   230,   233,    52,   234,    52,    31,     8,     9,
+      10,    35,    36,    37,    38,    39,    40,    51,     9,    43,
+      44,    45,    46,    52,    36,   255,    50,    51,    53,    37,
+      54,    31,    34,   263,    10,    35,    36,    37,    38,    39,
+      40,     8,     9,    43,    44,    45,    46,    52,    52,    36,
+       9,    51,    31,    52,    54,     6,     7,     8,     9,    10,
+      11,    12,     8,     9,    31,    10,    31,    52,    35,    36,
+      37,    38,    39,    40,    52,    12,    43,    44,    12,    46,
+     229,    67,    -1,    50,    51,    31,    -1,    54,    -1,    35,
+      36,    37,    38,    39,    40,     8,     9,    43,    44,    -1,
+      46,    -1,    -1,    -1,    -1,    51,    -1,    53,    54,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     8,     9,    31,    -1,
+      -1,    -1,    35,    36,    37,    38,    39,    40,    -1,    -1,
+      43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    31,
+      -1,    54,    -1,    35,    36,    37,    38,    39,    40,     8,
+       9,    43,    44,    -1,    46,    -1,    -1,    -1,    -1,    51,
+       8,     9,    54,    -1,    -1,    -1,     8,     9,    -1,    -1,
+      -1,    -1,    31,    -1,    -1,    -1,    35,    36,    37,    38,
+      39,    40,    -1,    31,    43,     8,     9,    46,    -1,    31,
+      -1,    -1,    51,    -1,    36,    54,    44,    45,    46,     8,
+       9,    43,    50,    51,    46,    53,    54,    -1,    31,    51,
+       8,     9,    54,    -1,    -1,    -1,     8,     9,    41,    42,
+      -1,    44,    31,    46,    -1,    -1,    -1,    -1,    51,     8,
+       9,    54,    -1,    31,    -1,    44,    -1,    46,    -1,    31,
+       8,     9,    51,    41,    -1,    54,     8,     9,    46,    41,
+       8,     9,    31,    51,    46,    -1,    54,    -1,    -1,    51,
+      -1,    -1,    54,    31,    -1,    -1,    -1,    46,    -1,    31,
+      -1,    -1,    51,    31,    53,    54,    -1,    -1,    46,    41,
+      -1,    -1,    -1,    51,    46,    53,    54,    -1,    46,    51,
+      -1,    -1,    54,    51,    -1,    -1,    54,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,     5,     6,     7,     8,
+       9,    10,    11,    12
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    55,     0,    56,     1,    13,    14,    15,    16,    17,
+       0,    56,     0,    57,     1,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    43,    44,    45,    47,    57,    60,    47,    49,
-      61,     8,     9,    30,    34,    35,    36,    37,    38,    39,
-      42,    43,    45,    49,    50,    53,    65,    78,    82,    85,
-      86,    87,    88,    91,    52,    64,    78,    80,    84,    62,
-      80,    63,    78,    10,    43,    44,    49,    69,    79,    81,
-      82,    86,    87,    91,    67,    88,    49,    61,    65,    70,
-      43,    49,    50,    66,    81,    84,    91,    68,    85,    77,
-      85,    71,    80,    72,    80,    73,    80,    74,    82,    75,
-      84,    76,    84,    46,    48,    46,    48,    47,    91,    91,
-       6,     8,     9,    89,    78,    35,    42,    91,    93,    91,
-      50,    50,     9,    40,    41,    50,    88,    91,    49,    49,
-      49,    82,    86,    89,    89,    79,    50,    11,    89,    81,
-      49,    50,    49,    49,    49,    49,    49,    49,    49,    59,
-      93,    58,    93,     7,    91,    91,    50,    10,    51,    51,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      51,    35,    35,    36,    42,    40,     9,    40,    78,    80,
-      32,    91,    81,    52,    83,    91,    84,    91,    78,    78,
-      78,    78,    78,    57,    57,    89,    31,    33,    42,    90,
-      91,    50,    93,    93,    93,     6,     7,    93,    93,    93,
-      93,    93,    10,    10,    51,    51,    51,    40,    51,    51,
-      49,     9,    30,    92,    49,    49,    46,    46,    49,    49,
-      50,    51,    51,    35,    93,    93,    91,    91,    50,    51,
-      84,    30,     9,    83,    84,    35,    36,    91,    82,    33,
-      10,    51,    51,    35,     9,    30,    51,    91,    10,    30,
-      51,    91,    51
+      28,    29,    30,    44,    45,    46,    48,    58,    61,    48,
+      50,    62,     8,     9,    31,    35,    36,    37,    38,    39,
+      40,    43,    44,    46,    50,    51,    54,    66,    80,    84,
+      87,    88,    89,    90,    93,    53,    65,    80,    82,    86,
+      63,    82,    64,    80,    10,    44,    45,    50,    70,    81,
+      83,    84,    88,    89,    93,    68,    90,    50,    62,    66,
+      71,    44,    50,    51,    67,    83,    86,    93,    69,    87,
+      78,    87,    79,    86,    72,    82,    73,    82,    74,    82,
+      75,    84,    76,    86,    77,    86,    47,    49,    47,    49,
+      48,    93,    93,     6,     8,     9,    91,    80,    36,    43,
+      93,    95,    93,    51,    51,     9,    41,    42,    51,    90,
+      93,    50,    50,    50,    84,    88,    91,    91,    81,    51,
+      11,    91,    83,    50,    51,    50,    50,    50,    50,    50,
+      50,    50,    50,    60,    95,    59,    95,     7,    93,    93,
+      51,    10,    52,    52,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    52,    36,    36,    37,    43,    41,
+       9,    41,    80,    82,    33,    93,    83,    53,    85,    93,
+      86,    93,    86,    80,    80,    80,    80,    80,    58,    58,
+      91,    32,    34,    43,    92,    93,    51,    95,    95,    95,
+       6,     7,    95,    95,    95,    95,    95,    10,    10,    52,
+      52,    52,    41,    52,    52,    50,     9,    31,    94,    50,
+      50,    47,    47,    50,    50,    51,    52,    52,    36,    95,
+      95,    93,    93,    51,    52,    86,    31,     9,    85,    86,
+      36,    37,    93,    84,    34,    10,    52,    52,    36,     9,
+      31,    52,    93,    10,    31,    52,    93,    52
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1804,95 +1807,100 @@ yyreduce:
     break;
 
   case 31:
-#line 120 "a.y"
+#line 118 "a.y"
+    { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].gen2)); }
+    break;
+
+  case 32:
+#line 121 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 32:
-#line 125 "a.y"
+  case 33:
+#line 126 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 33:
-#line 132 "a.y"
+  case 34:
+#line 133 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 34:
-#line 139 "a.y"
+  case 35:
+#line 140 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 35:
-#line 146 "a.y"
+  case 36:
+#line 147 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (2)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 36:
-#line 151 "a.y"
+  case 37:
+#line 152 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (1)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 37:
-#line 158 "a.y"
+  case 38:
+#line 159 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 38:
-#line 163 "a.y"
+  case 39:
+#line 164 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 39:
-#line 170 "a.y"
+  case 40:
+#line 171 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 40:
-#line 175 "a.y"
+  case 41:
+#line 176 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 41:
-#line 180 "a.y"
+  case 42:
+#line 181 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 42:
-#line 187 "a.y"
+  case 43:
+#line 188 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -1900,16 +1908,16 @@ yyreduce:
        }
     break;
 
-  case 43:
-#line 195 "a.y"
+  case 44:
+#line 196 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 44:
-#line 200 "a.y"
+  case 45:
+#line 201 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -1917,32 +1925,32 @@ yyreduce:
        }
     break;
 
-  case 45:
-#line 208 "a.y"
+  case 46:
+#line 209 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 46:
-#line 213 "a.y"
+  case 47:
+#line 214 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 49:
-#line 224 "a.y"
+  case 50:
+#line 225 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 50:
-#line 229 "a.y"
+  case 51:
+#line 230 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -1952,16 +1960,16 @@ yyreduce:
        }
     break;
 
-  case 51:
-#line 239 "a.y"
+  case 52:
+#line 240 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 52:
-#line 244 "a.y"
+  case 53:
+#line 245 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -1971,32 +1979,32 @@ yyreduce:
        }
     break;
 
-  case 53:
-#line 254 "a.y"
+  case 54:
+#line 255 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (2)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 54:
-#line 259 "a.y"
+  case 55:
+#line 260 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (1)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 55:
-#line 264 "a.y"
+  case 56:
+#line 265 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 56:
-#line 271 "a.y"
+  case 57:
+#line 272 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -2004,8 +2012,8 @@ yyreduce:
        }
     break;
 
-  case 57:
-#line 279 "a.y"
+  case 58:
+#line 280 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(3) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(5) - (5)].gen);
@@ -2015,32 +2023,32 @@ yyreduce:
        }
     break;
 
-  case 58:
-#line 288 "a.y"
+  case 59:
+#line 289 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 59:
-#line 293 "a.y"
+  case 60:
+#line 294 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (1)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 60:
-#line 300 "a.y"
+  case 61:
+#line 301 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 61:
-#line 305 "a.y"
+  case 62:
+#line 306 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -2048,22 +2056,30 @@ yyreduce:
        }
     break;
 
-  case 66:
-#line 319 "a.y"
+  case 63:
+#line 314 "a.y"
+    {
+               (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
+               (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
+       }
+    break;
+
+  case 68:
+#line 327 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 67:
-#line 323 "a.y"
+  case 69:
+#line 331 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 72:
-#line 335 "a.y"
+  case 74:
+#line 343 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2071,8 +2087,8 @@ yyreduce:
        }
     break;
 
-  case 73:
-#line 341 "a.y"
+  case 75:
+#line 349 "a.y"
     {
                (yyval.gen) = nullgen;
                if(pass == 2)
@@ -2083,8 +2099,8 @@ yyreduce:
        }
     break;
 
-  case 74:
-#line 350 "a.y"
+  case 76:
+#line 358 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2093,64 +2109,64 @@ yyreduce:
        }
     break;
 
-  case 75:
-#line 359 "a.y"
+  case 77:
+#line 367 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 76:
-#line 364 "a.y"
+  case 78:
+#line 372 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 77:
-#line 369 "a.y"
+  case 79:
+#line 377 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 78:
-#line 374 "a.y"
+  case 80:
+#line 382 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 79:
-#line 379 "a.y"
+  case 81:
+#line 387 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SP;
        }
     break;
 
-  case 80:
-#line 384 "a.y"
+  case 82:
+#line 392 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 81:
-#line 389 "a.y"
+  case 83:
+#line 397 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 82:
-#line 395 "a.y"
+  case 84:
+#line 403 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST;
@@ -2158,8 +2174,8 @@ yyreduce:
        }
     break;
 
-  case 83:
-#line 403 "a.y"
+  case 85:
+#line 411 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST;
@@ -2167,8 +2183,8 @@ yyreduce:
        }
     break;
 
-  case 84:
-#line 409 "a.y"
+  case 86:
+#line 417 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
                (yyval.gen).index = (yyvsp[(2) - (2)].gen).type;
@@ -2181,8 +2197,8 @@ yyreduce:
        }
     break;
 
-  case 85:
-#line 420 "a.y"
+  case 87:
+#line 428 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SCONST;
@@ -2190,8 +2206,8 @@ yyreduce:
        }
     break;
 
-  case 86:
-#line 426 "a.y"
+  case 88:
+#line 434 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2199,8 +2215,8 @@ yyreduce:
        }
     break;
 
-  case 87:
-#line 432 "a.y"
+  case 89:
+#line 440 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2208,8 +2224,8 @@ yyreduce:
        }
     break;
 
-  case 88:
-#line 438 "a.y"
+  case 90:
+#line 446 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2217,8 +2233,8 @@ yyreduce:
        }
     break;
 
-  case 89:
-#line 444 "a.y"
+  case 91:
+#line 452 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2226,8 +2242,8 @@ yyreduce:
        }
     break;
 
-  case 92:
-#line 456 "a.y"
+  case 94:
+#line 464 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2235,8 +2251,8 @@ yyreduce:
        }
     break;
 
-  case 93:
-#line 462 "a.y"
+  case 95:
+#line 470 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (4)].lval);
@@ -2244,8 +2260,8 @@ yyreduce:
        }
     break;
 
-  case 94:
-#line 468 "a.y"
+  case 96:
+#line 476 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_SP;
@@ -2253,8 +2269,8 @@ yyreduce:
        }
     break;
 
-  case 95:
-#line 474 "a.y"
+  case 97:
+#line 482 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (4)].lval);
@@ -2262,8 +2278,8 @@ yyreduce:
        }
     break;
 
-  case 96:
-#line 480 "a.y"
+  case 98:
+#line 488 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2274,8 +2290,8 @@ yyreduce:
        }
     break;
 
-  case 97:
-#line 489 "a.y"
+  case 99:
+#line 497 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (9)].lval);
@@ -2286,24 +2302,24 @@ yyreduce:
        }
     break;
 
-  case 98:
-#line 498 "a.y"
+  case 100:
+#line 506 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(2) - (3)].lval);
        }
     break;
 
-  case 99:
-#line 503 "a.y"
+  case 101:
+#line 511 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_SP;
        }
     break;
 
-  case 100:
-#line 508 "a.y"
+  case 102:
+#line 516 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2313,8 +2329,8 @@ yyreduce:
        }
     break;
 
-  case 101:
-#line 516 "a.y"
+  case 103:
+#line 524 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(2) - (8)].lval);
@@ -2324,15 +2340,15 @@ yyreduce:
        }
     break;
 
-  case 102:
-#line 526 "a.y"
+  case 104:
+#line 534 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 103:
-#line 530 "a.y"
+  case 105:
+#line 538 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (6)].gen);
                (yyval.gen).index = (yyvsp[(3) - (6)].lval);
@@ -2341,8 +2357,8 @@ yyreduce:
        }
     break;
 
-  case 104:
-#line 539 "a.y"
+  case 106:
+#line 547 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(4) - (5)].lval);
@@ -2351,8 +2367,8 @@ yyreduce:
        }
     break;
 
-  case 105:
-#line 546 "a.y"
+  case 107:
+#line 554 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_STATIC;
@@ -2361,164 +2377,164 @@ yyreduce:
        }
     break;
 
-  case 106:
-#line 554 "a.y"
+  case 108:
+#line 562 "a.y"
     {
                (yyval.lval) = 0;
        }
     break;
 
-  case 107:
-#line 558 "a.y"
+  case 109:
+#line 566 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 108:
-#line 562 "a.y"
+  case 110:
+#line 570 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 110:
-#line 569 "a.y"
+  case 112:
+#line 577 "a.y"
     {
                (yyval.lval) = D_AUTO;
        }
     break;
 
-  case 113:
-#line 577 "a.y"
+  case 115:
+#line 585 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
        }
     break;
 
-  case 114:
-#line 581 "a.y"
+  case 116:
+#line 589 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 115:
-#line 585 "a.y"
+  case 117:
+#line 593 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 116:
-#line 589 "a.y"
+  case 118:
+#line 597 "a.y"
     {
                (yyval.lval) = ~(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 117:
-#line 593 "a.y"
+  case 119:
+#line 601 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (3)].lval);
        }
     break;
 
-  case 118:
-#line 599 "a.y"
+  case 120:
+#line 607 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (1)].lval) & 0xffffffffLL;
        }
     break;
 
-  case 119:
-#line 603 "a.y"
+  case 121:
+#line 611 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval) & 0xffffffffLL;
        }
     break;
 
-  case 120:
-#line 607 "a.y"
+  case 122:
+#line 615 "a.y"
     {
                (yyval.lval) = ((yyvsp[(1) - (3)].lval) & 0xffffffffLL) +
                        (((yyvsp[(3) - (3)].lval) & 0xffffLL) << 32);
        }
     break;
 
-  case 121:
-#line 612 "a.y"
+  case 123:
+#line 620 "a.y"
     {
                (yyval.lval) = (-(yyvsp[(2) - (4)].lval) & 0xffffffffLL) +
                        (((yyvsp[(4) - (4)].lval) & 0xffffLL) << 32);
        }
     break;
 
-  case 123:
-#line 620 "a.y"
+  case 125:
+#line 628 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 124:
-#line 624 "a.y"
+  case 126:
+#line 632 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 125:
-#line 628 "a.y"
+  case 127:
+#line 636 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 126:
-#line 632 "a.y"
+  case 128:
+#line 640 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 127:
-#line 636 "a.y"
+  case 129:
+#line 644 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 128:
-#line 640 "a.y"
+  case 130:
+#line 648 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 129:
-#line 644 "a.y"
+  case 131:
+#line 652 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 130:
-#line 648 "a.y"
+  case 132:
+#line 656 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 131:
-#line 652 "a.y"
+  case 133:
+#line 660 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 132:
-#line 656 "a.y"
+  case 134:
+#line 664 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
        }
@@ -2526,7 +2542,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2530 "y.tab.c"
+#line 2546 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 3cca766d3a62e5f0bac25bdde2fa232488541f37..bb529b82817f637a7f6d6ad341551aef91bbec90 100644 (file)
      LTYPER = 266,
      LTYPET = 267,
      LTYPEG = 268,
-     LTYPES = 269,
-     LTYPEM = 270,
-     LTYPEI = 271,
-     LTYPEXC = 272,
-     LTYPEX = 273,
-     LTYPERT = 274,
-     LCONST = 275,
-     LFP = 276,
-     LPC = 277,
-     LSB = 278,
-     LBREG = 279,
-     LLREG = 280,
-     LSREG = 281,
-     LFREG = 282,
-     LMREG = 283,
-     LXREG = 284,
-     LFCONST = 285,
-     LSCONST = 286,
-     LSP = 287,
-     LNAME = 288,
-     LLAB = 289,
-     LVAR = 290
+     LTYPEPC = 269,
+     LTYPES = 270,
+     LTYPEM = 271,
+     LTYPEI = 272,
+     LTYPEXC = 273,
+     LTYPEX = 274,
+     LTYPERT = 275,
+     LCONST = 276,
+     LFP = 277,
+     LPC = 278,
+     LSB = 279,
+     LBREG = 280,
+     LLREG = 281,
+     LSREG = 282,
+     LFREG = 283,
+     LMREG = 284,
+     LXREG = 285,
+     LFCONST = 286,
+     LSCONST = 287,
+     LSP = 288,
+     LNAME = 289,
+     LLAB = 290,
+     LVAR = 291
    };
 #endif
 /* Tokens.  */
 #define LTYPER 266
 #define LTYPET 267
 #define LTYPEG 268
-#define LTYPES 269
-#define LTYPEM 270
-#define LTYPEI 271
-#define LTYPEXC 272
-#define LTYPEX 273
-#define LTYPERT 274
-#define LCONST 275
-#define LFP 276
-#define LPC 277
-#define LSB 278
-#define LBREG 279
-#define LLREG 280
-#define LSREG 281
-#define LFREG 282
-#define LMREG 283
-#define LXREG 284
-#define LFCONST 285
-#define LSCONST 286
-#define LSP 287
-#define LNAME 288
-#define LLAB 289
-#define LVAR 290
+#define LTYPEPC 269
+#define LTYPES 270
+#define LTYPEM 271
+#define LTYPEI 272
+#define LTYPEXC 273
+#define LTYPEX 274
+#define LTYPERT 275
+#define LCONST 276
+#define LFP 277
+#define LPC 278
+#define LSB 279
+#define LBREG 280
+#define LLREG 281
+#define LSREG 282
+#define LFREG 283
+#define LMREG 284
+#define LXREG 285
+#define LFCONST 286
+#define LSCONST 287
+#define LSP 288
+#define LNAME 289
+#define LLAB 290
+#define LVAR 291
 
 
 
@@ -124,7 +126,7 @@ typedef union YYSTYPE
        Gen2    gen2;
 }
 /* Line 1529 of yacc.c.  */
-#line 128 "y.tab.h"
+#line 130 "y.tab.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index 246643427b910b50222fc6ed516925c81334281c..a9c92af03b1b622ac73ff6a300bfaf4a1d78a7fa 100644 (file)
@@ -54,7 +54,7 @@
 %left  '*' '/' '%'
 %token <lval>  LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4
 %token <lval>  LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPES LTYPEM LTYPEI LTYPEG LTYPEXC
-%token <lval>  LTYPEX LCONST LFP LPC LSB
+%token <lval>  LTYPEX LTYPEPC LCONST LFP LPC LSB
 %token <lval>  LBREG LLREG LSREG LFREG LXREG
 %token <dval>  LFCONST
 %token <sval>  LSCONST LSP
@@ -63,7 +63,7 @@
 %type  <con2>  con2
 %type  <gen>   mem imm imm2 reg nam rel rem rim rom omem nmem
 %type  <gen2>  nonnon nonrel nonrem rimnon rimrem remrim
-%type  <gen2>  spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10
+%type  <gen2>  spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11
 %%
 prog:
 |      prog
@@ -118,6 +118,7 @@ inst:
 |      LTYPEG spec8    { outcode($1, &$2); }
 |      LTYPEXC spec9   { outcode($1, &$2); }
 |      LTYPEX spec10   { outcode($1, &$2); }
+|      LTYPEPC spec11  { outcode($1, &$2); }
 
 nonnon:
        {
@@ -307,6 +308,13 @@ spec10:    /* PINSRD */
                $$.to.offset = $1.offset;
        }
 
+spec11:        /* PCDATA */
+       imm ',' imm
+       {
+               $$.from = $1;
+               $$.to = $3;
+       }
+
 rem:
        reg
 |      mem
@@ -457,11 +465,19 @@ con2:
        }
 |      LCONST '-' LCONST
        {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if($3 == 0)
+                       $3 = 1;
                $$.v1 = $1;
                $$.v2 = $3;
        }
 |      '-' LCONST '-' LCONST
        {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if($4 == 0)
+                       $4 = 1;
                $$.v1 = -$2;
                $$.v2 = $4;
        }
index 2e690851293d53df7ee8eef24bf6598e624a13ee..45ba555928105ef06f6f5a98f20b1a9d27891c69 100644 (file)
@@ -799,7 +799,7 @@ struct
        "XORPD",        LTYPE3, AXORPD,
        "XORPS",        LTYPE3, AXORPS,
        "USEFIELD",     LTYPEN, AUSEFIELD,
-
+       "PCDATA",       LTYPEPC,        APCDATA,
        0
 };
 
index 6616c91390c9dcf094862f248dfb19fa5a1f7f9c..96a362f198e99f11afe930266cba1c23ffd2efc5 100644 (file)
      LTYPEG = 271,
      LTYPEXC = 272,
      LTYPEX = 273,
-     LCONST = 274,
-     LFP = 275,
-     LPC = 276,
-     LSB = 277,
-     LBREG = 278,
-     LLREG = 279,
-     LSREG = 280,
-     LFREG = 281,
-     LXREG = 282,
-     LFCONST = 283,
-     LSCONST = 284,
-     LSP = 285,
-     LNAME = 286,
-     LLAB = 287,
-     LVAR = 288
+     LTYPEPC = 274,
+     LCONST = 275,
+     LFP = 276,
+     LPC = 277,
+     LSB = 278,
+     LBREG = 279,
+     LLREG = 280,
+     LSREG = 281,
+     LFREG = 282,
+     LXREG = 283,
+     LFCONST = 284,
+     LSCONST = 285,
+     LSP = 286,
+     LNAME = 287,
+     LLAB = 288,
+     LVAR = 289
    };
 #endif
 /* Tokens.  */
 #define LTYPEG 271
 #define LTYPEXC 272
 #define LTYPEX 273
-#define LCONST 274
-#define LFP 275
-#define LPC 276
-#define LSB 277
-#define LBREG 278
-#define LLREG 279
-#define LSREG 280
-#define LFREG 281
-#define LXREG 282
-#define LFCONST 283
-#define LSCONST 284
-#define LSP 285
-#define LNAME 286
-#define LLAB 287
-#define LVAR 288
+#define LTYPEPC 274
+#define LCONST 275
+#define LFP 276
+#define LPC 277
+#define LSB 278
+#define LBREG 279
+#define LLREG 280
+#define LSREG 281
+#define LFREG 282
+#define LXREG 283
+#define LFCONST 284
+#define LSCONST 285
+#define LSP 286
+#define LNAME 287
+#define LLAB 288
+#define LVAR 289
 
 
 
@@ -178,7 +180,7 @@ typedef union YYSTYPE
        Gen2    gen2;
 }
 /* Line 193 of yacc.c.  */
-#line 182 "y.tab.c"
+#line 184 "y.tab.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -191,7 +193,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 195 "y.tab.c"
+#line 197 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -406,20 +408,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   537
+#define YYLAST   525
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  52
+#define YYNTOKENS  53
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  39
+#define YYNNTS  40
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  131
+#define YYNRULES  133
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  266
+#define YYNSTATES  271
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   288
+#define YYMAXUTOK   289
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -430,16 +432,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,    50,    12,     5,     2,
-      48,    49,    10,     8,    47,     9,     2,    11,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    44,    45,
-       6,    46,     7,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,    51,    12,     5,     2,
+      49,    50,    10,     8,    48,     9,     2,    11,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    45,    46,
+       6,    47,     7,     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,     4,     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,     3,     2,    51,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,    52,     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,
@@ -455,7 +457,7 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     1,     2,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44
 };
 
 #if YYDEBUG
@@ -466,68 +468,68 @@ static const yytype_uint16 yyprhs[] =
        0,     0,     3,     4,     5,     9,    10,    15,    16,    21,
       23,    26,    29,    33,    37,    40,    43,    46,    49,    52,
       55,    58,    61,    64,    67,    70,    73,    76,    79,    82,
-      85,    86,    88,    92,    96,    99,   101,   104,   106,   109,
-     111,   115,   121,   125,   131,   134,   136,   139,   141,   143,
-     147,   153,   157,   163,   166,   168,   172,   176,   182,   188,
-     194,   196,   198,   200,   202,   205,   208,   210,   212,   214,
-     216,   218,   223,   226,   229,   231,   233,   235,   237,   239,
-     241,   244,   247,   250,   253,   258,   264,   268,   271,   273,
-     276,   280,   285,   287,   289,   291,   296,   301,   308,   318,
-     328,   332,   336,   341,   347,   356,   358,   365,   371,   379,
-     380,   383,   386,   388,   390,   392,   394,   396,   399,   402,
-     405,   409,   411,   415,   419,   423,   427,   431,   436,   441,
-     445,   449
+      85,    88,    89,    91,    95,    99,   102,   104,   107,   109,
+     112,   114,   118,   124,   128,   134,   137,   139,   142,   144,
+     146,   150,   156,   160,   166,   169,   171,   175,   179,   185,
+     191,   197,   201,   203,   205,   207,   209,   212,   215,   217,
+     219,   221,   223,   225,   230,   233,   236,   238,   240,   242,
+     244,   246,   248,   251,   254,   257,   260,   265,   271,   275,
+     278,   280,   283,   287,   292,   294,   296,   298,   303,   308,
+     315,   325,   335,   339,   343,   348,   354,   363,   365,   372,
+     378,   386,   387,   390,   393,   395,   397,   399,   401,   403,
+     406,   409,   412,   416,   418,   422,   426,   430,   434,   438,
+     443,   448,   452,   456
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      53,     0,    -1,    -1,    -1,    53,    54,    55,    -1,    -1,
-      42,    44,    56,    55,    -1,    -1,    41,    44,    57,    55,
-      -1,    45,    -1,    58,    45,    -1,     1,    45,    -1,    41,
-      46,    90,    -1,    43,    46,    90,    -1,    13,    59,    -1,
-      14,    63,    -1,    15,    62,    -1,    16,    60,    -1,    17,
-      61,    -1,    21,    64,    -1,    19,    65,    -1,    22,    66,
-      -1,    18,    67,    -1,    20,    68,    -1,    23,    69,    -1,
-      24,    70,    -1,    25,    71,    -1,    26,    72,    -1,    27,
-      73,    -1,    28,    74,    -1,    -1,    47,    -1,    77,    47,
-      75,    -1,    75,    47,    77,    -1,    77,    47,    -1,    77,
-      -1,    47,    75,    -1,    75,    -1,    47,    78,    -1,    78,
-      -1,    80,    47,    78,    -1,    86,    11,    89,    47,    80,
-      -1,    83,    47,    81,    -1,    83,    47,    89,    47,    81,
-      -1,    47,    76,    -1,    76,    -1,    10,    86,    -1,    59,
-      -1,    63,    -1,    77,    47,    75,    -1,    77,    47,    75,
-      44,    34,    -1,    77,    47,    75,    -1,    77,    47,    75,
-      44,    35,    -1,    77,    47,    -1,    77,    -1,    77,    47,
-      75,    -1,    83,    47,    80,    -1,    83,    47,    89,    47,
-      80,    -1,    79,    47,    75,    47,    89,    -1,    80,    47,
-      75,    47,    79,    -1,    79,    -1,    83,    -1,    78,    -1,
-      85,    -1,    10,    79,    -1,    10,    84,    -1,    79,    -1,
-      84,    -1,    80,    -1,    75,    -1,    80,    -1,    89,    48,
-      31,    49,    -1,    41,    87,    -1,    42,    87,    -1,    33,
-      -1,    36,    -1,    34,    -1,    37,    -1,    40,    -1,    35,
-      -1,    50,    89,    -1,    50,    86,    -1,    50,    39,    -1,
-      50,    38,    -1,    50,    48,    38,    49,    -1,    50,    48,
-       9,    38,    49,    -1,    50,     9,    38,    -1,    50,    82,
-      -1,    29,    -1,     9,    29,    -1,    29,     9,    29,    -1,
-       9,    29,     9,    29,    -1,    84,    -1,    85,    -1,    89,
-      -1,    89,    48,    34,    49,    -1,    89,    48,    40,    49,
-      -1,    89,    48,    34,    10,    89,    49,    -1,    89,    48,
-      34,    49,    48,    34,    10,    89,    49,    -1,    89,    48,
-      34,    49,    48,    35,    10,    89,    49,    -1,    48,    34,
-      49,    -1,    48,    40,    49,    -1,    89,    48,    35,    49,
-      -1,    48,    34,    10,    89,    49,    -1,    48,    34,    49,
-      48,    34,    10,    89,    49,    -1,    86,    -1,    86,    48,
-      34,    10,    89,    49,    -1,    41,    87,    48,    88,    49,
-      -1,    41,     6,     7,    87,    48,    32,    49,    -1,    -1,
-       8,    89,    -1,     9,    89,    -1,    32,    -1,    40,    -1,
-      30,    -1,    29,    -1,    43,    -1,     9,    89,    -1,     8,
-      89,    -1,    51,    89,    -1,    48,    90,    49,    -1,    89,
-      -1,    90,     8,    90,    -1,    90,     9,    90,    -1,    90,
-      10,    90,    -1,    90,    11,    90,    -1,    90,    12,    90,
-      -1,    90,     6,     6,    90,    -1,    90,     7,     7,    90,
-      -1,    90,     5,    90,    -1,    90,     4,    90,    -1,    90,
-       3,    90,    -1
+      54,     0,    -1,    -1,    -1,    54,    55,    56,    -1,    -1,
+      43,    45,    57,    56,    -1,    -1,    42,    45,    58,    56,
+      -1,    46,    -1,    59,    46,    -1,     1,    46,    -1,    42,
+      47,    92,    -1,    44,    47,    92,    -1,    13,    60,    -1,
+      14,    64,    -1,    15,    63,    -1,    16,    61,    -1,    17,
+      62,    -1,    21,    65,    -1,    19,    66,    -1,    22,    67,
+      -1,    18,    68,    -1,    20,    69,    -1,    23,    70,    -1,
+      24,    71,    -1,    25,    72,    -1,    26,    73,    -1,    27,
+      74,    -1,    28,    75,    -1,    29,    76,    -1,    -1,    48,
+      -1,    79,    48,    77,    -1,    77,    48,    79,    -1,    79,
+      48,    -1,    79,    -1,    48,    77,    -1,    77,    -1,    48,
+      80,    -1,    80,    -1,    82,    48,    80,    -1,    88,    11,
+      91,    48,    82,    -1,    85,    48,    83,    -1,    85,    48,
+      91,    48,    83,    -1,    48,    78,    -1,    78,    -1,    10,
+      88,    -1,    60,    -1,    64,    -1,    79,    48,    77,    -1,
+      79,    48,    77,    45,    35,    -1,    79,    48,    77,    -1,
+      79,    48,    77,    45,    36,    -1,    79,    48,    -1,    79,
+      -1,    79,    48,    77,    -1,    85,    48,    82,    -1,    85,
+      48,    91,    48,    82,    -1,    81,    48,    77,    48,    91,
+      -1,    82,    48,    77,    48,    81,    -1,    82,    48,    82,
+      -1,    81,    -1,    85,    -1,    80,    -1,    87,    -1,    10,
+      81,    -1,    10,    86,    -1,    81,    -1,    86,    -1,    82,
+      -1,    77,    -1,    82,    -1,    91,    49,    32,    50,    -1,
+      42,    89,    -1,    43,    89,    -1,    34,    -1,    37,    -1,
+      35,    -1,    38,    -1,    41,    -1,    36,    -1,    51,    91,
+      -1,    51,    88,    -1,    51,    40,    -1,    51,    39,    -1,
+      51,    49,    39,    50,    -1,    51,    49,     9,    39,    50,
+      -1,    51,     9,    39,    -1,    51,    84,    -1,    30,    -1,
+       9,    30,    -1,    30,     9,    30,    -1,     9,    30,     9,
+      30,    -1,    86,    -1,    87,    -1,    91,    -1,    91,    49,
+      35,    50,    -1,    91,    49,    41,    50,    -1,    91,    49,
+      35,    10,    91,    50,    -1,    91,    49,    35,    50,    49,
+      35,    10,    91,    50,    -1,    91,    49,    35,    50,    49,
+      36,    10,    91,    50,    -1,    49,    35,    50,    -1,    49,
+      41,    50,    -1,    91,    49,    36,    50,    -1,    49,    35,
+      10,    91,    50,    -1,    49,    35,    50,    49,    35,    10,
+      91,    50,    -1,    88,    -1,    88,    49,    35,    10,    91,
+      50,    -1,    42,    89,    49,    90,    50,    -1,    42,     6,
+       7,    89,    49,    33,    50,    -1,    -1,     8,    91,    -1,
+       9,    91,    -1,    33,    -1,    41,    -1,    31,    -1,    30,
+      -1,    44,    -1,     9,    91,    -1,     8,    91,    -1,    52,
+      91,    -1,    49,    92,    50,    -1,    91,    -1,    92,     8,
+      92,    -1,    92,     9,    92,    -1,    92,    10,    92,    -1,
+      92,    11,    92,    -1,    92,    12,    92,    -1,    92,     6,
+       6,    92,    -1,    92,     7,     7,    92,    -1,    92,     5,
+      92,    -1,    92,     4,    92,    -1,    92,     3,    92,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -536,17 +538,17 @@ static const yytype_uint16 yyrline[] =
        0,    68,    68,    70,    69,    77,    76,    84,    83,    89,
       90,    91,    94,    99,   105,   106,   107,   108,   109,   110,
      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     123,   127,   134,   141,   148,   153,   160,   165,   172,   177,
-     182,   189,   197,   202,   210,   215,   220,   229,   230,   233,
-     238,   248,   253,   263,   268,   273,   280,   285,   293,   301,
-     311,   312,   315,   316,   317,   321,   325,   326,   327,   330,
-     331,   334,   340,   349,   358,   363,   368,   373,   378,   383,
-     390,   396,   407,   413,   419,   425,   431,   439,   448,   453,
-     458,   463,   470,   471,   474,   480,   486,   492,   501,   510,
-     519,   524,   529,   535,   543,   553,   557,   566,   573,   582,
-     585,   589,   595,   596,   600,   603,   604,   608,   612,   616,
-     620,   626,   627,   631,   635,   639,   643,   647,   651,   655,
-     659,   663
+     121,   124,   128,   135,   142,   149,   154,   161,   166,   173,
+     178,   183,   190,   198,   203,   211,   216,   221,   230,   231,
+     234,   239,   249,   254,   264,   269,   274,   281,   286,   294,
+     302,   312,   319,   320,   323,   324,   325,   329,   333,   334,
+     335,   338,   339,   342,   348,   357,   366,   371,   376,   381,
+     386,   391,   398,   404,   415,   421,   427,   433,   439,   447,
+     456,   461,   466,   475,   486,   487,   490,   496,   502,   508,
+     517,   526,   535,   540,   545,   551,   559,   569,   573,   582,
+     589,   598,   601,   605,   611,   612,   616,   619,   620,   624,
+     628,   632,   636,   642,   643,   647,   651,   655,   659,   663,
+     667,   671,   675,   679
 };
 #endif
 
@@ -558,14 +560,15 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'",
   "'-'", "'*'", "'/'", "'%'", "LTYPE0", "LTYPE1", "LTYPE2", "LTYPE3",
   "LTYPE4", "LTYPEC", "LTYPED", "LTYPEN", "LTYPER", "LTYPET", "LTYPES",
-  "LTYPEM", "LTYPEI", "LTYPEG", "LTYPEXC", "LTYPEX", "LCONST", "LFP",
-  "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LXREG", "LFCONST",
-  "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'", "';'", "'='", "','",
-  "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1", "line", "@2", "@3",
-  "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem", "nonrel",
-  "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7", "spec8",
-  "spec9", "spec10", "rem", "rom", "rim", "rel", "reg", "imm", "imm2",
-  "con2", "mem", "omem", "nmem", "nam", "offset", "pointer", "con", "expr", 0
+  "LTYPEM", "LTYPEI", "LTYPEG", "LTYPEXC", "LTYPEX", "LTYPEPC", "LCONST",
+  "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LXREG",
+  "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'", "';'",
+  "'='", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1",
+  "line", "@2", "@3", "inst", "nonnon", "rimrem", "remrim", "rimnon",
+  "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6",
+  "spec7", "spec8", "spec9", "spec10", "spec11", "rem", "rom", "rim",
+  "rel", "reg", "imm", "imm2", "con2", "mem", "omem", "nmem", "nam",
+  "offset", "pointer", "con", "expr", 0
 };
 #endif
 
@@ -578,28 +581,28 @@ static const yytype_uint16 yytoknum[] =
       42,    47,    37,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,    58,    59,    61,    44,    40,    41,
-      36,   126
+     285,   286,   287,   288,   289,    58,    59,    61,    44,    40,
+      41,    36,   126
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    52,    53,    54,    53,    56,    55,    57,    55,    55,
-      55,    55,    58,    58,    58,    58,    58,    58,    58,    58,
-      58,    58,    58,    58,    58,    58,    58,    58,    58,    58,
-      59,    59,    60,    61,    62,    62,    63,    63,    64,    64,
-      64,    65,    66,    66,    67,    67,    67,    68,    68,    69,
-      69,    70,    70,    71,    71,    71,    72,    72,    73,    74,
-      75,    75,    76,    76,    76,    76,    76,    76,    76,    77,
-      77,    78,    78,    78,    79,    79,    79,    79,    79,    79,
-      80,    80,    80,    80,    80,    80,    80,    81,    82,    82,
-      82,    82,    83,    83,    84,    84,    84,    84,    84,    84,
-      84,    84,    84,    84,    84,    85,    85,    86,    86,    87,
-      87,    87,    88,    88,    88,    89,    89,    89,    89,    89,
-      89,    90,    90,    90,    90,    90,    90,    90,    90,    90,
-      90,    90
+       0,    53,    54,    55,    54,    57,    56,    58,    56,    56,
+      56,    56,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    60,    60,    61,    62,    63,    63,    64,    64,    65,
+      65,    65,    66,    67,    67,    68,    68,    68,    69,    69,
+      70,    70,    71,    71,    72,    72,    72,    73,    73,    74,
+      75,    76,    77,    77,    78,    78,    78,    78,    78,    78,
+      78,    79,    79,    80,    80,    80,    81,    81,    81,    81,
+      81,    81,    82,    82,    82,    82,    82,    82,    82,    83,
+      84,    84,    84,    84,    85,    85,    86,    86,    86,    86,
+      86,    86,    86,    86,    86,    86,    86,    87,    87,    88,
+      88,    89,    89,    89,    90,    90,    90,    91,    91,    91,
+      91,    91,    91,    92,    92,    92,    92,    92,    92,    92,
+      92,    92,    92,    92
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -608,17 +611,17 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     0,     3,     0,     4,     0,     4,     1,
        2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       0,     1,     3,     3,     2,     1,     2,     1,     2,     1,
-       3,     5,     3,     5,     2,     1,     2,     1,     1,     3,
-       5,     3,     5,     2,     1,     3,     3,     5,     5,     5,
-       1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     4,     2,     2,     1,     1,     1,     1,     1,     1,
-       2,     2,     2,     2,     4,     5,     3,     2,     1,     2,
-       3,     4,     1,     1,     1,     4,     4,     6,     9,     9,
-       3,     3,     4,     5,     8,     1,     6,     5,     7,     0,
-       2,     2,     1,     1,     1,     1,     1,     2,     2,     2,
-       3,     1,     3,     3,     3,     3,     3,     4,     4,     3,
-       3,     3
+       2,     0,     1,     3,     3,     2,     1,     2,     1,     2,
+       1,     3,     5,     3,     5,     2,     1,     2,     1,     1,
+       3,     5,     3,     5,     2,     1,     3,     3,     5,     5,
+       5,     3,     1,     1,     1,     1,     2,     2,     1,     1,
+       1,     1,     1,     4,     2,     2,     1,     1,     1,     1,
+       1,     1,     2,     2,     2,     2,     4,     5,     3,     2,
+       1,     2,     3,     4,     1,     1,     1,     4,     4,     6,
+       9,     9,     3,     3,     4,     5,     8,     1,     6,     5,
+       7,     0,     2,     2,     1,     1,     1,     1,     1,     2,
+       2,     2,     3,     1,     3,     3,     3,     3,     3,     4,
+       4,     3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -626,85 +629,87 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     3,     1,     0,     0,    30,     0,     0,     0,     0,
-       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     9,     4,     0,    11,    31,    14,
-       0,     0,   115,    74,    76,    79,    75,    77,    78,   109,
-     116,     0,     0,     0,    15,    37,    60,    61,    92,    93,
-     105,    94,     0,    16,    69,    35,    70,    17,     0,    18,
-       0,     0,   109,   109,     0,    22,    45,    62,    66,    68,
-      67,    63,    94,    20,     0,    31,    47,    48,    23,   109,
-       0,     0,    19,    39,     0,     0,    21,     0,    24,     0,
-      25,     0,    26,    54,    27,     0,    28,     0,    29,     0,
-       7,     0,     5,     0,    10,   118,   117,     0,     0,     0,
-       0,    36,     0,     0,   121,     0,   119,     0,     0,     0,
-      83,    82,     0,    81,    80,    34,     0,     0,    64,    65,
-      46,    72,    73,     0,    44,     0,     0,    72,    38,     0,
-       0,     0,     0,     0,    53,     0,     0,     0,     0,    12,
-       0,    13,   109,   110,   111,     0,     0,   100,   101,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   120,
-       0,     0,     0,     0,    86,     0,     0,    32,    33,     0,
-       0,    40,     0,    42,     0,    49,    51,    55,    56,     0,
-       0,     0,     8,     6,     0,   114,   112,   113,     0,     0,
-       0,   131,   130,   129,     0,     0,   122,   123,   124,   125,
-     126,     0,     0,    95,   102,    96,     0,    84,    71,     0,
-       0,    88,    87,     0,     0,     0,     0,     0,     0,     0,
-     107,   103,     0,   127,   128,     0,     0,     0,    85,    41,
-      89,     0,    43,    50,    52,    57,    58,    59,     0,     0,
-     106,    97,     0,     0,     0,    90,   108,     0,     0,     0,
-      91,   104,     0,     0,    98,    99
+       2,     3,     1,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     9,     4,     0,    11,    32,
+      14,     0,     0,   117,    76,    78,    81,    77,    79,    80,
+     111,   118,     0,     0,     0,    15,    38,    62,    63,    94,
+      95,   107,    96,     0,    16,    71,    36,    72,    17,     0,
+      18,     0,     0,   111,   111,     0,    22,    46,    64,    68,
+      70,    69,    65,    96,    20,     0,    32,    48,    49,    23,
+     111,     0,     0,    19,    40,     0,     0,    21,     0,    24,
+       0,    25,     0,    26,    55,    27,     0,    28,     0,    29,
+       0,    30,     0,     7,     0,     5,     0,    10,   120,   119,
+       0,     0,     0,     0,    37,     0,     0,   123,     0,   121,
+       0,     0,     0,    85,    84,     0,    83,    82,    35,     0,
+       0,    66,    67,    47,    74,    75,     0,    45,     0,     0,
+      74,    39,     0,     0,     0,     0,     0,    54,     0,     0,
+       0,     0,     0,    12,     0,    13,   111,   112,   113,     0,
+       0,   102,   103,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   122,     0,     0,     0,     0,    88,     0,
+       0,    33,    34,     0,     0,    41,     0,    43,     0,    50,
+      52,    56,    57,     0,     0,     0,    61,     8,     6,     0,
+     116,   114,   115,     0,     0,     0,   133,   132,   131,     0,
+       0,   124,   125,   126,   127,   128,     0,     0,    97,   104,
+      98,     0,    86,    73,     0,     0,    90,    89,     0,     0,
+       0,     0,     0,     0,     0,   109,   105,     0,   129,   130,
+       0,     0,     0,    87,    42,    91,     0,    44,    51,    53,
+      58,    59,    60,     0,     0,   108,    99,     0,     0,     0,
+      92,   110,     0,     0,     0,    93,   106,     0,     0,   100,
+     101
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     3,    25,   150,   148,    26,    29,    57,    59,
-      53,    44,    82,    73,    86,    65,    78,    88,    90,    92,
-      94,    96,    98,    54,    66,    55,    67,    46,    56,   183,
-     222,    47,    48,    49,    50,   110,   198,    51,   115
+      -1,     1,     3,    26,   154,   152,    27,    30,    58,    60,
+      54,    45,    83,    74,    87,    66,    79,    89,    91,    93,
+      95,    97,    99,   101,    55,    67,    56,    68,    47,    57,
+     187,   227,    48,    49,    50,    51,   113,   203,    52,   118
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -100
+#define YYPACT_NINF -89
 static const yytype_int16 yypact[] =
 {
-    -100,    22,  -100,   165,   -32,   -22,   265,   288,   288,   334,
-     195,    -1,   311,   212,   416,   288,   288,   288,   416,    81,
-       7,   -16,    24,   -12,  -100,  -100,    -4,  -100,  -100,  -100,
-     469,   469,  -100,  -100,  -100,  -100,  -100,  -100,  -100,    39,
-    -100,   334,   387,   469,  -100,  -100,  -100,  -100,  -100,  -100,
-      46,    65,   372,  -100,  -100,    72,  -100,  -100,    83,  -100,
-      86,   334,    39,   102,   242,  -100,  -100,  -100,  -100,  -100,
-    -100,  -100,    77,  -100,   117,   334,  -100,  -100,  -100,   102,
-     410,   469,  -100,  -100,    89,    90,  -100,    92,  -100,    97,
-    -100,    98,  -100,   100,  -100,   101,  -100,   105,  -100,   106,
-    -100,   469,  -100,   469,  -100,  -100,  -100,   135,   469,   469,
-     114,  -100,    -6,   128,  -100,    71,  -100,   175,    32,   218,
-    -100,  -100,   425,  -100,  -100,  -100,   334,   288,  -100,  -100,
-    -100,   114,  -100,   357,  -100,    29,   469,  -100,  -100,   410,
-     181,   440,   334,   334,   334,   457,   334,   334,   165,   164,
-     165,   164,   102,  -100,  -100,     6,   469,   166,  -100,   469,
-     469,   469,   207,   208,   469,   469,   469,   469,   469,  -100,
-     206,     4,   173,   174,  -100,   463,   176,  -100,  -100,   184,
-     187,  -100,    15,  -100,   193,   200,   213,  -100,  -100,   211,
-     217,   220,  -100,  -100,   222,  -100,  -100,  -100,   216,   219,
-     238,   517,   525,    78,   469,   469,    95,    95,  -100,  -100,
-    -100,   469,   469,   232,  -100,  -100,   237,  -100,  -100,     7,
-     252,   278,  -100,   239,   254,   256,     7,   469,    81,   263,
-    -100,  -100,   293,   188,   188,   255,   258,    88,  -100,  -100,
-     300,   281,  -100,  -100,  -100,  -100,  -100,  -100,   262,   469,
-    -100,  -100,   304,   305,   289,  -100,  -100,   277,   469,   469,
-    -100,  -100,   283,   284,  -100,  -100
+     -89,    35,   -89,   213,   -42,    21,   283,   306,   306,   352,
+     237,    12,   329,   390,   159,   306,   306,   306,   159,     4,
+       7,     7,    46,     5,    32,   -89,   -89,    51,   -89,   -89,
+     -89,   455,   455,   -89,   -89,   -89,   -89,   -89,   -89,   -89,
+      40,   -89,   352,   421,   455,   -89,   -89,   -89,   -89,   -89,
+     -89,    55,    60,   406,   -89,   -89,    72,   -89,   -89,    76,
+     -89,    77,   352,    40,    57,   260,   -89,   -89,   -89,   -89,
+     -89,   -89,   -89,    79,   -89,   115,   352,   -89,   -89,   -89,
+      57,    43,   455,   -89,   -89,    82,    87,   -89,    89,   -89,
+      93,   -89,    94,   -89,    98,   -89,   108,   -89,   109,   -89,
+     116,   -89,   117,   -89,   455,   -89,   455,   -89,   -89,   -89,
+     156,   455,   455,   132,   -89,    10,   133,   -89,   167,   -89,
+     147,    64,    59,   -89,   -89,   444,   -89,   -89,   -89,   352,
+     306,   -89,   -89,   -89,   132,   -89,   375,   -89,    78,   455,
+     -89,   -89,    43,   152,   136,   352,   352,   352,   417,   352,
+     352,     7,   213,   505,   213,   505,    57,   -89,   -89,    -4,
+     455,   137,   -89,   455,   455,   455,   196,   197,   455,   455,
+     455,   455,   455,   -89,   195,    13,   160,   162,   -89,   451,
+     163,   -89,   -89,   165,   161,   -89,     6,   -89,   170,   174,
+     175,   -89,   -89,   173,   177,   210,   -89,   -89,   -89,   194,
+     -89,   -89,   -89,   226,   227,   247,   186,   513,   254,   455,
+     455,   106,   106,   -89,   -89,   -89,   455,   455,   234,   -89,
+     -89,   243,   -89,   -89,     7,   257,   275,   -89,   248,   265,
+     269,     7,   455,     4,   273,   -89,   -89,   297,   240,   240,
+     258,   266,    71,   -89,   -89,   301,   292,   -89,   -89,   -89,
+     -89,   -89,   -89,   276,   455,   -89,   -89,   313,   318,   299,
+     -89,   -89,   280,   455,   455,   -89,   -89,   284,   289,   -89,
+     -89
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -100,  -100,  -100,   -99,  -100,  -100,  -100,   315,  -100,  -100,
-    -100,   318,  -100,  -100,  -100,  -100,  -100,  -100,  -100,  -100,
-    -100,  -100,  -100,    17,   270,     0,    -7,    -9,    -8,   112,
-    -100,    13,     1,    -3,    -2,   -44,  -100,   -10,   -64
+     -89,   -89,   -89,   -64,   -89,   -89,   -89,   321,   -89,   -89,
+     -89,   333,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,
+     -89,   -89,   -89,   -89,     2,   281,     9,    -7,    -9,    -8,
+     121,   -89,    14,    -3,    -1,     8,   -33,   -89,   -10,   -88
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -714,151 +719,150 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint16 yytable[] =
 {
-      72,    68,    69,    85,   156,    84,    83,    71,    58,    74,
-      97,    70,    99,    27,   212,    89,    91,    93,   131,   132,
-     105,   106,     2,    45,   220,    28,    60,    87,   100,    45,
-     101,    95,   114,   116,   103,   137,   195,   149,   196,   151,
-      39,   104,   124,   157,   221,   107,   197,   108,   109,   192,
-     123,   193,   128,   213,    72,    68,    69,    52,   111,   130,
-     179,    71,   129,   171,   172,    70,   171,   172,   102,   173,
-      85,   114,   173,   138,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   162,   163,   164,   165,   166,   167,
-     168,   114,   111,   114,   117,   201,   202,   203,   153,   154,
-     206,   207,   208,   209,   210,   166,   167,   168,   194,   106,
-     108,   109,   114,   118,    33,    34,    35,    36,    37,   125,
-     169,    38,   252,   253,   128,   135,   180,   178,   136,    85,
-     126,   184,   181,   127,   129,   189,   139,   188,   140,   141,
-     233,   234,   152,   177,   142,   143,   199,   144,   145,   114,
-     114,   114,   146,   147,   114,   114,   114,   114,   114,   185,
-     186,   187,   155,   190,   191,   106,     4,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   158,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,   114,   114,   164,   165,   166,   167,
-     168,   235,   236,    30,    31,    61,    21,    22,    23,   170,
-      24,   239,   179,   204,   200,   205,   211,   246,   245,   247,
-      30,    31,   214,   215,    32,   217,    30,    31,    33,    34,
-      35,    36,    37,   218,   219,    38,    62,    63,    40,   257,
-     223,    32,    64,    42,   224,    52,    43,    32,   262,   263,
-      30,    31,   133,    79,    63,    40,   174,   225,   226,    80,
-      81,    40,    52,    43,   227,   230,    81,   228,   231,    43,
-     229,    32,   232,    30,    31,    33,    34,    35,    36,    37,
-     237,   240,    38,    62,    63,    40,   238,   241,   243,   182,
-      42,   244,    52,    43,    32,   248,    30,    31,    33,    34,
-      35,    36,    37,   249,   250,    38,    39,   251,    40,   254,
-     255,   256,    41,    42,   258,   259,    43,    32,   260,    30,
-      31,    33,    34,    35,    36,    37,   261,    76,    38,    39,
-      77,    40,   264,   265,   134,   242,    42,     0,    52,    43,
-      32,     0,    30,    31,    33,    34,    35,    36,    37,     0,
-       0,    38,    39,     0,    40,     0,     0,     0,    75,    42,
-       0,     0,    43,    32,     0,    30,    31,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,    40,     0,     0,
-      30,   119,    42,     0,     0,    43,    32,     0,     0,     0,
-      33,    34,    35,    36,    37,    30,    31,    38,     0,     0,
-      40,    32,     0,     0,     0,    42,     0,     0,    43,     0,
-     120,   121,     0,    39,     0,    40,    32,     0,    30,    31,
-     122,   112,     0,    43,    30,    31,     0,   113,     0,     0,
-      40,     0,     0,    30,   175,    81,     0,     0,    43,    32,
-       0,     0,     0,     0,     0,    32,     0,     0,    30,    31,
-       0,    79,    63,    40,    32,     0,     0,    39,    81,    40,
-       0,    43,     0,   176,    42,    30,    31,    43,    40,    32,
-       0,    30,    31,    81,     0,     0,    43,    30,    31,     0,
-       0,     0,     0,    40,     0,     0,    32,     0,    81,     0,
-     182,    43,    32,     0,     0,     0,     0,     0,    32,     0,
-      40,   216,     0,     0,     0,    81,    40,    52,    43,     0,
-       0,    81,    40,     0,    43,     0,     0,    81,     0,     0,
-      43,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     161,   162,   163,   164,   165,   166,   167,   168
+      73,    69,    70,    86,    28,    85,    84,    71,    46,    72,
+      98,    61,   100,   102,    46,   225,   153,    59,   155,    75,
+     160,   108,   109,   217,    90,    92,    94,   200,    88,   201,
+     134,   135,    96,   117,   119,     2,   226,   202,    34,    35,
+      36,    37,    38,   127,   114,    39,   110,   140,   111,   112,
+     105,    31,    32,   131,    40,    73,    69,    70,    53,   132,
+     161,   126,    71,   218,    72,   111,   112,    31,    32,    29,
+     133,    86,   117,    33,   141,   206,   207,   208,   114,   106,
+     211,   212,   213,   214,   215,    80,    64,    41,   197,    33,
+     198,   103,    82,   104,   117,    44,   117,   107,   178,   175,
+     176,   157,   158,    41,   120,   177,   257,   258,    82,   121,
+     183,    44,   109,   175,   176,   117,   170,   171,   172,   177,
+     128,   238,   239,   199,   129,   130,   139,   131,   138,   184,
+     142,   181,    86,   132,   188,   185,   143,   144,   193,   182,
+     192,   145,   146,   196,    31,    32,   147,   189,   190,   191,
+     204,   194,   195,   117,   117,   117,   148,   149,   117,   117,
+     117,   117,   117,   156,   150,   151,    33,    31,    32,   109,
+     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+      41,   159,   174,   162,   183,    82,   205,   186,    44,    33,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   117,
+     117,    40,   209,    41,   210,   216,   240,   241,    43,   224,
+     219,    44,   220,   222,     4,   223,   244,   173,   228,   229,
+     230,   231,   251,   250,   252,   232,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,   234,   262,    31,    32,    62,   168,   169,
+     170,   171,   172,   267,   268,    22,    23,    24,   233,    25,
+     166,   167,   168,   169,   170,   171,   172,    33,    31,    32,
+     136,    34,    35,    36,    37,    38,   235,   236,    39,    63,
+      64,    41,   237,   242,   246,    65,    43,   245,    53,    44,
+      33,    31,    32,   243,    34,    35,    36,    37,    38,   186,
+     248,    39,    63,    64,    41,   249,   253,   254,   255,    43,
+     259,    53,    44,    33,    31,    32,   256,    34,    35,    36,
+      37,    38,   260,   263,    39,    40,   261,    41,   264,   265,
+     266,    42,    43,    77,   269,    44,    33,    31,    32,   270,
+      34,    35,    36,    37,    38,    78,   137,    39,    40,   247,
+      41,     0,     0,     0,     0,    43,     0,    53,    44,    33,
+      31,    32,     0,    34,    35,    36,    37,    38,     0,     0,
+      39,    40,     0,    41,     0,     0,     0,    76,    43,     0,
+       0,    44,    33,    31,    32,     0,    34,    35,    36,    37,
+      38,     0,     0,    39,    40,     0,    41,     0,    31,    32,
+       0,    43,     0,     0,    44,    33,     0,     0,     0,    34,
+      35,    36,    37,    38,    31,   122,    39,     0,     0,    41,
+      33,     0,     0,     0,    43,    31,    32,    44,     0,    31,
+      32,     0,    80,    64,    41,     0,    33,     0,    81,    82,
+       0,    53,    44,     0,     0,   123,   124,    33,    40,     0,
+      41,    33,    31,   179,     0,   125,   115,     0,    44,    31,
+      32,    41,   116,    31,    32,    41,    82,     0,    53,    44,
+      82,     0,     0,    44,    33,     0,     0,     0,     0,     0,
+       0,    33,     0,   180,     0,    33,     0,     0,    41,     0,
+     221,     0,     0,    82,     0,    41,    44,     0,     0,    41,
+      82,     0,     0,    44,    82,     0,     0,    44,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   165,   166,
+     167,   168,   169,   170,   171,   172
 };
 
 static const yytype_int16 yycheck[] =
 {
-      10,    10,    10,    13,    10,    13,    13,    10,     8,    11,
-      19,    10,    20,    45,    10,    15,    16,    17,    62,    63,
-      30,    31,     0,     6,     9,    47,     9,    14,    44,    12,
-      46,    18,    42,    43,    46,    79,    30,   101,    32,   103,
-      41,    45,    52,    49,    29,     6,    40,     8,     9,   148,
-      52,   150,    61,    49,    64,    64,    64,    50,    41,    61,
-      31,    64,    61,    34,    35,    64,    34,    35,    44,    40,
-      80,    81,    40,    80,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,     6,     7,     8,     9,    10,    11,
-      12,   101,    75,   103,    48,   159,   160,   161,   108,   109,
-     164,   165,   166,   167,   168,    10,    11,    12,   152,   119,
-       8,     9,   122,    48,    33,    34,    35,    36,    37,    47,
-      49,    40,    34,    35,   133,    48,   136,   127,    11,   139,
-      47,   141,   139,    47,   133,   145,    47,   145,    48,    47,
-     204,   205,     7,   126,    47,    47,   156,    47,    47,   159,
-     160,   161,    47,    47,   164,   165,   166,   167,   168,   142,
-     143,   144,    48,   146,   147,   175,     1,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    49,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,   204,   205,     8,     9,    10,    11,
-      12,   211,   212,     8,     9,    10,    41,    42,    43,    34,
-      45,   219,    31,     6,    48,     7,    10,   227,   226,   228,
-       8,     9,    49,    49,    29,    49,     8,     9,    33,    34,
-      35,    36,    37,    49,    47,    40,    41,    42,    43,   249,
-      47,    29,    47,    48,    44,    50,    51,    29,   258,   259,
-       8,     9,    10,    41,    42,    43,    38,    44,    47,    47,
-      48,    43,    50,    51,    47,    49,    48,    47,    49,    51,
-      48,    29,    34,     8,     9,    33,    34,    35,    36,    37,
-      48,    29,    40,    41,    42,    43,    49,     9,    34,    50,
-      48,    35,    50,    51,    29,    32,     8,     9,    33,    34,
-      35,    36,    37,    10,    49,    40,    41,    49,    43,     9,
-      29,    49,    47,    48,    10,    10,    51,    29,    29,     8,
-       9,    33,    34,    35,    36,    37,    49,    12,    40,    41,
-      12,    43,    49,    49,    64,   223,    48,    -1,    50,    51,
-      29,    -1,     8,     9,    33,    34,    35,    36,    37,    -1,
-      -1,    40,    41,    -1,    43,    -1,    -1,    -1,    47,    48,
-      -1,    -1,    51,    29,    -1,     8,     9,    33,    34,    35,
-      36,    37,    -1,    -1,    40,    41,    -1,    43,    -1,    -1,
-       8,     9,    48,    -1,    -1,    51,    29,    -1,    -1,    -1,
-      33,    34,    35,    36,    37,     8,     9,    40,    -1,    -1,
-      43,    29,    -1,    -1,    -1,    48,    -1,    -1,    51,    -1,
-      38,    39,    -1,    41,    -1,    43,    29,    -1,     8,     9,
-      48,    34,    -1,    51,     8,     9,    -1,    40,    -1,    -1,
-      43,    -1,    -1,     8,     9,    48,    -1,    -1,    51,    29,
-      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,     8,     9,
-      -1,    41,    42,    43,    29,    -1,    -1,    41,    48,    43,
-      -1,    51,    -1,    38,    48,     8,     9,    51,    43,    29,
-      -1,     8,     9,    48,    -1,    -1,    51,     8,     9,    -1,
-      -1,    -1,    -1,    43,    -1,    -1,    29,    -1,    48,    -1,
-      50,    51,    29,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-      43,    38,    -1,    -1,    -1,    48,    43,    50,    51,    -1,
-      -1,    48,    43,    -1,    51,    -1,    -1,    48,    -1,    -1,
-      51,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-       5,     6,     7,     8,     9,    10,    11,    12
+      10,    10,    10,    13,    46,    13,    13,    10,     6,    10,
+      19,     9,    20,    21,    12,     9,   104,     8,   106,    11,
+      10,    31,    32,    10,    15,    16,    17,    31,    14,    33,
+      63,    64,    18,    43,    44,     0,    30,    41,    34,    35,
+      36,    37,    38,    53,    42,    41,     6,    80,     8,     9,
+      45,     8,     9,    62,    42,    65,    65,    65,    51,    62,
+      50,    53,    65,    50,    65,     8,     9,     8,     9,    48,
+      62,    81,    82,    30,    81,   163,   164,   165,    76,    47,
+     168,   169,   170,   171,   172,    42,    43,    44,   152,    30,
+     154,    45,    49,    47,   104,    52,   106,    46,    39,    35,
+      36,   111,   112,    44,    49,    41,    35,    36,    49,    49,
+      32,    52,   122,    35,    36,   125,    10,    11,    12,    41,
+      48,   209,   210,   156,    48,    48,    11,   136,    49,   139,
+      48,   129,   142,   136,   144,   142,    49,    48,   148,   130,
+     148,    48,    48,   151,     8,     9,    48,   145,   146,   147,
+     160,   149,   150,   163,   164,   165,    48,    48,   168,   169,
+     170,   171,   172,     7,    48,    48,    30,     8,     9,   179,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      44,    49,    35,    50,    32,    49,    49,    51,    52,    30,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,   209,
+     210,    42,     6,    44,     7,    10,   216,   217,    49,    48,
+      50,    52,    50,    50,     1,    50,   224,    50,    48,    45,
+      45,    48,   232,   231,   233,    48,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    49,   254,     8,     9,    10,     8,     9,
+      10,    11,    12,   263,   264,    42,    43,    44,    48,    46,
+       6,     7,     8,     9,    10,    11,    12,    30,     8,     9,
+      10,    34,    35,    36,    37,    38,    50,    50,    41,    42,
+      43,    44,    35,    49,     9,    48,    49,    30,    51,    52,
+      30,     8,     9,    50,    34,    35,    36,    37,    38,    51,
+      35,    41,    42,    43,    44,    36,    33,    10,    50,    49,
+       9,    51,    52,    30,     8,     9,    50,    34,    35,    36,
+      37,    38,    30,    10,    41,    42,    50,    44,    10,    30,
+      50,    48,    49,    12,    50,    52,    30,     8,     9,    50,
+      34,    35,    36,    37,    38,    12,    65,    41,    42,   228,
+      44,    -1,    -1,    -1,    -1,    49,    -1,    51,    52,    30,
+       8,     9,    -1,    34,    35,    36,    37,    38,    -1,    -1,
+      41,    42,    -1,    44,    -1,    -1,    -1,    48,    49,    -1,
+      -1,    52,    30,     8,     9,    -1,    34,    35,    36,    37,
+      38,    -1,    -1,    41,    42,    -1,    44,    -1,     8,     9,
+      -1,    49,    -1,    -1,    52,    30,    -1,    -1,    -1,    34,
+      35,    36,    37,    38,     8,     9,    41,    -1,    -1,    44,
+      30,    -1,    -1,    -1,    49,     8,     9,    52,    -1,     8,
+       9,    -1,    42,    43,    44,    -1,    30,    -1,    48,    49,
+      -1,    51,    52,    -1,    -1,    39,    40,    30,    42,    -1,
+      44,    30,     8,     9,    -1,    49,    35,    -1,    52,     8,
+       9,    44,    41,     8,     9,    44,    49,    -1,    51,    52,
+      49,    -1,    -1,    52,    30,    -1,    -1,    -1,    -1,    -1,
+      -1,    30,    -1,    39,    -1,    30,    -1,    -1,    44,    -1,
+      39,    -1,    -1,    49,    -1,    44,    52,    -1,    -1,    44,
+      49,    -1,    -1,    52,    49,    -1,    -1,    52,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,     5,     6,
+       7,     8,     9,    10,    11,    12
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    53,     0,    54,     1,    13,    14,    15,    16,    17,
+       0,    54,     0,    55,     1,    13,    14,    15,    16,    17,
       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    41,    42,    43,    45,    55,    58,    45,    47,    59,
-       8,     9,    29,    33,    34,    35,    36,    37,    40,    41,
-      43,    47,    48,    51,    63,    75,    79,    83,    84,    85,
-      86,    89,    50,    62,    75,    77,    80,    60,    77,    61,
-      75,    10,    41,    42,    47,    67,    76,    78,    79,    80,
-      84,    85,    89,    65,    86,    47,    59,    63,    68,    41,
-      47,    48,    64,    78,    80,    89,    66,    83,    69,    77,
-      70,    77,    71,    77,    72,    83,    73,    79,    74,    80,
-      44,    46,    44,    46,    45,    89,    89,     6,     8,     9,
-      87,    75,    34,    40,    89,    90,    89,    48,    48,     9,
-      38,    39,    48,    86,    89,    47,    47,    47,    79,    84,
-      86,    87,    87,    10,    76,    48,    11,    87,    78,    47,
-      48,    47,    47,    47,    47,    47,    47,    47,    57,    90,
-      56,    90,     7,    89,    89,    48,    10,    49,    49,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    49,
-      34,    34,    35,    40,    38,     9,    38,    75,    77,    31,
-      89,    78,    50,    81,    89,    75,    75,    75,    80,    89,
-      75,    75,    55,    55,    87,    30,    32,    40,    88,    89,
-      48,    90,    90,    90,     6,     7,    90,    90,    90,    90,
-      90,    10,    10,    49,    49,    49,    38,    49,    49,    47,
-       9,    29,    82,    47,    44,    44,    47,    47,    47,    48,
-      49,    49,    34,    90,    90,    89,    89,    48,    49,    80,
-      29,     9,    81,    34,    35,    80,    89,    79,    32,    10,
-      49,    49,    34,    35,     9,    29,    49,    89,    10,    10,
-      29,    49,    89,    89,    49,    49
+      28,    29,    42,    43,    44,    46,    56,    59,    46,    48,
+      60,     8,     9,    30,    34,    35,    36,    37,    38,    41,
+      42,    44,    48,    49,    52,    64,    77,    81,    85,    86,
+      87,    88,    91,    51,    63,    77,    79,    82,    61,    79,
+      62,    77,    10,    42,    43,    48,    68,    78,    80,    81,
+      82,    86,    87,    91,    66,    88,    48,    60,    64,    69,
+      42,    48,    49,    65,    80,    82,    91,    67,    85,    70,
+      79,    71,    79,    72,    79,    73,    85,    74,    81,    75,
+      82,    76,    82,    45,    47,    45,    47,    46,    91,    91,
+       6,     8,     9,    89,    77,    35,    41,    91,    92,    91,
+      49,    49,     9,    39,    40,    49,    88,    91,    48,    48,
+      48,    81,    86,    88,    89,    89,    10,    78,    49,    11,
+      89,    80,    48,    49,    48,    48,    48,    48,    48,    48,
+      48,    48,    58,    92,    57,    92,     7,    91,    91,    49,
+      10,    50,    50,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    50,    35,    35,    36,    41,    39,     9,
+      39,    77,    79,    32,    91,    80,    51,    83,    91,    77,
+      77,    77,    82,    91,    77,    77,    82,    56,    56,    89,
+      31,    33,    41,    90,    91,    49,    92,    92,    92,     6,
+       7,    92,    92,    92,    92,    92,    10,    10,    50,    50,
+      50,    39,    50,    50,    48,     9,    30,    84,    48,    45,
+      45,    48,    48,    48,    49,    50,    50,    35,    92,    92,
+      91,    91,    49,    50,    82,    30,     9,    83,    35,    36,
+      82,    91,    81,    33,    10,    50,    50,    35,    36,     9,
+      30,    50,    91,    10,    10,    30,    50,    91,    91,    50,
+      50
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1794,95 +1798,100 @@ yyreduce:
     break;
 
   case 30:
-#line 123 "a.y"
+#line 121 "a.y"
+    { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].gen2)); }
+    break;
+
+  case 31:
+#line 124 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 31:
-#line 128 "a.y"
+  case 32:
+#line 129 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 32:
-#line 135 "a.y"
+  case 33:
+#line 136 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 33:
-#line 142 "a.y"
+  case 34:
+#line 143 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 34:
-#line 149 "a.y"
+  case 35:
+#line 150 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (2)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 35:
-#line 154 "a.y"
+  case 36:
+#line 155 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (1)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 36:
-#line 161 "a.y"
+  case 37:
+#line 162 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 37:
-#line 166 "a.y"
+  case 38:
+#line 167 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 38:
-#line 173 "a.y"
+  case 39:
+#line 174 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 39:
-#line 178 "a.y"
+  case 40:
+#line 179 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 40:
-#line 183 "a.y"
+  case 41:
+#line 184 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 41:
-#line 190 "a.y"
+  case 42:
+#line 191 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -1890,16 +1899,16 @@ yyreduce:
        }
     break;
 
-  case 42:
-#line 198 "a.y"
+  case 43:
+#line 199 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 43:
-#line 203 "a.y"
+  case 44:
+#line 204 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -1907,24 +1916,24 @@ yyreduce:
        }
     break;
 
-  case 44:
-#line 211 "a.y"
+  case 45:
+#line 212 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 45:
-#line 216 "a.y"
+  case 46:
+#line 217 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 46:
-#line 221 "a.y"
+  case 47:
+#line 222 "a.y"
     {
                (yyval.gen2).from = nullgen;
                (yyval.gen2).to = (yyvsp[(2) - (2)].gen);
@@ -1933,16 +1942,16 @@ yyreduce:
        }
     break;
 
-  case 49:
-#line 234 "a.y"
+  case 50:
+#line 235 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 50:
-#line 239 "a.y"
+  case 51:
+#line 240 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -1952,16 +1961,16 @@ yyreduce:
        }
     break;
 
-  case 51:
-#line 249 "a.y"
+  case 52:
+#line 250 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 52:
-#line 254 "a.y"
+  case 53:
+#line 255 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -1971,40 +1980,40 @@ yyreduce:
        }
     break;
 
-  case 53:
-#line 264 "a.y"
+  case 54:
+#line 265 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (2)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 54:
-#line 269 "a.y"
+  case 55:
+#line 270 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (1)].gen);
                (yyval.gen2).to = nullgen;
        }
     break;
 
-  case 55:
-#line 274 "a.y"
+  case 56:
+#line 275 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 56:
-#line 281 "a.y"
+  case 57:
+#line 282 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
        }
     break;
 
-  case 57:
-#line 286 "a.y"
+  case 58:
+#line 287 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).from.scale = (yyvsp[(3) - (5)].lval);
@@ -2012,8 +2021,8 @@ yyreduce:
        }
     break;
 
-  case 58:
-#line 294 "a.y"
+  case 59:
+#line 295 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(1) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(3) - (5)].gen);
@@ -2021,8 +2030,8 @@ yyreduce:
        }
     break;
 
-  case 59:
-#line 302 "a.y"
+  case 60:
+#line 303 "a.y"
     {
                (yyval.gen2).from = (yyvsp[(3) - (5)].gen);
                (yyval.gen2).to = (yyvsp[(5) - (5)].gen);
@@ -2032,22 +2041,30 @@ yyreduce:
        }
     break;
 
-  case 64:
-#line 318 "a.y"
+  case 61:
+#line 313 "a.y"
+    {
+               (yyval.gen2).from = (yyvsp[(1) - (3)].gen);
+               (yyval.gen2).to = (yyvsp[(3) - (3)].gen);
+       }
+    break;
+
+  case 66:
+#line 326 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 65:
-#line 322 "a.y"
+  case 67:
+#line 330 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
        }
     break;
 
-  case 71:
-#line 335 "a.y"
+  case 73:
+#line 343 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2055,8 +2072,8 @@ yyreduce:
        }
     break;
 
-  case 72:
-#line 341 "a.y"
+  case 74:
+#line 349 "a.y"
     {
                (yyval.gen) = nullgen;
                if(pass == 2)
@@ -2067,8 +2084,8 @@ yyreduce:
        }
     break;
 
-  case 73:
-#line 350 "a.y"
+  case 75:
+#line 358 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_BRANCH;
@@ -2077,56 +2094,56 @@ yyreduce:
        }
     break;
 
-  case 74:
-#line 359 "a.y"
+  case 76:
+#line 367 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 75:
-#line 364 "a.y"
+  case 77:
+#line 372 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 76:
-#line 369 "a.y"
+  case 78:
+#line 377 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 77:
-#line 374 "a.y"
+  case 79:
+#line 382 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 78:
-#line 379 "a.y"
+  case 80:
+#line 387 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SP;
        }
     break;
 
-  case 79:
-#line 384 "a.y"
+  case 81:
+#line 392 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(1) - (1)].lval);
        }
     break;
 
-  case 80:
-#line 391 "a.y"
+  case 82:
+#line 399 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST;
@@ -2134,8 +2151,8 @@ yyreduce:
        }
     break;
 
-  case 81:
-#line 397 "a.y"
+  case 83:
+#line 405 "a.y"
     {
                (yyval.gen) = (yyvsp[(2) - (2)].gen);
                (yyval.gen).index = (yyvsp[(2) - (2)].gen).type;
@@ -2148,8 +2165,8 @@ yyreduce:
        }
     break;
 
-  case 82:
-#line 408 "a.y"
+  case 84:
+#line 416 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_SCONST;
@@ -2157,8 +2174,8 @@ yyreduce:
        }
     break;
 
-  case 83:
-#line 414 "a.y"
+  case 85:
+#line 422 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2166,8 +2183,8 @@ yyreduce:
        }
     break;
 
-  case 84:
-#line 420 "a.y"
+  case 86:
+#line 428 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2175,8 +2192,8 @@ yyreduce:
        }
     break;
 
-  case 85:
-#line 426 "a.y"
+  case 87:
+#line 434 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2184,8 +2201,8 @@ yyreduce:
        }
     break;
 
-  case 86:
-#line 432 "a.y"
+  case 88:
+#line 440 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_FCONST;
@@ -2193,8 +2210,8 @@ yyreduce:
        }
     break;
 
-  case 87:
-#line 440 "a.y"
+  case 89:
+#line 448 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_CONST2;
@@ -2203,40 +2220,48 @@ yyreduce:
        }
     break;
 
-  case 88:
-#line 449 "a.y"
+  case 90:
+#line 457 "a.y"
     {
                (yyval.con2).v1 = (yyvsp[(1) - (1)].lval);
                (yyval.con2).v2 = 0;
        }
     break;
 
-  case 89:
-#line 454 "a.y"
+  case 91:
+#line 462 "a.y"
     {
                (yyval.con2).v1 = -(yyvsp[(2) - (2)].lval);
                (yyval.con2).v2 = 0;
        }
     break;
 
-  case 90:
-#line 459 "a.y"
+  case 92:
+#line 467 "a.y"
     {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if((yyvsp[(3) - (3)].lval) == 0)
+                       (yyvsp[(3) - (3)].lval) = 1;
                (yyval.con2).v1 = (yyvsp[(1) - (3)].lval);
                (yyval.con2).v2 = (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 91:
-#line 464 "a.y"
+  case 93:
+#line 476 "a.y"
     {
+               // Change explicit 0 argument size to 1
+               // so that we can distinguish it from missing.
+               if((yyvsp[(4) - (4)].lval) == 0)
+                       (yyvsp[(4) - (4)].lval) = 1;
                (yyval.con2).v1 = -(yyvsp[(2) - (4)].lval);
                (yyval.con2).v2 = (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 94:
-#line 475 "a.y"
+  case 96:
+#line 491 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2244,8 +2269,8 @@ yyreduce:
        }
     break;
 
-  case 95:
-#line 481 "a.y"
+  case 97:
+#line 497 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (4)].lval);
@@ -2253,8 +2278,8 @@ yyreduce:
        }
     break;
 
-  case 96:
-#line 487 "a.y"
+  case 98:
+#line 503 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_SP;
@@ -2262,8 +2287,8 @@ yyreduce:
        }
     break;
 
-  case 97:
-#line 493 "a.y"
+  case 99:
+#line 509 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2274,8 +2299,8 @@ yyreduce:
        }
     break;
 
-  case 98:
-#line 502 "a.y"
+  case 100:
+#line 518 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (9)].lval);
@@ -2286,8 +2311,8 @@ yyreduce:
        }
     break;
 
-  case 99:
-#line 511 "a.y"
+  case 101:
+#line 527 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (9)].lval);
@@ -2298,24 +2323,24 @@ yyreduce:
        }
     break;
 
-  case 100:
-#line 520 "a.y"
+  case 102:
+#line 536 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(2) - (3)].lval);
        }
     break;
 
-  case 101:
-#line 525 "a.y"
+  case 103:
+#line 541 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_SP;
        }
     break;
 
-  case 102:
-#line 530 "a.y"
+  case 104:
+#line 546 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(3) - (4)].lval);
@@ -2323,8 +2348,8 @@ yyreduce:
        }
     break;
 
-  case 103:
-#line 536 "a.y"
+  case 105:
+#line 552 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+D_NONE;
@@ -2334,8 +2359,8 @@ yyreduce:
        }
     break;
 
-  case 104:
-#line 544 "a.y"
+  case 106:
+#line 560 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_INDIR+(yyvsp[(2) - (8)].lval);
@@ -2345,15 +2370,15 @@ yyreduce:
        }
     break;
 
-  case 105:
-#line 554 "a.y"
+  case 107:
+#line 570 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (1)].gen);
        }
     break;
 
-  case 106:
-#line 558 "a.y"
+  case 108:
+#line 574 "a.y"
     {
                (yyval.gen) = (yyvsp[(1) - (6)].gen);
                (yyval.gen).index = (yyvsp[(3) - (6)].lval);
@@ -2362,8 +2387,8 @@ yyreduce:
        }
     break;
 
-  case 107:
-#line 567 "a.y"
+  case 109:
+#line 583 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = (yyvsp[(4) - (5)].lval);
@@ -2372,8 +2397,8 @@ yyreduce:
        }
     break;
 
-  case 108:
-#line 574 "a.y"
+  case 110:
+#line 590 "a.y"
     {
                (yyval.gen) = nullgen;
                (yyval.gen).type = D_STATIC;
@@ -2382,134 +2407,134 @@ yyreduce:
        }
     break;
 
-  case 109:
-#line 582 "a.y"
+  case 111:
+#line 598 "a.y"
     {
                (yyval.lval) = 0;
        }
     break;
 
-  case 110:
-#line 586 "a.y"
+  case 112:
+#line 602 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 111:
-#line 590 "a.y"
+  case 113:
+#line 606 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 113:
-#line 597 "a.y"
+  case 115:
+#line 613 "a.y"
     {
                (yyval.lval) = D_AUTO;
        }
     break;
 
-  case 116:
-#line 605 "a.y"
+  case 118:
+#line 621 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
        }
     break;
 
-  case 117:
-#line 609 "a.y"
+  case 119:
+#line 625 "a.y"
     {
                (yyval.lval) = -(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 118:
-#line 613 "a.y"
+  case 120:
+#line 629 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 119:
-#line 617 "a.y"
+  case 121:
+#line 633 "a.y"
     {
                (yyval.lval) = ~(yyvsp[(2) - (2)].lval);
        }
     break;
 
-  case 120:
-#line 621 "a.y"
+  case 122:
+#line 637 "a.y"
     {
                (yyval.lval) = (yyvsp[(2) - (3)].lval);
        }
     break;
 
-  case 122:
-#line 628 "a.y"
+  case 124:
+#line 644 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 123:
-#line 632 "a.y"
+  case 125:
+#line 648 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 124:
-#line 636 "a.y"
+  case 126:
+#line 652 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 125:
-#line 640 "a.y"
+  case 127:
+#line 656 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 126:
-#line 644 "a.y"
+  case 128:
+#line 660 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 127:
-#line 648 "a.y"
+  case 129:
+#line 664 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 128:
-#line 652 "a.y"
+  case 130:
+#line 668 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
        }
     break;
 
-  case 129:
-#line 656 "a.y"
+  case 131:
+#line 672 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 130:
-#line 660 "a.y"
+  case 132:
+#line 676 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
        }
     break;
 
-  case 131:
-#line 664 "a.y"
+  case 133:
+#line 680 "a.y"
     {
                (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
        }
@@ -2517,7 +2542,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2521 "y.tab.c"
+#line 2546 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index 4a84b53e4df368d8a36a263fbbf05fdbd542dc9e..cb572f7b388e261e7cabf7468cfd44f1e3e65028 100644 (file)
      LTYPEG = 271,
      LTYPEXC = 272,
      LTYPEX = 273,
-     LCONST = 274,
-     LFP = 275,
-     LPC = 276,
-     LSB = 277,
-     LBREG = 278,
-     LLREG = 279,
-     LSREG = 280,
-     LFREG = 281,
-     LXREG = 282,
-     LFCONST = 283,
-     LSCONST = 284,
-     LSP = 285,
-     LNAME = 286,
-     LLAB = 287,
-     LVAR = 288
+     LTYPEPC = 274,
+     LCONST = 275,
+     LFP = 276,
+     LPC = 277,
+     LSB = 278,
+     LBREG = 279,
+     LLREG = 280,
+     LSREG = 281,
+     LFREG = 282,
+     LXREG = 283,
+     LFCONST = 284,
+     LSCONST = 285,
+     LSP = 286,
+     LNAME = 287,
+     LLAB = 288,
+     LVAR = 289
    };
 #endif
 /* Tokens.  */
 #define LTYPEG 271
 #define LTYPEXC 272
 #define LTYPEX 273
-#define LCONST 274
-#define LFP 275
-#define LPC 276
-#define LSB 277
-#define LBREG 278
-#define LLREG 279
-#define LSREG 280
-#define LFREG 281
-#define LXREG 282
-#define LFCONST 283
-#define LSCONST 284
-#define LSP 285
-#define LNAME 286
-#define LLAB 287
-#define LVAR 288
+#define LTYPEPC 274
+#define LCONST 275
+#define LFP 276
+#define LPC 277
+#define LSB 278
+#define LBREG 279
+#define LLREG 280
+#define LSREG 281
+#define LFREG 282
+#define LXREG 283
+#define LFCONST 284
+#define LSCONST 285
+#define LSP 286
+#define LNAME 287
+#define LLAB 288
+#define LVAR 289
 
 
 
@@ -124,7 +126,7 @@ typedef union YYSTYPE
        Gen2    gen2;
 }
 /* Line 1529 of yacc.c.  */
-#line 128 "y.tab.h"
+#line 130 "y.tab.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1