OSDN Git Service

Remove generated parsers, expect bison to be present
authorStan Shebs <shebs@apple.com>
Tue, 19 Oct 1999 17:26:54 +0000 (17:26 +0000)
committerStan Shebs <shebs@apple.com>
Tue, 19 Oct 1999 17:26:54 +0000 (17:26 +0000)
gdb/c-exp.tab.c [deleted file]
gdb/f-exp.tab.c [deleted file]
gdb/jv-exp.tab.c [deleted file]
gdb/m2-exp.tab.c [deleted file]

diff --git a/gdb/c-exp.tab.c b/gdb/c-exp.tab.c
deleted file mode 100644 (file)
index c9395fa..0000000
+++ /dev/null
@@ -1,2796 +0,0 @@
-
-/*  A Bison parser, made from c-exp.y
- by  GNU Bison version 1.25
-  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define        INT     258
-#define        FLOAT   259
-#define        STRING  260
-#define        NAME    261
-#define        TYPENAME        262
-#define        NAME_OR_INT     263
-#define        STRUCT  264
-#define        CLASS   265
-#define        UNION   266
-#define        ENUM    267
-#define        SIZEOF  268
-#define        UNSIGNED        269
-#define        COLONCOLON      270
-#define        TEMPLATE        271
-#define        ERROR   272
-#define        SIGNED_KEYWORD  273
-#define        LONG    274
-#define        SHORT   275
-#define        INT_KEYWORD     276
-#define        CONST_KEYWORD   277
-#define        VOLATILE_KEYWORD        278
-#define        DOUBLE_KEYWORD  279
-#define        VARIABLE        280
-#define        ASSIGN_MODIFY   281
-#define        THIS    282
-#define        TRUEKEYWORD     283
-#define        FALSEKEYWORD    284
-#define        ABOVE_COMMA     285
-#define        OROR    286
-#define        ANDAND  287
-#define        EQUAL   288
-#define        NOTEQUAL        289
-#define        LEQ     290
-#define        GEQ     291
-#define        LSH     292
-#define        RSH     293
-#define        UNARY   294
-#define        INCREMENT       295
-#define        DECREMENT       296
-#define        ARROW   297
-#define        BLOCKNAME       298
-#define        FILENAME        299
-
-#line 38 "c-exp.y"
-
-
-#include "defs.h"
-#include "gdb_string.h"
-#include <ctype.h>
-#include "expression.h"
-#include "value.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "c-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
-
-/* Flag indicating we're dealing with HP-compiled objects */ 
-extern int hp_som_som_object_present;
-
-/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
-   as well as gratuitiously global symbol names, so we can have multiple
-   yacc generated parsers in gdb.  Note that these are only the variables
-   produced by yacc.  If other parser generators (bison, byacc, etc) produce
-   additional global names that conflict at link time, then those parser
-   generators need to be fixed instead of adding those names to this list. */
-
-#define        yymaxdepth c_maxdepth
-#define        yyparse c_parse
-#define        yylex   c_lex
-#define        yyerror c_error
-#define        yylval  c_lval
-#define        yychar  c_char
-#define        yydebug c_debug
-#define        yypact  c_pact  
-#define        yyr1    c_r1                    
-#define        yyr2    c_r2                    
-#define        yydef   c_def           
-#define        yychk   c_chk           
-#define        yypgo   c_pgo           
-#define        yyact   c_act           
-#define        yyexca  c_exca
-#define yyerrflag c_errflag
-#define yynerrs        c_nerrs
-#define        yyps    c_ps
-#define        yypv    c_pv
-#define        yys     c_s
-#define        yy_yys  c_yys
-#define        yystate c_state
-#define        yytmp   c_tmp
-#define        yyv     c_v
-#define        yy_yyv  c_yyv
-#define        yyval   c_val
-#define        yylloc  c_lloc
-#define yyreds c_reds          /* With YYDEBUG defined */
-#define yytoks c_toks          /* With YYDEBUG defined */
-#define yylhs  c_yylhs
-#define yylen  c_yylen
-#define yydefred c_yydefred
-#define yydgoto        c_yydgoto
-#define yysindex c_yysindex
-#define yyrindex c_yyrindex
-#define yygindex c_yygindex
-#define yytable         c_yytable
-#define yycheck         c_yycheck
-
-#ifndef YYDEBUG
-#define        YYDEBUG 0               /* Default to no yydebug support */
-#endif
-
-int
-yyparse PARAMS ((void));
-
-static int
-yylex PARAMS ((void));
-
-void
-yyerror PARAMS ((char *));
-
-
-#line 120 "c-exp.y"
-typedef union
-  {
-    LONGEST lval;
-    struct {
-      LONGEST val;
-      struct type *type;
-    } typed_val_int;
-    struct {
-      DOUBLEST dval;
-      struct type *type;
-    } typed_val_float;
-    struct symbol *sym;
-    struct type *tval;
-    struct stoken sval;
-    struct ttype tsym;
-    struct symtoken ssym;
-    int voidval;
-    struct block *bval;
-    enum exp_opcode opcode;
-    struct internalvar *ivar;
-
-    struct type **tvec;
-    int *ivec;
-  } YYSTYPE;
-#line 145 "c-exp.y"
-
-/* YYSTYPE gets defined by %union */
-static int
-parse_number PARAMS ((char *, int, int, YYSTYPE *));
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define        YYFINAL         214
-#define        YYFLAG          -32768
-#define        YYNTBASE        69
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 299 ? yytranslate[x] : 91)
-
-static const char 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,    62,     2,     2,     2,    52,    38,     2,    59,
-    65,    50,    48,    30,    49,    57,    51,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    68,     2,    41,
-    32,    42,    33,    47,     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,
-    58,     2,    64,    37,     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,    66,    36,    67,    63,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    31,    34,    35,    39,    40,    43,
-    44,    45,    46,    53,    54,    55,    56,    60,    61
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     8,    12,    15,    18,    21,    24,
-    27,    30,    33,    36,    39,    42,    46,    50,    55,    59,
-    63,    68,    73,    74,    80,    82,    83,    85,    89,    91,
-    95,   100,   105,   109,   113,   117,   121,   125,   129,   133,
-   137,   141,   145,   149,   153,   157,   161,   165,   169,   173,
-   177,   181,   185,   191,   195,   199,   201,   203,   205,   207,
-   209,   214,   216,   218,   220,   222,   224,   226,   230,   234,
-   238,   243,   245,   248,   250,   252,   255,   258,   261,   265,
-   269,   271,   274,   276,   279,   281,   285,   288,   290,   293,
-   295,   298,   302,   305,   309,   311,   315,   317,   319,   321,
-   323,   326,   330,   333,   337,   341,   346,   349,   353,   355,
-   358,   361,   364,   367,   370,   373,   375,   378,   380,   386,
-   389,   392,   394,   396,   398,   400,   402,   406,   408,   410,
-   412,   414,   416
-};
-
-static const short yyrhs[] = {    71,
-     0,    70,     0,    85,     0,    72,     0,    71,    30,    72,
-     0,    50,    72,     0,    38,    72,     0,    49,    72,     0,
-    62,    72,     0,    63,    72,     0,    54,    72,     0,    55,
-    72,     0,    72,    54,     0,    72,    55,     0,    13,    72,
-     0,    72,    56,    89,     0,    72,    56,    79,     0,    72,
-    56,    50,    72,     0,    72,    57,    89,     0,    72,    57,
-    79,     0,    72,    57,    50,    72,     0,    72,    58,    71,
-    64,     0,     0,    72,    59,    73,    75,    65,     0,    66,
-     0,     0,    72,     0,    75,    30,    72,     0,    67,     0,
-    74,    75,    76,     0,    74,    85,    76,    72,     0,    59,
-    85,    65,    72,     0,    59,    71,    65,     0,    72,    47,
-    72,     0,    72,    50,    72,     0,    72,    51,    72,     0,
-    72,    52,    72,     0,    72,    48,    72,     0,    72,    49,
-    72,     0,    72,    45,    72,     0,    72,    46,    72,     0,
-    72,    39,    72,     0,    72,    40,    72,     0,    72,    43,
-    72,     0,    72,    44,    72,     0,    72,    41,    72,     0,
-    72,    42,    72,     0,    72,    38,    72,     0,    72,    37,
-    72,     0,    72,    36,    72,     0,    72,    35,    72,     0,
-    72,    34,    72,     0,    72,    33,    72,    68,    72,     0,
-    72,    32,    72,     0,    72,    26,    72,     0,     3,     0,
-     8,     0,     4,     0,    78,     0,    25,     0,    13,    59,
-    85,    65,     0,     5,     0,    27,     0,    28,     0,    29,
-     0,    60,     0,    61,     0,    77,    15,    89,     0,    77,
-    15,    89,     0,    86,    15,    89,     0,    86,    15,    63,
-    89,     0,    79,     0,    15,    89,     0,    90,     0,    86,
-     0,    86,    22,     0,    86,    23,     0,    86,    81,     0,
-    86,    22,    81,     0,    86,    23,    81,     0,    50,     0,
-    50,    81,     0,    38,     0,    38,    81,     0,    82,     0,
-    59,    81,    65,     0,    82,    83,     0,    83,     0,    82,
-    84,     0,    84,     0,    58,    64,     0,    58,     3,    64,
-     0,    59,    65,     0,    59,    88,    65,     0,    80,     0,
-    86,    15,    50,     0,     7,     0,    21,     0,    19,     0,
-    20,     0,    19,    21,     0,    14,    19,    21,     0,    19,
-    19,     0,    19,    19,    21,     0,    14,    19,    19,     0,
-    14,    19,    19,    21,     0,    20,    21,     0,    14,    20,
-    21,     0,    24,     0,    19,    24,     0,     9,    89,     0,
-    10,    89,     0,    11,    89,     0,    12,    89,     0,    14,
-    87,     0,    14,     0,    18,    87,     0,    18,     0,    16,
-    89,    41,    85,    42,     0,    22,    86,     0,    23,    86,
-     0,     7,     0,    21,     0,    19,     0,    20,     0,    85,
-     0,    88,    30,    85,     0,     6,     0,    60,     0,     7,
-     0,     8,     0,     6,     0,    60,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   230,   231,   234,   241,   242,   247,   250,   253,   257,   261,
-   265,   269,   273,   277,   281,   285,   291,   299,   303,   309,
-   317,   321,   325,   329,   335,   339,   342,   346,   350,   353,
-   360,   366,   372,   378,   382,   386,   390,   394,   398,   402,
-   406,   410,   414,   418,   422,   426,   430,   434,   438,   442,
-   446,   450,   454,   458,   462,   468,   475,   486,   493,   496,
-   500,   508,   533,   538,   545,   554,   562,   568,   579,   595,
-   608,   632,   633,   667,   725,   731,   732,   733,   735,   737,
-   741,   743,   745,   747,   749,   752,   754,   759,   766,   768,
-   772,   774,   778,   780,   792,   793,   798,   800,   802,   804,
-   806,   808,   810,   812,   814,   816,   818,   820,   822,   824,
-   826,   829,   832,   835,   838,   840,   842,   844,   849,   856,
-   857,   860,   861,   867,   873,   882,   887,   894,   895,   896,
-   897,   900,   901
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","INT","FLOAT",
-"STRING","NAME","TYPENAME","NAME_OR_INT","STRUCT","CLASS","UNION","ENUM","SIZEOF",
-"UNSIGNED","COLONCOLON","TEMPLATE","ERROR","SIGNED_KEYWORD","LONG","SHORT","INT_KEYWORD",
-"CONST_KEYWORD","VOLATILE_KEYWORD","DOUBLE_KEYWORD","VARIABLE","ASSIGN_MODIFY",
-"THIS","TRUEKEYWORD","FALSEKEYWORD","','","ABOVE_COMMA","'='","'?'","OROR","ANDAND",
-"'|'","'^'","'&'","EQUAL","NOTEQUAL","'<'","'>'","LEQ","GEQ","LSH","RSH","'@'",
-"'+'","'-'","'*'","'/'","'%'","UNARY","INCREMENT","DECREMENT","ARROW","'.'",
-"'['","'('","BLOCKNAME","FILENAME","'!'","'~'","']'","')'","'{'","'}'","':'",
-"start","type_exp","exp1","exp","@1","lcurly","arglist","rcurly","block","variable",
-"qualified_name","ptype","abs_decl","direct_abs_decl","array_mod","func_mod",
-"type","typebase","typename","nonempty_typelist","name","name_not_typename", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-    69,    69,    70,    71,    71,    72,    72,    72,    72,    72,
-    72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-    72,    72,    73,    72,    74,    75,    75,    75,    76,    72,
-    72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-    72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-    72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-    72,    72,    72,    72,    72,    77,    77,    77,    78,    79,
-    79,    78,    78,    78,    80,    80,    80,    80,    80,    80,
-    81,    81,    81,    81,    81,    82,    82,    82,    82,    82,
-    83,    83,    84,    84,    85,    85,    86,    86,    86,    86,
-    86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-    86,    86,    86,    86,    86,    86,    86,    86,    86,    86,
-    86,    87,    87,    87,    87,    88,    88,    89,    89,    89,
-    89,    90,    90
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     1,     3,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     3,     3,     4,     3,     3,
-     4,     4,     0,     5,     1,     0,     1,     3,     1,     3,
-     4,     4,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     5,     3,     3,     1,     1,     1,     1,     1,
-     4,     1,     1,     1,     1,     1,     1,     3,     3,     3,
-     4,     1,     2,     1,     1,     2,     2,     2,     3,     3,
-     1,     2,     1,     2,     1,     3,     2,     1,     2,     1,
-     2,     3,     2,     3,     1,     3,     1,     1,     1,     1,
-     2,     3,     2,     3,     3,     4,     2,     3,     1,     2,
-     2,     2,     2,     2,     2,     1,     2,     1,     5,     2,
-     2,     1,     1,     1,     1,     1,     3,     1,     1,     1,
-     1,     1,     1
-};
-
-static const short yydefact[] = {     0,
-    56,    58,    62,   132,    97,    57,     0,     0,     0,     0,
-     0,   116,     0,     0,   118,    99,   100,    98,     0,     0,
-   109,    60,    63,    64,    65,     0,     0,     0,     0,     0,
-     0,   133,    67,     0,     0,    25,     2,     1,     4,    26,
-     0,    59,    72,    95,     3,    75,    74,   128,   130,   131,
-   129,   111,   112,   113,   114,     0,    15,     0,   122,   124,
-   125,   123,   115,    73,     0,   124,   125,   117,   103,   101,
-   110,   107,   120,   121,     7,     8,     6,    11,    12,     0,
-     0,     9,    10,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    13,    14,     0,     0,
-     0,    23,    27,     0,     0,     0,     0,    76,    77,    83,
-    81,     0,     0,    78,    85,    88,    90,     0,     0,   105,
-   102,   108,     0,   104,    33,     0,     5,    55,    54,     0,
-    52,    51,    50,    49,    48,    42,    43,    46,    47,    44,
-    45,    40,    41,    34,    38,    39,    35,    36,    37,   130,
-     0,    17,    16,     0,    20,    19,     0,    26,     0,    29,
-    30,     0,    69,    96,     0,    70,    79,    80,    84,    82,
-     0,    91,    93,     0,   126,    75,     0,     0,    87,    89,
-    61,   106,     0,    32,     0,    18,    21,    22,     0,    28,
-    31,    71,    92,    86,     0,     0,    94,   119,    53,    24,
-   127,     0,     0,     0
-};
-
-static const short yydefgoto[] = {   212,
-    37,    80,    39,   168,    40,   114,   171,    41,    42,    43,
-    44,   124,   125,   126,   127,   185,    58,    63,   187,   176,
-    47
-};
-
-static const short yypact[] = {   205,
--32768,-32768,-32768,-32768,-32768,-32768,    46,    46,    46,    46,
-   269,    57,    46,    46,   100,   134,   -14,-32768,   228,   228,
--32768,-32768,-32768,-32768,-32768,   205,   205,   205,   205,   205,
-   205,    21,-32768,   205,   205,-32768,-32768,   -16,   504,   205,
-    22,-32768,-32768,-32768,-32768,   107,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   205,    14,    23,-32768,     7,
-    24,-32768,-32768,-32768,    10,-32768,-32768,-32768,    34,-32768,
--32768,-32768,-32768,-32768,    14,    14,    14,    14,    14,   -26,
-   -21,    14,    14,   205,   205,   205,   205,   205,   205,   205,
-   205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
-   205,   205,   205,   205,   205,   205,-32768,-32768,   419,   438,
-   205,-32768,   504,   -25,    -2,    46,    53,     8,     8,     8,
-     8,    -1,   359,-32768,   -41,-32768,-32768,     9,    42,    54,
--32768,-32768,   228,-32768,-32768,   205,   504,   504,   504,   467,
-   556,   580,   603,   625,   646,   665,   665,   254,   254,   254,
-   254,   124,   124,   356,   416,   416,    14,    14,    14,    89,
-   205,-32768,-32768,   205,-32768,-32768,   -17,   205,   205,-32768,
--32768,   205,    93,-32768,    46,-32768,-32768,-32768,-32768,-32768,
-    45,-32768,-32768,    50,-32768,   146,   -22,   128,-32768,-32768,
-   333,-32768,    68,    14,   205,    14,    14,-32768,    -3,   504,
-    14,-32768,-32768,-32768,    67,   228,-32768,-32768,   531,-32768,
--32768,   125,   126,-32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,     3,    -5,-32768,-32768,   -44,    12,-32768,-32768,   -76,
--32768,    79,-32768,    11,    16,     1,     0,   113,-32768,     2,
--32768
-};
-
-
-#define        YYLAST          724
-
-
-static const short yytable[] = {    46,
-    45,   181,    38,    84,   169,    57,    72,   206,    52,    53,
-    54,    55,    84,    84,    64,    65,   122,   188,    73,    74,
-    75,    76,    77,    78,    79,   130,   169,   131,    82,    83,
-    46,    81,   162,   165,   113,   -66,   116,   129,   135,    46,
-   115,   170,   207,   136,   132,   120,   198,    48,    49,    50,
-   133,    48,    49,    50,   134,    46,   128,   121,    48,    49,
-    50,   210,   182,    59,   170,   122,   123,   107,   108,   109,
-   110,   111,   112,   191,   192,    60,    61,    62,   137,   138,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,    51,   174,   -97,   175,    51,    59,   -68,   203,   208,
-   163,   166,    51,   167,   204,   175,   174,   173,    66,    67,
-    62,   117,   186,   199,   213,   214,   172,    68,   118,   119,
-   194,     0,   186,   193,     5,   189,     7,     8,     9,    10,
-   190,    12,     0,    14,   120,    15,    16,    17,    18,    19,
-    20,    21,    69,     0,    70,   196,   121,    71,   197,     0,
-   205,     0,   113,   200,   122,   123,   201,   118,   119,     0,
-   101,   102,   103,   104,   105,   106,   202,   107,   108,   109,
-   110,   111,   112,   120,     0,   194,     0,   186,     0,   209,
-     0,     0,   183,     0,     0,   121,   177,   178,   179,   180,
-     0,   184,     0,   122,   123,   186,   211,     1,     2,     3,
-     4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-    14,     0,    15,    16,    17,    18,    19,    20,    21,    22,
-     0,    23,    24,    25,     5,     0,     7,     8,     9,    10,
-     0,    12,    26,    14,     0,    15,    16,    17,    18,    19,
-    20,    21,     0,    27,    28,     0,     0,     0,    29,    30,
-     0,     0,     0,    31,    32,    33,    34,    35,     0,     0,
-    36,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,     0,    15,    16,    17,    18,
-    19,    20,    21,    22,     0,    23,    24,    25,    99,   100,
-   101,   102,   103,   104,   105,   106,    26,   107,   108,   109,
-   110,   111,   112,     0,     0,     0,     0,    27,    28,     0,
-     0,     0,    29,    30,     0,     0,     0,    56,    32,    33,
-    34,    35,     0,     0,    36,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,     0,
-    15,    16,    17,    18,    19,    20,    21,    22,     0,    23,
-    24,    25,     0,     0,     0,     5,     0,     7,     8,     9,
-    10,     0,    12,     0,    14,     0,    15,    16,    17,    18,
-    19,    20,    21,     0,     0,     0,    29,    30,     0,     0,
-     0,    31,    32,    33,    34,    35,   120,     0,    36,     0,
-     0,     0,     0,   102,   103,   104,   105,   106,   121,   107,
-   108,   109,   110,   111,   112,     0,   122,   123,     0,     0,
-     0,     0,     0,   183,    48,   160,    50,     7,     8,     9,
-    10,     0,    12,     0,    14,     0,    15,    16,    17,    18,
-    19,    20,    21,    48,   160,    50,     7,     8,     9,    10,
-     0,    12,     0,    14,     0,    15,    16,    17,    18,    19,
-    20,    21,     0,     0,     0,   104,   105,   106,   161,   107,
-   108,   109,   110,   111,   112,     0,     0,     0,    51,     0,
-     0,     0,     0,     0,     0,     0,     0,   164,     0,     0,
-     0,     0,    85,     0,     0,     0,     0,    51,    86,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-    98,    99,   100,   101,   102,   103,   104,   105,   106,     0,
-   107,   108,   109,   110,   111,   112,     0,     0,     0,    85,
-     0,     0,     0,     0,   195,    86,    87,    88,    89,    90,
-    91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-   101,   102,   103,   104,   105,   106,     0,   107,   108,   109,
-   110,   111,   112,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-   104,   105,   106,     0,   107,   108,   109,   110,   111,   112,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,     0,   107,
-   108,   109,   110,   111,   112,    90,    91,    92,    93,    94,
-    95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-   105,   106,     0,   107,   108,   109,   110,   111,   112,    91,
-    92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
-   111,   112,    92,    93,    94,    95,    96,    97,    98,    99,
-   100,   101,   102,   103,   104,   105,   106,     0,   107,   108,
-   109,   110,   111,   112,    93,    94,    95,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,     0,   107,
-   108,   109,   110,   111,   112,    95,    96,    97,    98,    99,
-   100,   101,   102,   103,   104,   105,   106,     0,   107,   108,
-   109,   110,   111,   112
-};
-
-static const short yycheck[] = {     0,
-     0,     3,     0,    30,    30,    11,    21,    30,     7,     8,
-     9,    10,    30,    30,    13,    14,    58,    59,    19,    20,
-    26,    27,    28,    29,    30,    19,    30,    21,    34,    35,
-    31,    31,   109,   110,    40,    15,    15,    15,    65,    40,
-    40,    67,    65,    65,    21,    38,    64,     6,     7,     8,
-    41,     6,     7,     8,    21,    56,    56,    50,     6,     7,
-     8,    65,    64,     7,    67,    58,    59,    54,    55,    56,
-    57,    58,    59,    65,    21,    19,    20,    21,    84,    85,
-    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-   106,    60,    50,    15,    63,    60,     7,    15,    64,    42,
-   109,   110,    60,   111,    65,    63,    50,   116,    19,    20,
-    21,    15,   123,   168,     0,     0,   115,    15,    22,    23,
-   136,    -1,   133,   133,     7,   125,     9,    10,    11,    12,
-   125,    14,    -1,    16,    38,    18,    19,    20,    21,    22,
-    23,    24,    19,    -1,    21,   161,    50,    24,   164,    -1,
-    15,    -1,   168,   169,    58,    59,   172,    22,    23,    -1,
-    47,    48,    49,    50,    51,    52,   175,    54,    55,    56,
-    57,    58,    59,    38,    -1,   191,    -1,   188,    -1,   195,
-    -1,    -1,    65,    -1,    -1,    50,   118,   119,   120,   121,
-    -1,   123,    -1,    58,    59,   206,   206,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    -1,    18,    19,    20,    21,    22,    23,    24,    25,
-    -1,    27,    28,    29,     7,    -1,     9,    10,    11,    12,
-    -1,    14,    38,    16,    -1,    18,    19,    20,    21,    22,
-    23,    24,    -1,    49,    50,    -1,    -1,    -1,    54,    55,
-    -1,    -1,    -1,    59,    60,    61,    62,    63,    -1,    -1,
-    66,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-    12,    13,    14,    15,    16,    -1,    18,    19,    20,    21,
-    22,    23,    24,    25,    -1,    27,    28,    29,    45,    46,
-    47,    48,    49,    50,    51,    52,    38,    54,    55,    56,
-    57,    58,    59,    -1,    -1,    -1,    -1,    49,    50,    -1,
-    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    61,
-    62,    63,    -1,    -1,    66,     3,     4,     5,     6,     7,
-     8,     9,    10,    11,    12,    13,    14,    15,    16,    -1,
-    18,    19,    20,    21,    22,    23,    24,    25,    -1,    27,
-    28,    29,    -1,    -1,    -1,     7,    -1,     9,    10,    11,
-    12,    -1,    14,    -1,    16,    -1,    18,    19,    20,    21,
-    22,    23,    24,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    -1,    59,    60,    61,    62,    63,    38,    -1,    66,    -1,
-    -1,    -1,    -1,    48,    49,    50,    51,    52,    50,    54,
-    55,    56,    57,    58,    59,    -1,    58,    59,    -1,    -1,
-    -1,    -1,    -1,    65,     6,     7,     8,     9,    10,    11,
-    12,    -1,    14,    -1,    16,    -1,    18,    19,    20,    21,
-    22,    23,    24,     6,     7,     8,     9,    10,    11,    12,
-    -1,    14,    -1,    16,    -1,    18,    19,    20,    21,    22,
-    23,    24,    -1,    -1,    -1,    50,    51,    52,    50,    54,
-    55,    56,    57,    58,    59,    -1,    -1,    -1,    60,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
-    -1,    -1,    26,    -1,    -1,    -1,    -1,    60,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    -1,
-    54,    55,    56,    57,    58,    59,    -1,    -1,    -1,    26,
-    -1,    -1,    -1,    -1,    68,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    -1,    54,    55,    56,
-    57,    58,    59,    33,    34,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    -1,    54,    55,    56,    57,    58,    59,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    -1,    54,
-    55,    56,    57,    58,    59,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    -1,    54,    55,    56,    57,    58,    59,    37,
-    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    -1,    54,    55,    56,    57,
-    58,    59,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    -1,    54,    55,
-    56,    57,    58,    59,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    -1,    54,
-    55,    56,    57,    58,    59,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    -1,    54,    55,
-    56,    57,    58,    59
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   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 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                -2
-#define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
-#define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL         goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
-      yychar1 = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK;                                              \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
-while (0)
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
-
-#ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
-\f
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
-#else                          /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, int count)
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 196 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to xreallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  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 - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to xreallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-       {
-         yyerror("parser stack overflow");
-         return 2;
-       }
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-       yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-       YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)             /* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-       {
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
-         YYPRINT (stderr, yychar, yylval);
-#endif
-         fprintf (stderr, ")\n");
-       }
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-              yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 3:
-#line 235 "c-exp.y"
-{ write_exp_elt_opcode(OP_TYPE);
-                         write_exp_elt_type(yyvsp[0].tval);
-                         write_exp_elt_opcode(OP_TYPE);;
-    break;}
-case 5:
-#line 243 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_COMMA); ;
-    break;}
-case 6:
-#line 248 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_IND); ;
-    break;}
-case 7:
-#line 251 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_ADDR); ;
-    break;}
-case 8:
-#line 254 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_NEG); ;
-    break;}
-case 9:
-#line 258 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_LOGICAL_NOT); ;
-    break;}
-case 10:
-#line 262 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_COMPLEMENT); ;
-    break;}
-case 11:
-#line 266 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_PREINCREMENT); ;
-    break;}
-case 12:
-#line 270 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_PREDECREMENT); ;
-    break;}
-case 13:
-#line 274 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_POSTINCREMENT); ;
-    break;}
-case 14:
-#line 278 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_POSTDECREMENT); ;
-    break;}
-case 15:
-#line 282 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_SIZEOF); ;
-    break;}
-case 16:
-#line 286 "c-exp.y"
-{ write_exp_elt_opcode (STRUCTOP_PTR);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (STRUCTOP_PTR); ;
-    break;}
-case 17:
-#line 292 "c-exp.y"
-{ /* exp->type::name becomes exp->*(&type::name) */
-                         /* Note: this doesn't work if name is a
-                            static member!  FIXME */
-                         write_exp_elt_opcode (UNOP_ADDR);
-                         write_exp_elt_opcode (STRUCTOP_MPTR); ;
-    break;}
-case 18:
-#line 300 "c-exp.y"
-{ write_exp_elt_opcode (STRUCTOP_MPTR); ;
-    break;}
-case 19:
-#line 304 "c-exp.y"
-{ write_exp_elt_opcode (STRUCTOP_STRUCT);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (STRUCTOP_STRUCT); ;
-    break;}
-case 20:
-#line 310 "c-exp.y"
-{ /* exp.type::name becomes exp.*(&type::name) */
-                         /* Note: this doesn't work if name is a
-                            static member!  FIXME */
-                         write_exp_elt_opcode (UNOP_ADDR);
-                         write_exp_elt_opcode (STRUCTOP_MEMBER); ;
-    break;}
-case 21:
-#line 318 "c-exp.y"
-{ write_exp_elt_opcode (STRUCTOP_MEMBER); ;
-    break;}
-case 22:
-#line 322 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_SUBSCRIPT); ;
-    break;}
-case 23:
-#line 328 "c-exp.y"
-{ start_arglist (); ;
-    break;}
-case 24:
-#line 330 "c-exp.y"
-{ write_exp_elt_opcode (OP_FUNCALL);
-                         write_exp_elt_longcst ((LONGEST) end_arglist ());
-                         write_exp_elt_opcode (OP_FUNCALL); ;
-    break;}
-case 25:
-#line 336 "c-exp.y"
-{ start_arglist (); ;
-    break;}
-case 27:
-#line 343 "c-exp.y"
-{ arglist_len = 1; ;
-    break;}
-case 28:
-#line 347 "c-exp.y"
-{ arglist_len++; ;
-    break;}
-case 29:
-#line 351 "c-exp.y"
-{ yyval.lval = end_arglist () - 1; ;
-    break;}
-case 30:
-#line 354 "c-exp.y"
-{ write_exp_elt_opcode (OP_ARRAY);
-                         write_exp_elt_longcst ((LONGEST) 0);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
-                         write_exp_elt_opcode (OP_ARRAY); ;
-    break;}
-case 31:
-#line 361 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_MEMVAL);
-                         write_exp_elt_type (yyvsp[-2].tval);
-                         write_exp_elt_opcode (UNOP_MEMVAL); ;
-    break;}
-case 32:
-#line 367 "c-exp.y"
-{ write_exp_elt_opcode (UNOP_CAST);
-                         write_exp_elt_type (yyvsp[-2].tval);
-                         write_exp_elt_opcode (UNOP_CAST); ;
-    break;}
-case 33:
-#line 373 "c-exp.y"
-{ ;
-    break;}
-case 34:
-#line 379 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_REPEAT); ;
-    break;}
-case 35:
-#line 383 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_MUL); ;
-    break;}
-case 36:
-#line 387 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_DIV); ;
-    break;}
-case 37:
-#line 391 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_REM); ;
-    break;}
-case 38:
-#line 395 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_ADD); ;
-    break;}
-case 39:
-#line 399 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_SUB); ;
-    break;}
-case 40:
-#line 403 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_LSH); ;
-    break;}
-case 41:
-#line 407 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_RSH); ;
-    break;}
-case 42:
-#line 411 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_EQUAL); ;
-    break;}
-case 43:
-#line 415 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
-    break;}
-case 44:
-#line 419 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_LEQ); ;
-    break;}
-case 45:
-#line 423 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_GEQ); ;
-    break;}
-case 46:
-#line 427 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_LESS); ;
-    break;}
-case 47:
-#line 431 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_GTR); ;
-    break;}
-case 48:
-#line 435 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_AND); ;
-    break;}
-case 49:
-#line 439 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_XOR); ;
-    break;}
-case 50:
-#line 443 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_IOR); ;
-    break;}
-case 51:
-#line 447 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_AND); ;
-    break;}
-case 52:
-#line 451 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_OR); ;
-    break;}
-case 53:
-#line 455 "c-exp.y"
-{ write_exp_elt_opcode (TERNOP_COND); ;
-    break;}
-case 54:
-#line 459 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN); ;
-    break;}
-case 55:
-#line 463 "c-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
-                         write_exp_elt_opcode (yyvsp[-1].opcode);
-                         write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); ;
-    break;}
-case 56:
-#line 469 "c-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (yyvsp[0].typed_val_int.type);
-                         write_exp_elt_longcst ((LONGEST)(yyvsp[0].typed_val_int.val));
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 57:
-#line 476 "c-exp.y"
-{ YYSTYPE val;
-                         parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
-                         write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (val.typed_val_int.type);
-                         write_exp_elt_longcst ((LONGEST)val.typed_val_int.val);
-                         write_exp_elt_opcode (OP_LONG);
-                       ;
-    break;}
-case 58:
-#line 487 "c-exp.y"
-{ write_exp_elt_opcode (OP_DOUBLE);
-                         write_exp_elt_type (yyvsp[0].typed_val_float.type);
-                         write_exp_elt_dblcst (yyvsp[0].typed_val_float.dval);
-                         write_exp_elt_opcode (OP_DOUBLE); ;
-    break;}
-case 61:
-#line 501 "c-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_int);
-                         CHECK_TYPEDEF (yyvsp[-1].tval);
-                         write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 62:
-#line 509 "c-exp.y"
-{ /* C strings are converted into array constants with
-                            an explicit null byte added at the end.  Thus
-                            the array upper bound is the string length.
-                            There is no such thing in C as a completely empty
-                            string. */
-                         char *sp = yyvsp[0].sval.ptr; int count = yyvsp[0].sval.length;
-                         while (count-- > 0)
-                           {
-                             write_exp_elt_opcode (OP_LONG);
-                             write_exp_elt_type (builtin_type_char);
-                             write_exp_elt_longcst ((LONGEST)(*sp++));
-                             write_exp_elt_opcode (OP_LONG);
-                           }
-                         write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_char);
-                         write_exp_elt_longcst ((LONGEST)'\0');
-                         write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_opcode (OP_ARRAY);
-                         write_exp_elt_longcst ((LONGEST) 0);
-                         write_exp_elt_longcst ((LONGEST) (yyvsp[0].sval.length));
-                         write_exp_elt_opcode (OP_ARRAY); ;
-    break;}
-case 63:
-#line 534 "c-exp.y"
-{ write_exp_elt_opcode (OP_THIS);
-                         write_exp_elt_opcode (OP_THIS); ;
-    break;}
-case 64:
-#line 539 "c-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                          write_exp_elt_type (builtin_type_bool);
-                          write_exp_elt_longcst ((LONGEST) 1);
-                          write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 65:
-#line 546 "c-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                          write_exp_elt_type (builtin_type_bool);
-                          write_exp_elt_longcst ((LONGEST) 0);
-                          write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 66:
-#line 555 "c-exp.y"
-{
-                         if (yyvsp[0].ssym.sym)
-                           yyval.bval = SYMBOL_BLOCK_VALUE (yyvsp[0].ssym.sym);
-                         else
-                           error ("No file or function \"%s\".",
-                                  copy_name (yyvsp[0].ssym.stoken));
-                       ;
-    break;}
-case 67:
-#line 563 "c-exp.y"
-{
-                         yyval.bval = yyvsp[0].bval;
-                       ;
-    break;}
-case 68:
-#line 569 "c-exp.y"
-{ struct symbol *tem
-                           = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
-                                            VAR_NAMESPACE, (int *) NULL,
-                                            (struct symtab **) NULL);
-                         if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
-                           error ("No function \"%s\" in specified context.",
-                                  copy_name (yyvsp[0].sval));
-                         yyval.bval = SYMBOL_BLOCK_VALUE (tem); ;
-    break;}
-case 69:
-#line 580 "c-exp.y"
-{ struct symbol *sym;
-                         sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
-                                              VAR_NAMESPACE, (int *) NULL,
-                                              (struct symtab **) NULL);
-                         if (sym == 0)
-                           error ("No symbol \"%s\" in specified context.",
-                                  copy_name (yyvsp[0].sval));
-
-                         write_exp_elt_opcode (OP_VAR_VALUE);
-                         /* block_found is set by lookup_symbol.  */
-                         write_exp_elt_block (block_found);
-                         write_exp_elt_sym (sym);
-                         write_exp_elt_opcode (OP_VAR_VALUE); ;
-    break;}
-case 70:
-#line 596 "c-exp.y"
-{
-                         struct type *type = yyvsp[-2].tval;
-                         if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-                             && TYPE_CODE (type) != TYPE_CODE_UNION)
-                           error ("`%s' is not defined as an aggregate type.",
-                                  TYPE_NAME (type));
-
-                         write_exp_elt_opcode (OP_SCOPE);
-                         write_exp_elt_type (type);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (OP_SCOPE);
-                       ;
-    break;}
-case 71:
-#line 609 "c-exp.y"
-{
-                         struct type *type = yyvsp[-3].tval;
-                         struct stoken tmp_token;
-                         if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-                             && TYPE_CODE (type) != TYPE_CODE_UNION)
-                           error ("`%s' is not defined as an aggregate type.",
-                                  TYPE_NAME (type));
-
-                         tmp_token.ptr = (char*) alloca (yyvsp[0].sval.length + 2);
-                         tmp_token.length = yyvsp[0].sval.length + 1;
-                         tmp_token.ptr[0] = '~';
-                         memcpy (tmp_token.ptr+1, yyvsp[0].sval.ptr, yyvsp[0].sval.length);
-                         tmp_token.ptr[tmp_token.length] = 0;
-
-                         /* Check for valid destructor name.  */
-                         destructor_name_p (tmp_token.ptr, type);
-                         write_exp_elt_opcode (OP_SCOPE);
-                         write_exp_elt_type (type);
-                         write_exp_string (tmp_token);
-                         write_exp_elt_opcode (OP_SCOPE);
-                       ;
-    break;}
-case 73:
-#line 634 "c-exp.y"
-{
-                         char *name = copy_name (yyvsp[0].sval);
-                         struct symbol *sym;
-                         struct minimal_symbol *msymbol;
-
-                         sym =
-                           lookup_symbol (name, (const struct block *) NULL,
-                                          VAR_NAMESPACE, (int *) NULL,
-                                          (struct symtab **) NULL);
-                         if (sym)
-                           {
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             write_exp_elt_block (NULL);
-                             write_exp_elt_sym (sym);
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             break;
-                           }
-
-                         msymbol = lookup_minimal_symbol (name, NULL, NULL);
-                         if (msymbol != NULL)
-                           {
-                             write_exp_msymbol (msymbol,
-                                                lookup_function_type (builtin_type_int),
-                                                builtin_type_int);
-                           }
-                         else
-                           if (!have_full_symbols () && !have_partial_symbols ())
-                             error ("No symbol table is loaded.  Use the \"file\" command.");
-                           else
-                             error ("No symbol \"%s\" in current context.", name);
-                       ;
-    break;}
-case 74:
-#line 668 "c-exp.y"
-{ struct symbol *sym = yyvsp[0].ssym.sym;
-
-                         if (sym)
-                           {
-                             if (symbol_read_needs_frame (sym))
-                               {
-                                 if (innermost_block == 0 ||
-                                     contained_in (block_found, 
-                                                   innermost_block))
-                                   innermost_block = block_found;
-                               }
-
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             /* We want to use the selected frame, not
-                                another more inner frame which happens to
-                                be in the same block.  */
-                             write_exp_elt_block (NULL);
-                             write_exp_elt_sym (sym);
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                           }
-                         else if (yyvsp[0].ssym.is_a_field_of_this)
-                           {
-                             /* C++: it hangs off of `this'.  Must
-                                not inadvertently convert from a method call
-                                to data ref.  */
-                             if (innermost_block == 0 || 
-                                 contained_in (block_found, innermost_block))
-                               innermost_block = block_found;
-                             write_exp_elt_opcode (OP_THIS);
-                             write_exp_elt_opcode (OP_THIS);
-                             write_exp_elt_opcode (STRUCTOP_PTR);
-                             write_exp_string (yyvsp[0].ssym.stoken);
-                             write_exp_elt_opcode (STRUCTOP_PTR);
-                           }
-                         else
-                           {
-                             struct minimal_symbol *msymbol;
-                             register char *arg = copy_name (yyvsp[0].ssym.stoken);
-
-                             msymbol =
-                               lookup_minimal_symbol (arg, NULL, NULL);
-                             if (msymbol != NULL)
-                               {
-                                 write_exp_msymbol (msymbol,
-                                                    lookup_function_type (builtin_type_int),
-                                                    builtin_type_int);
-                               }
-                             else if (!have_full_symbols () && !have_partial_symbols ())
-                               error ("No symbol table is loaded.  Use the \"file\" command.");
-                             else
-                               error ("No symbol \"%s\" in current context.",
-                                      copy_name (yyvsp[0].ssym.stoken));
-                           }
-                       ;
-    break;}
-case 78:
-#line 734 "c-exp.y"
-{ yyval.tval = follow_types (yyvsp[-1].tval); ;
-    break;}
-case 79:
-#line 736 "c-exp.y"
-{ yyval.tval = follow_types (yyvsp[-2].tval); ;
-    break;}
-case 80:
-#line 738 "c-exp.y"
-{ yyval.tval = follow_types (yyvsp[-2].tval); ;
-    break;}
-case 81:
-#line 742 "c-exp.y"
-{ push_type (tp_pointer); yyval.voidval = 0; ;
-    break;}
-case 82:
-#line 744 "c-exp.y"
-{ push_type (tp_pointer); yyval.voidval = yyvsp[0].voidval; ;
-    break;}
-case 83:
-#line 746 "c-exp.y"
-{ push_type (tp_reference); yyval.voidval = 0; ;
-    break;}
-case 84:
-#line 748 "c-exp.y"
-{ push_type (tp_reference); yyval.voidval = yyvsp[0].voidval; ;
-    break;}
-case 86:
-#line 753 "c-exp.y"
-{ yyval.voidval = yyvsp[-1].voidval; ;
-    break;}
-case 87:
-#line 755 "c-exp.y"
-{
-                         push_type_int (yyvsp[0].lval);
-                         push_type (tp_array);
-                       ;
-    break;}
-case 88:
-#line 760 "c-exp.y"
-{
-                         push_type_int (yyvsp[0].lval);
-                         push_type (tp_array);
-                         yyval.voidval = 0;
-                       ;
-    break;}
-case 89:
-#line 767 "c-exp.y"
-{ push_type (tp_function); ;
-    break;}
-case 90:
-#line 769 "c-exp.y"
-{ push_type (tp_function); ;
-    break;}
-case 91:
-#line 773 "c-exp.y"
-{ yyval.lval = -1; ;
-    break;}
-case 92:
-#line 775 "c-exp.y"
-{ yyval.lval = yyvsp[-1].typed_val_int.val; ;
-    break;}
-case 93:
-#line 779 "c-exp.y"
-{ yyval.voidval = 0; ;
-    break;}
-case 94:
-#line 781 "c-exp.y"
-{ free ((PTR)yyvsp[-1].tvec); yyval.voidval = 0; ;
-    break;}
-case 96:
-#line 794 "c-exp.y"
-{ yyval.tval = lookup_member_type (builtin_type_int, yyvsp[-2].tval); ;
-    break;}
-case 97:
-#line 799 "c-exp.y"
-{ yyval.tval = yyvsp[0].tsym.type; ;
-    break;}
-case 98:
-#line 801 "c-exp.y"
-{ yyval.tval = builtin_type_int; ;
-    break;}
-case 99:
-#line 803 "c-exp.y"
-{ yyval.tval = builtin_type_long; ;
-    break;}
-case 100:
-#line 805 "c-exp.y"
-{ yyval.tval = builtin_type_short; ;
-    break;}
-case 101:
-#line 807 "c-exp.y"
-{ yyval.tval = builtin_type_long; ;
-    break;}
-case 102:
-#line 809 "c-exp.y"
-{ yyval.tval = builtin_type_unsigned_long; ;
-    break;}
-case 103:
-#line 811 "c-exp.y"
-{ yyval.tval = builtin_type_long_long; ;
-    break;}
-case 104:
-#line 813 "c-exp.y"
-{ yyval.tval = builtin_type_long_long; ;
-    break;}
-case 105:
-#line 815 "c-exp.y"
-{ yyval.tval = builtin_type_unsigned_long_long; ;
-    break;}
-case 106:
-#line 817 "c-exp.y"
-{ yyval.tval = builtin_type_unsigned_long_long; ;
-    break;}
-case 107:
-#line 819 "c-exp.y"
-{ yyval.tval = builtin_type_short; ;
-    break;}
-case 108:
-#line 821 "c-exp.y"
-{ yyval.tval = builtin_type_unsigned_short; ;
-    break;}
-case 109:
-#line 823 "c-exp.y"
-{ yyval.tval = builtin_type_double; ;
-    break;}
-case 110:
-#line 825 "c-exp.y"
-{ yyval.tval = builtin_type_long_double; ;
-    break;}
-case 111:
-#line 827 "c-exp.y"
-{ yyval.tval = lookup_struct (copy_name (yyvsp[0].sval),
-                                             expression_context_block); ;
-    break;}
-case 112:
-#line 830 "c-exp.y"
-{ yyval.tval = lookup_struct (copy_name (yyvsp[0].sval),
-                                             expression_context_block); ;
-    break;}
-case 113:
-#line 833 "c-exp.y"
-{ yyval.tval = lookup_union (copy_name (yyvsp[0].sval),
-                                            expression_context_block); ;
-    break;}
-case 114:
-#line 836 "c-exp.y"
-{ yyval.tval = lookup_enum (copy_name (yyvsp[0].sval),
-                                           expression_context_block); ;
-    break;}
-case 115:
-#line 839 "c-exp.y"
-{ yyval.tval = lookup_unsigned_typename (TYPE_NAME(yyvsp[0].tsym.type)); ;
-    break;}
-case 116:
-#line 841 "c-exp.y"
-{ yyval.tval = builtin_type_unsigned_int; ;
-    break;}
-case 117:
-#line 843 "c-exp.y"
-{ yyval.tval = lookup_signed_typename (TYPE_NAME(yyvsp[0].tsym.type)); ;
-    break;}
-case 118:
-#line 845 "c-exp.y"
-{ yyval.tval = builtin_type_int; ;
-    break;}
-case 119:
-#line 850 "c-exp.y"
-{ yyval.tval = lookup_template_type(copy_name(yyvsp[-3].sval), yyvsp[-1].tval,
-                                                   expression_context_block);
-                       ;
-    break;}
-case 120:
-#line 856 "c-exp.y"
-{ yyval.tval = yyvsp[0].tval; ;
-    break;}
-case 121:
-#line 857 "c-exp.y"
-{ yyval.tval = yyvsp[0].tval; ;
-    break;}
-case 123:
-#line 862 "c-exp.y"
-{
-                 yyval.tsym.stoken.ptr = "int";
-                 yyval.tsym.stoken.length = 3;
-                 yyval.tsym.type = builtin_type_int;
-               ;
-    break;}
-case 124:
-#line 868 "c-exp.y"
-{
-                 yyval.tsym.stoken.ptr = "long";
-                 yyval.tsym.stoken.length = 4;
-                 yyval.tsym.type = builtin_type_long;
-               ;
-    break;}
-case 125:
-#line 874 "c-exp.y"
-{
-                 yyval.tsym.stoken.ptr = "short";
-                 yyval.tsym.stoken.length = 5;
-                 yyval.tsym.type = builtin_type_short;
-               ;
-    break;}
-case 126:
-#line 883 "c-exp.y"
-{ yyval.tvec = (struct type **) xmalloc (sizeof (struct type *) * 2);
-                 yyval.ivec[0] = 1;    /* Number of types in vector */
-                 yyval.tvec[1] = yyvsp[0].tval;
-               ;
-    break;}
-case 127:
-#line 888 "c-exp.y"
-{ int len = sizeof (struct type *) * (++(yyvsp[-2].ivec[0]) + 1);
-                 yyval.tvec = (struct type **) xrealloc ((char *) yyvsp[-2].tvec, len);
-                 yyval.tvec[yyval.ivec[0]] = yyvsp[0].tval;
-               ;
-    break;}
-case 128:
-#line 894 "c-exp.y"
-{ yyval.sval = yyvsp[0].ssym.stoken; ;
-    break;}
-case 129:
-#line 895 "c-exp.y"
-{ yyval.sval = yyvsp[0].ssym.stoken; ;
-    break;}
-case 130:
-#line 896 "c-exp.y"
-{ yyval.sval = yyvsp[0].tsym.stoken; ;
-    break;}
-case 131:
-#line 897 "c-exp.y"
-{ yyval.sval = yyvsp[0].ssym.stoken; ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 498 "/stone/jimb/main-98r2/share/bison.simple"
-\f
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* 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.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-       {
-         int size = 0;
-         char *msg;
-         int x, count;
-
-         count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
-           if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) xmalloc(size + 15);
-         if (msg != 0)
-           {
-             strcpy(msg, "parse error");
-
-             if (count < 5)
-               {
-                 count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
-                   if (yycheck[x + yyn] == x)
-                     {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
-                       count++;
-                     }
-               }
-             yyerror(msg);
-             free(msg);
-           }
-         else
-           yyerror ("parse error; also virtual memory exceeded");
-       }
-      else
-#endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-       YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-}
-#line 911 "c-exp.y"
-
-
-/* Take care of parsing a number (anything that starts with a digit).
-   Set yylval and return the token type; update lexptr.
-   LEN is the number of characters in it.  */
-
-/*** Needs some error checking for the float case ***/
-
-static int
-parse_number (p, len, parsed_float, putithere)
-     register char *p;
-     register int len;
-     int parsed_float;
-     YYSTYPE *putithere;
-{
-  /* FIXME: Shouldn't these be unsigned?  We don't deal with negative values
-     here, and we do kind of silly things like cast to unsigned.  */
-  register LONGEST n = 0;
-  register LONGEST prevn = 0;
-  ULONGEST un;
-
-  register int i = 0;
-  register int c;
-  register int base = input_radix;
-  int unsigned_p = 0;
-
-  /* Number of "L" suffixes encountered.  */
-  int long_p = 0;
-
-  /* We have found a "L" or "U" suffix.  */
-  int found_suffix = 0;
-
-  ULONGEST high_bit;
-  struct type *signed_type;
-  struct type *unsigned_type;
-
-  if (parsed_float)
-    {
-      /* It's a float since it contains a point or an exponent.  */
-      char c;
-      int num = 0;     /* number of tokens scanned by scanf */
-      char saved_char = p[len];
-
-      p[len] = 0;      /* null-terminate the token */
-      if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
-       num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval,&c);
-      else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
-       num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval,&c);
-      else
-       {
-#ifdef SCANF_HAS_LONG_DOUBLE
-         num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval,&c);
-#else
-         /* Scan it into a double, then assign it to the long double.
-            This at least wins with values representable in the range
-            of doubles. */
-         double temp;
-         num = sscanf (p, "%lg%c", &temp,&c);
-         putithere->typed_val_float.dval = temp;
-#endif
-       }
-      p[len] = saved_char;     /* restore the input stream */
-      if (num != 1)            /* check scanf found ONLY a float ... */
-       return ERROR;
-      /* See if it has `f' or `l' suffix (float or long double).  */
-
-      c = tolower (p[len - 1]);
-
-      if (c == 'f')
-       putithere->typed_val_float.type = builtin_type_float;
-      else if (c == 'l')
-       putithere->typed_val_float.type = builtin_type_long_double;
-      else if (isdigit (c) || c == '.')
-       putithere->typed_val_float.type = builtin_type_double;
-      else
-       return ERROR;
-
-      return FLOAT;
-    }
-
-  /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
-  if (p[0] == '0')
-    switch (p[1])
-      {
-      case 'x':
-      case 'X':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 16;
-           len -= 2;
-         }
-       break;
-
-      case 't':
-      case 'T':
-      case 'd':
-      case 'D':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 10;
-           len -= 2;
-         }
-       break;
-
-      default:
-       base = 8;
-       break;
-      }
-
-  while (len-- > 0)
-    {
-      c = *p++;
-      if (c >= 'A' && c <= 'Z')
-       c += 'a' - 'A';
-      if (c != 'l' && c != 'u')
-       n *= base;
-      if (c >= '0' && c <= '9')
-       {
-         if (found_suffix)
-           return ERROR;
-         n += i = c - '0';
-       }
-      else
-       {
-         if (base > 10 && c >= 'a' && c <= 'f')
-           {
-             if (found_suffix)
-               return ERROR;
-             n += i = c - 'a' + 10;
-           }
-         else if (c == 'l')
-           {
-             ++long_p;
-             found_suffix = 1;
-           }
-         else if (c == 'u')
-           {
-             unsigned_p = 1;
-             found_suffix = 1;
-           }
-         else
-           return ERROR;       /* Char not a digit */
-       }
-      if (i >= base)
-       return ERROR;           /* Invalid digit in this base */
-
-      /* Portably test for overflow (only works for nonzero values, so make
-        a second check for zero).  FIXME: Can't we just make n and prevn
-        unsigned and avoid this?  */
-      if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
-       unsigned_p = 1;         /* Try something unsigned */
-
-      /* Portably test for unsigned overflow.
-        FIXME: This check is wrong; for example it doesn't find overflow
-        on 0x123456789 when LONGEST is 32 bits.  */
-      if (c != 'l' && c != 'u' && n != 0)
-       {       
-         if ((unsigned_p && (ULONGEST) prevn >= (ULONGEST) n))
-           error ("Numeric constant too large.");
-       }
-      prevn = n;
-    }
-
-  /* An integer constant is an int, a long, or a long long.  An L
-     suffix forces it to be long; an LL suffix forces it to be long
-     long.  If not forced to a larger size, it gets the first type of
-     the above that it fits in.  To figure out whether it fits, we
-     shift it right and see whether anything remains.  Note that we
-     can't shift sizeof (LONGEST) * HOST_CHAR_BIT bits or more in one
-     operation, because many compilers will warn about such a shift
-     (which always produces a zero result).  Sometimes TARGET_INT_BIT
-     or TARGET_LONG_BIT will be that big, sometimes not.  To deal with
-     the case where it is we just always shift the value more than
-     once, with fewer bits each time.  */
-
-  un = (ULONGEST)n >> 2;
-  if (long_p == 0
-      && (un >> (TARGET_INT_BIT - 2)) == 0)
-    {
-      high_bit = ((ULONGEST)1) << (TARGET_INT_BIT-1);
-
-      /* A large decimal (not hex or octal) constant (between INT_MAX
-        and UINT_MAX) is a long or unsigned long, according to ANSI,
-        never an unsigned int, but this code treats it as unsigned
-        int.  This probably should be fixed.  GCC gives a warning on
-        such constants.  */
-
-      unsigned_type = builtin_type_unsigned_int;
-      signed_type = builtin_type_int;
-    }
-  else if (long_p <= 1
-          && (un >> (TARGET_LONG_BIT - 2)) == 0)
-    {
-      high_bit = ((ULONGEST)1) << (TARGET_LONG_BIT-1);
-      unsigned_type = builtin_type_unsigned_long;
-      signed_type = builtin_type_long;
-    }
-  else
-    {
-      int shift;
-      if (sizeof (ULONGEST) * HOST_CHAR_BIT < TARGET_LONG_LONG_BIT)
-       /* A long long does not fit in a LONGEST.  */
-       shift = (sizeof (ULONGEST) * HOST_CHAR_BIT - 1);
-      else
-       shift = (TARGET_LONG_LONG_BIT - 1);
-      high_bit = (ULONGEST) 1 << shift;
-      unsigned_type = builtin_type_unsigned_long_long;
-      signed_type = builtin_type_long_long;
-    }
-
-   putithere->typed_val_int.val = n;
-
-   /* If the high bit of the worked out type is set then this number
-      has to be unsigned. */
-
-   if (unsigned_p || (n & high_bit)) 
-     {
-       putithere->typed_val_int.type = unsigned_type;
-     }
-   else 
-     {
-       putithere->typed_val_int.type = signed_type;
-     }
-
-   return INT;
-}
-
-struct token
-{
-  char *operator;
-  int token;
-  enum exp_opcode opcode;
-};
-
-static const struct token tokentab3[] =
-  {
-    {">>=", ASSIGN_MODIFY, BINOP_RSH},
-    {"<<=", ASSIGN_MODIFY, BINOP_LSH}
-  };
-
-static const struct token tokentab2[] =
-  {
-    {"+=", ASSIGN_MODIFY, BINOP_ADD},
-    {"-=", ASSIGN_MODIFY, BINOP_SUB},
-    {"*=", ASSIGN_MODIFY, BINOP_MUL},
-    {"/=", ASSIGN_MODIFY, BINOP_DIV},
-    {"%=", ASSIGN_MODIFY, BINOP_REM},
-    {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR},
-    {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND},
-    {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR},
-    {"++", INCREMENT, BINOP_END},
-    {"--", DECREMENT, BINOP_END},
-    {"->", ARROW, BINOP_END},
-    {"&&", ANDAND, BINOP_END},
-    {"||", OROR, BINOP_END},
-    {"::", COLONCOLON, BINOP_END},
-    {"<<", LSH, BINOP_END},
-    {">>", RSH, BINOP_END},
-    {"==", EQUAL, BINOP_END},
-    {"!=", NOTEQUAL, BINOP_END},
-    {"<=", LEQ, BINOP_END},
-    {">=", GEQ, BINOP_END}
-  };
-
-/* Read one token, getting characters through lexptr.  */
-
-static int
-yylex ()
-{
-  int c;
-  int namelen;
-  unsigned int i;
-  char *tokstart;
-  char *tokptr;
-  int tempbufindex;
-  static char *tempbuf;
-  static int tempbufsize;
-  struct symbol * sym_class = NULL;
-  char * token_string = NULL;
-  int class_prefix = 0;
-  int unquoted_expr;
-   
- retry:
-
-  unquoted_expr = 1;
-
-  tokstart = lexptr;
-  /* See if it is a special token of length 3.  */
-  for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
-    if (STREQN (tokstart, tokentab3[i].operator, 3))
-      {
-       lexptr += 3;
-       yylval.opcode = tokentab3[i].opcode;
-       return tokentab3[i].token;
-      }
-
-  /* See if it is a special token of length 2.  */
-  for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
-    if (STREQN (tokstart, tokentab2[i].operator, 2))
-      {
-       lexptr += 2;
-       yylval.opcode = tokentab2[i].opcode;
-       return tokentab2[i].token;
-      }
-
-  switch (c = *tokstart)
-    {
-    case 0:
-      return 0;
-
-    case ' ':
-    case '\t':
-    case '\n':
-      lexptr++;
-      goto retry;
-
-    case '\'':
-      /* We either have a character constant ('0' or '\177' for example)
-        or we have a quoted symbol reference ('foo(int,int)' in C++
-        for example). */
-      lexptr++;
-      c = *lexptr++;
-      if (c == '\\')
-       c = parse_escape (&lexptr);
-      else if (c == '\'')
-       error ("Empty character constant.");
-
-      yylval.typed_val_int.val = c;
-      yylval.typed_val_int.type = builtin_type_char;
-
-      c = *lexptr++;
-      if (c != '\'')
-       {
-         namelen = skip_quoted (tokstart) - tokstart;
-         if (namelen > 2)
-           {
-             lexptr = tokstart + namelen;
-              unquoted_expr = 0;
-             if (lexptr[-1] != '\'')
-               error ("Unmatched single quote.");
-             namelen -= 2;
-             tokstart++;
-             goto tryname;
-           }
-         error ("Invalid character constant.");
-       }
-      return INT;
-
-    case '(':
-      paren_depth++;
-      lexptr++;
-      return c;
-
-    case ')':
-      if (paren_depth == 0)
-       return 0;
-      paren_depth--;
-      lexptr++;
-      return c;
-
-    case ',':
-      if (comma_terminates && paren_depth == 0)
-       return 0;
-      lexptr++;
-      return c;
-
-    case '.':
-      /* Might be a floating point number.  */
-      if (lexptr[1] < '0' || lexptr[1] > '9')
-       goto symbol;            /* Nope, must be a symbol. */
-      /* FALL THRU into number case.  */
-
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-      {
-       /* It's a number.  */
-       int got_dot = 0, got_e = 0, toktype;
-       register char *p = tokstart;
-       int hex = input_radix > 10;
-
-       if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
-         {
-           p += 2;
-           hex = 1;
-         }
-       else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
-         {
-           p += 2;
-           hex = 0;
-         }
-
-       for (;; ++p)
-         {
-           /* This test includes !hex because 'e' is a valid hex digit
-              and thus does not indicate a floating point number when
-              the radix is hex.  */
-           if (!hex && !got_e && (*p == 'e' || *p == 'E'))
-             got_dot = got_e = 1;
-           /* This test does not include !hex, because a '.' always indicates
-              a decimal floating point number regardless of the radix.  */
-           else if (!got_dot && *p == '.')
-             got_dot = 1;
-           else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
-                    && (*p == '-' || *p == '+'))
-             /* This is the sign of the exponent, not the end of the
-                number.  */
-             continue;
-           /* We will take any letters or digits.  parse_number will
-              complain if past the radix, or if L or U are not final.  */
-           else if ((*p < '0' || *p > '9')
-                    && ((*p < 'a' || *p > 'z')
-                                 && (*p < 'A' || *p > 'Z')))
-             break;
-         }
-       toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylval);
-        if (toktype == ERROR)
-         {
-           char *err_copy = (char *) alloca (p - tokstart + 1);
-
-           memcpy (err_copy, tokstart, p - tokstart);
-           err_copy[p - tokstart] = 0;
-           error ("Invalid number \"%s\".", err_copy);
-         }
-       lexptr = p;
-       return toktype;
-      }
-
-    case '+':
-    case '-':
-    case '*':
-    case '/':
-    case '%':
-    case '|':
-    case '&':
-    case '^':
-    case '~':
-    case '!':
-    case '@':
-    case '<':
-    case '>':
-    case '[':
-    case ']':
-    case '?':
-    case ':':
-    case '=':
-    case '{':
-    case '}':
-    symbol:
-      lexptr++;
-      return c;
-
-    case '"':
-
-      /* Build the gdb internal form of the input string in tempbuf,
-        translating any standard C escape forms seen.  Note that the
-        buffer is null byte terminated *only* for the convenience of
-        debugging gdb itself and printing the buffer contents when
-        the buffer contains no embedded nulls.  Gdb does not depend
-        upon the buffer being null byte terminated, it uses the length
-        string instead.  This allows gdb to handle C strings (as well
-        as strings in other languages) with embedded null bytes */
-
-      tokptr = ++tokstart;
-      tempbufindex = 0;
-
-      do {
-       /* Grow the static temp buffer if necessary, including allocating
-          the first one on demand. */
-       if (tempbufindex + 1 >= tempbufsize)
-         {
-           tempbuf = (char *) xrealloc (tempbuf, tempbufsize += 64);
-         }
-       switch (*tokptr)
-         {
-         case '\0':
-         case '"':
-           /* Do nothing, loop will terminate. */
-           break;
-         case '\\':
-           tokptr++;
-           c = parse_escape (&tokptr);
-           if (c == -1)
-             {
-               continue;
-             }
-           tempbuf[tempbufindex++] = c;
-           break;
-         default:
-           tempbuf[tempbufindex++] = *tokptr++;
-           break;
-         }
-      } while ((*tokptr != '"') && (*tokptr != '\0'));
-      if (*tokptr++ != '"')
-       {
-         error ("Unterminated string in expression.");
-       }
-      tempbuf[tempbufindex] = '\0';    /* See note above */
-      yylval.sval.ptr = tempbuf;
-      yylval.sval.length = tempbufindex;
-      lexptr = tokptr;
-      return (STRING);
-    }
-
-  if (!(c == '_' || c == '$'
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
-    /* We must have come across a bad character (e.g. ';').  */
-    error ("Invalid character '%c' in expression.", c);
-
-  /* It's a name.  See how long it is.  */
-  namelen = 0;
-  for (c = tokstart[namelen];
-       (c == '_' || c == '$' || (c >= '0' && c <= '9')
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '<');)
-    {
-      /* Template parameter lists are part of the name.
-        FIXME: This mishandles `print $a<4&&$a>3'.  */
-
-      if (c == '<')
-       { 
-           if (hp_som_som_object_present)
-             {
-               /* Scan ahead to get rest of the template specification.  Note
-                  that we look ahead only when the '<' adjoins non-whitespace
-                  characters; for comparison expressions, e.g. "a < b > c",
-                  there must be spaces before the '<', etc. */
-               
-               char * p = find_template_name_end (tokstart + namelen);
-               if (p)
-                 namelen = p - tokstart;
-               break;
-             }
-           else
-             { 
-              int i = namelen;
-              int nesting_level = 1;
-              while (tokstart[++i])
-                {
-                  if (tokstart[i] == '<')
-                    nesting_level++;
-                  else if (tokstart[i] == '>')
-                    {
-                      if (--nesting_level == 0)
-                        break;
-                    }
-                }
-              if (tokstart[i] == '>')
-                namelen = i;
-              else
-                break;
-            }
-       }
-      c = tokstart[++namelen];
-    }
-
-  /* The token "if" terminates the expression and is NOT 
-     removed from the input stream.  */
-  if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f')
-    {
-      return 0;
-    }
-
-  lexptr += namelen;
-
-  tryname:
-
-  /* Catch specific keywords.  Should be done with a data structure.  */
-  switch (namelen)
-    {
-    case 8:
-      if (STREQN (tokstart, "unsigned", 8))
-       return UNSIGNED;
-      if (current_language->la_language == language_cplus
-         && STREQN (tokstart, "template", 8))
-       return TEMPLATE;
-      if (STREQN (tokstart, "volatile", 8))
-       return VOLATILE_KEYWORD;
-      break;
-    case 6:
-      if (STREQN (tokstart, "struct", 6))
-       return STRUCT;
-      if (STREQN (tokstart, "signed", 6))
-       return SIGNED_KEYWORD;
-      if (STREQN (tokstart, "sizeof", 6))      
-       return SIZEOF;
-      if (STREQN (tokstart, "double", 6))      
-       return DOUBLE_KEYWORD;
-      break;
-    case 5:
-      if (current_language->la_language == language_cplus)
-        {
-          if (STREQN (tokstart, "false", 5))
-            return FALSEKEYWORD;
-          if (STREQN (tokstart, "class", 5))
-            return CLASS;
-        }
-      if (STREQN (tokstart, "union", 5))
-       return UNION;
-      if (STREQN (tokstart, "short", 5))
-       return SHORT;
-      if (STREQN (tokstart, "const", 5))
-       return CONST_KEYWORD;
-      break;
-    case 4:
-      if (STREQN (tokstart, "enum", 4))
-       return ENUM;
-      if (STREQN (tokstart, "long", 4))
-       return LONG;
-      if (current_language->la_language == language_cplus)
-          {
-            if (STREQN (tokstart, "true", 4))
-              return TRUEKEYWORD;
-
-            if (STREQN (tokstart, "this", 4))
-              {
-                static const char this_name[] =
-                { CPLUS_MARKER, 't', 'h', 'i', 's', '\0' };
-                
-                if (lookup_symbol (this_name, expression_context_block,
-                                   VAR_NAMESPACE, (int *) NULL,
-                                   (struct symtab **) NULL))
-                  return THIS;
-              }
-          }
-      break;
-    case 3:
-      if (STREQN (tokstart, "int", 3))
-       return INT_KEYWORD;
-      break;
-    default:
-      break;
-    }
-
-  yylval.sval.ptr = tokstart;
-  yylval.sval.length = namelen;
-
-  if (*tokstart == '$')
-    {
-      write_dollar_variable (yylval.sval);
-      return VARIABLE;
-    }
-  
-  /* Look ahead and see if we can consume more of the input
-     string to get a reasonable class/namespace spec or a
-     fully-qualified name.  This is a kludge to get around the
-     HP aCC compiler's generation of symbol names with embedded
-     colons for namespace and nested classes. */ 
-  if (unquoted_expr)
-    {
-      /* Only do it if not inside single quotes */ 
-      sym_class = parse_nested_classes_for_hpacc (yylval.sval.ptr, yylval.sval.length,
-                                                  &token_string, &class_prefix, &lexptr);
-      if (sym_class)
-        {
-          /* Replace the current token with the bigger one we found */ 
-          yylval.sval.ptr = token_string;
-          yylval.sval.length = strlen (token_string);
-        }
-    }
-  
-  /* Use token-type BLOCKNAME for symbols that happen to be defined as
-     functions or symtabs.  If this is not so, then ...
-     Use token-type TYPENAME for symbols that happen to be defined
-     currently as names of types; NAME for other symbols.
-     The caller is not constrained to care about the distinction.  */
-  {
-    char *tmp = copy_name (yylval.sval);
-    struct symbol *sym;
-    int is_a_field_of_this = 0;
-    int hextype;
-
-    sym = lookup_symbol (tmp, expression_context_block,
-                        VAR_NAMESPACE,
-                        current_language->la_language == language_cplus
-                        ? &is_a_field_of_this : (int *) NULL,
-                        (struct symtab **) NULL);
-    /* Call lookup_symtab, not lookup_partial_symtab, in case there are
-       no psymtabs (coff, xcoff, or some future change to blow away the
-       psymtabs once once symbols are read).  */
-    if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
-      {
-       yylval.ssym.sym = sym;
-       yylval.ssym.is_a_field_of_this = is_a_field_of_this;
-       return BLOCKNAME;
-      }
-    else if (!sym)
-      {                                /* See if it's a file name. */
-       struct symtab *symtab;
-
-       symtab = lookup_symtab (tmp);
-
-       if (symtab)
-         {
-           yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
-           return FILENAME;
-         }
-      }
-
-    if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
-        {
-#if 1
-         /* Despite the following flaw, we need to keep this code enabled.
-            Because we can get called from check_stub_method, if we don't
-            handle nested types then it screws many operations in any
-            program which uses nested types.  */
-         /* In "A::x", if x is a member function of A and there happens
-            to be a type (nested or not, since the stabs don't make that
-            distinction) named x, then this code incorrectly thinks we
-            are dealing with nested types rather than a member function.  */
-
-         char *p;
-         char *namestart;
-         struct symbol *best_sym;
-
-         /* Look ahead to detect nested types.  This probably should be
-            done in the grammar, but trying seemed to introduce a lot
-            of shift/reduce and reduce/reduce conflicts.  It's possible
-            that it could be done, though.  Or perhaps a non-grammar, but
-            less ad hoc, approach would work well.  */
-
-         /* Since we do not currently have any way of distinguishing
-            a nested type from a non-nested one (the stabs don't tell
-            us whether a type is nested), we just ignore the
-            containing type.  */
-
-         p = lexptr;
-         best_sym = sym;
-         while (1)
-           {
-             /* Skip whitespace.  */
-             while (*p == ' ' || *p == '\t' || *p == '\n')
-               ++p;
-             if (*p == ':' && p[1] == ':')
-               {
-                 /* Skip the `::'.  */
-                 p += 2;
-                 /* Skip whitespace.  */
-                 while (*p == ' ' || *p == '\t' || *p == '\n')
-                   ++p;
-                 namestart = p;
-                 while (*p == '_' || *p == '$' || (*p >= '0' && *p <= '9')
-                        || (*p >= 'a' && *p <= 'z')
-                        || (*p >= 'A' && *p <= 'Z'))
-                   ++p;
-                 if (p != namestart)
-                   {
-                     struct symbol *cur_sym;
-                     /* As big as the whole rest of the expression, which is
-                        at least big enough.  */
-                     char *ncopy = alloca (strlen (tmp)+strlen (namestart)+3);
-                     char *tmp1;
-
-                     tmp1 = ncopy;
-                     memcpy (tmp1, tmp, strlen (tmp));
-                     tmp1 += strlen (tmp);
-                     memcpy (tmp1, "::", 2);
-                     tmp1 += 2;
-                     memcpy (tmp1, namestart, p - namestart);
-                     tmp1[p - namestart] = '\0';
-                     cur_sym = lookup_symbol (ncopy, expression_context_block,
-                                              VAR_NAMESPACE, (int *) NULL,
-                                              (struct symtab **) NULL);
-                     if (cur_sym)
-                       {
-                         if (SYMBOL_CLASS (cur_sym) == LOC_TYPEDEF)
-                           {
-                             best_sym = cur_sym;
-                             lexptr = p;
-                           }
-                         else
-                           break;
-                       }
-                     else
-                       break;
-                   }
-                 else
-                   break;
-               }
-             else
-               break;
-           }
-
-         yylval.tsym.type = SYMBOL_TYPE (best_sym);
-#else /* not 0 */
-         yylval.tsym.type = SYMBOL_TYPE (sym);
-#endif /* not 0 */
-         return TYPENAME;
-        }
-    if ((yylval.tsym.type = lookup_primitive_typename (tmp)) != 0)
-       return TYPENAME;
-
-    /* Input names that aren't symbols but ARE valid hex numbers,
-       when the input radix permits them, can be names or numbers
-       depending on the parse.  Note we support radixes > 16 here.  */
-    if (!sym && 
-        ((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) ||
-         (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10)))
-      {
-       YYSTYPE newlval;        /* Its value is ignored.  */
-       hextype = parse_number (tokstart, namelen, 0, &newlval);
-       if (hextype == INT)
-         {
-           yylval.ssym.sym = sym;
-           yylval.ssym.is_a_field_of_this = is_a_field_of_this;
-           return NAME_OR_INT;
-         }
-      }
-
-    /* Any other kind of symbol */
-    yylval.ssym.sym = sym;
-    yylval.ssym.is_a_field_of_this = is_a_field_of_this;
-    return NAME;
-  }
-}
-
-void
-yyerror (msg)
-     char *msg;
-{
-  error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
-}
diff --git a/gdb/f-exp.tab.c b/gdb/f-exp.tab.c
deleted file mode 100644 (file)
index ef7d25e..0000000
+++ /dev/null
@@ -1,2086 +0,0 @@
-
-/*  A Bison parser, made from f-exp.y
- by  GNU Bison version 1.25
-  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define        INT     258
-#define        FLOAT   259
-#define        STRING_LITERAL  260
-#define        BOOLEAN_LITERAL 261
-#define        NAME    262
-#define        TYPENAME        263
-#define        NAME_OR_INT     264
-#define        SIZEOF  265
-#define        ERROR   266
-#define        INT_KEYWORD     267
-#define        INT_S2_KEYWORD  268
-#define        LOGICAL_S1_KEYWORD      269
-#define        LOGICAL_S2_KEYWORD      270
-#define        LOGICAL_KEYWORD 271
-#define        REAL_KEYWORD    272
-#define        REAL_S8_KEYWORD 273
-#define        REAL_S16_KEYWORD        274
-#define        COMPLEX_S8_KEYWORD      275
-#define        COMPLEX_S16_KEYWORD     276
-#define        COMPLEX_S32_KEYWORD     277
-#define        BOOL_AND        278
-#define        BOOL_OR 279
-#define        BOOL_NOT        280
-#define        CHARACTER       281
-#define        VARIABLE        282
-#define        ASSIGN_MODIFY   283
-#define        ABOVE_COMMA     284
-#define        EQUAL   285
-#define        NOTEQUAL        286
-#define        LESSTHAN        287
-#define        GREATERTHAN     288
-#define        LEQ     289
-#define        GEQ     290
-#define        LSH     291
-#define        RSH     292
-#define        UNARY   293
-
-#line 43 "f-exp.y"
-
-
-#include "defs.h"
-#include "gdb_string.h"
-#include "expression.h"
-#include "value.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "f-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
-
-/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
-   as well as gratuitiously global symbol names, so we can have multiple
-   yacc generated parsers in gdb.  Note that these are only the variables
-   produced by yacc.  If other parser generators (bison, byacc, etc) produce
-   additional global names that conflict at link time, then those parser
-   generators need to be fixed instead of adding those names to this list. */
-
-#define        yymaxdepth f_maxdepth
-#define        yyparse f_parse
-#define        yylex   f_lex
-#define        yyerror f_error
-#define        yylval  f_lval
-#define        yychar  f_char
-#define        yydebug f_debug
-#define        yypact  f_pact  
-#define        yyr1    f_r1                    
-#define        yyr2    f_r2                    
-#define        yydef   f_def           
-#define        yychk   f_chk           
-#define        yypgo   f_pgo           
-#define        yyact   f_act           
-#define        yyexca  f_exca
-#define yyerrflag f_errflag
-#define yynerrs        f_nerrs
-#define        yyps    f_ps
-#define        yypv    f_pv
-#define        yys     f_s
-#define        yy_yys  f_yys
-#define        yystate f_state
-#define        yytmp   f_tmp
-#define        yyv     f_v
-#define        yy_yyv  f_yyv
-#define        yyval   f_val
-#define        yylloc  f_lloc
-#define yyreds f_reds          /* With YYDEBUG defined */
-#define yytoks f_toks          /* With YYDEBUG defined */
-#define yylhs  f_yylhs
-#define yylen  f_yylen
-#define yydefred f_yydefred
-#define yydgoto        f_yydgoto
-#define yysindex f_yysindex
-#define yyrindex f_yyrindex
-#define yygindex f_yygindex
-#define yytable         f_yytable
-#define yycheck         f_yycheck
-
-#ifndef YYDEBUG
-#define        YYDEBUG 1               /* Default to no yydebug support */
-#endif
-
-int yyparse PARAMS ((void));
-
-static int yylex PARAMS ((void));
-
-void yyerror PARAMS ((char *));
-
-static void growbuf_by_size PARAMS ((int));
-
-static int match_string_literal PARAMS ((void));
-
-
-#line 122 "f-exp.y"
-typedef union
-  {
-    LONGEST lval;
-    struct {
-      LONGEST val;
-      struct type *type;
-    } typed_val;
-    DOUBLEST dval;
-    struct symbol *sym;
-    struct type *tval;
-    struct stoken sval;
-    struct ttype tsym;
-    struct symtoken ssym;
-    int voidval;
-    struct block *bval;
-    enum exp_opcode opcode;
-    struct internalvar *ivar;
-
-    struct type **tvec;
-    int *ivec;
-  } YYSTYPE;
-#line 144 "f-exp.y"
-
-/* YYSTYPE gets defined by %union */
-static int parse_number PARAMS ((char *, int, int, YYSTYPE *));
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define        YYFINAL         125
-#define        YYFLAG          -32768
-#define        YYNTBASE        55
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 71)
-
-static const char yytranslate[] = {     0,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,    49,    35,     2,    51,
-    52,    47,    45,    29,    46,     2,    48,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    54,     2,     2,
-    31,     2,    32,    44,     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,    34,     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,    33,     2,    53,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    30,    36,    37,    38,    39,    40,    41,
-    42,    43,    50
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,    10,    13,    16,    19,    22,    25,
-    28,    29,    35,    36,    38,    40,    44,    48,    52,    56,
-    61,    65,    69,    73,    77,    81,    85,    89,    93,    97,
-   101,   105,   109,   113,   117,   121,   125,   129,   133,   137,
-   141,   145,   147,   149,   151,   153,   155,   160,   162,   164,
-   166,   168,   170,   173,   175,   178,   180,   183,   185,   189,
-   192,   194,   197,   201,   203,   205,   207,   209,   211,   213,
-   215,   217,   219,   221,   223,   225,   227,   229,   231,   235,
-   237,   239,   241
-};
-
-static const short yyrhs[] = {    57,
-     0,    56,     0,    63,     0,    51,    57,    52,     0,    47,
-    57,     0,    35,    57,     0,    46,    57,     0,    25,    57,
-     0,    53,    57,     0,    10,    57,     0,     0,    57,    51,
-    58,    59,    52,     0,     0,    57,     0,    60,     0,    59,
-    29,    57,     0,    57,    54,    57,     0,    57,    29,    57,
-     0,    51,    61,    52,     0,    51,    63,    52,    57,     0,
-    57,    44,    57,     0,    57,    47,    57,     0,    57,    48,
-    57,     0,    57,    49,    57,     0,    57,    45,    57,     0,
-    57,    46,    57,     0,    57,    42,    57,     0,    57,    43,
-    57,     0,    57,    36,    57,     0,    57,    37,    57,     0,
-    57,    40,    57,     0,    57,    41,    57,     0,    57,    38,
-    57,     0,    57,    39,    57,     0,    57,    35,    57,     0,
-    57,    34,    57,     0,    57,    33,    57,     0,    57,    23,
-    57,     0,    57,    24,    57,     0,    57,    31,    57,     0,
-    57,    28,    57,     0,     3,     0,     9,     0,     4,     0,
-    62,     0,    27,     0,    10,    51,    63,    52,     0,     6,
-     0,     5,     0,    70,     0,    64,     0,    68,     0,    68,
-    65,     0,    47,     0,    47,    65,     0,    35,     0,    35,
-    65,     0,    66,     0,    51,    65,    52,     0,    66,    67,
-     0,    67,     0,    51,    52,     0,    51,    69,    52,     0,
-     8,     0,    12,     0,    13,     0,    26,     0,    16,     0,
-    15,     0,    14,     0,    17,     0,    18,     0,    19,     0,
-    20,     0,    21,     0,    22,     0,     8,     0,    63,     0,
-    69,    29,    63,     0,     7,     0,     8,     0,     9,     0,
-     7,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   221,   222,   225,   231,   236,   239,   242,   246,   250,   254,
-   263,   265,   271,   274,   278,   281,   285,   290,   294,   298,
-   306,   310,   314,   318,   322,   326,   330,   334,   338,   342,
-   346,   350,   354,   358,   362,   366,   370,   374,   379,   383,
-   387,   393,   400,   409,   416,   419,   422,   430,   437,   445,
-   489,   492,   493,   536,   538,   540,   542,   544,   547,   549,
-   551,   555,   557,   562,   564,   566,   568,   570,   572,   574,
-   576,   578,   580,   582,   584,   586,   590,   594,   599,   606,
-   608,   610,   614
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","INT","FLOAT",
-"STRING_LITERAL","BOOLEAN_LITERAL","NAME","TYPENAME","NAME_OR_INT","SIZEOF",
-"ERROR","INT_KEYWORD","INT_S2_KEYWORD","LOGICAL_S1_KEYWORD","LOGICAL_S2_KEYWORD",
-"LOGICAL_KEYWORD","REAL_KEYWORD","REAL_S8_KEYWORD","REAL_S16_KEYWORD","COMPLEX_S8_KEYWORD",
-"COMPLEX_S16_KEYWORD","COMPLEX_S32_KEYWORD","BOOL_AND","BOOL_OR","BOOL_NOT",
-"CHARACTER","VARIABLE","ASSIGN_MODIFY","','","ABOVE_COMMA","'='","'?'","'|'",
-"'^'","'&'","EQUAL","NOTEQUAL","LESSTHAN","GREATERTHAN","LEQ","GEQ","LSH","RSH",
-"'@'","'+'","'-'","'*'","'/'","'%'","UNARY","'('","')'","'~'","':'","start",
-"type_exp","exp","@1","arglist","substring","complexnum","variable","type","ptype",
-"abs_decl","direct_abs_decl","func_mod","typebase","nonempty_typelist","name_not_typename", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-    55,    55,    56,    57,    57,    57,    57,    57,    57,    57,
-    58,    57,    59,    59,    59,    59,    60,    61,    57,    57,
-    57,    57,    57,    57,    57,    57,    57,    57,    57,    57,
-    57,    57,    57,    57,    57,    57,    57,    57,    57,    57,
-    57,    57,    57,    57,    57,    57,    57,    57,    57,    62,
-    63,    64,    64,    65,    65,    65,    65,    65,    66,    66,
-    66,    67,    67,    68,    68,    68,    68,    68,    68,    68,
-    68,    68,    68,    68,    68,    68,    -1,    69,    69,    -1,
-    -1,    -1,    70
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     3,     2,     2,     2,     2,     2,     2,
-     0,     5,     0,     1,     1,     3,     3,     3,     3,     4,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     1,     1,     1,     1,     1,     4,     1,     1,     1,
-     1,     1,     2,     1,     2,     1,     2,     1,     3,     2,
-     1,     2,     3,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-     1,     1,     1
-};
-
-static const short yydefact[] = {     0,
-    42,    44,    49,    48,    83,    64,    43,     0,    65,    66,
-    70,    69,    68,    71,    72,    73,    74,    75,    76,     0,
-    67,    46,     0,     0,     0,     0,     0,     2,     1,    45,
-     3,    51,    52,    50,     0,    10,     8,     6,     7,     5,
-     0,     0,     0,     9,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    11,    56,    54,     0,    53,
-    58,    61,     0,     0,     4,    19,     0,    38,    39,    41,
-    40,    37,    36,    35,    29,    30,    33,    34,    31,    32,
-    27,    28,    21,    25,    26,    22,    23,    24,    13,    57,
-    55,    62,    78,     0,     0,     0,    60,    47,    18,    20,
-    14,     0,    15,    59,     0,    63,     0,     0,    12,    79,
-    17,    16,     0,     0,     0
-};
-
-static const short yydefgoto[] = {   123,
-    28,    41,    99,   112,   113,    42,    30,   103,    32,    70,
-    71,    72,    33,   105,    34
-};
-
-static const short yypact[] = {    75,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   126,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   135,
--32768,-32768,   135,   135,   135,    75,   135,-32768,   309,-32768,
--32768,-32768,   -34,-32768,    75,   -49,   -49,   -49,   -49,   -49,
-   279,   -46,   -45,   -49,   135,   135,   135,   135,   135,   135,
-   135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-   135,   135,   135,   135,   135,-32768,   -34,   -34,   206,-32768,
-   -42,-32768,   -36,   135,-32768,-32768,   135,   355,   336,   309,
-   309,   390,   407,   161,   221,   221,   -11,   -11,   -11,   -11,
-    22,    22,    58,   -37,   -37,   -49,   -49,   -49,   135,-32768,
--32768,-32768,-32768,   -33,   -26,   230,-32768,   186,   309,   -49,
-   250,   -24,-32768,-32768,   397,-32768,   135,   135,-32768,-32768,
-   309,   309,    15,    18,-32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,     0,-32768,-32768,-32768,-32768,-32768,     4,-32768,   -25,
--32768,   -50,-32768,-32768,-32768
-};
-
-
-#define        YYLAST          458
-
-
-static const short yytable[] = {    29,
-    67,    66,   115,    31,   118,    76,    77,    36,   106,    63,
-    64,    65,    68,    66,   124,   108,    69,   125,   114,    37,
-   107,     0,    38,    39,    40,   116,    44,   119,     0,    43,
-    58,    59,    60,    61,    62,    63,    64,    65,    73,    66,
-     0,   100,   101,   104,    78,    79,    80,    81,    82,    83,
-    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    97,    98,    60,    61,    62,    63,    64,
-    65,     0,    66,   109,     0,     0,   110,     1,     2,     3,
-     4,     5,     6,     7,     8,     0,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,     0,   111,    20,
-    21,    22,    61,    62,    63,    64,    65,   110,    66,    23,
-     0,     0,     0,     0,     0,     0,   121,   122,   120,     0,
-    24,    25,     0,     0,     0,    26,     0,    27,     1,     2,
-     3,     4,     5,     0,     7,     8,     0,     1,     2,     3,
-     4,     5,     0,     7,     8,     0,     0,     0,     0,     0,
-    20,     0,    22,     0,     0,     0,     0,     0,     0,    20,
-    23,    22,     0,     0,     0,     0,     0,     0,     0,    23,
-     0,    24,    25,     0,     0,     0,    35,     0,    27,     0,
-    24,    25,     0,     0,     0,    26,     0,    27,     1,     2,
-     3,     4,     5,     0,     7,     8,    52,    53,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    20,    66,    22,     6,     0,     0,     0,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,     0,     0,
-     0,    21,     0,     0,     0,     0,    26,     6,    27,     0,
-    67,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    68,     0,     0,    21,    69,   102,    54,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-     0,    66,    45,    46,     0,     0,     0,    47,     0,     0,
-    48,   102,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,     0,
-    66,    45,    46,   117,     0,     0,    47,    74,     0,    48,
-     0,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,     0,    66,
-    75,    45,    46,     0,     0,     0,    47,     0,     0,    48,
-     0,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,    45,    66,
-     0,     0,     0,     0,     0,     0,     0,     0,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,     0,    66,    49,    50,    51,
-    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-    62,    63,    64,    65,     6,    66,     0,     0,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,     0,
-     0,     0,    21,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,     0,
-    66,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,     0,    66
-};
-
-static const short yycheck[] = {     0,
-    35,    51,    29,     0,    29,    52,    52,     8,    51,    47,
-    48,    49,    47,    51,     0,    52,    51,     0,    52,    20,
-    71,    -1,    23,    24,    25,    52,    27,    52,    -1,    26,
-    42,    43,    44,    45,    46,    47,    48,    49,    35,    51,
-    -1,    67,    68,    69,    45,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    44,    45,    46,    47,    48,
-    49,    -1,    51,    74,    -1,    -1,    77,     3,     4,     5,
-     6,     7,     8,     9,    10,    -1,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    -1,    99,    25,
-    26,    27,    45,    46,    47,    48,    49,   108,    51,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   115,    -1,
-    46,    47,    -1,    -1,    -1,    51,    -1,    53,     3,     4,
-     5,     6,     7,    -1,     9,    10,    -1,     3,     4,     5,
-     6,     7,    -1,     9,    10,    -1,    -1,    -1,    -1,    -1,
-    25,    -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    25,
-    35,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
-    -1,    46,    47,    -1,    -1,    -1,    51,    -1,    53,    -1,
-    46,    47,    -1,    -1,    -1,    51,    -1,    53,     3,     4,
-     5,     6,     7,    -1,     9,    10,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    25,    51,    27,     8,    -1,    -1,    -1,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
-    -1,    26,    -1,    -1,    -1,    -1,    51,     8,    53,    -1,
-    35,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    47,    -1,    -1,    26,    51,    52,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    -1,    51,    23,    24,    -1,    -1,    -1,    28,    -1,    -1,
-    31,    52,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
-    51,    23,    24,    54,    -1,    -1,    28,    29,    -1,    31,
-    -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    -1,    51,
-    52,    23,    24,    -1,    -1,    -1,    28,    -1,    -1,    31,
-    -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    23,    51,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    -1,    51,    33,    34,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,     8,    51,    -1,    -1,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
-    -1,    -1,    26,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
-    51,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    -1,    51
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   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 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                -2
-#define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
-#define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL         goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
-      yychar1 = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK;                                              \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
-while (0)
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
-
-#ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
-\f
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
-#else                          /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, int count)
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 196 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to xreallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  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 - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to xreallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-       {
-         yyerror("parser stack overflow");
-         return 2;
-       }
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-       yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-       YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)             /* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-       {
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
-         YYPRINT (stderr, yychar, yylval);
-#endif
-         fprintf (stderr, ")\n");
-       }
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-              yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 3:
-#line 226 "f-exp.y"
-{ write_exp_elt_opcode(OP_TYPE);
-                         write_exp_elt_type(yyvsp[0].tval);
-                         write_exp_elt_opcode(OP_TYPE); ;
-    break;}
-case 4:
-#line 232 "f-exp.y"
-{ ;
-    break;}
-case 5:
-#line 237 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_IND); ;
-    break;}
-case 6:
-#line 240 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_ADDR); ;
-    break;}
-case 7:
-#line 243 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_NEG); ;
-    break;}
-case 8:
-#line 247 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_LOGICAL_NOT); ;
-    break;}
-case 9:
-#line 251 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_COMPLEMENT); ;
-    break;}
-case 10:
-#line 255 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_SIZEOF); ;
-    break;}
-case 11:
-#line 264 "f-exp.y"
-{ start_arglist (); ;
-    break;}
-case 12:
-#line 266 "f-exp.y"
-{ write_exp_elt_opcode (OP_F77_UNDETERMINED_ARGLIST);
-                         write_exp_elt_longcst ((LONGEST) end_arglist ());
-                         write_exp_elt_opcode (OP_F77_UNDETERMINED_ARGLIST); ;
-    break;}
-case 14:
-#line 275 "f-exp.y"
-{ arglist_len = 1; ;
-    break;}
-case 15:
-#line 279 "f-exp.y"
-{ arglist_len = 2;;
-    break;}
-case 16:
-#line 282 "f-exp.y"
-{ arglist_len++; ;
-    break;}
-case 17:
-#line 286 "f-exp.y"
-{ ;
-    break;}
-case 18:
-#line 291 "f-exp.y"
-{ ;
-    break;}
-case 19:
-#line 295 "f-exp.y"
-{ write_exp_elt_opcode(OP_COMPLEX); ;
-    break;}
-case 20:
-#line 299 "f-exp.y"
-{ write_exp_elt_opcode (UNOP_CAST);
-                         write_exp_elt_type (yyvsp[-2].tval);
-                         write_exp_elt_opcode (UNOP_CAST); ;
-    break;}
-case 21:
-#line 307 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_REPEAT); ;
-    break;}
-case 22:
-#line 311 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_MUL); ;
-    break;}
-case 23:
-#line 315 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_DIV); ;
-    break;}
-case 24:
-#line 319 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_REM); ;
-    break;}
-case 25:
-#line 323 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_ADD); ;
-    break;}
-case 26:
-#line 327 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_SUB); ;
-    break;}
-case 27:
-#line 331 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_LSH); ;
-    break;}
-case 28:
-#line 335 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_RSH); ;
-    break;}
-case 29:
-#line 339 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_EQUAL); ;
-    break;}
-case 30:
-#line 343 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
-    break;}
-case 31:
-#line 347 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_LEQ); ;
-    break;}
-case 32:
-#line 351 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_GEQ); ;
-    break;}
-case 33:
-#line 355 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_LESS); ;
-    break;}
-case 34:
-#line 359 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_GTR); ;
-    break;}
-case 35:
-#line 363 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_AND); ;
-    break;}
-case 36:
-#line 367 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_XOR); ;
-    break;}
-case 37:
-#line 371 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_IOR); ;
-    break;}
-case 38:
-#line 375 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_AND); ;
-    break;}
-case 39:
-#line 380 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_OR); ;
-    break;}
-case 40:
-#line 384 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN); ;
-    break;}
-case 41:
-#line 388 "f-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
-                         write_exp_elt_opcode (yyvsp[-1].opcode);
-                         write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); ;
-    break;}
-case 42:
-#line 394 "f-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (yyvsp[0].typed_val.type);
-                         write_exp_elt_longcst ((LONGEST)(yyvsp[0].typed_val.val));
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 43:
-#line 401 "f-exp.y"
-{ YYSTYPE val;
-                         parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
-                         write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (val.typed_val.type);
-                         write_exp_elt_longcst ((LONGEST)val.typed_val.val);
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 44:
-#line 410 "f-exp.y"
-{ write_exp_elt_opcode (OP_DOUBLE);
-                         write_exp_elt_type (builtin_type_f_real_s8);
-                         write_exp_elt_dblcst (yyvsp[0].dval);
-                         write_exp_elt_opcode (OP_DOUBLE); ;
-    break;}
-case 47:
-#line 423 "f-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_f_integer);
-                         CHECK_TYPEDEF (yyvsp[-1].tval);
-                         write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 48:
-#line 431 "f-exp.y"
-{ write_exp_elt_opcode (OP_BOOL);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
-                         write_exp_elt_opcode (OP_BOOL);
-                       ;
-    break;}
-case 49:
-#line 438 "f-exp.y"
-{
-                         write_exp_elt_opcode (OP_STRING);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (OP_STRING);
-                       ;
-    break;}
-case 50:
-#line 446 "f-exp.y"
-{ struct symbol *sym = yyvsp[0].ssym.sym;
-
-                         if (sym)
-                           {
-                             if (symbol_read_needs_frame (sym))
-                               {
-                                 if (innermost_block == 0 ||
-                                     contained_in (block_found, 
-                                                   innermost_block))
-                                   innermost_block = block_found;
-                               }
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             /* We want to use the selected frame, not
-                                another more inner frame which happens to
-                                be in the same block.  */
-                             write_exp_elt_block (NULL);
-                             write_exp_elt_sym (sym);
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             break;
-                           }
-                         else
-                           {
-                             struct minimal_symbol *msymbol;
-                             register char *arg = copy_name (yyvsp[0].ssym.stoken);
-
-                             msymbol =
-                               lookup_minimal_symbol (arg, NULL, NULL);
-                             if (msymbol != NULL)
-                               {
-                                 write_exp_msymbol (msymbol,
-                                                    lookup_function_type (builtin_type_int),
-                                                    builtin_type_int);
-                               }
-                             else if (!have_full_symbols () && !have_partial_symbols ())
-                               error ("No symbol table is loaded.  Use the \"file\" command.");
-                             else
-                               error ("No symbol \"%s\" in current context.",
-                                      copy_name (yyvsp[0].ssym.stoken));
-                           }
-                       ;
-    break;}
-case 53:
-#line 494 "f-exp.y"
-{
-                 /* This is where the interesting stuff happens.  */
-                 int done = 0;
-                 int array_size;
-                 struct type *follow_type = yyvsp[-1].tval;
-                 struct type *range_type;
-                 
-                 while (!done)
-                   switch (pop_type ())
-                     {
-                     case tp_end:
-                       done = 1;
-                       break;
-                     case tp_pointer:
-                       follow_type = lookup_pointer_type (follow_type);
-                       break;
-                     case tp_reference:
-                       follow_type = lookup_reference_type (follow_type);
-                       break;
-                     case tp_array:
-                       array_size = pop_type_int ();
-                       if (array_size != -1)
-                         {
-                           range_type =
-                             create_range_type ((struct type *) NULL,
-                                                builtin_type_f_integer, 0,
-                                                array_size - 1);
-                           follow_type =
-                             create_array_type ((struct type *) NULL,
-                                                follow_type, range_type);
-                         }
-                       else
-                         follow_type = lookup_pointer_type (follow_type);
-                       break;
-                     case tp_function:
-                       follow_type = lookup_function_type (follow_type);
-                       break;
-                     }
-                 yyval.tval = follow_type;
-               ;
-    break;}
-case 54:
-#line 537 "f-exp.y"
-{ push_type (tp_pointer); yyval.voidval = 0; ;
-    break;}
-case 55:
-#line 539 "f-exp.y"
-{ push_type (tp_pointer); yyval.voidval = yyvsp[0].voidval; ;
-    break;}
-case 56:
-#line 541 "f-exp.y"
-{ push_type (tp_reference); yyval.voidval = 0; ;
-    break;}
-case 57:
-#line 543 "f-exp.y"
-{ push_type (tp_reference); yyval.voidval = yyvsp[0].voidval; ;
-    break;}
-case 59:
-#line 548 "f-exp.y"
-{ yyval.voidval = yyvsp[-1].voidval; ;
-    break;}
-case 60:
-#line 550 "f-exp.y"
-{ push_type (tp_function); ;
-    break;}
-case 61:
-#line 552 "f-exp.y"
-{ push_type (tp_function); ;
-    break;}
-case 62:
-#line 556 "f-exp.y"
-{ yyval.voidval = 0; ;
-    break;}
-case 63:
-#line 558 "f-exp.y"
-{ free ((PTR)yyvsp[-1].tvec); yyval.voidval = 0; ;
-    break;}
-case 64:
-#line 563 "f-exp.y"
-{ yyval.tval = yyvsp[0].tsym.type; ;
-    break;}
-case 65:
-#line 565 "f-exp.y"
-{ yyval.tval = builtin_type_f_integer; ;
-    break;}
-case 66:
-#line 567 "f-exp.y"
-{ yyval.tval = builtin_type_f_integer_s2; ;
-    break;}
-case 67:
-#line 569 "f-exp.y"
-{ yyval.tval = builtin_type_f_character; ;
-    break;}
-case 68:
-#line 571 "f-exp.y"
-{ yyval.tval = builtin_type_f_logical;;
-    break;}
-case 69:
-#line 573 "f-exp.y"
-{ yyval.tval = builtin_type_f_logical_s2;;
-    break;}
-case 70:
-#line 575 "f-exp.y"
-{ yyval.tval = builtin_type_f_logical_s1;;
-    break;}
-case 71:
-#line 577 "f-exp.y"
-{ yyval.tval = builtin_type_f_real;;
-    break;}
-case 72:
-#line 579 "f-exp.y"
-{ yyval.tval = builtin_type_f_real_s8;;
-    break;}
-case 73:
-#line 581 "f-exp.y"
-{ yyval.tval = builtin_type_f_real_s16;;
-    break;}
-case 74:
-#line 583 "f-exp.y"
-{ yyval.tval = builtin_type_f_complex_s8;;
-    break;}
-case 75:
-#line 585 "f-exp.y"
-{ yyval.tval = builtin_type_f_complex_s16;;
-    break;}
-case 76:
-#line 587 "f-exp.y"
-{ yyval.tval = builtin_type_f_complex_s32;;
-    break;}
-case 78:
-#line 595 "f-exp.y"
-{ yyval.tvec = (struct type **) xmalloc (sizeof (struct type *) * 2);
-                 yyval.ivec[0] = 1;    /* Number of types in vector */
-                 yyval.tvec[1] = yyvsp[0].tval;
-               ;
-    break;}
-case 79:
-#line 600 "f-exp.y"
-{ int len = sizeof (struct type *) * (++(yyvsp[-2].ivec[0]) + 1);
-                 yyval.tvec = (struct type **) xrealloc ((char *) yyvsp[-2].tvec, len);
-                 yyval.tvec[yyval.ivec[0]] = yyvsp[0].tval;
-               ;
-    break;}
-case 80:
-#line 607 "f-exp.y"
-{ yyval.sval = yyvsp[0].ssym.stoken; ;
-    break;}
-case 81:
-#line 609 "f-exp.y"
-{ yyval.sval = yyvsp[0].tsym.stoken; ;
-    break;}
-case 82:
-#line 611 "f-exp.y"
-{ yyval.sval = yyvsp[0].ssym.stoken; ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 498 "/stone/jimb/main-98r2/share/bison.simple"
-\f
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* 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.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-       {
-         int size = 0;
-         char *msg;
-         int x, count;
-
-         count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
-           if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) xmalloc(size + 15);
-         if (msg != 0)
-           {
-             strcpy(msg, "parse error");
-
-             if (count < 5)
-               {
-                 count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
-                   if (yycheck[x + yyn] == x)
-                     {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
-                       count++;
-                     }
-               }
-             yyerror(msg);
-             free(msg);
-           }
-         else
-           yyerror ("parse error; also virtual memory exceeded");
-       }
-      else
-#endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-       YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-}
-#line 624 "f-exp.y"
-
-
-/* Take care of parsing a number (anything that starts with a digit).
-   Set yylval and return the token type; update lexptr.
-   LEN is the number of characters in it.  */
-
-/*** Needs some error checking for the float case ***/
-
-static int
-parse_number (p, len, parsed_float, putithere)
-     register char *p;
-     register int len;
-     int parsed_float;
-     YYSTYPE *putithere;
-{
-  register LONGEST n = 0;
-  register LONGEST prevn = 0;
-  register int i;
-  register int c;
-  register int base = input_radix;
-  int unsigned_p = 0;
-  int long_p = 0;
-  ULONGEST high_bit;
-  struct type *signed_type;
-  struct type *unsigned_type;
-
-  if (parsed_float)
-    {
-      /* It's a float since it contains a point or an exponent.  */
-      /* [dD] is not understood as an exponent by atof, change it to 'e'.  */
-      char *tmp, *tmp2;
-
-      tmp = strsave (p);
-      for (tmp2 = tmp; *tmp2; ++tmp2)
-       if (*tmp2 == 'd' || *tmp2 == 'D')
-         *tmp2 = 'e';
-      putithere->dval = atof (tmp);
-      free (tmp);
-      return FLOAT;
-    }
-
-  /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
-  if (p[0] == '0')
-    switch (p[1])
-      {
-      case 'x':
-      case 'X':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 16;
-           len -= 2;
-         }
-       break;
-       
-      case 't':
-      case 'T':
-      case 'd':
-      case 'D':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 10;
-           len -= 2;
-         }
-       break;
-       
-      default:
-       base = 8;
-       break;
-      }
-  
-  while (len-- > 0)
-    {
-      c = *p++;
-      if (c >= 'A' && c <= 'Z')
-       c += 'a' - 'A';
-      if (c != 'l' && c != 'u')
-       n *= base;
-      if (c >= '0' && c <= '9')
-       n += i = c - '0';
-      else
-       {
-         if (base > 10 && c >= 'a' && c <= 'f')
-           n += i = c - 'a' + 10;
-         else if (len == 0 && c == 'l') 
-            long_p = 1;
-         else if (len == 0 && c == 'u')
-           unsigned_p = 1;
-         else
-           return ERROR;       /* Char not a digit */
-       }
-      if (i >= base)
-       return ERROR;           /* Invalid digit in this base */
-      
-      /* Portably test for overflow (only works for nonzero values, so make
-        a second check for zero).  */
-      if ((prevn >= n) && n != 0)
-       unsigned_p=1;           /* Try something unsigned */
-      /* If range checking enabled, portably test for unsigned overflow.  */
-      if (RANGE_CHECK && n != 0)
-       {
-         if ((unsigned_p && (unsigned)prevn >= (unsigned)n))
-           range_error("Overflow on numeric constant.");        
-       }
-      prevn = n;
-    }
-  
-  /* If the number is too big to be an int, or it's got an l suffix
-     then it's a long.  Work out if this has to be a long by
-     shifting right and and seeing if anything remains, and the
-     target int size is different to the target long size.
-     
-     In the expression below, we could have tested
-     (n >> TARGET_INT_BIT)
-     to see if it was zero,
-     but too many compilers warn about that, when ints and longs
-     are the same size.  So we shift it twice, with fewer bits
-     each time, for the same result.  */
-  
-  if ((TARGET_INT_BIT != TARGET_LONG_BIT 
-       && ((n >> 2) >> (TARGET_INT_BIT-2)))   /* Avoid shift warning */
-      || long_p)
-    {
-      high_bit = ((ULONGEST)1) << (TARGET_LONG_BIT-1);
-      unsigned_type = builtin_type_unsigned_long;
-      signed_type = builtin_type_long;
-    }
-  else 
-    {
-      high_bit = ((ULONGEST)1) << (TARGET_INT_BIT-1);
-      unsigned_type = builtin_type_unsigned_int;
-      signed_type = builtin_type_int;
-    }    
-  
-  putithere->typed_val.val = n;
-  
-  /* If the high bit of the worked out type is set then this number
-     has to be unsigned. */
-  
-  if (unsigned_p || (n & high_bit)) 
-    putithere->typed_val.type = unsigned_type;
-  else 
-    putithere->typed_val.type = signed_type;
-  
-  return INT;
-}
-
-struct token
-{
-  char *operator;
-  int token;
-  enum exp_opcode opcode;
-};
-
-static const struct token dot_ops[] =
-{
-  { ".and.", BOOL_AND, BINOP_END },
-  { ".AND.", BOOL_AND, BINOP_END },
-  { ".or.", BOOL_OR, BINOP_END },
-  { ".OR.", BOOL_OR, BINOP_END },
-  { ".not.", BOOL_NOT, BINOP_END },
-  { ".NOT.", BOOL_NOT, BINOP_END },
-  { ".eq.", EQUAL, BINOP_END },
-  { ".EQ.", EQUAL, BINOP_END },
-  { ".eqv.", EQUAL, BINOP_END },
-  { ".NEQV.", NOTEQUAL, BINOP_END },
-  { ".neqv.", NOTEQUAL, BINOP_END },
-  { ".EQV.", EQUAL, BINOP_END },
-  { ".ne.", NOTEQUAL, BINOP_END },
-  { ".NE.", NOTEQUAL, BINOP_END },
-  { ".le.", LEQ, BINOP_END },
-  { ".LE.", LEQ, BINOP_END },
-  { ".ge.", GEQ, BINOP_END },
-  { ".GE.", GEQ, BINOP_END },
-  { ".gt.", GREATERTHAN, BINOP_END },
-  { ".GT.", GREATERTHAN, BINOP_END },
-  { ".lt.", LESSTHAN, BINOP_END },
-  { ".LT.", LESSTHAN, BINOP_END },
-  { NULL, 0, 0 }
-};
-
-struct f77_boolean_val 
-{
-  char *name;
-  int value;
-}; 
-
-static const struct f77_boolean_val boolean_values[]  = 
-{
-  { ".true.", 1 },
-  { ".TRUE.", 1 },
-  { ".false.", 0 },
-  { ".FALSE.", 0 },
-  { NULL, 0 }
-};
-
-static const struct token f77_keywords[] = 
-{
-  { "complex_16", COMPLEX_S16_KEYWORD, BINOP_END },
-  { "complex_32", COMPLEX_S32_KEYWORD, BINOP_END },
-  { "character", CHARACTER, BINOP_END },
-  { "integer_2", INT_S2_KEYWORD, BINOP_END },
-  { "logical_1", LOGICAL_S1_KEYWORD, BINOP_END },
-  { "logical_2", LOGICAL_S2_KEYWORD, BINOP_END },
-  { "complex_8", COMPLEX_S8_KEYWORD, BINOP_END },
-  { "integer", INT_KEYWORD, BINOP_END },
-  { "logical", LOGICAL_KEYWORD, BINOP_END },
-  { "real_16", REAL_S16_KEYWORD, BINOP_END },
-  { "complex", COMPLEX_S8_KEYWORD, BINOP_END },
-  { "sizeof", SIZEOF, BINOP_END },
-  { "real_8", REAL_S8_KEYWORD, BINOP_END },
-  { "real", REAL_KEYWORD, BINOP_END },
-  { NULL, 0, 0 }
-}; 
-
-/* Implementation of a dynamically expandable buffer for processing input
-   characters acquired through lexptr and building a value to return in
-   yylval. Ripped off from ch-exp.y */ 
-
-static char *tempbuf;          /* Current buffer contents */
-static int tempbufsize;                /* Size of allocated buffer */
-static int tempbufindex;       /* Current index into buffer */
-
-#define GROWBY_MIN_SIZE 64     /* Minimum amount to grow buffer by */
-
-#define CHECKBUF(size) \
-  do { \
-    if (tempbufindex + (size) >= tempbufsize) \
-      { \
-       growbuf_by_size (size); \
-      } \
-  } while (0);
-
-
-/* Grow the static temp buffer if necessary, including allocating the first one
-   on demand. */
-
-static void
-growbuf_by_size (count)
-     int count;
-{
-  int growby;
-
-  growby = max (count, GROWBY_MIN_SIZE);
-  tempbufsize += growby;
-  if (tempbuf == NULL)
-    tempbuf = (char *) xmalloc (tempbufsize);
-  else
-    tempbuf = (char *) xrealloc (tempbuf, tempbufsize);
-}
-
-/* Blatantly ripped off from ch-exp.y. This routine recognizes F77 
-   string-literals. 
-   
-   Recognize a string literal.  A string literal is a nonzero sequence
-   of characters enclosed in matching single quotes, except that
-   a single character inside single quotes is a character literal, which
-   we reject as a string literal.  To embed the terminator character inside
-   a string, it is simply doubled (I.E. 'this''is''one''string') */
-
-static int
-match_string_literal ()
-{
-  char *tokptr = lexptr;
-
-  for (tempbufindex = 0, tokptr++; *tokptr != '\0'; tokptr++)
-    {
-      CHECKBUF (1);
-      if (*tokptr == *lexptr)
-       {
-         if (*(tokptr + 1) == *lexptr)
-           tokptr++;
-         else
-           break;
-       }
-      tempbuf[tempbufindex++] = *tokptr;
-    }
-  if (*tokptr == '\0'                                  /* no terminator */
-      || tempbufindex == 0)                            /* no string */
-    return 0;
-  else
-    {
-      tempbuf[tempbufindex] = '\0';
-      yylval.sval.ptr = tempbuf;
-      yylval.sval.length = tempbufindex;
-      lexptr = ++tokptr;
-      return STRING_LITERAL;
-    }
-}
-
-/* Read one token, getting characters through lexptr.  */
-
-static int
-yylex ()
-{
-  int c;
-  int namelen;
-  unsigned int i,token;
-  char *tokstart;
-  
- retry:
-  
-  tokstart = lexptr;
-  
-  /* First of all, let us make sure we are not dealing with the 
-     special tokens .true. and .false. which evaluate to 1 and 0.  */
-  
-  if (*lexptr == '.')
-    { 
-      for (i = 0; boolean_values[i].name != NULL; i++)
-       {
-         if STREQN (tokstart, boolean_values[i].name,
-                   strlen (boolean_values[i].name))
-           {
-             lexptr += strlen (boolean_values[i].name); 
-             yylval.lval = boolean_values[i].value; 
-             return BOOLEAN_LITERAL;
-           }
-       }
-    }
-  
-  /* See if it is a special .foo. operator */
-  
-  for (i = 0; dot_ops[i].operator != NULL; i++)
-    if (STREQN (tokstart, dot_ops[i].operator, strlen (dot_ops[i].operator)))
-      {
-       lexptr += strlen (dot_ops[i].operator);
-       yylval.opcode = dot_ops[i].opcode;
-       return dot_ops[i].token;
-      }
-  
-  switch (c = *tokstart)
-    {
-    case 0:
-      return 0;
-      
-    case ' ':
-    case '\t':
-    case '\n':
-      lexptr++;
-      goto retry;
-      
-    case '\'':
-      token = match_string_literal ();
-      if (token != 0)
-       return (token);
-      break;
-      
-    case '(':
-      paren_depth++;
-      lexptr++;
-      return c;
-      
-    case ')':
-      if (paren_depth == 0)
-       return 0;
-      paren_depth--;
-      lexptr++;
-      return c;
-      
-    case ',':
-      if (comma_terminates && paren_depth == 0)
-       return 0;
-      lexptr++;
-      return c;
-      
-    case '.':
-      /* Might be a floating point number.  */
-      if (lexptr[1] < '0' || lexptr[1] > '9')
-       goto symbol;            /* Nope, must be a symbol. */
-      /* FALL THRU into number case.  */
-      
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-      {
-        /* It's a number.  */
-       int got_dot = 0, got_e = 0, got_d = 0, toktype;
-       register char *p = tokstart;
-       int hex = input_radix > 10;
-       
-       if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
-         {
-           p += 2;
-           hex = 1;
-         }
-       else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
-         {
-           p += 2;
-           hex = 0;
-         }
-       
-       for (;; ++p)
-         {
-           if (!hex && !got_e && (*p == 'e' || *p == 'E'))
-             got_dot = got_e = 1;
-           else if (!hex && !got_d && (*p == 'd' || *p == 'D'))
-             got_dot = got_d = 1;
-           else if (!hex && !got_dot && *p == '.')
-             got_dot = 1;
-           else if (((got_e && (p[-1] == 'e' || p[-1] == 'E'))
-                    || (got_d && (p[-1] == 'd' || p[-1] == 'D')))
-                    && (*p == '-' || *p == '+'))
-             /* This is the sign of the exponent, not the end of the
-                number.  */
-             continue;
-           /* We will take any letters or digits.  parse_number will
-              complain if past the radix, or if L or U are not final.  */
-           else if ((*p < '0' || *p > '9')
-                    && ((*p < 'a' || *p > 'z')
-                        && (*p < 'A' || *p > 'Z')))
-             break;
-         }
-       toktype = parse_number (tokstart, p - tokstart, got_dot|got_e|got_d,
-                               &yylval);
-        if (toktype == ERROR)
-          {
-           char *err_copy = (char *) alloca (p - tokstart + 1);
-           
-           memcpy (err_copy, tokstart, p - tokstart);
-           err_copy[p - tokstart] = 0;
-           error ("Invalid number \"%s\".", err_copy);
-         }
-       lexptr = p;
-       return toktype;
-      }
-      
-    case '+':
-    case '-':
-    case '*':
-    case '/':
-    case '%':
-    case '|':
-    case '&':
-    case '^':
-    case '~':
-    case '!':
-    case '@':
-    case '<':
-    case '>':
-    case '[':
-    case ']':
-    case '?':
-    case ':':
-    case '=':
-    case '{':
-    case '}':
-    symbol:
-      lexptr++;
-      return c;
-    }
-  
-  if (!(c == '_' || c == '$'
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
-    /* We must have come across a bad character (e.g. ';').  */
-    error ("Invalid character '%c' in expression.", c);
-  
-  namelen = 0;
-  for (c = tokstart[namelen];
-       (c == '_' || c == '$' || (c >= '0' && c <= '9') 
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); 
-       c = tokstart[++namelen]);
-  
-  /* The token "if" terminates the expression and is NOT 
-     removed from the input stream.  */
-  
-  if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f')
-    return 0;
-  
-  lexptr += namelen;
-  
-  /* Catch specific keywords.  */
-  
-  for (i = 0; f77_keywords[i].operator != NULL; i++)
-    if (STREQN(tokstart, f77_keywords[i].operator,
-               strlen(f77_keywords[i].operator)))
-      {
-       /*      lexptr += strlen(f77_keywords[i].operator); */ 
-       yylval.opcode = f77_keywords[i].opcode;
-       return f77_keywords[i].token;
-      }
-  
-  yylval.sval.ptr = tokstart;
-  yylval.sval.length = namelen;
-  
-  if (*tokstart == '$')
-    {
-      write_dollar_variable (yylval.sval);
-      return VARIABLE;
-    }
-  
-  /* Use token-type TYPENAME for symbols that happen to be defined
-     currently as names of types; NAME for other symbols.
-     The caller is not constrained to care about the distinction.  */
-  {
-    char *tmp = copy_name (yylval.sval);
-    struct symbol *sym;
-    int is_a_field_of_this = 0;
-    int hextype;
-    
-    sym = lookup_symbol (tmp, expression_context_block,
-                        VAR_NAMESPACE,
-                        current_language->la_language == language_cplus
-                        ? &is_a_field_of_this : NULL,
-                        NULL);
-    if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
-      {
-       yylval.tsym.type = SYMBOL_TYPE (sym);
-       return TYPENAME;
-      }
-    if ((yylval.tsym.type = lookup_primitive_typename (tmp)) != 0)
-      return TYPENAME;
-    
-    /* Input names that aren't symbols but ARE valid hex numbers,
-       when the input radix permits them, can be names or numbers
-       depending on the parse.  Note we support radixes > 16 here.  */
-    if (!sym
-       && ((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10)
-           || (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10)))
-      {
-       YYSTYPE newlval;        /* Its value is ignored.  */
-       hextype = parse_number (tokstart, namelen, 0, &newlval);
-       if (hextype == INT)
-         {
-           yylval.ssym.sym = sym;
-           yylval.ssym.is_a_field_of_this = is_a_field_of_this;
-           return NAME_OR_INT;
-         }
-      }
-    
-    /* Any other kind of symbol */
-    yylval.ssym.sym = sym;
-    yylval.ssym.is_a_field_of_this = is_a_field_of_this;
-    return NAME;
-  }
-}
-
-void
-yyerror (msg)
-     char *msg;
-{
-  error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
-}
diff --git a/gdb/jv-exp.tab.c b/gdb/jv-exp.tab.c
deleted file mode 100644 (file)
index 39920ca..0000000
+++ /dev/null
@@ -1,2351 +0,0 @@
-
-/*  A Bison parser, made from jv-exp.y
- by  GNU Bison version 1.25
-  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define        INTEGER_LITERAL 258
-#define        FLOATING_POINT_LITERAL  259
-#define        IDENTIFIER      260
-#define        STRING_LITERAL  261
-#define        BOOLEAN_LITERAL 262
-#define        TYPENAME        263
-#define        NAME_OR_INT     264
-#define        ERROR   265
-#define        LONG    266
-#define        SHORT   267
-#define        BYTE    268
-#define        INT     269
-#define        CHAR    270
-#define        BOOLEAN 271
-#define        DOUBLE  272
-#define        FLOAT   273
-#define        VARIABLE        274
-#define        ASSIGN_MODIFY   275
-#define        THIS    276
-#define        SUPER   277
-#define        NEW     278
-#define        OROR    279
-#define        ANDAND  280
-#define        EQUAL   281
-#define        NOTEQUAL        282
-#define        LEQ     283
-#define        GEQ     284
-#define        LSH     285
-#define        RSH     286
-#define        INCREMENT       287
-#define        DECREMENT       288
-
-#line 38 "jv-exp.y"
-
-
-#include "defs.h"
-#include "gdb_string.h"
-#include <ctype.h>
-#include "expression.h"
-#include "value.h"
-#include "parser-defs.h"
-#include "language.h"
-#include "jv-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
-
-/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
-   as well as gratuitiously global symbol names, so we can have multiple
-   yacc generated parsers in gdb.  Note that these are only the variables
-   produced by yacc.  If other parser generators (bison, byacc, etc) produce
-   additional global names that conflict at link time, then those parser
-   generators need to be fixed instead of adding those names to this list. */
-
-#define        yymaxdepth java_maxdepth
-#define        yyparse java_parse
-#define        yylex   java_lex
-#define        yyerror java_error
-#define        yylval  java_lval
-#define        yychar  java_char
-#define        yydebug java_debug
-#define        yypact  java_pact       
-#define        yyr1    java_r1                 
-#define        yyr2    java_r2                 
-#define        yydef   java_def                
-#define        yychk   java_chk                
-#define        yypgo   java_pgo                
-#define        yyact   java_act                
-#define        yyexca  java_exca
-#define yyerrflag java_errflag
-#define yynerrs        java_nerrs
-#define        yyps    java_ps
-#define        yypv    java_pv
-#define        yys     java_s
-#define        yy_yys  java_yys
-#define        yystate java_state
-#define        yytmp   java_tmp
-#define        yyv     java_v
-#define        yy_yyv  java_yyv
-#define        yyval   java_val
-#define        yylloc  java_lloc
-#define yyreds java_reds               /* With YYDEBUG defined */
-#define yytoks java_toks               /* With YYDEBUG defined */
-#define yylhs  java_yylhs
-#define yylen  java_yylen
-#define yydefred java_yydefred
-#define yydgoto        java_yydgoto
-#define yysindex java_yysindex
-#define yyrindex java_yyrindex
-#define yygindex java_yygindex
-#define yytable         java_yytable
-#define yycheck         java_yycheck
-
-#ifndef YYDEBUG
-#define        YYDEBUG 0               /* Default to no yydebug support */
-#endif
-
-int
-yyparse PARAMS ((void));
-
-static int
-yylex PARAMS ((void));
-
-void
-yyerror PARAMS ((char *));
-
-static struct type * java_type_from_name PARAMS ((struct stoken));
-static void push_expression_name PARAMS ((struct stoken));
-static void push_fieldnames PARAMS ((struct stoken));
-
-static struct expression *copy_exp PARAMS ((struct expression *, int));
-static void insert_exp PARAMS ((int, struct expression *));
-
-
-#line 124 "jv-exp.y"
-typedef union
-  {
-    LONGEST lval;
-    struct {
-      LONGEST val;
-      struct type *type;
-    } typed_val_int;
-    struct {
-      DOUBLEST dval;
-      struct type *type;
-    } typed_val_float;
-    struct symbol *sym;
-    struct type *tval;
-    struct stoken sval;
-    struct ttype tsym;
-    struct symtoken ssym;
-    struct block *bval;
-    enum exp_opcode opcode;
-    struct internalvar *ivar;
-    int *ivec;
-  } YYSTYPE;
-#line 146 "jv-exp.y"
-
-/* YYSTYPE gets defined by %union */
-static int
-parse_number PARAMS ((char *, int, int, YYSTYPE *));
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define        YYFINAL         208
-#define        YYFLAG          -32768
-#define        YYNTBASE        57
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 288 ? yytranslate[x] : 112)
-
-static const char 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,    55,     2,     2,     2,    44,    31,     2,    49,
-    50,    42,    40,    24,    41,    47,    43,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    56,     2,    34,
-    25,    35,    26,     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,
-    48,     2,    53,    30,     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,    51,    29,    52,    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,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    27,    28,
-    32,    33,    36,    37,    38,    39,    45,    46
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
-    20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
-    40,    42,    44,    46,    48,    51,    54,    56,    58,    60,
-    62,    64,    66,    70,    72,    76,    78,    80,    82,    84,
-    88,    90,    92,    94,    96,   100,   102,   104,   110,   112,
-   116,   117,   119,   124,   129,   131,   134,   138,   141,   145,
-   147,   148,   152,   156,   161,   168,   175,   180,   185,   190,
-   192,   194,   196,   198,   200,   203,   206,   208,   210,   213,
-   216,   219,   221,   224,   227,   229,   232,   235,   237,   243,
-   248,   254,   256,   260,   264,   268,   270,   274,   278,   280,
-   284,   288,   290,   294,   298,   302,   306,   308,   312,   316,
-   318,   322,   324,   328,   330,   334,   336,   340,   342,   346,
-   348,   354,   356,   358,   362,   366,   368,   370,   372,   374
-};
-
-static const short yyrhs[] = {    73,
-     0,    58,     0,    59,     0,    62,     0,    68,     0,     6,
-     0,     3,     0,     9,     0,     4,     0,     7,     0,    60,
-     0,    63,     0,    16,     0,    64,     0,    65,     0,    13,
-     0,    12,     0,    14,     0,    11,     0,    15,     0,    18,
-     0,    17,     0,    69,     0,    66,     0,    62,    84,     0,
-    69,    84,     0,     5,     0,    72,     0,    71,     0,    72,
-     0,     5,     0,     9,     0,    69,    47,    71,     0,   111,
-     0,    73,    24,   111,     0,    75,     0,    81,     0,    61,
-     0,    21,     0,    49,   111,    50,     0,    78,     0,    86,
-     0,    87,     0,    88,     0,    76,    79,    77,     0,    51,
-     0,    52,     0,    23,    67,    49,    80,    50,     0,   111,
-     0,    79,    24,   111,     0,     0,    79,     0,    23,    62,
-    82,    85,     0,    23,    66,    82,    85,     0,    83,     0,
-    82,    83,     0,    48,   111,    53,     0,    48,    53,     0,
-    84,    48,    53,     0,    84,     0,     0,    74,    47,    71,
-     0,    19,    47,    71,     0,    69,    49,    80,    50,     0,
-    74,    47,    71,    49,    80,    50,     0,    22,    47,    71,
-    49,    80,    50,     0,    69,    48,   111,    53,     0,    19,
-    48,   111,    53,     0,    75,    48,   111,    53,     0,    74,
-     0,    69,     0,    19,     0,    90,     0,    91,     0,    89,
-    45,     0,    89,    46,     0,    93,     0,    94,     0,    40,
-    92,     0,    41,    92,     0,    42,    92,     0,    95,     0,
-    45,    92,     0,    46,    92,     0,    89,     0,    54,    92,
-     0,    55,    92,     0,    96,     0,    49,    62,    85,    50,
-    92,     0,    49,   111,    50,    95,     0,    49,    69,    84,
-    50,    95,     0,    92,     0,    97,    42,    92,     0,    97,
-    43,    92,     0,    97,    44,    92,     0,    97,     0,    98,
-    40,    97,     0,    98,    41,    97,     0,    98,     0,    99,
-    38,    98,     0,    99,    39,    98,     0,    99,     0,   100,
-    34,    99,     0,   100,    35,    99,     0,   100,    36,    99,
-     0,   100,    37,    99,     0,   100,     0,   101,    32,   100,
-     0,   101,    33,   100,     0,   101,     0,   102,    31,   101,
-     0,   102,     0,   103,    30,   102,     0,   103,     0,   104,
-    29,   103,     0,   104,     0,   105,    28,   104,     0,   105,
-     0,   106,    27,   105,     0,   106,     0,   106,    26,   111,
-    56,   107,     0,   107,     0,   109,     0,   110,    25,   107,
-     0,   110,    20,   107,     0,    70,     0,    19,     0,    86,
-     0,    88,     0,   108,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   203,   204,   207,   215,   217,   220,   229,   235,   243,   248,
-   253,   263,   265,   269,   271,   274,   277,   279,   281,   283,
-   287,   290,   301,   306,   310,   313,   317,   319,   322,   324,
-   327,   329,   332,   356,   357,   361,   363,   366,   368,   371,
-   372,   373,   374,   375,   376,   383,   388,   393,   398,   401,
-   405,   408,   411,   414,   418,   420,   423,   427,   430,   434,
-   436,   440,   443,   448,   451,   453,   457,   475,   477,   481,
-   483,   485,   487,   488,   491,   496,   501,   503,   504,   505,
-   507,   509,   512,   517,   522,   524,   526,   528,   531,   536,
-   557,   564,   566,   568,   570,   574,   576,   578,   582,   584,
-   586,   591,   593,   595,   597,   599,   604,   606,   608,   612,
-   614,   618,   620,   623,   625,   629,   631,   635,   637,   641,
-   643,   647,   649,   652,   655,   661,   664,   666,   667,   671
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","INTEGER_LITERAL",
-"FLOATING_POINT_LITERAL","IDENTIFIER","STRING_LITERAL","BOOLEAN_LITERAL","TYPENAME",
-"NAME_OR_INT","ERROR","LONG","SHORT","BYTE","INT","CHAR","BOOLEAN","DOUBLE",
-"FLOAT","VARIABLE","ASSIGN_MODIFY","THIS","SUPER","NEW","','","'='","'?'","OROR",
-"ANDAND","'|'","'^'","'&'","EQUAL","NOTEQUAL","'<'","'>'","LEQ","GEQ","LSH",
-"RSH","'+'","'-'","'*'","'/'","'%'","INCREMENT","DECREMENT","'.'","'['","'('",
-"')'","'{'","'}'","']'","'~'","'!'","':'","start","type_exp","PrimitiveOrArrayType",
-"StringLiteral","Literal","PrimitiveType","NumericType","IntegralType","FloatingPointType",
-"ClassOrInterfaceType","ClassType","ArrayType","Name","ForcedName","SimpleName",
-"QualifiedName","exp1","Primary","PrimaryNoNewArray","lcurly","rcurly","ClassInstanceCreationExpression",
-"ArgumentList","ArgumentList_opt","ArrayCreationExpression","DimExprs","DimExpr",
-"Dims","Dims_opt","FieldAccess","MethodInvocation","ArrayAccess","PostfixExpression",
-"PostIncrementExpression","PostDecrementExpression","UnaryExpression","PreIncrementExpression",
-"PreDecrementExpression","UnaryExpressionNotPlusMinus","CastExpression","MultiplicativeExpression",
-"AdditiveExpression","ShiftExpression","RelationalExpression","EqualityExpression",
-"AndExpression","ExclusiveOrExpression","InclusiveOrExpression","ConditionalAndExpression",
-"ConditionalOrExpression","ConditionalExpression","AssignmentExpression","Assignment",
-"LeftHandSide","Expression", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-    57,    57,    58,    59,    59,    60,    61,    61,    61,    61,
-    61,    62,    62,    63,    63,    64,    64,    64,    64,    64,
-    65,    65,    66,    67,    68,    68,    69,    69,    70,    70,
-    71,    71,    72,    73,    73,    74,    74,    75,    75,    75,
-    75,    75,    75,    75,    75,    76,    77,    78,    79,    79,
-    80,    80,    81,    81,    82,    82,    83,    84,    84,    85,
-    85,    86,    86,    87,    87,    87,    88,    88,    88,    89,
-    89,    89,    89,    89,    90,    91,    92,    92,    92,    92,
-    92,    92,    93,    94,    95,    95,    95,    95,    96,    96,
-    96,    97,    97,    97,    97,    98,    98,    98,    99,    99,
-    99,   100,   100,   100,   100,   100,   101,   101,   101,   102,
-   102,   103,   103,   104,   104,   105,   105,   106,   106,   107,
-   107,   108,   108,   109,   109,   110,   110,   110,   110,   111
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
-     1,     1,     3,     1,     3,     1,     1,     1,     1,     3,
-     1,     1,     1,     1,     3,     1,     1,     5,     1,     3,
-     0,     1,     4,     4,     1,     2,     3,     2,     3,     1,
-     0,     3,     3,     4,     6,     6,     4,     4,     4,     1,
-     1,     1,     1,     1,     2,     2,     1,     1,     2,     2,
-     2,     1,     2,     2,     1,     2,     2,     1,     5,     4,
-     5,     1,     3,     3,     3,     1,     3,     3,     1,     3,
-     3,     1,     3,     3,     3,     3,     1,     3,     3,     1,
-     3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
-     5,     1,     1,     3,     3,     1,     1,     1,     1,     1
-};
-
-static const short yydefact[] = {     0,
-     7,     9,    27,     6,    10,     8,    19,    17,    16,    18,
-    20,    13,    22,    21,    72,    39,     0,     0,     0,     0,
-     0,     0,     0,     0,    46,     0,     0,     2,     3,    11,
-    38,     4,    12,    14,    15,     5,    71,   126,    29,    28,
-     1,    70,    36,     0,    41,    37,    42,    43,    44,    85,
-    73,    74,    92,    77,    78,    82,    88,    96,    99,   102,
-   107,   110,   112,   114,   116,   118,   120,   122,   130,   123,
-     0,    34,     0,     0,     0,    27,     0,    24,     0,    23,
-    28,     8,    72,    71,    42,    44,    79,    80,    81,    83,
-    84,    61,    71,     0,    86,    87,     0,    25,     0,     0,
-    51,    26,     0,     0,     0,     0,    49,    75,    76,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    31,    32,    63,     0,     0,     0,    61,    55,    61,    51,
-     0,    60,     0,     0,    40,    58,     0,    33,     0,    52,
-     0,    35,    62,     0,     0,    47,    45,    93,    94,    95,
-    97,    98,   100,   101,   103,   104,   105,   106,   108,   109,
-   111,   113,   115,   117,     0,   119,   125,   124,    68,    51,
-     0,     0,    56,    53,    54,     0,     0,     0,    90,    59,
-    67,    64,    51,    69,    50,     0,     0,    57,    48,    89,
-    91,     0,   121,    66,    65,     0,     0,     0
-};
-
-static const short yydefgoto[] = {   206,
-    28,    29,    30,    31,    32,    33,    34,    35,    78,    79,
-    36,    84,    38,    39,    81,    41,    42,    43,    44,   157,
-    45,   150,   151,    46,   137,   138,   142,   143,    85,    48,
-    86,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,   107
-};
-
-static const short yypact[] = {   206,
--32768,-32768,    -5,-32768,-32768,    -3,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,     1,-32768,   -34,   225,   312,   312,
-   312,   312,   312,   206,-32768,   312,   312,-32768,-32768,-32768,
--32768,   -23,-32768,-32768,-32768,-32768,    34,-32768,-32768,     7,
-     4,   -28,   -17,   365,-32768,-32768,    15,-32768,    21,    74,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,    45,    44,    86,
-    35,    96,     3,    23,     8,    51,   104,-32768,-32768,-32768,
-    32,-32768,    46,   365,    46,-32768,    25,    25,    14,    55,
--32768,-32768,    87,    47,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   -23,    34,    40,-32768,-32768,    57,    50,    46,   259,
-   365,    50,   365,    46,   365,   -13,-32768,-32768,-32768,   312,
-   312,   312,   312,   312,   312,   312,   312,   312,   312,   312,
-   312,   312,   312,   312,   312,   312,   365,   312,   312,   312,
--32768,-32768,-32768,    61,    59,   365,    56,-32768,    56,   365,
-   365,    50,    66,    43,   372,-32768,    69,-32768,    73,   108,
-   106,-32768,   111,   109,   365,-32768,-32768,-32768,-32768,-32768,
-    45,    45,    44,    44,    86,    86,    86,    86,    35,    35,
-    96,     3,    23,     8,   107,    51,-32768,-32768,-32768,   365,
-   112,   259,-32768,-32768,-32768,   114,   312,   372,-32768,-32768,
--32768,-32768,   365,-32768,-32768,   312,   116,-32768,-32768,-32768,
--32768,   118,-32768,-32768,-32768,   169,   170,-32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,    -8,-32768,-32768,-32768,-32768,-32768,
--32768,     5,-32768,   -66,     0,-32768,-32768,-32768,-32768,-32768,
--32768,   127,  -126,-32768,    94,   -94,   -29,   -40,     6,-32768,
-    12,-32768,-32768,-32768,    39,-32768,-32768,  -141,-32768,    24,
-    28,   -42,    36,    52,    53,    49,    58,    48,-32768,  -128,
--32768,-32768,-32768,    18
-};
-
-
-#define        YYLAST          427
-
-
-static const short yytable[] = {    40,
-   177,   178,    98,   189,    37,    47,   133,   102,   135,    77,
-   155,    49,    75,   186,   -31,    92,   -32,    72,   104,   -31,
-  -127,   -32,    80,    40,    97,  -127,   -30,   103,    93,    47,
-   105,   -30,   148,   123,  -128,    49,   125,   153,   156,  -128,
-  -129,    94,   183,    40,   183,  -129,   201,    73,    74,    47,
-   131,   129,   124,   197,   132,    49,   130,    87,    88,    89,
-    90,    91,   140,   144,    95,    96,   202,   203,   117,   118,
-   119,   120,   136,    40,   165,   166,   167,   168,   126,    47,
-    99,   100,   101,   113,   114,    49,   110,   111,   112,   145,
-   147,   134,   188,    99,   141,   101,   184,   147,   185,    40,
-    40,    99,    40,   182,    40,    47,    47,   180,    47,   146,
-    47,    49,    49,   179,    49,   187,    49,   149,   108,   109,
-   152,   190,   154,   115,   116,   191,    40,   121,   122,   127,
-   128,   155,    47,    73,    74,    40,   161,   162,    49,    40,
-    40,    47,   163,   164,   175,    47,    47,    49,   158,   159,
-   160,    49,    49,   181,    40,   192,   169,   170,   149,   193,
-    47,   194,   196,   199,   198,   204,    49,   205,   207,   208,
-   106,   139,   195,   173,   171,   176,   172,     0,     0,    40,
-     0,    40,     0,   174,     0,    47,     0,    47,     0,     0,
-     0,    49,    40,    49,     0,     0,     0,     0,    47,   181,
-     0,     0,     0,     0,    49,     0,     0,     0,     1,     2,
-     3,     4,     5,     0,     6,     0,     7,     8,     9,    10,
-    11,    12,    13,    14,    15,   200,    16,    17,    18,    76,
-     0,     0,     0,     0,     0,     7,     8,     9,    10,    11,
-    12,    13,    14,     0,     0,    19,    20,    21,     0,     0,
-    22,    23,     0,     0,    24,     0,    25,     0,     0,    26,
-    27,     1,     2,     3,     4,     5,     0,     6,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    15,     0,    16,
-    17,    18,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    19,    20,
-    21,     0,     0,    22,    23,     0,     0,    24,     0,    25,
-     0,   146,    26,    27,     1,     2,    76,     4,     5,     0,
-    82,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    83,     0,    16,    17,    18,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    19,    20,    21,     0,     0,    22,    23,     0,     0,
-    24,     0,    25,     0,     0,    26,    27,     1,     2,     3,
-     4,     5,     0,     6,     1,     2,    76,     4,     5,     0,
-    82,     0,     0,    15,     0,    16,    17,    18,     0,     0,
-    83,     0,    16,    17,    18,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    19,    20,    21,     0,     0,    22,
-    23,     0,     0,    24,     0,    25,     0,     0,    26,    27,
-    24,     0,    25,     0,     0,    26,    27
-};
-
-static const short yycheck[] = {     0,
-   129,   130,    32,   145,     0,     0,    73,    37,    75,    18,
-    24,     0,    47,   140,    20,    24,    20,     0,    47,    25,
-    20,    25,    18,    24,    48,    25,    20,    24,    24,    24,
-    48,    25,    99,    31,    20,    24,    29,   104,    52,    25,
-    20,    24,   137,    44,   139,    25,   188,    47,    48,    44,
-     5,    20,    30,   180,     9,    44,    25,    19,    20,    21,
-    22,    23,    49,    93,    26,    27,   193,   196,    34,    35,
-    36,    37,    48,    74,   117,   118,   119,   120,    28,    74,
-    47,    48,    49,    40,    41,    74,    42,    43,    44,    50,
-    48,    74,    50,    47,    48,    49,   137,    48,   139,   100,
-   101,    47,   103,    48,   105,   100,   101,    49,   103,    53,
-   105,   100,   101,    53,   103,    50,   105,   100,    45,    46,
-   103,    53,   105,    38,    39,    53,   127,    32,    33,    26,
-    27,    24,   127,    47,    48,   136,   113,   114,   127,   140,
-   141,   136,   115,   116,   127,   140,   141,   136,   110,   111,
-   112,   140,   141,   136,   155,    50,   121,   122,   141,    49,
-   155,    53,    56,    50,    53,    50,   155,    50,     0,     0,
-    44,    78,   155,   125,   123,   128,   124,    -1,    -1,   180,
-    -1,   182,    -1,   126,    -1,   180,    -1,   182,    -1,    -1,
-    -1,   180,   193,   182,    -1,    -1,    -1,    -1,   193,   182,
-    -1,    -1,    -1,    -1,   193,    -1,    -1,    -1,     3,     4,
-     5,     6,     7,    -1,     9,    -1,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,   187,    21,    22,    23,     5,
-    -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,    15,
-    16,    17,    18,    -1,    -1,    40,    41,    42,    -1,    -1,
-    45,    46,    -1,    -1,    49,    -1,    51,    -1,    -1,    54,
-    55,     3,     4,     5,     6,     7,    -1,     9,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    21,
-    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,
-    42,    -1,    -1,    45,    46,    -1,    -1,    49,    -1,    51,
-    -1,    53,    54,    55,     3,     4,     5,     6,     7,    -1,
-     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    19,    -1,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    40,    41,    42,    -1,    -1,    45,    46,    -1,    -1,
-    49,    -1,    51,    -1,    -1,    54,    55,     3,     4,     5,
-     6,     7,    -1,     9,     3,     4,     5,     6,     7,    -1,
-     9,    -1,    -1,    19,    -1,    21,    22,    23,    -1,    -1,
-    19,    -1,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,
-    46,    -1,    -1,    49,    -1,    51,    -1,    -1,    54,    55,
-    49,    -1,    51,    -1,    -1,    54,    55
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   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 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                -2
-#define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
-#define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL         goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
-      yychar1 = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK;                                              \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
-while (0)
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
-
-#ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
-\f
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
-#else                          /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, int count)
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 196 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to xreallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  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 - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to xreallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-       {
-         yyerror("parser stack overflow");
-         return 2;
-       }
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-       yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-       YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)             /* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-       {
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
-         YYPRINT (stderr, yychar, yylval);
-#endif
-         fprintf (stderr, ")\n");
-       }
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-              yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 3:
-#line 208 "jv-exp.y"
-{
-                 write_exp_elt_opcode(OP_TYPE);
-                 write_exp_elt_type(yyvsp[0].tval);
-                 write_exp_elt_opcode(OP_TYPE);
-               ;
-    break;}
-case 6:
-#line 222 "jv-exp.y"
-{
-                 write_exp_elt_opcode (OP_STRING);
-                 write_exp_string (yyvsp[0].sval);
-                 write_exp_elt_opcode (OP_STRING);
-               ;
-    break;}
-case 7:
-#line 231 "jv-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                 write_exp_elt_type (yyvsp[0].typed_val_int.type);
-                 write_exp_elt_longcst ((LONGEST)(yyvsp[0].typed_val_int.val));
-                 write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 8:
-#line 236 "jv-exp.y"
-{ YYSTYPE val;
-                 parse_number (yyvsp[0].sval.ptr, yyvsp[0].sval.length, 0, &val);
-                 write_exp_elt_opcode (OP_LONG);
-                 write_exp_elt_type (val.typed_val_int.type);
-                 write_exp_elt_longcst ((LONGEST)val.typed_val_int.val);
-                 write_exp_elt_opcode (OP_LONG);
-               ;
-    break;}
-case 9:
-#line 244 "jv-exp.y"
-{ write_exp_elt_opcode (OP_DOUBLE);
-                 write_exp_elt_type (yyvsp[0].typed_val_float.type);
-                 write_exp_elt_dblcst (yyvsp[0].typed_val_float.dval);
-                 write_exp_elt_opcode (OP_DOUBLE); ;
-    break;}
-case 10:
-#line 249 "jv-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                 write_exp_elt_type (java_boolean_type);
-                 write_exp_elt_longcst ((LONGEST)yyvsp[0].lval);
-                 write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 13:
-#line 266 "jv-exp.y"
-{ yyval.tval = java_boolean_type; ;
-    break;}
-case 16:
-#line 276 "jv-exp.y"
-{ yyval.tval = java_byte_type; ;
-    break;}
-case 17:
-#line 278 "jv-exp.y"
-{ yyval.tval = java_short_type; ;
-    break;}
-case 18:
-#line 280 "jv-exp.y"
-{ yyval.tval = java_int_type; ;
-    break;}
-case 19:
-#line 282 "jv-exp.y"
-{ yyval.tval = java_long_type; ;
-    break;}
-case 20:
-#line 284 "jv-exp.y"
-{ yyval.tval = java_char_type; ;
-    break;}
-case 21:
-#line 289 "jv-exp.y"
-{ yyval.tval = java_float_type; ;
-    break;}
-case 22:
-#line 291 "jv-exp.y"
-{ yyval.tval = java_double_type; ;
-    break;}
-case 23:
-#line 303 "jv-exp.y"
-{ yyval.tval = java_type_from_name (yyvsp[0].sval); ;
-    break;}
-case 25:
-#line 312 "jv-exp.y"
-{ yyval.tval = java_array_type (yyvsp[-1].tval, yyvsp[0].lval); ;
-    break;}
-case 26:
-#line 314 "jv-exp.y"
-{ yyval.tval = java_array_type (java_type_from_name (yyvsp[-1].sval), yyvsp[0].lval); ;
-    break;}
-case 33:
-#line 334 "jv-exp.y"
-{ yyval.sval.length = yyvsp[-2].sval.length + yyvsp[0].sval.length + 1;
-                 if (yyvsp[-2].sval.ptr + yyvsp[-2].sval.length + 1 == yyvsp[0].sval.ptr
-                     && yyvsp[-2].sval.ptr[yyvsp[-2].sval.length] == '.')
-                   yyval.sval.ptr = yyvsp[-2].sval.ptr;  /* Optimization. */
-                 else
-                   {
-                     yyval.sval.ptr = (char *) xmalloc (yyval.sval.length + 1);
-                     make_cleanup (free, yyval.sval.ptr);
-                     sprintf (yyval.sval.ptr, "%.*s.%.*s",
-                              yyvsp[-2].sval.length, yyvsp[-2].sval.ptr, yyvsp[0].sval.length, yyvsp[0].sval.ptr);
-               } ;
-    break;}
-case 35:
-#line 358 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_COMMA); ;
-    break;}
-case 39:
-#line 369 "jv-exp.y"
-{ write_exp_elt_opcode (OP_THIS);
-                 write_exp_elt_opcode (OP_THIS); ;
-    break;}
-case 45:
-#line 377 "jv-exp.y"
-{ write_exp_elt_opcode (OP_ARRAY);
-                 write_exp_elt_longcst ((LONGEST) 0);
-                 write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
-                 write_exp_elt_opcode (OP_ARRAY); ;
-    break;}
-case 46:
-#line 385 "jv-exp.y"
-{ start_arglist (); ;
-    break;}
-case 47:
-#line 390 "jv-exp.y"
-{ yyval.lval = end_arglist () - 1; ;
-    break;}
-case 48:
-#line 395 "jv-exp.y"
-{ error ("FIXME - ClassInstanceCreationExpression"); ;
-    break;}
-case 49:
-#line 400 "jv-exp.y"
-{ arglist_len = 1; ;
-    break;}
-case 50:
-#line 402 "jv-exp.y"
-{ arglist_len++; ;
-    break;}
-case 51:
-#line 407 "jv-exp.y"
-{ arglist_len = 0; ;
-    break;}
-case 53:
-#line 413 "jv-exp.y"
-{ error ("FIXME - ArrayCreatiionExpression"); ;
-    break;}
-case 54:
-#line 415 "jv-exp.y"
-{ error ("FIXME - ArrayCreatiionExpression"); ;
-    break;}
-case 58:
-#line 429 "jv-exp.y"
-{ yyval.lval = 1; ;
-    break;}
-case 59:
-#line 431 "jv-exp.y"
-{ yyval.lval = yyvsp[-2].lval + 1; ;
-    break;}
-case 61:
-#line 437 "jv-exp.y"
-{ yyval.lval = 0; ;
-    break;}
-case 62:
-#line 442 "jv-exp.y"
-{ push_fieldnames (yyvsp[0].sval); ;
-    break;}
-case 63:
-#line 444 "jv-exp.y"
-{ push_fieldnames (yyvsp[0].sval); ;
-    break;}
-case 64:
-#line 450 "jv-exp.y"
-{ error ("method invocation not implemented"); ;
-    break;}
-case 65:
-#line 452 "jv-exp.y"
-{ error ("method invocation not implemented"); ;
-    break;}
-case 66:
-#line 454 "jv-exp.y"
-{ error ("method invocation not implemented"); ;
-    break;}
-case 67:
-#line 459 "jv-exp.y"
-{
-                  /* Emit code for the Name now, then exchange it in the
-                    expout array with the Expression's code.  We could
-                    introduce a OP_SWAP code or a reversed version of
-                    BINOP_SUBSCRIPT, but that makes the rest of GDB pay
-                    for our parsing kludges.  */
-                 struct expression *name_expr;
-
-                 push_expression_name (yyvsp[-3].sval);
-                 name_expr = copy_exp (expout, expout_ptr);
-                 expout_ptr -= name_expr->nelts;
-                 insert_exp (expout_ptr-length_of_subexp (expout, expout_ptr),
-                             name_expr);
-                 free (name_expr);
-                 write_exp_elt_opcode (BINOP_SUBSCRIPT);
-               ;
-    break;}
-case 68:
-#line 476 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_SUBSCRIPT); ;
-    break;}
-case 69:
-#line 478 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_SUBSCRIPT); ;
-    break;}
-case 71:
-#line 484 "jv-exp.y"
-{ push_expression_name (yyvsp[0].sval); ;
-    break;}
-case 75:
-#line 493 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_POSTINCREMENT); ;
-    break;}
-case 76:
-#line 498 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_POSTDECREMENT); ;
-    break;}
-case 80:
-#line 506 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_NEG); ;
-    break;}
-case 81:
-#line 508 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_IND); ;
-    break;}
-case 83:
-#line 514 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_PREINCREMENT); ;
-    break;}
-case 84:
-#line 519 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_PREDECREMENT); ;
-    break;}
-case 86:
-#line 525 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_COMPLEMENT); ;
-    break;}
-case 87:
-#line 527 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_LOGICAL_NOT); ;
-    break;}
-case 89:
-#line 533 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_CAST);
-                 write_exp_elt_type (java_array_type (yyvsp[-3].tval, yyvsp[-2].lval));
-                 write_exp_elt_opcode (UNOP_CAST); ;
-    break;}
-case 90:
-#line 537 "jv-exp.y"
-{
-                 int exp_size = expout_ptr;
-                 int last_exp_size = length_of_subexp(expout, expout_ptr);
-                 struct type *type;
-                 int i;
-                 int base = expout_ptr - last_exp_size - 3;
-                 if (base < 0 || expout->elts[base+2].opcode != OP_TYPE)
-                   error ("invalid cast expression");
-                 type = expout->elts[base+1].type;
-                 /* Remove the 'Expression' and slide the
-                    UnaryExpressionNotPlusMinus down to replace it. */
-                 for (i = 0;  i < last_exp_size;  i++)
-                   expout->elts[base + i] = expout->elts[base + i + 3];
-                 expout_ptr -= 3;
-                 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
-                   type = lookup_pointer_type (type);
-                 write_exp_elt_opcode (UNOP_CAST);
-                 write_exp_elt_type (type);
-                 write_exp_elt_opcode (UNOP_CAST);
-               ;
-    break;}
-case 91:
-#line 558 "jv-exp.y"
-{ write_exp_elt_opcode (UNOP_CAST);
-                 write_exp_elt_type (java_array_type (java_type_from_name (yyvsp[-3].sval), yyvsp[-2].lval));
-                 write_exp_elt_opcode (UNOP_CAST); ;
-    break;}
-case 93:
-#line 567 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_MUL); ;
-    break;}
-case 94:
-#line 569 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_DIV); ;
-    break;}
-case 95:
-#line 571 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_REM); ;
-    break;}
-case 97:
-#line 577 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_ADD); ;
-    break;}
-case 98:
-#line 579 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_SUB); ;
-    break;}
-case 100:
-#line 585 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_LSH); ;
-    break;}
-case 101:
-#line 587 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_RSH); ;
-    break;}
-case 103:
-#line 594 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_LESS); ;
-    break;}
-case 104:
-#line 596 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_GTR); ;
-    break;}
-case 105:
-#line 598 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_LEQ); ;
-    break;}
-case 106:
-#line 600 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_GEQ); ;
-    break;}
-case 108:
-#line 607 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_EQUAL); ;
-    break;}
-case 109:
-#line 609 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
-    break;}
-case 111:
-#line 615 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_AND); ;
-    break;}
-case 113:
-#line 621 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_XOR); ;
-    break;}
-case 115:
-#line 626 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_BITWISE_IOR); ;
-    break;}
-case 117:
-#line 632 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_AND); ;
-    break;}
-case 119:
-#line 638 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_OR); ;
-    break;}
-case 121:
-#line 644 "jv-exp.y"
-{ write_exp_elt_opcode (TERNOP_COND); ;
-    break;}
-case 124:
-#line 654 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN); ;
-    break;}
-case 125:
-#line 656 "jv-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
-                 write_exp_elt_opcode (yyvsp[-1].opcode);
-                 write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); ;
-    break;}
-case 126:
-#line 663 "jv-exp.y"
-{ push_expression_name (yyvsp[0].sval); ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 498 "/stone/jimb/main-98r2/share/bison.simple"
-\f
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* 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.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-       {
-         int size = 0;
-         char *msg;
-         int x, count;
-
-         count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
-           if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) xmalloc(size + 15);
-         if (msg != 0)
-           {
-             strcpy(msg, "parse error");
-
-             if (count < 5)
-               {
-                 count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
-                   if (yycheck[x + yyn] == x)
-                     {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
-                       count++;
-                     }
-               }
-             yyerror(msg);
-             free(msg);
-           }
-         else
-           yyerror ("parse error; also virtual memory exceeded");
-       }
-      else
-#endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-       YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-}
-#line 675 "jv-exp.y"
-
-/* Take care of parsing a number (anything that starts with a digit).
-   Set yylval and return the token type; update lexptr.
-   LEN is the number of characters in it.  */
-
-/*** Needs some error checking for the float case ***/
-
-static int
-parse_number (p, len, parsed_float, putithere)
-     register char *p;
-     register int len;
-     int parsed_float;
-     YYSTYPE *putithere;
-{
-  register ULONGEST n = 0;
-  ULONGEST limit, limit_div_base;
-
-  register int c;
-  register int base = input_radix;
-
-  struct type *type;
-
-  if (parsed_float)
-    {
-      /* It's a float since it contains a point or an exponent.  */
-      char c;
-      int num = 0;     /* number of tokens scanned by scanf */
-      char saved_char = p[len];
-
-      p[len] = 0;      /* null-terminate the token */
-      if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
-       num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval, &c);
-      else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
-       num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval, &c);
-      else
-       {
-#ifdef SCANF_HAS_LONG_DOUBLE
-         num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval, &c);
-#else
-         /* Scan it into a double, then assign it to the long double.
-            This at least wins with values representable in the range
-            of doubles. */
-         double temp;
-         num = sscanf (p, "%lg%c", &temp, &c);
-         putithere->typed_val_float.dval = temp;
-#endif
-       }
-      p[len] = saved_char;     /* restore the input stream */
-      if (num != 1)            /* check scanf found ONLY a float ... */
-       return ERROR;
-      /* See if it has `f' or `d' suffix (float or double).  */
-
-      c = tolower (p[len - 1]);
-
-      if (c == 'f' || c == 'F')
-       putithere->typed_val_float.type = builtin_type_float;
-      else if (isdigit (c) || c == '.' || c == 'd' || c == 'D')
-       putithere->typed_val_float.type = builtin_type_double;
-      else
-       return ERROR;
-
-      return FLOATING_POINT_LITERAL;
-    }
-
-  /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
-  if (p[0] == '0')
-    switch (p[1])
-      {
-      case 'x':
-      case 'X':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 16;
-           len -= 2;
-         }
-       break;
-
-      case 't':
-      case 'T':
-      case 'd':
-      case 'D':
-       if (len >= 3)
-         {
-           p += 2;
-           base = 10;
-           len -= 2;
-         }
-       break;
-
-      default:
-       base = 8;
-       break;
-      }
-
-  c = p[len-1];
-  limit = (ULONGEST)0xffffffff;
-  if (c == 'l' || c == 'L')
-    {
-      type = java_long_type;
-      len--;
-      /* A paranoid calculation of (1<<64)-1. */
-      limit = ((limit << 16) << 16) | limit;
-    }
-  else
-    {
-      type = java_int_type;
-    }
-  limit_div_base = limit / (ULONGEST) base;
-
-  while (--len >= 0)
-    {
-      c = *p++;
-      if (c >= '0' && c <= '9')
-       c -= '0';
-      else if (c >= 'A' && c <= 'Z')
-       c -= 'A' - 10;
-      else if (c >= 'a' && c <= 'z')
-       c -= 'a' - 10;
-      else
-       return ERROR;   /* Char not a digit */
-      if (c >= base)
-       return ERROR;
-      if (n > limit_div_base
-         || (n *= base) > limit - c)
-       error ("Numeric constant too large.");
-      n += c;
-       }
-
-   putithere->typed_val_int.val = n;
-   putithere->typed_val_int.type = type;
-   return INTEGER_LITERAL;
-}
-
-struct token
-{
-  char *operator;
-  int token;
-  enum exp_opcode opcode;
-};
-
-static const struct token tokentab3[] =
-  {
-    {">>=", ASSIGN_MODIFY, BINOP_RSH},
-    {"<<=", ASSIGN_MODIFY, BINOP_LSH}
-  };
-
-static const struct token tokentab2[] =
-  {
-    {"+=", ASSIGN_MODIFY, BINOP_ADD},
-    {"-=", ASSIGN_MODIFY, BINOP_SUB},
-    {"*=", ASSIGN_MODIFY, BINOP_MUL},
-    {"/=", ASSIGN_MODIFY, BINOP_DIV},
-    {"%=", ASSIGN_MODIFY, BINOP_REM},
-    {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR},
-    {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND},
-    {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR},
-    {"++", INCREMENT, BINOP_END},
-    {"--", DECREMENT, BINOP_END},
-    {"&&", ANDAND, BINOP_END},
-    {"||", OROR, BINOP_END},
-    {"<<", LSH, BINOP_END},
-    {">>", RSH, BINOP_END},
-    {"==", EQUAL, BINOP_END},
-    {"!=", NOTEQUAL, BINOP_END},
-    {"<=", LEQ, BINOP_END},
-    {">=", GEQ, BINOP_END}
-  };
-
-/* Read one token, getting characters through lexptr.  */
-
-static int
-yylex ()
-{
-  int c;
-  int namelen;
-  unsigned int i;
-  char *tokstart;
-  char *tokptr;
-  int tempbufindex;
-  static char *tempbuf;
-  static int tempbufsize;
-  
- retry:
-
-  tokstart = lexptr;
-  /* See if it is a special token of length 3.  */
-  for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
-    if (STREQN (tokstart, tokentab3[i].operator, 3))
-      {
-       lexptr += 3;
-       yylval.opcode = tokentab3[i].opcode;
-       return tokentab3[i].token;
-      }
-
-  /* See if it is a special token of length 2.  */
-  for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
-    if (STREQN (tokstart, tokentab2[i].operator, 2))
-      {
-       lexptr += 2;
-       yylval.opcode = tokentab2[i].opcode;
-       return tokentab2[i].token;
-      }
-
-  switch (c = *tokstart)
-    {
-    case 0:
-      return 0;
-
-    case ' ':
-    case '\t':
-    case '\n':
-      lexptr++;
-      goto retry;
-
-    case '\'':
-      /* We either have a character constant ('0' or '\177' for example)
-        or we have a quoted symbol reference ('foo(int,int)' in C++
-        for example). */
-      lexptr++;
-      c = *lexptr++;
-      if (c == '\\')
-       c = parse_escape (&lexptr);
-      else if (c == '\'')
-       error ("Empty character constant.");
-
-      yylval.typed_val_int.val = c;
-      yylval.typed_val_int.type = builtin_type_char;
-
-      c = *lexptr++;
-      if (c != '\'')
-       {
-         namelen = skip_quoted (tokstart) - tokstart;
-         if (namelen > 2)
-           {
-             lexptr = tokstart + namelen;
-             if (lexptr[-1] != '\'')
-               error ("Unmatched single quote.");
-             namelen -= 2;
-             tokstart++;
-             goto tryname;
-           }
-         error ("Invalid character constant.");
-       }
-      return INTEGER_LITERAL;
-
-    case '(':
-      paren_depth++;
-      lexptr++;
-      return c;
-
-    case ')':
-      if (paren_depth == 0)
-       return 0;
-      paren_depth--;
-      lexptr++;
-      return c;
-
-    case ',':
-      if (comma_terminates && paren_depth == 0)
-       return 0;
-      lexptr++;
-      return c;
-
-    case '.':
-      /* Might be a floating point number.  */
-      if (lexptr[1] < '0' || lexptr[1] > '9')
-       goto symbol;            /* Nope, must be a symbol. */
-      /* FALL THRU into number case.  */
-
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-      {
-       /* It's a number.  */
-       int got_dot = 0, got_e = 0, toktype;
-       register char *p = tokstart;
-       int hex = input_radix > 10;
-
-       if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
-         {
-           p += 2;
-           hex = 1;
-         }
-       else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
-         {
-           p += 2;
-           hex = 0;
-         }
-
-       for (;; ++p)
-         {
-           /* This test includes !hex because 'e' is a valid hex digit
-              and thus does not indicate a floating point number when
-              the radix is hex.  */
-           if (!hex && !got_e && (*p == 'e' || *p == 'E'))
-             got_dot = got_e = 1;
-           /* This test does not include !hex, because a '.' always indicates
-              a decimal floating point number regardless of the radix.  */
-           else if (!got_dot && *p == '.')
-             got_dot = 1;
-           else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
-                    && (*p == '-' || *p == '+'))
-             /* This is the sign of the exponent, not the end of the
-                number.  */
-             continue;
-           /* We will take any letters or digits.  parse_number will
-              complain if past the radix, or if L or U are not final.  */
-           else if ((*p < '0' || *p > '9')
-                    && ((*p < 'a' || *p > 'z')
-                                 && (*p < 'A' || *p > 'Z')))
-             break;
-         }
-       toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylval);
-        if (toktype == ERROR)
-         {
-           char *err_copy = (char *) alloca (p - tokstart + 1);
-
-           memcpy (err_copy, tokstart, p - tokstart);
-           err_copy[p - tokstart] = 0;
-           error ("Invalid number \"%s\".", err_copy);
-         }
-       lexptr = p;
-       return toktype;
-      }
-
-    case '+':
-    case '-':
-    case '*':
-    case '/':
-    case '%':
-    case '|':
-    case '&':
-    case '^':
-    case '~':
-    case '!':
-    case '<':
-    case '>':
-    case '[':
-    case ']':
-    case '?':
-    case ':':
-    case '=':
-    case '{':
-    case '}':
-    symbol:
-      lexptr++;
-      return c;
-
-    case '"':
-
-      /* Build the gdb internal form of the input string in tempbuf,
-        translating any standard C escape forms seen.  Note that the
-        buffer is null byte terminated *only* for the convenience of
-        debugging gdb itself and printing the buffer contents when
-        the buffer contains no embedded nulls.  Gdb does not depend
-        upon the buffer being null byte terminated, it uses the length
-        string instead.  This allows gdb to handle C strings (as well
-        as strings in other languages) with embedded null bytes */
-
-      tokptr = ++tokstart;
-      tempbufindex = 0;
-
-      do {
-       /* Grow the static temp buffer if necessary, including allocating
-          the first one on demand. */
-       if (tempbufindex + 1 >= tempbufsize)
-         {
-           tempbuf = (char *) xrealloc (tempbuf, tempbufsize += 64);
-         }
-       switch (*tokptr)
-         {
-         case '\0':
-         case '"':
-           /* Do nothing, loop will terminate. */
-           break;
-         case '\\':
-           tokptr++;
-           c = parse_escape (&tokptr);
-           if (c == -1)
-             {
-               continue;
-             }
-           tempbuf[tempbufindex++] = c;
-           break;
-         default:
-           tempbuf[tempbufindex++] = *tokptr++;
-           break;
-         }
-      } while ((*tokptr != '"') && (*tokptr != '\0'));
-      if (*tokptr++ != '"')
-       {
-         error ("Unterminated string in expression.");
-       }
-      tempbuf[tempbufindex] = '\0';    /* See note above */
-      yylval.sval.ptr = tempbuf;
-      yylval.sval.length = tempbufindex;
-      lexptr = tokptr;
-      return (STRING_LITERAL);
-    }
-
-  if (!(c == '_' || c == '$'
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
-    /* We must have come across a bad character (e.g. ';').  */
-    error ("Invalid character '%c' in expression.", c);
-
-  /* It's a name.  See how long it is.  */
-  namelen = 0;
-  for (c = tokstart[namelen];
-       (c == '_'
-       || c == '$'
-       || (c >= '0' && c <= '9')
-       || (c >= 'a' && c <= 'z')
-       || (c >= 'A' && c <= 'Z')
-       || c == '<');
-       )
-    {
-      if (c == '<')
-       {
-         int i = namelen;
-         while (tokstart[++i] && tokstart[i] != '>');
-         if (tokstart[i] == '>')
-           namelen = i;
-       }
-       c = tokstart[++namelen];
-     }
-
-  /* The token "if" terminates the expression and is NOT 
-     removed from the input stream.  */
-  if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f')
-    {
-      return 0;
-    }
-
-  lexptr += namelen;
-
-  tryname:
-
-  /* Catch specific keywords.  Should be done with a data structure.  */
-  switch (namelen)
-    {
-    case 7:
-      if (STREQN (tokstart, "boolean", 7))
-       return BOOLEAN;
-      break;
-    case 6:
-      if (STREQN (tokstart, "double", 6))      
-       return DOUBLE;
-      break;
-    case 5:
-      if (STREQN (tokstart, "short", 5))
-       return SHORT;
-      if (STREQN (tokstart, "false", 5))
-       {
-         yylval.lval = 0;
-         return BOOLEAN_LITERAL;
-       }
-      if (STREQN (tokstart, "super", 5))
-       return SUPER;
-      if (STREQN (tokstart, "float", 5))
-       return FLOAT;
-      break;
-    case 4:
-      if (STREQN (tokstart, "long", 4))
-       return LONG;
-      if (STREQN (tokstart, "byte", 4))
-       return BYTE;
-      if (STREQN (tokstart, "char", 4))
-       return CHAR;
-      if (STREQN (tokstart, "true", 4))
-       {
-         yylval.lval = 1;
-         return BOOLEAN_LITERAL;
-       }
-      if (current_language->la_language == language_cplus
-         && STREQN (tokstart, "this", 4))
-       {
-         static const char this_name[] =
-                                { CPLUS_MARKER, 't', 'h', 'i', 's', '\0' };
-
-         if (lookup_symbol (this_name, expression_context_block,
-                            VAR_NAMESPACE, (int *) NULL,
-                            (struct symtab **) NULL))
-           return THIS;
-       }
-      break;
-    case 3:
-      if (STREQN (tokstart, "int", 3))
-       return INT;
-      if (STREQN (tokstart, "new", 3))
-       return NEW;
-      break;
-    default:
-      break;
-    }
-
-  yylval.sval.ptr = tokstart;
-  yylval.sval.length = namelen;
-
-  if (*tokstart == '$')
-    {
-      write_dollar_variable (yylval.sval);
-      return VARIABLE;
-    }
-
-  /* Input names that aren't symbols but ARE valid hex numbers,
-     when the input radix permits them, can be names or numbers
-     depending on the parse.  Note we support radixes > 16 here.  */
-  if (((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) ||
-       (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10)))
-    {
-      YYSTYPE newlval; /* Its value is ignored.  */
-      int hextype = parse_number (tokstart, namelen, 0, &newlval);
-      if (hextype == INTEGER_LITERAL)
-       return NAME_OR_INT;
-    }
-  return IDENTIFIER;
-}
-
-void
-yyerror (msg)
-     char *msg;
-{
-  error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
-}
-
-static struct type *
-java_type_from_name (name)
-     struct stoken name;
-{
-  char *tmp = copy_name (name);
-  struct type *typ = java_lookup_class (tmp);
-  if (typ == NULL || TYPE_CODE (typ) != TYPE_CODE_STRUCT)
-    error ("No class named %s.", tmp);
-  return typ;
-}
-
-/* If NAME is a valid variable name in this scope, push it and return 1.
-   Otherwise, return 0. */
-
-static int
-push_variable (name)
-     struct stoken name;
-{
-  char *tmp = copy_name (name);
-  int is_a_field_of_this = 0;
-  struct symbol *sym;
-  sym = lookup_symbol (tmp, expression_context_block, VAR_NAMESPACE,
-                      &is_a_field_of_this, (struct symtab **) NULL);
-  if (sym && SYMBOL_CLASS (sym) != LOC_TYPEDEF)
-    {
-      if (symbol_read_needs_frame (sym))
-       {
-         if (innermost_block == 0 ||
-             contained_in (block_found, innermost_block))
-           innermost_block = block_found;
-       }
-
-      write_exp_elt_opcode (OP_VAR_VALUE);
-      /* We want to use the selected frame, not another more inner frame
-        which happens to be in the same block.  */
-      write_exp_elt_block (NULL);
-      write_exp_elt_sym (sym);
-      write_exp_elt_opcode (OP_VAR_VALUE);
-      return 1;
-    }
-  if (is_a_field_of_this)
-    {
-      /* it hangs off of `this'.  Must not inadvertently convert from a
-        method call to data ref.  */
-      if (innermost_block == 0 || 
-         contained_in (block_found, innermost_block))
-       innermost_block = block_found;
-      write_exp_elt_opcode (OP_THIS);
-      write_exp_elt_opcode (OP_THIS);
-      write_exp_elt_opcode (STRUCTOP_PTR);
-      write_exp_string (name);
-      write_exp_elt_opcode (STRUCTOP_PTR);
-      return 1;
-    }
-  return 0;
-}
-
-/* Assuming a reference expression has been pushed, emit the
-   STRUCTOP_STRUCT ops to access the field named NAME.  If NAME is a
-   qualified name (has '.'), generate a field access for each part. */
-
-static void
-push_fieldnames (name)
-     struct stoken name;
-{
-  int i;
-  struct stoken token;
-  token.ptr = name.ptr;
-  for (i = 0;  ;  i++)
-    {
-      if (i == name.length || name.ptr[i] == '.')
-       {
-         /* token.ptr is start of current field name. */
-         token.length = &name.ptr[i] - token.ptr;
-         write_exp_elt_opcode (STRUCTOP_STRUCT);
-         write_exp_string (token);
-         write_exp_elt_opcode (STRUCTOP_STRUCT);
-         token.ptr += token.length + 1;
-       }
-      if (i >= name.length)
-       break;
-    }
-}
-
-/* Helper routine for push_expression_name.
-   Handle a qualified name, where DOT_INDEX is the index of the first '.' */
-
-static void
-push_qualified_expression_name (name, dot_index)
-     struct stoken name;
-     int dot_index;
-{
-  struct stoken token;
-  char *tmp;
-  struct type *typ;
-
-  token.ptr = name.ptr;
-  token.length = dot_index;
-
-  if (push_variable (token))
-    {
-      token.ptr = name.ptr + dot_index + 1;
-      token.length = name.length - dot_index - 1;
-      push_fieldnames (token);
-      return;
-    }
-
-  token.ptr = name.ptr;
-  for (;;)
-    {
-      token.length = dot_index;
-      tmp = copy_name (token);
-      typ = java_lookup_class (tmp);
-      if (typ != NULL)
-       {
-         if (dot_index == name.length)
-           {
-             write_exp_elt_opcode(OP_TYPE);
-             write_exp_elt_type(typ);
-             write_exp_elt_opcode(OP_TYPE);
-             return;
-           }
-         dot_index++;  /* Skip '.' */
-         name.ptr += dot_index;
-         name.length -= dot_index;
-         dot_index = 0;
-         while (dot_index < name.length && name.ptr[dot_index] != '.') 
-           dot_index++;
-         token.ptr = name.ptr;
-         token.length = dot_index;
-         write_exp_elt_opcode (OP_SCOPE);
-         write_exp_elt_type (typ);
-         write_exp_string (token);
-         write_exp_elt_opcode (OP_SCOPE); 
-         if (dot_index < name.length)
-           {
-             dot_index++;
-             name.ptr += dot_index;
-             name.length -= dot_index;
-             push_fieldnames (name);
-           }
-         return;
-       }
-      else if (dot_index >= name.length)
-       break;
-      dot_index++;  /* Skip '.' */
-      while (dot_index < name.length && name.ptr[dot_index] != '.')
-       dot_index++;
-    }
-  error ("unknown type `%.*s'", name.length, name.ptr);
-}
-
-/* Handle Name in an expression (or LHS).
-   Handle VAR, TYPE, TYPE.FIELD1....FIELDN and VAR.FIELD1....FIELDN. */
-
-static void
-push_expression_name (name)
-     struct stoken name;
-{
-  char *tmp;
-  struct type *typ;
-  char *ptr;
-  int i;
-
-  for (i = 0;  i < name.length;  i++)
-    {
-      if (name.ptr[i] == '.')
-       {
-         /* It's a Qualified Expression Name. */
-         push_qualified_expression_name (name, i);
-         return;
-       }
-    }
-
-  /* It's a Simple Expression Name. */
-  
-  if (push_variable (name))
-    return;
-  tmp = copy_name (name);
-  typ = java_lookup_class (tmp);
-  if (typ != NULL)
-    {
-      write_exp_elt_opcode(OP_TYPE);
-      write_exp_elt_type(typ);
-      write_exp_elt_opcode(OP_TYPE);
-    }
-  else
-    {
-      struct minimal_symbol *msymbol;
-
-      msymbol = lookup_minimal_symbol (tmp, NULL, NULL);
-      if (msymbol != NULL)
-       {
-         write_exp_msymbol (msymbol,
-                            lookup_function_type (builtin_type_int),
-                            builtin_type_int);
-       }
-      else if (!have_full_symbols () && !have_partial_symbols ())
-       error ("No symbol table is loaded.  Use the \"file\" command.");
-      else
-       error ("No symbol \"%s\" in current context.", tmp);
-    }
-
-}
-
-
-/* The following two routines, copy_exp and insert_exp, aren't specific to
-   Java, so they could go in parse.c, but their only purpose is to support
-   the parsing kludges we use in this file, so maybe it's best to isolate
-   them here.  */
-
-/* Copy the expression whose last element is at index ENDPOS - 1 in EXPR
-   into a freshly xmalloc'ed struct expression.  Its language_defn is set
-   to null.  */
-static struct expression *
-copy_exp (expr, endpos)
-     struct expression *expr;
-     int endpos;
-{
-  int len = length_of_subexp (expr, endpos);
-  struct expression *new
-    = (struct expression *) xmalloc (sizeof (*new) + EXP_ELEM_TO_BYTES (len));
-  new->nelts = len;
-  memcpy (new->elts, expr->elts + endpos - len, EXP_ELEM_TO_BYTES (len));
-  new->language_defn = 0;
-
-  return new;
-}
-
-/* Insert the expression NEW into the current expression (expout) at POS.  */
-static void
-insert_exp (pos, new)
-     int pos;
-     struct expression *new;
-{
-  int newlen = new->nelts;
-
-  /* Grow expout if necessary.  In this function's only use at present,
-     this should never be necessary.  */
-  if (expout_ptr + newlen > expout_size)
-    {
-      expout_size = max (expout_size * 2, expout_ptr + newlen + 10);
-      expout = (struct expression *)
-       xrealloc ((char *) expout, (sizeof (struct expression)
-                                   + EXP_ELEM_TO_BYTES (expout_size)));
-    }
-
-  {
-    int i;
-
-    for (i = expout_ptr - 1; i >= pos; i--)
-      expout->elts[i + newlen] = expout->elts[i];
-  }
-  
-  memcpy (expout->elts + pos, new->elts, EXP_ELEM_TO_BYTES (newlen));
-  expout_ptr += newlen;
-}
diff --git a/gdb/m2-exp.tab.c b/gdb/m2-exp.tab.c
deleted file mode 100644 (file)
index 2bfc681..0000000
+++ /dev/null
@@ -1,2089 +0,0 @@
-
-/*  A Bison parser, made from m2-exp.y
- by  GNU Bison version 1.25
-  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define        INT     258
-#define        HEX     259
-#define        ERROR   260
-#define        UINT    261
-#define        M2_TRUE 262
-#define        M2_FALSE        263
-#define        CHAR    264
-#define        FLOAT   265
-#define        STRING  266
-#define        NAME    267
-#define        BLOCKNAME       268
-#define        IDENT   269
-#define        VARNAME 270
-#define        TYPENAME        271
-#define        SIZE    272
-#define        CAP     273
-#define        ORD     274
-#define        HIGH    275
-#define        ABS     276
-#define        MIN_FUNC        277
-#define        MAX_FUNC        278
-#define        FLOAT_FUNC      279
-#define        VAL     280
-#define        CHR     281
-#define        ODD     282
-#define        TRUNC   283
-#define        INC     284
-#define        DEC     285
-#define        INCL    286
-#define        EXCL    287
-#define        COLONCOLON      288
-#define        INTERNAL_VAR    289
-#define        ABOVE_COMMA     290
-#define        ASSIGN  291
-#define        LEQ     292
-#define        GEQ     293
-#define        NOTEQUAL        294
-#define        IN      295
-#define        OROR    296
-#define        LOGICAL_AND     297
-#define        DIV     298
-#define        MOD     299
-#define        UNARY   300
-#define        DOT     301
-#define        NOT     302
-#define        QID     303
-
-#line 40 "m2-exp.y"
-
-
-#include "defs.h"
-#include "gdb_string.h"
-#include "expression.h"
-#include "language.h"
-#include "value.h"
-#include "parser-defs.h"
-#include "m2-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
-
-/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
-   as well as gratuitiously global symbol names, so we can have multiple
-   yacc generated parsers in gdb.  Note that these are only the variables
-   produced by yacc.  If other parser generators (bison, byacc, etc) produce
-   additional global names that conflict at link time, then those parser
-   generators need to be fixed instead of adding those names to this list. */
-
-#define        yymaxdepth m2_maxdepth
-#define        yyparse m2_parse
-#define        yylex   m2_lex
-#define        yyerror m2_error
-#define        yylval  m2_lval
-#define        yychar  m2_char
-#define        yydebug m2_debug
-#define        yypact  m2_pact
-#define        yyr1    m2_r1
-#define        yyr2    m2_r2
-#define        yydef   m2_def
-#define        yychk   m2_chk
-#define        yypgo   m2_pgo
-#define        yyact   m2_act
-#define        yyexca  m2_exca
-#define        yyerrflag m2_errflag
-#define        yynerrs m2_nerrs
-#define        yyps    m2_ps
-#define        yypv    m2_pv
-#define        yys     m2_s
-#define        yy_yys  m2_yys
-#define        yystate m2_state
-#define        yytmp   m2_tmp
-#define        yyv     m2_v
-#define        yy_yyv  m2_yyv
-#define        yyval   m2_val
-#define        yylloc  m2_lloc
-#define        yyreds  m2_reds         /* With YYDEBUG defined */
-#define        yytoks  m2_toks         /* With YYDEBUG defined */
-#define yylhs  m2_yylhs
-#define yylen  m2_yylen
-#define yydefred m2_yydefred
-#define yydgoto        m2_yydgoto
-#define yysindex m2_yysindex
-#define yyrindex m2_yyrindex
-#define yygindex m2_yygindex
-#define yytable         m2_yytable
-#define yycheck         m2_yycheck
-
-#ifndef YYDEBUG
-#define        YYDEBUG 0               /* Default to no yydebug support */
-#endif
-
-int
-yyparse PARAMS ((void));
-
-static int
-yylex PARAMS ((void));
-
-void
-yyerror PARAMS ((char *));
-
-#if 0
-static char *
-make_qualname PARAMS ((char *, char *));
-#endif
-
-static int
-parse_number PARAMS ((int));
-
-/* The sign of the number being parsed. */
-static int number_sign = 1;
-
-/* The block that the module specified by the qualifer on an identifer is
-   contained in, */
-#if 0
-static struct block *modblock=0;
-#endif
-
-
-#line 135 "m2-exp.y"
-typedef union
-  {
-    LONGEST lval;
-    ULONGEST ulval;
-    DOUBLEST dval;
-    struct symbol *sym;
-    struct type *tval;
-    struct stoken sval;
-    int voidval;
-    struct block *bval;
-    enum exp_opcode opcode;
-    struct internalvar *ivar;
-
-    struct type **tvec;
-    int *ivec;
-  } YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define        YYFINAL         181
-#define        YYFLAG          -32768
-#define        YYNTBASE        68
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 303 ? yytranslate[x] : 82)
-
-static const char 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,    44,     2,     2,    48,     2,    60,
-    64,    52,    50,    35,    51,     2,    53,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,    38,
-    42,    39,     2,    49,     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,
-    59,     2,    67,    57,     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,    65,     2,    66,    62,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    34,    36,
-    37,    40,    41,    43,    45,    46,    47,    54,    55,    56,
-    58,    61,    63
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     9,    10,    14,    17,    20,    22,
-    24,    29,    34,    39,    44,    49,    54,    59,    66,    71,
-    76,    81,    84,    89,    96,   101,   108,   112,   114,   118,
-   125,   132,   136,   141,   142,   148,   149,   155,   156,   158,
-   162,   164,   168,   173,   178,   182,   186,   190,   194,   198,
-   202,   206,   210,   214,   218,   222,   226,   230,   234,   238,
-   242,   246,   250,   252,   254,   256,   258,   260,   262,   264,
-   269,   271,   273,   275,   279,   281,   283,   287,   289
-};
-
-static const short yyrhs[] = {    70,
-     0,    69,     0,    81,     0,    70,    57,     0,     0,    51,
-    71,    70,     0,    50,    70,     0,    72,    70,     0,    61,
-     0,    62,     0,    18,    60,    70,    64,     0,    19,    60,
-    70,    64,     0,    21,    60,    70,    64,     0,    20,    60,
-    70,    64,     0,    22,    60,    81,    64,     0,    23,    60,
-    81,    64,     0,    24,    60,    70,    64,     0,    25,    60,
-    81,    35,    70,    64,     0,    26,    60,    70,    64,     0,
-    27,    60,    70,    64,     0,    28,    60,    70,    64,     0,
-    17,    70,     0,    29,    60,    70,    64,     0,    29,    60,
-    70,    35,    70,    64,     0,    30,    60,    70,    64,     0,
-    30,    60,    70,    35,    70,    64,     0,    70,    58,    12,
-     0,    73,     0,    70,    45,    73,     0,    31,    60,    70,
-    35,    70,    64,     0,    32,    60,    70,    35,    70,    64,
-     0,    65,    76,    66,     0,    81,    65,    76,    66,     0,
-     0,    70,    59,    74,    77,    67,     0,     0,    70,    60,
-    75,    76,    64,     0,     0,    70,     0,    76,    35,    70,
-     0,    70,     0,    77,    35,    70,     0,    65,    81,    66,
-    70,     0,    81,    60,    70,    64,     0,    60,    70,    64,
-     0,    70,    49,    70,     0,    70,    52,    70,     0,    70,
-    53,    70,     0,    70,    54,    70,     0,    70,    55,    70,
-     0,    70,    50,    70,     0,    70,    51,    70,     0,    70,
-    42,    70,     0,    70,    43,    70,     0,    70,    44,    70,
-     0,    70,    40,    70,     0,    70,    41,    70,     0,    70,
-    38,    70,     0,    70,    39,    70,     0,    70,    47,    70,
-     0,    70,    46,    70,     0,    70,    37,    70,     0,     7,
-     0,     8,     0,     3,     0,     6,     0,     9,     0,    10,
-     0,    80,     0,    17,    60,    81,    64,     0,    11,     0,
-    79,     0,    13,     0,    78,    33,    13,     0,    79,     0,
-    34,     0,    78,    33,    12,     0,    12,     0,    16,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   204,   205,   208,   217,   220,   222,   227,   231,   235,   236,
-   239,   243,   247,   251,   255,   261,   267,   271,   277,   281,
-   285,   289,   294,   298,   304,   308,   314,   320,   323,   327,
-   331,   334,   336,   342,   347,   353,   357,   363,   366,   370,
-   375,   380,   385,   391,   397,   405,   409,   413,   417,   421,
-   425,   429,   433,   437,   439,   443,   447,   451,   455,   459,
-   463,   467,   474,   480,   486,   493,   502,   510,   517,   520,
-   527,   534,   538,   547,   559,   567,   571,   587,   638
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","INT","HEX",
-"ERROR","UINT","M2_TRUE","M2_FALSE","CHAR","FLOAT","STRING","NAME","BLOCKNAME",
-"IDENT","VARNAME","TYPENAME","SIZE","CAP","ORD","HIGH","ABS","MIN_FUNC","MAX_FUNC",
-"FLOAT_FUNC","VAL","CHR","ODD","TRUNC","INC","DEC","INCL","EXCL","COLONCOLON",
-"INTERNAL_VAR","','","ABOVE_COMMA","ASSIGN","'<'","'>'","LEQ","GEQ","'='","NOTEQUAL",
-"'#'","IN","OROR","LOGICAL_AND","'&'","'@'","'+'","'-'","'*'","'/'","DIV","MOD",
-"UNARY","'^'","DOT","'['","'('","NOT","'~'","QID","')'","'{'","'}'","']'","start",
-"type_exp","exp","@1","not_exp","set","@2","@3","arglist","non_empty_arglist",
-"block","fblock","variable","type", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-    68,    68,    69,    70,    71,    70,    70,    70,    72,    72,
-    70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
-    70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
-    70,    73,    73,    74,    70,    75,    70,    76,    76,    76,
-    77,    77,    70,    70,    70,    70,    70,    70,    70,    70,
-    70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
-    70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
-    70,    78,    79,    79,    80,    80,    80,    80,    81
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     1,     2,     0,     3,     2,     2,     1,     1,
-     4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
-     4,     2,     4,     6,     4,     6,     3,     1,     3,     6,
-     6,     3,     4,     0,     5,     0,     5,     0,     1,     3,
-     1,     3,     4,     4,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     1,     1,     1,     1,     1,     1,     1,     4,
-     1,     1,     1,     3,     1,     1,     3,     1,     1
-};
-
-static const short yydefact[] = {     0,
-    65,    66,    63,    64,    67,    68,    71,    78,    73,    79,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    76,     0,     5,     0,
-     9,    10,    38,     2,     1,     0,    28,     0,    75,    69,
-     3,     0,    22,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     7,
-     0,     0,    39,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     4,     0,    34,    36,     8,     0,     0,
-    38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     6,    45,     0,
-    32,     0,    62,    58,    59,    56,    57,    53,    54,    55,
-    38,    29,     0,    61,    60,    46,    51,    52,    47,    48,
-    49,    50,    27,     0,    38,    77,    74,     0,     0,    70,
-    11,    12,    14,    13,    15,    16,    17,     0,    19,    20,
-    21,     0,    23,     0,    25,     0,     0,    40,    43,    41,
-     0,     0,    44,    33,     0,     0,     0,     0,     0,     0,
-    35,    37,    18,    24,    26,    30,    31,    42,     0,     0,
-     0
-};
-
-static const short yydefgoto[] = {   179,
-    34,    63,    61,    36,    37,   134,   135,    64,   161,    38,
-    39,    40,    44
-};
-
-static const short yypact[] = {   155,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   215,   -27,   -22,   -20,   -19,    14,    24,    26,    27,    28,
-    29,    31,    32,    33,    35,    36,-32768,   155,-32768,   155,
--32768,-32768,   155,-32768,   742,   155,-32768,    -6,    -4,-32768,
-   -34,   155,     5,   -34,   155,   155,   155,   155,    44,    44,
-   155,    44,   155,   155,   155,   155,   155,   155,   155,     5,
-   155,   272,   742,   -31,   -41,   155,   155,   155,   155,   155,
-   155,   155,   155,   -15,   155,   155,   155,   155,   155,   155,
-   155,   155,   155,-32768,    85,-32768,-32768,     5,    -5,   155,
-   155,   -21,   300,   328,   356,   384,    34,    39,   412,    64,
-   440,   468,   496,    78,   244,   692,   718,     5,-32768,   155,
--32768,   155,   766,   -37,   -37,   -37,   -37,   -37,   -37,   -37,
-   155,-32768,    40,   141,   201,   777,   786,   786,     5,     5,
-     5,     5,-32768,   155,   155,-32768,-32768,   524,   -29,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   155,-32768,-32768,
--32768,   155,-32768,   155,-32768,   155,   155,   742,     5,   742,
-   -33,   -32,-32768,-32768,   552,   580,   608,   636,   664,   155,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   742,   100,   106,
--32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,     0,-32768,-32768,    37,-32768,-32768,   -86,-32768,-32768,
--32768,-32768,    52
-};
-
-
-#define        YYLAST          846
-
-
-static const short yytable[] = {    35,
-    10,   170,   110,   110,   139,   110,   136,   137,    75,    76,
-    43,    77,    78,    79,    80,    81,    82,    83,    90,    84,
-    85,    86,    87,    91,   112,    90,    89,    60,   -72,    62,
-    91,   172,    45,   171,   111,    88,   164,    46,    90,    47,
-    48,    62,   140,    91,    93,    94,    95,    96,   162,   121,
-    99,    41,   101,   102,   103,   104,   105,   106,   107,    10,
-   108,    84,    85,    86,    87,   113,   114,   115,   116,   117,
-   118,   119,   120,    49,   124,   125,   126,   127,   128,   129,
-   130,   131,   132,    50,    65,    51,    52,    53,    54,   138,
-    55,    56,    57,    92,    58,    59,   133,   145,   148,   180,
-    97,    98,   146,   100,    91,   181,     0,     0,     0,   158,
-   122,   159,   152,     0,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,   123,    77,    78,    79,    80,
-    81,    82,    83,   160,    84,    85,    86,    87,     0,     0,
-     0,   153,     0,     0,     0,     0,     0,   165,     0,     0,
-     0,   166,     0,   167,     0,   168,   169,     1,     0,     0,
-     2,     3,     4,     5,     6,     7,     8,     9,     0,   178,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    76,    27,    77,
-    78,    79,    80,    81,    82,    83,     0,    84,    85,    86,
-    87,     0,     0,     0,    28,    29,     0,     0,     0,     0,
-     0,     0,     0,     0,    30,    31,    32,     1,     0,    33,
-     2,     3,     4,     5,     6,     7,     8,     9,     0,     0,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,     0,    27,    77,
-    78,    79,    80,    81,    82,    83,     0,    84,    85,    86,
-    87,     0,     0,     0,    28,    29,     0,     0,     0,     0,
-     0,     0,     0,     0,    42,    31,    32,     0,   154,    33,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,    80,    81,    82,    83,     0,
-    84,    85,    86,    87,     0,     0,     0,   155,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,    80,    81,    82,    83,     0,    84,    85,
-    86,    87,     0,     0,     0,   109,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,     0,    77,    78,
-    79,    80,    81,    82,    83,     0,    84,    85,    86,    87,
-     0,     0,     0,   141,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
-    81,    82,    83,     0,    84,    85,    86,    87,     0,     0,
-     0,   142,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
-    83,     0,    84,    85,    86,    87,     0,     0,     0,   143,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,    80,    81,    82,    83,     0,
-    84,    85,    86,    87,     0,     0,     0,   144,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,    80,    81,    82,    83,     0,    84,    85,
-    86,    87,     0,     0,     0,   147,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,     0,    77,    78,
-    79,    80,    81,    82,    83,     0,    84,    85,    86,    87,
-     0,     0,     0,   149,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
-    81,    82,    83,     0,    84,    85,    86,    87,     0,     0,
-     0,   150,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
-    83,     0,    84,    85,    86,    87,     0,     0,     0,   151,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,    80,    81,    82,    83,     0,
-    84,    85,    86,    87,     0,     0,     0,   163,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,    80,    81,    82,    83,     0,    84,    85,
-    86,    87,     0,     0,     0,   173,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,     0,    77,    78,
-    79,    80,    81,    82,    83,     0,    84,    85,    86,    87,
-     0,     0,     0,   174,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
-    81,    82,    83,     0,    84,    85,    86,    87,     0,     0,
-     0,   175,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
-    83,     0,    84,    85,    86,    87,     0,     0,     0,   176,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,     0,    77,    78,    79,    80,    81,    82,    83,     0,
-    84,    85,    86,    87,     0,     0,   156,   177,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,    80,    81,    82,    83,     0,    84,    85,
-    86,    87,   157,     0,    66,    67,    68,    69,    70,    71,
-    72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
-    81,    82,    83,     0,    84,    85,    86,    87,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
-    77,    78,    79,    80,    81,    82,    83,     0,    84,    85,
-    86,    87,-32768,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
-    83,     0,    84,    85,    86,    87,    78,    79,    80,    81,
-    82,    83,     0,    84,    85,    86,    87,    80,    81,    82,
-    83,     0,    84,    85,    86,    87
-};
-
-static const short yycheck[] = {     0,
-    16,    35,    35,    35,    91,    35,    12,    13,    46,    47,
-    11,    49,    50,    51,    52,    53,    54,    55,    60,    57,
-    58,    59,    60,    65,    66,    60,    33,    28,    33,    30,
-    65,    64,    60,    67,    66,    36,    66,    60,    60,    60,
-    60,    42,    64,    65,    45,    46,    47,    48,   135,    65,
-    51,     0,    53,    54,    55,    56,    57,    58,    59,    16,
-    61,    57,    58,    59,    60,    66,    67,    68,    69,    70,
-    71,    72,    73,    60,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    60,    33,    60,    60,    60,    60,    90,
-    60,    60,    60,    42,    60,    60,    12,    64,    35,     0,
-    49,    50,    64,    52,    65,     0,    -1,    -1,    -1,   110,
-    74,   112,    35,    -1,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    74,    49,    50,    51,    52,
-    53,    54,    55,   134,    57,    58,    59,    60,    -1,    -1,
-    -1,    64,    -1,    -1,    -1,    -1,    -1,   148,    -1,    -1,
-    -1,   152,    -1,   154,    -1,   156,   157,     3,    -1,    -1,
-     6,     7,     8,     9,    10,    11,    12,    13,    -1,   170,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    47,    34,    49,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
-    60,    -1,    -1,    -1,    50,    51,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    60,    61,    62,     3,    -1,    65,
-     6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    -1,    34,    49,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
-    60,    -1,    -1,    -1,    50,    51,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    35,    65,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    60,    -1,    -1,    -1,    64,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-    49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    60,    -1,    -1,    -1,    64,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    -1,    49,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-    -1,    -1,    -1,    64,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    -1,    49,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    60,    -1,    -1,
-    -1,    64,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    -1,    49,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    60,    -1,    -1,    -1,    64,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    60,    -1,    -1,    -1,    64,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-    49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    60,    -1,    -1,    -1,    64,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    -1,    49,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-    -1,    -1,    -1,    64,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    -1,    49,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    60,    -1,    -1,
-    -1,    64,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    -1,    49,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    60,    -1,    -1,    -1,    64,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    60,    -1,    -1,    -1,    64,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-    49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    60,    -1,    -1,    -1,    64,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    -1,    49,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    59,    60,
-    -1,    -1,    -1,    64,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    -1,    49,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    60,    -1,    -1,
-    -1,    64,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    -1,    49,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    60,    -1,    -1,    -1,    64,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    60,    -1,    -1,    35,    64,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-    49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    60,    35,    -1,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    -1,    49,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    60,    37,    38,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-    49,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    60,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    -1,    49,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    60,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    60,    52,    53,    54,
-    55,    -1,    57,    58,    59,    60
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   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 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, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc.  */
-#endif /* not GNU C.  */
-#endif /* alloca not defined.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                -2
-#define YYEOF          0
-#define YYACCEPT       return(0)
-#define YYABORT        return(1)
-#define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL         goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
-      yychar1 = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK;                                              \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
-while (0)
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
-
-#ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-int yyparse (void);
-#endif
-\f
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
-#else                          /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, int count)
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 196 "/stone/jimb/main-98r2/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to xreallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  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 - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to xreallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-       {
-         yyerror("parser stack overflow");
-         return 2;
-       }
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-       yystacksize = YYMAXDEPTH;
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-       YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)             /* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-       {
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
-         YYPRINT (stderr, yychar, yylval);
-#endif
-         fprintf (stderr, ")\n");
-       }
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-              yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 3:
-#line 209 "m2-exp.y"
-{ write_exp_elt_opcode(OP_TYPE);
-                 write_exp_elt_type(yyvsp[0].tval);
-                 write_exp_elt_opcode(OP_TYPE);
-               ;
-    break;}
-case 4:
-#line 218 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_IND); ;
-    break;}
-case 5:
-#line 221 "m2-exp.y"
-{ number_sign = -1; ;
-    break;}
-case 6:
-#line 223 "m2-exp.y"
-{ number_sign = 1;
-                         write_exp_elt_opcode (UNOP_NEG); ;
-    break;}
-case 7:
-#line 228 "m2-exp.y"
-{ write_exp_elt_opcode(UNOP_PLUS); ;
-    break;}
-case 8:
-#line 232 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_LOGICAL_NOT); ;
-    break;}
-case 11:
-#line 240 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_CAP); ;
-    break;}
-case 12:
-#line 244 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_ORD); ;
-    break;}
-case 13:
-#line 248 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_ABS); ;
-    break;}
-case 14:
-#line 252 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_HIGH); ;
-    break;}
-case 15:
-#line 256 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_MIN);
-                         write_exp_elt_type (yyvsp[-1].tval);
-                         write_exp_elt_opcode (UNOP_MIN); ;
-    break;}
-case 16:
-#line 262 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_MAX);
-                         write_exp_elt_type (yyvsp[-1].tval);
-                         write_exp_elt_opcode (UNOP_MIN); ;
-    break;}
-case 17:
-#line 268 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_FLOAT); ;
-    break;}
-case 18:
-#line 272 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_VAL);
-                         write_exp_elt_type (yyvsp[-3].tval);
-                         write_exp_elt_opcode (BINOP_VAL); ;
-    break;}
-case 19:
-#line 278 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_CHR); ;
-    break;}
-case 20:
-#line 282 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_ODD); ;
-    break;}
-case 21:
-#line 286 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_TRUNC); ;
-    break;}
-case 22:
-#line 290 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_SIZEOF); ;
-    break;}
-case 23:
-#line 295 "m2-exp.y"
-{ write_exp_elt_opcode(UNOP_PREINCREMENT); ;
-    break;}
-case 24:
-#line 299 "m2-exp.y"
-{ write_exp_elt_opcode(BINOP_ASSIGN_MODIFY);
-                         write_exp_elt_opcode(BINOP_ADD);
-                         write_exp_elt_opcode(BINOP_ASSIGN_MODIFY); ;
-    break;}
-case 25:
-#line 305 "m2-exp.y"
-{ write_exp_elt_opcode(UNOP_PREDECREMENT);;
-    break;}
-case 26:
-#line 309 "m2-exp.y"
-{ write_exp_elt_opcode(BINOP_ASSIGN_MODIFY);
-                         write_exp_elt_opcode(BINOP_SUB);
-                         write_exp_elt_opcode(BINOP_ASSIGN_MODIFY); ;
-    break;}
-case 27:
-#line 315 "m2-exp.y"
-{ write_exp_elt_opcode (STRUCTOP_STRUCT);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (STRUCTOP_STRUCT); ;
-    break;}
-case 29:
-#line 324 "m2-exp.y"
-{ error("Sets are not implemented.");;
-    break;}
-case 30:
-#line 328 "m2-exp.y"
-{ error("Sets are not implemented.");;
-    break;}
-case 31:
-#line 332 "m2-exp.y"
-{ error("Sets are not implemented.");;
-    break;}
-case 32:
-#line 335 "m2-exp.y"
-{ error("Sets are not implemented.");;
-    break;}
-case 33:
-#line 337 "m2-exp.y"
-{ error("Sets are not implemented.");;
-    break;}
-case 34:
-#line 346 "m2-exp.y"
-{ start_arglist(); ;
-    break;}
-case 35:
-#line 348 "m2-exp.y"
-{ write_exp_elt_opcode (MULTI_SUBSCRIPT);
-                         write_exp_elt_longcst ((LONGEST) end_arglist());
-                         write_exp_elt_opcode (MULTI_SUBSCRIPT); ;
-    break;}
-case 36:
-#line 356 "m2-exp.y"
-{ start_arglist (); ;
-    break;}
-case 37:
-#line 358 "m2-exp.y"
-{ write_exp_elt_opcode (OP_FUNCALL);
-                         write_exp_elt_longcst ((LONGEST) end_arglist ());
-                         write_exp_elt_opcode (OP_FUNCALL); ;
-    break;}
-case 39:
-#line 367 "m2-exp.y"
-{ arglist_len = 1; ;
-    break;}
-case 40:
-#line 371 "m2-exp.y"
-{ arglist_len++; ;
-    break;}
-case 41:
-#line 376 "m2-exp.y"
-{ arglist_len = 1; ;
-    break;}
-case 42:
-#line 381 "m2-exp.y"
-{ arglist_len++; ;
-    break;}
-case 43:
-#line 386 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_MEMVAL);
-                         write_exp_elt_type (yyvsp[-2].tval);
-                         write_exp_elt_opcode (UNOP_MEMVAL); ;
-    break;}
-case 44:
-#line 392 "m2-exp.y"
-{ write_exp_elt_opcode (UNOP_CAST);
-                         write_exp_elt_type (yyvsp[-3].tval);
-                         write_exp_elt_opcode (UNOP_CAST); ;
-    break;}
-case 45:
-#line 398 "m2-exp.y"
-{ ;
-    break;}
-case 46:
-#line 406 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_REPEAT); ;
-    break;}
-case 47:
-#line 410 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_MUL); ;
-    break;}
-case 48:
-#line 414 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_DIV); ;
-    break;}
-case 49:
-#line 418 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_INTDIV); ;
-    break;}
-case 50:
-#line 422 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_REM); ;
-    break;}
-case 51:
-#line 426 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_ADD); ;
-    break;}
-case 52:
-#line 430 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_SUB); ;
-    break;}
-case 53:
-#line 434 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_EQUAL); ;
-    break;}
-case 54:
-#line 438 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
-    break;}
-case 55:
-#line 440 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_NOTEQUAL); ;
-    break;}
-case 56:
-#line 444 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_LEQ); ;
-    break;}
-case 57:
-#line 448 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_GEQ); ;
-    break;}
-case 58:
-#line 452 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_LESS); ;
-    break;}
-case 59:
-#line 456 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_GTR); ;
-    break;}
-case 60:
-#line 460 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_AND); ;
-    break;}
-case 61:
-#line 464 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_LOGICAL_OR); ;
-    break;}
-case 62:
-#line 468 "m2-exp.y"
-{ write_exp_elt_opcode (BINOP_ASSIGN); ;
-    break;}
-case 63:
-#line 475 "m2-exp.y"
-{ write_exp_elt_opcode (OP_BOOL);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
-                         write_exp_elt_opcode (OP_BOOL); ;
-    break;}
-case 64:
-#line 481 "m2-exp.y"
-{ write_exp_elt_opcode (OP_BOOL);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
-                         write_exp_elt_opcode (OP_BOOL); ;
-    break;}
-case 65:
-#line 487 "m2-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_m2_int);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 66:
-#line 494 "m2-exp.y"
-{
-                         write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_m2_card);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
-                         write_exp_elt_opcode (OP_LONG);
-                       ;
-    break;}
-case 67:
-#line 503 "m2-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_m2_char);
-                         write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 68:
-#line 511 "m2-exp.y"
-{ write_exp_elt_opcode (OP_DOUBLE);
-                         write_exp_elt_type (builtin_type_m2_real);
-                         write_exp_elt_dblcst (yyvsp[0].dval);
-                         write_exp_elt_opcode (OP_DOUBLE); ;
-    break;}
-case 70:
-#line 521 "m2-exp.y"
-{ write_exp_elt_opcode (OP_LONG);
-                         write_exp_elt_type (builtin_type_int);
-                         write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
-                         write_exp_elt_opcode (OP_LONG); ;
-    break;}
-case 71:
-#line 528 "m2-exp.y"
-{ write_exp_elt_opcode (OP_M2_STRING);
-                         write_exp_string (yyvsp[0].sval);
-                         write_exp_elt_opcode (OP_M2_STRING); ;
-    break;}
-case 72:
-#line 535 "m2-exp.y"
-{ yyval.bval = SYMBOL_BLOCK_VALUE(yyvsp[0].sym); ;
-    break;}
-case 73:
-#line 539 "m2-exp.y"
-{ struct symbol *sym
-                           = lookup_symbol (copy_name (yyvsp[0].sval), expression_context_block,
-                                            VAR_NAMESPACE, 0, NULL);
-                         yyval.sym = sym;;
-    break;}
-case 74:
-#line 548 "m2-exp.y"
-{ struct symbol *tem
-                           = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
-                                            VAR_NAMESPACE, 0, NULL);
-                         if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
-                           error ("No function \"%s\" in specified context.",
-                                  copy_name (yyvsp[0].sval));
-                         yyval.sym = tem;
-                       ;
-    break;}
-case 75:
-#line 560 "m2-exp.y"
-{ write_exp_elt_opcode(OP_VAR_VALUE);
-                         write_exp_elt_block (NULL);
-                         write_exp_elt_sym (yyvsp[0].sym);
-                         write_exp_elt_opcode (OP_VAR_VALUE); ;
-    break;}
-case 77:
-#line 572 "m2-exp.y"
-{ struct symbol *sym;
-                         sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
-                                              VAR_NAMESPACE, 0, NULL);
-                         if (sym == 0)
-                           error ("No symbol \"%s\" in specified context.",
-                                  copy_name (yyvsp[0].sval));
-
-                         write_exp_elt_opcode (OP_VAR_VALUE);
-                         /* block_found is set by lookup_symbol.  */
-                         write_exp_elt_block (block_found);
-                         write_exp_elt_sym (sym);
-                         write_exp_elt_opcode (OP_VAR_VALUE); ;
-    break;}
-case 78:
-#line 588 "m2-exp.y"
-{ struct symbol *sym;
-                         int is_a_field_of_this;
-
-                         sym = lookup_symbol (copy_name (yyvsp[0].sval),
-                                              expression_context_block,
-                                              VAR_NAMESPACE,
-                                              &is_a_field_of_this,
-                                              NULL);
-                         if (sym)
-                           {
-                             if (symbol_read_needs_frame (sym))
-                               {
-                                 if (innermost_block == 0 ||
-                                     contained_in (block_found, 
-                                                   innermost_block))
-                                   innermost_block = block_found;
-                               }
-
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                             /* We want to use the selected frame, not
-                                another more inner frame which happens to
-                                be in the same block.  */
-                             write_exp_elt_block (NULL);
-                             write_exp_elt_sym (sym);
-                             write_exp_elt_opcode (OP_VAR_VALUE);
-                           }
-                         else
-                           {
-                             struct minimal_symbol *msymbol;
-                             register char *arg = copy_name (yyvsp[0].sval);
-
-                             msymbol =
-                               lookup_minimal_symbol (arg, NULL, NULL);
-                             if (msymbol != NULL)
-                               {
-                                 write_exp_msymbol
-                                   (msymbol,
-                                    lookup_function_type (builtin_type_int),
-                                    builtin_type_int);
-                               }
-                             else if (!have_full_symbols () && !have_partial_symbols ())
-                               error ("No symbol table is loaded.  Use the \"symbol-file\" command.");
-                             else
-                               error ("No symbol \"%s\" in current context.",
-                                      copy_name (yyvsp[0].sval));
-                           }
-                       ;
-    break;}
-case 79:
-#line 639 "m2-exp.y"
-{ yyval.tval = lookup_typename (copy_name (yyvsp[0].sval),
-                                               expression_context_block, 0); ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 498 "/stone/jimb/main-98r2/share/bison.simple"
-\f
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* 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.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-       {
-         int size = 0;
-         char *msg;
-         int x, count;
-
-         count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
-           if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) xmalloc(size + 15);
-         if (msg != 0)
-           {
-             strcpy(msg, "parse error");
-
-             if (count < 5)
-               {
-                 count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
-                   if (yycheck[x + yyn] == x)
-                     {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
-                       count++;
-                     }
-               }
-             yyerror(msg);
-             free(msg);
-           }
-         else
-           yyerror ("parse error; also virtual memory exceeded");
-       }
-      else
-#endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-       YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-}
-#line 644 "m2-exp.y"
-
-
-#if 0  /* FIXME! */
-int
-overflow(a,b)
-   long a,b;
-{
-   return (MAX_OF_TYPE(builtin_type_m2_int) - b) < a;
-}
-
-int
-uoverflow(a,b)
-   unsigned long a,b;
-{
-   return (MAX_OF_TYPE(builtin_type_m2_card) - b) < a;
-}
-#endif /* FIXME */
-
-/* Take care of parsing a number (anything that starts with a digit).
-   Set yylval and return the token type; update lexptr.
-   LEN is the number of characters in it.  */
-
-/*** Needs some error checking for the float case ***/
-
-static int
-parse_number (olen)
-     int olen;
-{
-  register char *p = lexptr;
-  register LONGEST n = 0;
-  register LONGEST prevn = 0;
-  register int c,i,ischar=0;
-  register int base = input_radix;
-  register int len = olen;
-  int unsigned_p = number_sign == 1 ? 1 : 0;
-
-  if(p[len-1] == 'H')
-  {
-     base = 16;
-     len--;
-  }
-  else if(p[len-1] == 'C' || p[len-1] == 'B')
-  {
-     base = 8;
-     ischar = p[len-1] == 'C';
-     len--;
-  }
-
-  /* Scan the number */
-  for (c = 0; c < len; c++)
-  {
-    if (p[c] == '.' && base == 10)
-      {
-       /* It's a float since it contains a point.  */
-       yylval.dval = atof (p);
-       lexptr += len;
-       return FLOAT;
-      }
-    if (p[c] == '.' && base != 10)
-       error("Floating point numbers must be base 10.");
-    if (base == 10 && (p[c] < '0' || p[c] > '9'))
-       error("Invalid digit \'%c\' in number.",p[c]);
- }
-
-  while (len-- > 0)
-    {
-      c = *p++;
-      n *= base;
-      if( base == 8 && (c == '8' || c == '9'))
-        error("Invalid digit \'%c\' in octal number.",c);
-      if (c >= '0' && c <= '9')
-       i = c - '0';
-      else
-       {
-         if (base == 16 && c >= 'A' && c <= 'F')
-           i = c - 'A' + 10;
-         else
-            return ERROR;
-       }
-      n+=i;
-      if(i >= base)
-        return ERROR;
-      if(!unsigned_p && number_sign == 1 && (prevn >= n))
-        unsigned_p=1;          /* Try something unsigned */
-      /* Don't do the range check if n==i and i==0, since that special
-        case will give an overflow error. */
-      if(RANGE_CHECK && n!=i && i)
-      {
-        if((unsigned_p && (unsigned)prevn >= (unsigned)n) ||
-           ((!unsigned_p && number_sign==-1) && -prevn <= -n))
-           range_error("Overflow on numeric constant.");
-      }
-        prevn=n;
-    }
-
-  lexptr = p;
-  if(*p == 'B' || *p == 'C' || *p == 'H')
-     lexptr++;                 /* Advance past B,C or H */
-
-  if (ischar)
-  {
-     yylval.ulval = n;
-     return CHAR;
-  }
-  else if ( unsigned_p && number_sign == 1)
-  {
-     yylval.ulval = n;
-     return UINT;
-  }
-  else if((unsigned_p && (n<0))) {
-     range_error("Overflow on numeric constant -- number too large.");
-     /* But, this can return if range_check == range_warn.  */
-  }
-  yylval.lval = n;
-  return INT;
-}
-
-
-/* Some tokens */
-
-static struct
-{
-   char name[2];
-   int token;
-} tokentab2[] =
-{
-    { {'<', '>'},    NOTEQUAL  },
-    { {':', '='},    ASSIGN    },
-    { {'<', '='},    LEQ       },
-    { {'>', '='},    GEQ       },
-    { {':', ':'},    COLONCOLON },
-
-};
-
-/* Some specific keywords */
-
-struct keyword {
-   char keyw[10];
-   int token;
-};
-
-static struct keyword keytab[] =
-{
-    {"OR" ,   OROR      },
-    {"IN",    IN         },/* Note space after IN */
-    {"AND",   LOGICAL_AND},
-    {"ABS",   ABS       },
-    {"CHR",   CHR       },
-    {"DEC",   DEC       },
-    {"NOT",   NOT       },
-    {"DIV",   DIV       },
-    {"INC",   INC       },
-    {"MAX",   MAX_FUNC  },
-    {"MIN",   MIN_FUNC  },
-    {"MOD",   MOD       },
-    {"ODD",   ODD       },
-    {"CAP",   CAP       },
-    {"ORD",   ORD       },
-    {"VAL",   VAL       },
-    {"EXCL",  EXCL      },
-    {"HIGH",  HIGH       },
-    {"INCL",  INCL      },
-    {"SIZE",  SIZE       },
-    {"FLOAT", FLOAT_FUNC },
-    {"TRUNC", TRUNC     },
-};
-
-
-/* Read one token, getting characters through lexptr.  */
-
-/* This is where we will check to make sure that the language and the operators used are
-   compatible  */
-
-static int
-yylex ()
-{
-  register int c;
-  register int namelen;
-  register int i;
-  register char *tokstart;
-  register char quote;
-
- retry:
-
-  tokstart = lexptr;
-
-
-  /* See if it is a special token of length 2 */
-  for( i = 0 ; i < (int) (sizeof tokentab2 / sizeof tokentab2[0]) ; i++)
-     if(STREQN(tokentab2[i].name, tokstart, 2))
-     {
-       lexptr += 2;
-       return tokentab2[i].token;
-     }
-
-  switch (c = *tokstart)
-    {
-    case 0:
-      return 0;
-
-    case ' ':
-    case '\t':
-    case '\n':
-      lexptr++;
-      goto retry;
-
-    case '(':
-      paren_depth++;
-      lexptr++;
-      return c;
-
-    case ')':
-      if (paren_depth == 0)
-       return 0;
-      paren_depth--;
-      lexptr++;
-      return c;
-
-    case ',':
-      if (comma_terminates && paren_depth == 0)
-       return 0;
-      lexptr++;
-      return c;
-
-    case '.':
-      /* Might be a floating point number.  */
-      if (lexptr[1] >= '0' && lexptr[1] <= '9')
-       break;                  /* Falls into number code.  */
-      else
-      {
-        lexptr++;
-        return DOT;
-      }
-
-/* These are character tokens that appear as-is in the YACC grammar */
-    case '+':
-    case '-':
-    case '*':
-    case '/':
-    case '^':
-    case '<':
-    case '>':
-    case '[':
-    case ']':
-    case '=':
-    case '{':
-    case '}':
-    case '#':
-    case '@':
-    case '~':
-    case '&':
-      lexptr++;
-      return c;
-
-    case '\'' :
-    case '"':
-      quote = c;
-      for (namelen = 1; (c = tokstart[namelen]) != quote && c != '\0'; namelen++)
-       if (c == '\\')
-         {
-           c = tokstart[++namelen];
-           if (c >= '0' && c <= '9')
-             {
-               c = tokstart[++namelen];
-               if (c >= '0' && c <= '9')
-                 c = tokstart[++namelen];
-             }
-         }
-      if(c != quote)
-        error("Unterminated string or character constant.");
-      yylval.sval.ptr = tokstart + 1;
-      yylval.sval.length = namelen - 1;
-      lexptr += namelen + 1;
-
-      if(namelen == 2)         /* Single character */
-      {
-          yylval.ulval = tokstart[1];
-          return CHAR;
-      }
-      else
-        return STRING;
-    }
-
-  /* Is it a number?  */
-  /* Note:  We have already dealt with the case of the token '.'.
-     See case '.' above.  */
-  if ((c >= '0' && c <= '9'))
-    {
-      /* It's a number.  */
-      int got_dot = 0, got_e = 0;
-      register char *p = tokstart;
-      int toktype;
-
-      for (++p ;; ++p)
-       {
-         if (!got_e && (*p == 'e' || *p == 'E'))
-           got_dot = got_e = 1;
-         else if (!got_dot && *p == '.')
-           got_dot = 1;
-         else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
-                  && (*p == '-' || *p == '+'))
-           /* This is the sign of the exponent, not the end of the
-              number.  */
-           continue;
-         else if ((*p < '0' || *p > '9') &&
-                  (*p < 'A' || *p > 'F') &&
-                  (*p != 'H'))  /* Modula-2 hexadecimal number */
-           break;
-       }
-       toktype = parse_number (p - tokstart);
-        if (toktype == ERROR)
-         {
-           char *err_copy = (char *) alloca (p - tokstart + 1);
-
-           memcpy (err_copy, tokstart, p - tokstart);
-           err_copy[p - tokstart] = 0;
-           error ("Invalid number \"%s\".", err_copy);
-         }
-       lexptr = p;
-       return toktype;
-    }
-
-  if (!(c == '_' || c == '$'
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
-    /* We must have come across a bad character (e.g. ';').  */
-    error ("Invalid character '%c' in expression.", c);
-
-  /* It's a name.  See how long it is.  */
-  namelen = 0;
-  for (c = tokstart[namelen];
-       (c == '_' || c == '$' || (c >= '0' && c <= '9')
-       || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
-       c = tokstart[++namelen])
-    ;
-
-  /* The token "if" terminates the expression and is NOT
-     removed from the input stream.  */
-  if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f')
-    {
-      return 0;
-    }
-
-  lexptr += namelen;
-
-  /*  Lookup special keywords */
-  for(i = 0 ; i < (int) (sizeof(keytab) / sizeof(keytab[0])) ; i++)
-     if(namelen == strlen(keytab[i].keyw) && STREQN(tokstart,keytab[i].keyw,namelen))
-          return keytab[i].token;
-
-  yylval.sval.ptr = tokstart;
-  yylval.sval.length = namelen;
-
-  if (*tokstart == '$')
-    {
-      write_dollar_variable (yylval.sval);
-      return INTERNAL_VAR;
-    }
-
-  /* Use token-type BLOCKNAME for symbols that happen to be defined as
-     functions.  If this is not so, then ...
-     Use token-type TYPENAME for symbols that happen to be defined
-     currently as names of types; NAME for other symbols.
-     The caller is not constrained to care about the distinction.  */
- {
-
-
-    char *tmp = copy_name (yylval.sval);
-    struct symbol *sym;
-
-    if (lookup_partial_symtab (tmp))
-      return BLOCKNAME;
-    sym = lookup_symbol (tmp, expression_context_block,
-                        VAR_NAMESPACE, 0, NULL);
-    if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
-      return BLOCKNAME;
-    if (lookup_typename (copy_name (yylval.sval), expression_context_block, 1))
-      return TYPENAME;
-
-    if(sym)
-    {
-       switch(sym->aclass)
-       {
-       case LOC_STATIC:
-       case LOC_REGISTER:
-       case LOC_ARG:
-       case LOC_REF_ARG:
-       case LOC_REGPARM:
-       case LOC_REGPARM_ADDR:
-       case LOC_LOCAL:
-       case LOC_LOCAL_ARG:
-       case LOC_BASEREG:
-       case LOC_BASEREG_ARG:
-       case LOC_CONST:
-       case LOC_CONST_BYTES:
-       case LOC_OPTIMIZED_OUT:
-         return NAME;
-
-       case LOC_TYPEDEF:
-         return TYPENAME;
-
-       case LOC_BLOCK:
-         return BLOCKNAME;
-
-       case LOC_UNDEF:
-         error("internal:  Undefined class in m2lex()");
-
-       case LOC_LABEL:
-       case LOC_UNRESOLVED:
-         error("internal:  Unforseen case in m2lex()");
-       }
-    }
-    else
-    {
-       /* Built-in BOOLEAN type.  This is sort of a hack. */
-       if(STREQN(tokstart,"TRUE",4))
-       {
-         yylval.ulval = 1;
-         return M2_TRUE;
-       }
-       else if(STREQN(tokstart,"FALSE",5))
-       {
-         yylval.ulval = 0;
-         return M2_FALSE;
-       }
-    }
-
-    /* Must be another type of name... */
-    return NAME;
- }
-}
-
-#if 0          /* Unused */
-static char *
-make_qualname(mod,ident)
-   char *mod, *ident;
-{
-   char *new = xmalloc(strlen(mod)+strlen(ident)+2);
-
-   strcpy(new,mod);
-   strcat(new,".");
-   strcat(new,ident);
-   return new;
-}
-#endif  /* 0 */
-
-void
-yyerror (msg)
-     char *msg;
-{
-  error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
-}