| Index: gdb/m2-exp.c
 | 
| diff --git a/gdb/m2-exp.c b/gdb/m2-exp.c
 | 
| deleted file mode 100644
 | 
| index 3b7fd5fbd1992d90863a4627e2f18c683f77d700..0000000000000000000000000000000000000000
 | 
| --- a/gdb/m2-exp.c
 | 
| +++ /dev/null
 | 
| @@ -1,2620 +0,0 @@
 | 
| -/* A Bison parser, made by GNU Bison 1.875c.  */
 | 
| -
 | 
| -/* Skeleton parser for Yacc-like parsing with Bison,
 | 
| -   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 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., 59 Temple Place - Suite 330,
 | 
| -   Boston, MA 02111-1307, 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.  */
 | 
| -
 | 
| -/* Written by Richard Stallman by simplifying the original so called
 | 
| -   ``semantic'' parser.  */
 | 
| -
 | 
| -/* All symbols defined below should begin with yy or YY, to avoid
 | 
| -   infringing on user name space.  This should be done even for local
 | 
| -   variables, as they might otherwise be expanded by user macros.
 | 
| -   There are some unavoidable exceptions within include files to
 | 
| -   define necessary library symbols; they are noted "INFRINGES ON
 | 
| -   USER NAME SPACE" below.  */
 | 
| -
 | 
| -/* Identify Bison output.  */
 | 
| -#define YYBISON 1
 | 
| -
 | 
| -/* Skeleton name.  */
 | 
| -#define YYSKELETON_NAME "yacc.c"
 | 
| -
 | 
| -/* Pure parsers.  */
 | 
| -#define YYPURE 0
 | 
| -
 | 
| -/* Using locations.  */
 | 
| -#define YYLSP_NEEDED 0
 | 
| -
 | 
| -
 | 
| -
 | 
| -/* Tokens.  */
 | 
| -#ifndef YYTOKENTYPE
 | 
| -# define YYTOKENTYPE
 | 
| -   /* Put the tokens into the symbol table, so that GDB and other debuggers
 | 
| -      know about them.  */
 | 
| -   enum yytokentype {
 | 
| -     INT = 258,
 | 
| -     HEX = 259,
 | 
| -     ERROR = 260,
 | 
| -     UINT = 261,
 | 
| -     M2_TRUE = 262,
 | 
| -     M2_FALSE = 263,
 | 
| -     CHAR = 264,
 | 
| -     FLOAT = 265,
 | 
| -     STRING = 266,
 | 
| -     NAME = 267,
 | 
| -     BLOCKNAME = 268,
 | 
| -     IDENT = 269,
 | 
| -     VARNAME = 270,
 | 
| -     TYPENAME = 271,
 | 
| -     SIZE = 272,
 | 
| -     CAP = 273,
 | 
| -     ORD = 274,
 | 
| -     HIGH = 275,
 | 
| -     ABS = 276,
 | 
| -     MIN_FUNC = 277,
 | 
| -     MAX_FUNC = 278,
 | 
| -     FLOAT_FUNC = 279,
 | 
| -     VAL = 280,
 | 
| -     CHR = 281,
 | 
| -     ODD = 282,
 | 
| -     TRUNC = 283,
 | 
| -     TSIZE = 284,
 | 
| -     INC = 285,
 | 
| -     DEC = 286,
 | 
| -     INCL = 287,
 | 
| -     EXCL = 288,
 | 
| -     COLONCOLON = 289,
 | 
| -     INTERNAL_VAR = 290,
 | 
| -     ABOVE_COMMA = 291,
 | 
| -     ASSIGN = 292,
 | 
| -     IN = 293,
 | 
| -     NOTEQUAL = 294,
 | 
| -     GEQ = 295,
 | 
| -     LEQ = 296,
 | 
| -     OROR = 297,
 | 
| -     LOGICAL_AND = 298,
 | 
| -     MOD = 299,
 | 
| -     DIV = 300,
 | 
| -     UNARY = 301,
 | 
| -     DOT = 302,
 | 
| -     NOT = 303,
 | 
| -     QID = 304
 | 
| -   };
 | 
| -#endif
 | 
| -#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 TSIZE 284
 | 
| -#define INC 285
 | 
| -#define DEC 286
 | 
| -#define INCL 287
 | 
| -#define EXCL 288
 | 
| -#define COLONCOLON 289
 | 
| -#define INTERNAL_VAR 290
 | 
| -#define ABOVE_COMMA 291
 | 
| -#define ASSIGN 292
 | 
| -#define IN 293
 | 
| -#define NOTEQUAL 294
 | 
| -#define GEQ 295
 | 
| -#define LEQ 296
 | 
| -#define OROR 297
 | 
| -#define LOGICAL_AND 298
 | 
| -#define MOD 299
 | 
| -#define DIV 300
 | 
| -#define UNARY 301
 | 
| -#define DOT 302
 | 
| -#define NOT 303
 | 
| -#define QID 304
 | 
| -
 | 
| -
 | 
| -
 | 
| -
 | 
| -/* Copy the first part of user declarations.  */
 | 
| -#line 39 "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 */
 | 
| -#include "block.h"
 | 
| -
 | 
| -#define parse_type builtin_type (parse_gdbarch)
 | 
| -#define parse_m2_type builtin_m2_type (parse_gdbarch)
 | 
| -
 | 
| -/* 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 yyname	m2_name		/* With YYDEBUG defined */
 | 
| -#define yyrule	m2_rule		/* 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
 | 
| -#define yyss	m2_yyss
 | 
| -#define yysslim	m2_yysslim
 | 
| -#define yyssp	m2_yyssp
 | 
| -#define yystacksize m2_yystacksize
 | 
| -#define yyvs	m2_yyvs
 | 
| -#define yyvsp	m2_yyvsp
 | 
| -
 | 
| -#ifndef YYDEBUG
 | 
| -#define	YYDEBUG 1		/* Default to yydebug support */
 | 
| -#endif
 | 
| -
 | 
| -#define YYFPRINTF parser_fprintf
 | 
| -
 | 
| -int yyparse (void);
 | 
| -
 | 
| -static int yylex (void);
 | 
| -
 | 
| -void yyerror (char *);
 | 
| -
 | 
| -static int parse_number (int);
 | 
| -
 | 
| -/* The sign of the number being parsed.  */
 | 
| -static int number_sign = 1;
 | 
| -
 | 
| -
 | 
| -
 | 
| -/* Enabling traces.  */
 | 
| -#ifndef YYDEBUG
 | 
| -# define YYDEBUG 0
 | 
| -#endif
 | 
| -
 | 
| -/* Enabling verbose error messages.  */
 | 
| -#ifdef YYERROR_VERBOSE
 | 
| -# undef YYERROR_VERBOSE
 | 
| -# define YYERROR_VERBOSE 1
 | 
| -#else
 | 
| -# define YYERROR_VERBOSE 0
 | 
| -#endif
 | 
| -
 | 
| -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 | 
| -#line 134 "m2-exp.y"
 | 
| -typedef union YYSTYPE {
 | 
| -    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;
 | 
| -/* Line 191 of yacc.c.  */
 | 
| -#line 280 "m2-exp.c"
 | 
| -# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 | 
| -# define YYSTYPE_IS_DECLARED 1
 | 
| -# define YYSTYPE_IS_TRIVIAL 1
 | 
| -#endif
 | 
| -
 | 
| -
 | 
| -
 | 
| -/* Copy the second part of user declarations.  */
 | 
| -
 | 
| -
 | 
| -/* Line 214 of yacc.c.  */
 | 
| -#line 292 "m2-exp.c"
 | 
| -
 | 
| -#if ! defined (yyoverflow) || YYERROR_VERBOSE
 | 
| -
 | 
| -# ifndef YYFREE
 | 
| -#  define YYFREE xfree
 | 
| -# endif
 | 
| -# ifndef YYMALLOC
 | 
| -#  define YYMALLOC xmalloc
 | 
| -# endif
 | 
| -
 | 
| -/* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 | 
| -
 | 
| -# ifdef YYSTACK_USE_ALLOCA
 | 
| -#  if YYSTACK_USE_ALLOCA
 | 
| -#   define YYSTACK_ALLOC alloca
 | 
| -#  endif
 | 
| -# else
 | 
| -#  if defined (alloca) || defined (_ALLOCA_H)
 | 
| -#   define YYSTACK_ALLOC alloca
 | 
| -#  else
 | 
| -#   ifdef __GNUC__
 | 
| -#    define YYSTACK_ALLOC __builtin_alloca
 | 
| -#   endif
 | 
| -#  endif
 | 
| -# endif
 | 
| -
 | 
| -# ifdef YYSTACK_ALLOC
 | 
| -   /* Pacify GCC's `empty if-body' warning. */
 | 
| -#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 | 
| -# else
 | 
| -#  if defined (__STDC__) || defined (__cplusplus)
 | 
| -#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 | 
| -#   define YYSIZE_T size_t
 | 
| -#  endif
 | 
| -#  define YYSTACK_ALLOC YYMALLOC
 | 
| -#  define YYSTACK_FREE YYFREE
 | 
| -# endif
 | 
| -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 | 
| -
 | 
| -
 | 
| -#if (! defined (yyoverflow) \
 | 
| -     && (! defined (__cplusplus) \
 | 
| -	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
 | 
| -
 | 
| -/* A type that is properly aligned for any stack member.  */
 | 
| -union yyalloc
 | 
| -{
 | 
| -  short yyss;
 | 
| -  YYSTYPE yyvs;
 | 
| -  };
 | 
| -
 | 
| -/* The size of the maximum gap between one aligned stack and the next.  */
 | 
| -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
 | 
| -
 | 
| -/* The size of an array large to enough to hold all stacks, each with
 | 
| -   N elements.  */
 | 
| -# define YYSTACK_BYTES(N) \
 | 
| -     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
 | 
| -      + YYSTACK_GAP_MAXIMUM)
 | 
| -
 | 
| -/* Copy COUNT objects from FROM to TO.  The source and destination do
 | 
| -   not overlap.  */
 | 
| -# ifndef YYCOPY
 | 
| -#  if defined (__GNUC__) && 1 < __GNUC__
 | 
| -#   define YYCOPY(To, From, Count) \
 | 
| -      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 | 
| -#  else
 | 
| -#   define YYCOPY(To, From, Count)		\
 | 
| -      do					\
 | 
| -	{					\
 | 
| -	  register YYSIZE_T yyi;		\
 | 
| -	  for (yyi = 0; yyi < (Count); yyi++)	\
 | 
| -	    (To)[yyi] = (From)[yyi];		\
 | 
| -	}					\
 | 
| -      while (0)
 | 
| -#  endif
 | 
| -# endif
 | 
| -
 | 
| -/* Relocate STACK from its old location to the new one.  The
 | 
| -   local variables YYSIZE and YYSTACKSIZE give the old and new number of
 | 
| -   elements in the stack, and YYPTR gives the new location of the
 | 
| -   stack.  Advance YYPTR to a properly aligned location for the next
 | 
| -   stack.  */
 | 
| -# define YYSTACK_RELOCATE(Stack)					\
 | 
| -    do									\
 | 
| -      {									\
 | 
| -	YYSIZE_T yynewbytes;						\
 | 
| -	YYCOPY (&yyptr->Stack, Stack, yysize);				\
 | 
| -	Stack = &yyptr->Stack;						\
 | 
| -	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 | 
| -	yyptr += yynewbytes / sizeof (*yyptr);				\
 | 
| -      }									\
 | 
| -    while (0)
 | 
| -
 | 
| -#endif
 | 
| -
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -   typedef signed char yysigned_char;
 | 
| -#else
 | 
| -   typedef short yysigned_char;
 | 
| -#endif
 | 
| -
 | 
| -/* YYFINAL -- State number of the termination state. */
 | 
| -#define YYFINAL  69
 | 
| -/* YYLAST -- Last index in YYTABLE.  */
 | 
| -#define YYLAST   923
 | 
| -
 | 
| -/* YYNTOKENS -- Number of terminals. */
 | 
| -#define YYNTOKENS  69
 | 
| -/* YYNNTS -- Number of nonterminals. */
 | 
| -#define YYNNTS  15
 | 
| -/* YYNRULES -- Number of rules. */
 | 
| -#define YYNRULES  82
 | 
| -/* YYNRULES -- Number of states. */
 | 
| -#define YYNSTATES  187
 | 
| -
 | 
| -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 | 
| -#define YYUNDEFTOK  2
 | 
| -#define YYMAXUTOK   304
 | 
| -
 | 
| -#define YYTRANSLATE(YYX) 						\
 | 
| -  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 | 
| -
 | 
| -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 | 
| -static const unsigned 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,    42,     2,     2,    48,     2,
 | 
| -      60,    65,    53,    51,    36,    52,     2,    54,     2,     2,
 | 
| -       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 | 
| -      39,    41,    40,     2,    50,     2,     2,     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,    68,    58,     2,     2,     2,     2,     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,     2,    67,    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,
 | 
| -      35,    37,    38,    43,    44,    45,    46,    47,    49,    55,
 | 
| -      56,    57,    61,    63,    64
 | 
| -};
 | 
| -
 | 
| -#if YYDEBUG
 | 
| -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
 | 
| -   YYRHS.  */
 | 
| -static const unsigned short yyprhs[] =
 | 
| -{
 | 
| -       0,     0,     3,     5,     7,     9,    12,    13,    17,    20,
 | 
| -      23,    25,    27,    32,    37,    42,    47,    52,    57,    62,
 | 
| -      69,    74,    79,    84,    89,    92,    97,   104,   109,   116,
 | 
| -     120,   122,   126,   133,   140,   144,   149,   150,   156,   161,
 | 
| -     162,   168,   169,   171,   175,   177,   181,   186,   191,   195,
 | 
| -     199,   203,   207,   211,   215,   219,   223,   227,   231,   235,
 | 
| -     239,   243,   247,   251,   255,   259,   263,   265,   267,   269,
 | 
| -     271,   273,   275,   277,   282,   284,   286,   288,   292,   294,
 | 
| -     296,   300,   302
 | 
| -};
 | 
| -
 | 
| -/* YYRHS -- A `-1'-separated list of the rules' RHS. */
 | 
| -static const yysigned_char yyrhs[] =
 | 
| -{
 | 
| -      70,     0,    -1,    72,    -1,    71,    -1,    83,    -1,    72,
 | 
| -      58,    -1,    -1,    52,    73,    72,    -1,    51,    72,    -1,
 | 
| -      74,    72,    -1,    63,    -1,    62,    -1,    18,    60,    72,
 | 
| -      65,    -1,    19,    60,    72,    65,    -1,    21,    60,    72,
 | 
| -      65,    -1,    20,    60,    72,    65,    -1,    22,    60,    83,
 | 
| -      65,    -1,    23,    60,    83,    65,    -1,    24,    60,    72,
 | 
| -      65,    -1,    25,    60,    83,    36,    72,    65,    -1,    26,
 | 
| -      60,    72,    65,    -1,    27,    60,    72,    65,    -1,    28,
 | 
| -      60,    72,    65,    -1,    29,    60,    72,    65,    -1,    17,
 | 
| -      72,    -1,    30,    60,    72,    65,    -1,    30,    60,    72,
 | 
| -      36,    72,    65,    -1,    31,    60,    72,    65,    -1,    31,
 | 
| -      60,    72,    36,    72,    65,    -1,    72,    61,    12,    -1,
 | 
| -      75,    -1,    72,    43,    75,    -1,    32,    60,    72,    36,
 | 
| -      72,    65,    -1,    33,    60,    72,    36,    72,    65,    -1,
 | 
| -      66,    78,    67,    -1,    83,    66,    78,    67,    -1,    -1,
 | 
| -      72,    59,    76,    79,    68,    -1,    72,    59,    72,    68,
 | 
| -      -1,    -1,    72,    60,    77,    78,    65,    -1,    -1,    72,
 | 
| -      -1,    78,    36,    72,    -1,    72,    -1,    79,    36,    72,
 | 
| -      -1,    66,    83,    67,    72,    -1,    83,    60,    72,    65,
 | 
| -      -1,    60,    72,    65,    -1,    72,    50,    72,    -1,    72,
 | 
| -      53,    72,    -1,    72,    54,    72,    -1,    72,    56,    72,
 | 
| -      -1,    72,    55,    72,    -1,    72,    51,    72,    -1,    72,
 | 
| -      52,    72,    -1,    72,    41,    72,    -1,    72,    44,    72,
 | 
| -      -1,    72,    42,    72,    -1,    72,    46,    72,    -1,    72,
 | 
| -      45,    72,    -1,    72,    39,    72,    -1,    72,    40,    72,
 | 
| -      -1,    72,    49,    72,    -1,    72,    47,    72,    -1,    72,
 | 
| -      38,    72,    -1,     7,    -1,     8,    -1,     3,    -1,     6,
 | 
| -      -1,     9,    -1,    10,    -1,    82,    -1,    17,    60,    83,
 | 
| -      65,    -1,    11,    -1,    81,    -1,    13,    -1,    80,    34,
 | 
| -      13,    -1,    81,    -1,    35,    -1,    80,    34,    12,    -1,
 | 
| -      12,    -1,    16,    -1
 | 
| -};
 | 
| -
 | 
| -/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 | 
| -static const unsigned short yyrline[] =
 | 
| -{
 | 
| -       0,   203,   203,   204,   207,   216,   221,   220,   227,   231,
 | 
| -     235,   236,   239,   243,   247,   251,   255,   261,   267,   271,
 | 
| -     277,   281,   285,   289,   293,   298,   302,   308,   312,   318,
 | 
| -     324,   327,   331,   335,   339,   341,   351,   347,   358,   365,
 | 
| -     362,   372,   375,   379,   384,   389,   394,   400,   406,   414,
 | 
| -     418,   422,   426,   430,   434,   438,   442,   446,   448,   452,
 | 
| -     456,   460,   464,   468,   472,   476,   483,   489,   495,   502,
 | 
| -     511,   519,   526,   529,   536,   543,   547,   556,   568,   576,
 | 
| -     580,   603,   648
 | 
| -};
 | 
| -#endif
 | 
| -
 | 
| -#if YYDEBUG || YYERROR_VERBOSE
 | 
| -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
 | 
| -   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 | 
| -static const char *const yytname[] =
 | 
| -{
 | 
| -  "$end", "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", "TSIZE", "INC",
 | 
| -  "DEC", "INCL", "EXCL", "COLONCOLON", "INTERNAL_VAR", "','",
 | 
| -  "ABOVE_COMMA", "ASSIGN", "'<'", "'>'", "'='", "'#'", "IN", "NOTEQUAL",
 | 
| -  "GEQ", "LEQ", "OROR", "'&'", "LOGICAL_AND", "'@'", "'+'", "'-'", "'*'",
 | 
| -  "'/'", "MOD", "DIV", "UNARY", "'^'", "'['", "'('", "DOT", "'~'", "NOT",
 | 
| -  "QID", "')'", "'{'", "'}'", "']'", "$accept", "start", "type_exp", "exp",
 | 
| -  "@1", "not_exp", "set", "@2", "@3", "arglist", "non_empty_arglist",
 | 
| -  "block", "fblock", "variable", "type", 0
 | 
| -};
 | 
| -#endif
 | 
| -
 | 
| -# ifdef YYPRINT
 | 
| -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
 | 
| -   token YYLEX-NUM.  */
 | 
| -static const unsigned short yytoknum[] =
 | 
| -{
 | 
| -       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
 | 
| -     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
 | 
| -     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
 | 
| -     285,   286,   287,   288,   289,   290,    44,   291,   292,    60,
 | 
| -      62,    61,    35,   293,   294,   295,   296,   297,    38,   298,
 | 
| -      64,    43,    45,    42,    47,   299,   300,   301,    94,    91,
 | 
| -      40,   302,   126,   303,   304,    41,   123,   125,    93
 | 
| -};
 | 
| -# endif
 | 
| -
 | 
| -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 | 
| -static const unsigned char yyr1[] =
 | 
| -{
 | 
| -       0,    69,    70,    70,    71,    72,    73,    72,    72,    72,
 | 
| -      74,    74,    72,    72,    72,    72,    72,    72,    72,    72,
 | 
| -      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
 | 
| -      72,    72,    72,    72,    75,    75,    76,    72,    72,    77,
 | 
| -      72,    78,    78,    78,    79,    79,    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,    80,    81,    81,    82,    82,
 | 
| -      82,    82,    83
 | 
| -};
 | 
| -
 | 
| -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 | 
| -static const unsigned char yyr2[] =
 | 
| -{
 | 
| -       0,     2,     1,     1,     1,     2,     0,     3,     2,     2,
 | 
| -       1,     1,     4,     4,     4,     4,     4,     4,     4,     6,
 | 
| -       4,     4,     4,     4,     2,     4,     6,     4,     6,     3,
 | 
| -       1,     3,     6,     6,     3,     4,     0,     5,     4,     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
 | 
| -};
 | 
| -
 | 
| -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
 | 
| -   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
 | 
| -   means the default is an error.  */
 | 
| -static const unsigned char yydefact[] =
 | 
| -{
 | 
| -       0,    68,    69,    66,    67,    70,    71,    74,    81,    76,
 | 
| -      82,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     0,     0,     0,     0,     0,    79,     0,
 | 
| -       6,     0,    11,    10,    41,     0,     3,     2,     0,    30,
 | 
| -       0,    78,    72,     4,     0,    24,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     8,     0,     0,    42,     0,     0,     1,
 | 
| -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     0,     0,     0,     0,     0,     5,     0,
 | 
| -      39,     0,     9,     0,     0,    41,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 | 
| -       0,     0,     0,     7,    48,     0,    34,     0,    65,    61,
 | 
| -      62,    56,    58,    41,    31,     0,    57,    60,    59,    64,
 | 
| -      63,    49,    54,    55,    50,    51,    53,    52,     0,     0,
 | 
| -      41,    29,    80,    77,     0,     0,    73,    12,    13,    15,
 | 
| -      14,    16,    17,    18,     0,    20,    21,    22,    23,     0,
 | 
| -      25,     0,    27,     0,     0,    43,    46,    38,    44,     0,
 | 
| -       0,    47,    35,     0,     0,     0,     0,     0,     0,    37,
 | 
| -      40,    19,    26,    28,    32,    33,    45
 | 
| -};
 | 
| -
 | 
| -/* YYDEFGOTO[NTERM-NUM]. */
 | 
| -static const short yydefgoto[] =
 | 
| -{
 | 
| -      -1,    35,    36,    66,    64,    38,    39,   139,   140,    67,
 | 
| -     169,    40,    41,    42,    46
 | 
| -};
 | 
| -
 | 
| -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 | 
| -   STATE-NUM.  */
 | 
| -#define YYPACT_NINF -89
 | 
| -static const short yypact[] =
 | 
| -{
 | 
| -     163,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,
 | 
| -     -89,   224,   -54,   -35,   -30,   -20,   -19,   -14,     3,     9,
 | 
| -      15,    30,    31,    32,    33,    35,    36,    37,   -89,   163,
 | 
| -     -89,   163,   -89,   -89,   163,    28,   -89,   838,   163,   -89,
 | 
| -      11,    65,   -89,   -27,   163,     7,   -27,   163,   163,   163,
 | 
| -     163,    84,    84,   163,    84,   163,   163,   163,   163,   163,
 | 
| -     163,   163,   163,     7,   163,   340,   838,   -32,   -40,   -89,
 | 
| -     163,   163,   163,   163,   163,   -15,   163,   163,   163,   163,
 | 
| -     163,   163,   163,   163,   163,   163,   163,   163,   -89,   163,
 | 
| -     -89,    89,     7,    -4,   163,   163,   -23,   368,   396,   424,
 | 
| -     452,    38,    39,   480,    66,   508,   536,   564,   592,   284,
 | 
| -     312,   788,   814,     7,   -89,   163,   -89,   163,   862,   -37,
 | 
| -     -37,   -37,   -37,   163,   -89,    41,   -37,   -37,   -37,    72,
 | 
| -      90,   148,   207,   207,     7,     7,     7,     7,   253,   163,
 | 
| -     163,   -89,   -89,   -89,   620,   -31,   -89,   -89,   -89,   -89,
 | 
| -     -89,   -89,   -89,   -89,   163,   -89,   -89,   -89,   -89,   163,
 | 
| -     -89,   163,   -89,   163,   163,   838,     7,   -89,   838,   -34,
 | 
| -     -33,   -89,   -89,   648,   676,   704,   732,   760,   163,   -89,
 | 
| -     -89,   -89,   -89,   -89,   -89,   -89,   838
 | 
| -};
 | 
| -
 | 
| -/* YYPGOTO[NTERM-NUM].  */
 | 
| -static const yysigned_char yypgoto[] =
 | 
| -{
 | 
| -     -89,   -89,   -89,     0,   -89,   -89,    34,   -89,   -89,   -88,
 | 
| -     -89,   -89,   -89,   -89,    54
 | 
| -};
 | 
| -
 | 
| -/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
 | 
| -   positive, shift that token.  If negative, reduce the rule which
 | 
| -   number is the opposite.  If zero, do what YYDEFACT says.
 | 
| -   If YYTABLE_NINF, syntax error.  */
 | 
| -#define YYTABLE_NINF -76
 | 
| -static const short yytable[] =
 | 
| -{
 | 
| -      37,    10,   178,   115,   115,   115,    47,   145,   142,   143,
 | 
| -      79,    45,    80,    81,    82,    83,    84,    85,    86,    87,
 | 
| -      94,    88,    89,    90,    91,    48,    95,   117,    69,    63,
 | 
| -      49,    65,   180,    94,   179,   116,   172,    94,    92,    95,
 | 
| -      50,    51,   146,    95,    65,    93,    52,    97,    98,    99,
 | 
| -     100,   123,   170,   103,    43,   105,   106,   107,   108,   109,
 | 
| -     110,   111,   112,    53,   113,    88,    89,    90,    91,    54,
 | 
| -     118,   119,   120,   121,   122,    55,   126,   127,   128,   129,
 | 
| -     130,   131,   132,   133,   134,   135,   136,   137,    68,   138,
 | 
| -      56,    57,    58,    59,   144,    60,    61,    62,    96,   -75,
 | 
| -      10,   141,   154,   151,   152,   101,   102,    95,   104,   124,
 | 
| -       0,     0,     0,     0,     0,   165,     0,   166,     0,     0,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,   125,
 | 
| -      88,    89,    90,    91,     0,     0,     0,     0,     0,   168,
 | 
| -      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
 | 
| -      90,    91,     0,     0,   173,     0,     0,     0,     0,   174,
 | 
| -       0,   175,     0,   176,   177,     0,     1,     0,     0,     2,
 | 
| -       3,     4,     5,     6,     7,     8,     9,     0,   186,    10,
 | 
| -      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
 | 
| -      21,    22,    23,    24,    25,    26,    27,     0,    28,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -       0,     0,     0,     0,    29,    30,     0,     0,     0,     0,
 | 
| -       0,     0,     0,    31,     0,    32,    33,     1,     0,    34,
 | 
| -       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,    27,     0,    28,
 | 
| -      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
 | 
| -       0,     0,     0,     0,     0,    29,    30,     0,     0,     0,
 | 
| -       0,     0,     0,     0,    44,     0,    32,    33,     0,     0,
 | 
| -      34,    70,    71,    72,    73,    74,    75,    76,    77,    78,
 | 
| -      79,     0,    80,    81,    82,    83,    84,    85,    86,    87,
 | 
| -       0,    88,    89,    90,    91,     0,     0,     0,     0,     0,
 | 
| -     159,   167,    70,    71,    72,    73,    74,    75,    76,    77,
 | 
| -      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
 | 
| -      87,     0,    88,    89,    90,    91,     0,     0,   161,   160,
 | 
| -      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
 | 
| -      88,    89,    90,    91,     0,     0,     0,   162,    70,    71,
 | 
| -      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
 | 
| -      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
 | 
| -      90,    91,     0,     0,     0,   114,    70,    71,    72,    73,
 | 
| -      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -       0,     0,     0,   147,    70,    71,    72,    73,    74,    75,
 | 
| -      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
 | 
| -      85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
 | 
| -       0,   148,    70,    71,    72,    73,    74,    75,    76,    77,
 | 
| -      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
 | 
| -      87,     0,    88,    89,    90,    91,     0,     0,     0,   149,
 | 
| -      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
 | 
| -      88,    89,    90,    91,     0,     0,     0,   150,    70,    71,
 | 
| -      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
 | 
| -      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
 | 
| -      90,    91,     0,     0,     0,   153,    70,    71,    72,    73,
 | 
| -      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -       0,     0,     0,   155,    70,    71,    72,    73,    74,    75,
 | 
| -      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
 | 
| -      85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
 | 
| -       0,   156,    70,    71,    72,    73,    74,    75,    76,    77,
 | 
| -      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
 | 
| -      87,     0,    88,    89,    90,    91,     0,     0,     0,   157,
 | 
| -      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
 | 
| -      88,    89,    90,    91,     0,     0,     0,   158,    70,    71,
 | 
| -      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
 | 
| -      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
 | 
| -      90,    91,     0,     0,     0,   171,    70,    71,    72,    73,
 | 
| -      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -       0,     0,     0,   181,    70,    71,    72,    73,    74,    75,
 | 
| -      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
 | 
| -      85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
 | 
| -       0,   182,    70,    71,    72,    73,    74,    75,    76,    77,
 | 
| -      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
 | 
| -      87,     0,    88,    89,    90,    91,     0,     0,     0,   183,
 | 
| -      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
 | 
| -      88,    89,    90,    91,     0,     0,     0,   184,    70,    71,
 | 
| -      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
 | 
| -      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
 | 
| -      90,    91,     0,     0,   163,   185,    70,    71,    72,    73,
 | 
| -      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -     164,     0,    70,    71,    72,    73,    74,    75,    76,    77,
 | 
| -      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
 | 
| -      87,     0,    88,    89,    90,    91,    70,    71,    72,    73,
 | 
| -      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
 | 
| -      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
 | 
| -     -76,    71,    72,    73,    74,    75,    76,    77,    78,    79,
 | 
| -       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
 | 
| -      88,    89,    90,    91
 | 
| -};
 | 
| -
 | 
| -static const short yycheck[] =
 | 
| -{
 | 
| -       0,    16,    36,    36,    36,    36,    60,    95,    12,    13,
 | 
| -      47,    11,    49,    50,    51,    52,    53,    54,    55,    56,
 | 
| -      60,    58,    59,    60,    61,    60,    66,    67,     0,    29,
 | 
| -      60,    31,    65,    60,    68,    67,    67,    60,    38,    66,
 | 
| -      60,    60,    65,    66,    44,    34,    60,    47,    48,    49,
 | 
| -      50,    66,   140,    53,     0,    55,    56,    57,    58,    59,
 | 
| -      60,    61,    62,    60,    64,    58,    59,    60,    61,    60,
 | 
| -      70,    71,    72,    73,    74,    60,    76,    77,    78,    79,
 | 
| -      80,    81,    82,    83,    84,    85,    86,    87,    34,    89,
 | 
| -      60,    60,    60,    60,    94,    60,    60,    60,    44,    34,
 | 
| -      16,    12,    36,    65,    65,    51,    52,    66,    54,    75,
 | 
| -      -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    75,
 | 
| -      58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,   139,
 | 
| -      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
 | 
| -      60,    61,    -1,    -1,   154,    -1,    -1,    -1,    -1,   159,
 | 
| -      -1,   161,    -1,   163,   164,    -1,     3,    -1,    -1,     6,
 | 
| -       7,     8,     9,    10,    11,    12,    13,    -1,   178,    16,
 | 
| -      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
 | 
| -      27,    28,    29,    30,    31,    32,    33,    -1,    35,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
 | 
| -      -1,    -1,    -1,    60,    -1,    62,    63,     3,    -1,    66,
 | 
| -       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,    33,    -1,    35,
 | 
| -      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
 | 
| -      -1,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,
 | 
| -      -1,    -1,    -1,    -1,    60,    -1,    62,    63,    -1,    -1,
 | 
| -      66,    38,    39,    40,    41,    42,    43,    44,    45,    46,
 | 
| -      47,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
 | 
| -      -1,    58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
 | 
| -      36,    68,    38,    39,    40,    41,    42,    43,    44,    45,
 | 
| -      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
 | 
| -      56,    -1,    58,    59,    60,    61,    -1,    -1,    36,    65,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
 | 
| -      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
 | 
| -      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
 | 
| -      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
 | 
| -      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
 | 
| -      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
 | 
| -      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
 | 
| -      54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
 | 
| -      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
 | 
| -      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
 | 
| -      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
 | 
| -      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
 | 
| -      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
 | 
| -      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
 | 
| -      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
 | 
| -      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
 | 
| -      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
 | 
| -      54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
 | 
| -      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
 | 
| -      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
 | 
| -      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
 | 
| -      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
 | 
| -      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
 | 
| -      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
 | 
| -      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
 | 
| -      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
 | 
| -      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
 | 
| -      54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
 | 
| -      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
 | 
| -      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
 | 
| -      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
 | 
| -      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
 | 
| -      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
 | 
| -      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
 | 
| -      60,    61,    -1,    -1,    36,    65,    38,    39,    40,    41,
 | 
| -      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      36,    -1,    38,    39,    40,    41,    42,    43,    44,    45,
 | 
| -      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
 | 
| -      56,    -1,    58,    59,    60,    61,    38,    39,    40,    41,
 | 
| -      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
 | 
| -      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
 | 
| -      58,    59,    60,    61
 | 
| -};
 | 
| -
 | 
| -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
 | 
| -   symbol of state STATE-NUM.  */
 | 
| -static const unsigned char yystos[] =
 | 
| -{
 | 
| -       0,     3,     6,     7,     8,     9,    10,    11,    12,    13,
 | 
| -      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
 | 
| -      26,    27,    28,    29,    30,    31,    32,    33,    35,    51,
 | 
| -      52,    60,    62,    63,    66,    70,    71,    72,    74,    75,
 | 
| -      80,    81,    82,    83,    60,    72,    83,    60,    60,    60,
 | 
| -      60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
 | 
| -      60,    60,    60,    72,    73,    72,    72,    78,    83,     0,
 | 
| -      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
 | 
| -      49,    50,    51,    52,    53,    54,    55,    56,    58,    59,
 | 
| -      60,    61,    72,    34,    60,    66,    83,    72,    72,    72,
 | 
| -      72,    83,    83,    72,    83,    72,    72,    72,    72,    72,
 | 
| -      72,    72,    72,    72,    65,    36,    67,    67,    72,    72,
 | 
| -      72,    72,    72,    66,    75,    83,    72,    72,    72,    72,
 | 
| -      72,    72,    72,    72,    72,    72,    72,    72,    72,    76,
 | 
| -      77,    12,    12,    13,    72,    78,    65,    65,    65,    65,
 | 
| -      65,    65,    65,    65,    36,    65,    65,    65,    65,    36,
 | 
| -      65,    36,    65,    36,    36,    72,    72,    68,    72,    79,
 | 
| -      78,    65,    67,    72,    72,    72,    72,    72,    36,    68,
 | 
| -      65,    65,    65,    65,    65,    65,    72
 | 
| -};
 | 
| -
 | 
| -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 | 
| -# define YYSIZE_T __SIZE_TYPE__
 | 
| -#endif
 | 
| -#if ! defined (YYSIZE_T) && defined (size_t)
 | 
| -# define YYSIZE_T size_t
 | 
| -#endif
 | 
| -#if ! defined (YYSIZE_T)
 | 
| -# if defined (__STDC__) || defined (__cplusplus)
 | 
| -#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 | 
| -#  define YYSIZE_T size_t
 | 
| -# endif
 | 
| -#endif
 | 
| -#if ! defined (YYSIZE_T)
 | 
| -# define YYSIZE_T unsigned int
 | 
| -#endif
 | 
| -
 | 
| -#define yyerrok		(yyerrstatus = 0)
 | 
| -#define yyclearin	(yychar = YYEMPTY)
 | 
| -#define YYEMPTY		(-2)
 | 
| -#define YYEOF		0
 | 
| -
 | 
| -#define YYACCEPT	goto yyacceptlab
 | 
| -#define YYABORT		goto yyabortlab
 | 
| -#define YYERROR		goto yyerrorlab
 | 
| -
 | 
| -
 | 
| -/* 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);						\
 | 
| -      yytoken = YYTRANSLATE (yychar);				\
 | 
| -      YYPOPSTACK;						\
 | 
| -      goto yybackup;						\
 | 
| -    }								\
 | 
| -  else								\
 | 
| -    { 								\
 | 
| -      yyerror ("syntax error: cannot back up");\
 | 
| -      YYERROR;							\
 | 
| -    }								\
 | 
| -while (0)
 | 
| -
 | 
| -#define YYTERROR	1
 | 
| -#define YYERRCODE	256
 | 
| -
 | 
| -/* YYLLOC_DEFAULT -- Compute the default location (before the actions
 | 
| -   are run).  */
 | 
| -
 | 
| -#ifndef YYLLOC_DEFAULT
 | 
| -# define YYLLOC_DEFAULT(Current, Rhs, N)		\
 | 
| -   ((Current).first_line   = (Rhs)[1].first_line,	\
 | 
| -    (Current).first_column = (Rhs)[1].first_column,	\
 | 
| -    (Current).last_line    = (Rhs)[N].last_line,	\
 | 
| -    (Current).last_column  = (Rhs)[N].last_column)
 | 
| -#endif
 | 
| -
 | 
| -/* YYLEX -- calling `yylex' with the right arguments.  */
 | 
| -
 | 
| -#ifdef YYLEX_PARAM
 | 
| -# define YYLEX yylex (YYLEX_PARAM)
 | 
| -#else
 | 
| -# define YYLEX yylex ()
 | 
| -#endif
 | 
| -
 | 
| -/* Enable debugging if requested.  */
 | 
| -#if YYDEBUG
 | 
| -
 | 
| -# ifndef YYFPRINTF
 | 
| -#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
 | 
| -#  define YYFPRINTF fprintf
 | 
| -# endif
 | 
| -
 | 
| -# define YYDPRINTF(Args)			\
 | 
| -do {						\
 | 
| -  if (yydebug)					\
 | 
| -    YYFPRINTF Args;				\
 | 
| -} while (0)
 | 
| -
 | 
| -# define YYDSYMPRINT(Args)			\
 | 
| -do {						\
 | 
| -  if (yydebug)					\
 | 
| -    yysymprint Args;				\
 | 
| -} while (0)
 | 
| -
 | 
| -# define YYDSYMPRINTF(Title, Token, Value, Location)		\
 | 
| -do {								\
 | 
| -  if (yydebug)							\
 | 
| -    {								\
 | 
| -      YYFPRINTF (stderr, "%s ", Title);				\
 | 
| -      yysymprint (stderr, 					\
 | 
| -                  Token, Value);	\
 | 
| -      YYFPRINTF (stderr, "\n");					\
 | 
| -    }								\
 | 
| -} while (0)
 | 
| -
 | 
| -/*------------------------------------------------------------------.
 | 
| -| yy_stack_print -- Print the state stack from its BOTTOM up to its |
 | 
| -| TOP (included).                                                   |
 | 
| -`------------------------------------------------------------------*/
 | 
| -
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -static void
 | 
| -yy_stack_print (short *bottom, short *top)
 | 
| -#else
 | 
| -static void
 | 
| -yy_stack_print (bottom, top)
 | 
| -    short *bottom;
 | 
| -    short *top;
 | 
| -#endif
 | 
| -{
 | 
| -  YYFPRINTF (stderr, "Stack now");
 | 
| -  for (/* Nothing. */; bottom <= top; ++bottom)
 | 
| -    YYFPRINTF (stderr, " %d", *bottom);
 | 
| -  YYFPRINTF (stderr, "\n");
 | 
| -}
 | 
| -
 | 
| -# define YY_STACK_PRINT(Bottom, Top)				\
 | 
| -do {								\
 | 
| -  if (yydebug)							\
 | 
| -    yy_stack_print ((Bottom), (Top));				\
 | 
| -} while (0)
 | 
| -
 | 
| -
 | 
| -/*------------------------------------------------.
 | 
| -| Report that the YYRULE is going to be reduced.  |
 | 
| -`------------------------------------------------*/
 | 
| -
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -static void
 | 
| -yy_reduce_print (int yyrule)
 | 
| -#else
 | 
| -static void
 | 
| -yy_reduce_print (yyrule)
 | 
| -    int yyrule;
 | 
| -#endif
 | 
| -{
 | 
| -  int yyi;
 | 
| -  unsigned int yylno = yyrline[yyrule];
 | 
| -  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
 | 
| -             yyrule - 1, yylno);
 | 
| -  /* Print the symbols being reduced, and their result.  */
 | 
| -  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
 | 
| -    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
 | 
| -  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
 | 
| -}
 | 
| -
 | 
| -# define YY_REDUCE_PRINT(Rule)		\
 | 
| -do {					\
 | 
| -  if (yydebug)				\
 | 
| -    yy_reduce_print (Rule);		\
 | 
| -} while (0)
 | 
| -
 | 
| -/* Nonzero means print parse trace.  It is left uninitialized so that
 | 
| -   multiple parsers can coexist.  */
 | 
| -int yydebug;
 | 
| -#else /* !YYDEBUG */
 | 
| -# define YYDPRINTF(Args)
 | 
| -# define YYDSYMPRINT(Args)
 | 
| -# define YYDSYMPRINTF(Title, Token, Value, Location)
 | 
| -# define YY_STACK_PRINT(Bottom, Top)
 | 
| -# define YY_REDUCE_PRINT(Rule)
 | 
| -#endif /* !YYDEBUG */
 | 
| -
 | 
| -
 | 
| -/* YYINITDEPTH -- initial size of the parser's stacks.  */
 | 
| -#ifndef	YYINITDEPTH
 | 
| -# define YYINITDEPTH 200
 | 
| -#endif
 | 
| -
 | 
| -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
 | 
| -   if the built-in stack extension method is used).
 | 
| -
 | 
| -   Do not make this value too large; the results are undefined if
 | 
| -   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
 | 
| -   evaluated with infinite-precision integer arithmetic.  */
 | 
| -
 | 
| -#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
 | 
| -# undef YYMAXDEPTH
 | 
| -#endif
 | 
| -
 | 
| -#ifndef YYMAXDEPTH
 | 
| -# define YYMAXDEPTH 10000
 | 
| -#endif
 | 
| -
 | 
| -
 | 
| -
 | 
| -#if YYERROR_VERBOSE
 | 
| -
 | 
| -# ifndef yystrlen
 | 
| -#  if defined (__GLIBC__) && defined (_STRING_H)
 | 
| -#   define yystrlen strlen
 | 
| -#  else
 | 
| -/* Return the length of YYSTR.  */
 | 
| -static YYSIZE_T
 | 
| -#   if defined (__STDC__) || defined (__cplusplus)
 | 
| -yystrlen (const char *yystr)
 | 
| -#   else
 | 
| -yystrlen (yystr)
 | 
| -     const char *yystr;
 | 
| -#   endif
 | 
| -{
 | 
| -  register const char *yys = yystr;
 | 
| -
 | 
| -  while (*yys++ != '\0')
 | 
| -    continue;
 | 
| -
 | 
| -  return yys - yystr - 1;
 | 
| -}
 | 
| -#  endif
 | 
| -# endif
 | 
| -
 | 
| -# ifndef yystpcpy
 | 
| -#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
 | 
| -#   define yystpcpy stpcpy
 | 
| -#  else
 | 
| -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
 | 
| -   YYDEST.  */
 | 
| -static char *
 | 
| -#   if defined (__STDC__) || defined (__cplusplus)
 | 
| -yystpcpy (char *yydest, const char *yysrc)
 | 
| -#   else
 | 
| -yystpcpy (yydest, yysrc)
 | 
| -     char *yydest;
 | 
| -     const char *yysrc;
 | 
| -#   endif
 | 
| -{
 | 
| -  register char *yyd = yydest;
 | 
| -  register const char *yys = yysrc;
 | 
| -
 | 
| -  while ((*yyd++ = *yys++) != '\0')
 | 
| -    continue;
 | 
| -
 | 
| -  return yyd - 1;
 | 
| -}
 | 
| -#  endif
 | 
| -# endif
 | 
| -
 | 
| -#endif /* !YYERROR_VERBOSE */
 | 
| -
 | 
| -
 | 
| -
 | 
| -#if YYDEBUG
 | 
| -/*--------------------------------.
 | 
| -| Print this symbol on YYOUTPUT.  |
 | 
| -`--------------------------------*/
 | 
| -
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -static void
 | 
| -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
 | 
| -#else
 | 
| -static void
 | 
| -yysymprint (yyoutput, yytype, yyvaluep)
 | 
| -    FILE *yyoutput;
 | 
| -    int yytype;
 | 
| -    YYSTYPE *yyvaluep;
 | 
| -#endif
 | 
| -{
 | 
| -  /* Pacify ``unused variable'' warnings.  */
 | 
| -  (void) yyvaluep;
 | 
| -
 | 
| -  if (yytype < YYNTOKENS)
 | 
| -    {
 | 
| -      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
 | 
| -# ifdef YYPRINT
 | 
| -      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
 | 
| -# endif
 | 
| -    }
 | 
| -  else
 | 
| -    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 | 
| -
 | 
| -  switch (yytype)
 | 
| -    {
 | 
| -      default:
 | 
| -        break;
 | 
| -    }
 | 
| -  YYFPRINTF (yyoutput, ")");
 | 
| -}
 | 
| -
 | 
| -#endif /* ! YYDEBUG */
 | 
| -/*-----------------------------------------------.
 | 
| -| Release the memory associated to this symbol.  |
 | 
| -`-----------------------------------------------*/
 | 
| -
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -static void
 | 
| -yydestruct (int yytype, YYSTYPE *yyvaluep)
 | 
| -#else
 | 
| -static void
 | 
| -yydestruct (yytype, yyvaluep)
 | 
| -    int yytype;
 | 
| -    YYSTYPE *yyvaluep;
 | 
| -#endif
 | 
| -{
 | 
| -  /* Pacify ``unused variable'' warnings.  */
 | 
| -  (void) yyvaluep;
 | 
| -
 | 
| -  switch (yytype)
 | 
| -    {
 | 
| -
 | 
| -      default:
 | 
| -        break;
 | 
| -    }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -/* Prevent warnings from -Wmissing-prototypes.  */
 | 
| -
 | 
| -#ifdef YYPARSE_PARAM
 | 
| -# if defined (__STDC__) || defined (__cplusplus)
 | 
| -int yyparse (void *YYPARSE_PARAM);
 | 
| -# else
 | 
| -int yyparse ();
 | 
| -# endif
 | 
| -#else /* ! YYPARSE_PARAM */
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -int yyparse (void);
 | 
| -#else
 | 
| -int yyparse ();
 | 
| -#endif
 | 
| -#endif /* ! YYPARSE_PARAM */
 | 
| -
 | 
| -
 | 
| -
 | 
| -/* The lookahead symbol.  */
 | 
| -int yychar;
 | 
| -
 | 
| -/* The semantic value of the lookahead symbol.  */
 | 
| -YYSTYPE yylval;
 | 
| -
 | 
| -/* Number of syntax errors so far.  */
 | 
| -int yynerrs;
 | 
| -
 | 
| -
 | 
| -
 | 
| -/*----------.
 | 
| -| yyparse.  |
 | 
| -`----------*/
 | 
| -
 | 
| -#ifdef YYPARSE_PARAM
 | 
| -# if defined (__STDC__) || defined (__cplusplus)
 | 
| -int yyparse (void *YYPARSE_PARAM)
 | 
| -# else
 | 
| -int yyparse (YYPARSE_PARAM)
 | 
| -  void *YYPARSE_PARAM;
 | 
| -# endif
 | 
| -#else /* ! YYPARSE_PARAM */
 | 
| -#if defined (__STDC__) || defined (__cplusplus)
 | 
| -int
 | 
| -yyparse (void)
 | 
| -#else
 | 
| -int
 | 
| -yyparse ()
 | 
| -
 | 
| -#endif
 | 
| -#endif
 | 
| -{
 | 
| -  
 | 
| -  register int yystate;
 | 
| -  register int yyn;
 | 
| -  int yyresult;
 | 
| -  /* Number of tokens to shift before error messages enabled.  */
 | 
| -  int yyerrstatus;
 | 
| -  /* Lookahead token as an internal (translated) token number.  */
 | 
| -  int yytoken = 0;
 | 
| -
 | 
| -  /* Three stacks and their tools:
 | 
| -     `yyss': related to states,
 | 
| -     `yyvs': related to semantic values,
 | 
| -     `yyls': related to locations.
 | 
| -
 | 
| -     Refer to the stacks thru separate pointers, to allow yyoverflow
 | 
| -     to xreallocate them elsewhere.  */
 | 
| -
 | 
| -  /* The state stack.  */
 | 
| -  short	yyssa[YYINITDEPTH];
 | 
| -  short *yyss = yyssa;
 | 
| -  register short *yyssp;
 | 
| -
 | 
| -  /* The semantic value stack.  */
 | 
| -  YYSTYPE yyvsa[YYINITDEPTH];
 | 
| -  YYSTYPE *yyvs = yyvsa;
 | 
| -  register YYSTYPE *yyvsp;
 | 
| -
 | 
| -
 | 
| -
 | 
| -#define YYPOPSTACK   (yyvsp--, yyssp--)
 | 
| -
 | 
| -  YYSIZE_T yystacksize = YYINITDEPTH;
 | 
| -
 | 
| -  /* The variables used to return semantic value and location from the
 | 
| -     action routines.  */
 | 
| -  YYSTYPE yyval;
 | 
| -
 | 
| -
 | 
| -  /* When reducing, the number of symbols on the RHS of the reduced
 | 
| -     rule.  */
 | 
| -  int yylen;
 | 
| -
 | 
| -  YYDPRINTF ((stderr, "Starting parse\n"));
 | 
| -
 | 
| -  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;
 | 
| -  yyvsp = yyvs;
 | 
| -
 | 
| -  goto yysetstate;
 | 
| -
 | 
| -/*------------------------------------------------------------.
 | 
| -| yynewstate -- Push a new state, which is found in yystate.  |
 | 
| -`------------------------------------------------------------*/
 | 
| - yynewstate:
 | 
| -  /* In all cases, when you get here, the value and location stacks
 | 
| -     have just been pushed. so pushing a state here evens the stacks.
 | 
| -     */
 | 
| -  yyssp++;
 | 
| -
 | 
| - yysetstate:
 | 
| -  *yyssp = yystate;
 | 
| -
 | 
| -  if (yyss + yystacksize - 1 <= yyssp)
 | 
| -    {
 | 
| -      /* Get the current used size of the three stacks, in elements.  */
 | 
| -      YYSIZE_T yysize = yyssp - yyss + 1;
 | 
| -
 | 
| -#ifdef yyoverflow
 | 
| -      {
 | 
| -	/* 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;
 | 
| -
 | 
| -
 | 
| -	/* Each stack pointer address is followed by the size of the
 | 
| -	   data in use in that stack, in bytes.  This used to be a
 | 
| -	   conditional around just the two extra args, but that might
 | 
| -	   be undefined if yyoverflow is a macro.  */
 | 
| -	yyoverflow ("parser stack overflow",
 | 
| -		    &yyss1, yysize * sizeof (*yyssp),
 | 
| -		    &yyvs1, yysize * sizeof (*yyvsp),
 | 
| -
 | 
| -		    &yystacksize);
 | 
| -
 | 
| -	yyss = yyss1;
 | 
| -	yyvs = yyvs1;
 | 
| -      }
 | 
| -#else /* no yyoverflow */
 | 
| -# ifndef YYSTACK_RELOCATE
 | 
| -      goto yyoverflowlab;
 | 
| -# else
 | 
| -      /* Extend the stack our own way.  */
 | 
| -      if (YYMAXDEPTH <= yystacksize)
 | 
| -	goto yyoverflowlab;
 | 
| -      yystacksize *= 2;
 | 
| -      if (YYMAXDEPTH < yystacksize)
 | 
| -	yystacksize = YYMAXDEPTH;
 | 
| -
 | 
| -      {
 | 
| -	short *yyss1 = yyss;
 | 
| -	union yyalloc *yyptr =
 | 
| -	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 | 
| -	if (! yyptr)
 | 
| -	  goto yyoverflowlab;
 | 
| -	YYSTACK_RELOCATE (yyss);
 | 
| -	YYSTACK_RELOCATE (yyvs);
 | 
| -
 | 
| -#  undef YYSTACK_RELOCATE
 | 
| -	if (yyss1 != yyssa)
 | 
| -	  YYSTACK_FREE (yyss1);
 | 
| -      }
 | 
| -# endif
 | 
| -#endif /* no yyoverflow */
 | 
| -
 | 
| -      yyssp = yyss + yysize - 1;
 | 
| -      yyvsp = yyvs + yysize - 1;
 | 
| -
 | 
| -
 | 
| -      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 | 
| -		  (unsigned long int) yystacksize));
 | 
| -
 | 
| -      if (yyss + yystacksize - 1 <= yyssp)
 | 
| -	YYABORT;
 | 
| -    }
 | 
| -
 | 
| -  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 | 
| -
 | 
| -  goto yybackup;
 | 
| -
 | 
| -/*-----------.
 | 
| -| 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 == YYPACT_NINF)
 | 
| -    goto yydefault;
 | 
| -
 | 
| -  /* Not known => get a lookahead token if don't already have one.  */
 | 
| -
 | 
| -  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
 | 
| -  if (yychar == YYEMPTY)
 | 
| -    {
 | 
| -      YYDPRINTF ((stderr, "Reading a token: "));
 | 
| -      yychar = YYLEX;
 | 
| -    }
 | 
| -
 | 
| -  if (yychar <= YYEOF)
 | 
| -    {
 | 
| -      yychar = yytoken = YYEOF;
 | 
| -      YYDPRINTF ((stderr, "Now at end of input.\n"));
 | 
| -    }
 | 
| -  else
 | 
| -    {
 | 
| -      yytoken = YYTRANSLATE (yychar);
 | 
| -      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
 | 
| -    }
 | 
| -
 | 
| -  /* If the proper action on seeing token YYTOKEN is to reduce or to
 | 
| -     detect an error, take that action.  */
 | 
| -  yyn += yytoken;
 | 
| -  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
 | 
| -    goto yydefault;
 | 
| -  yyn = yytable[yyn];
 | 
| -  if (yyn <= 0)
 | 
| -    {
 | 
| -      if (yyn == 0 || yyn == YYTABLE_NINF)
 | 
| -	goto yyerrlab;
 | 
| -      yyn = -yyn;
 | 
| -      goto yyreduce;
 | 
| -    }
 | 
| -
 | 
| -  if (yyn == YYFINAL)
 | 
| -    YYACCEPT;
 | 
| -
 | 
| -  /* Shift the lookahead token.  */
 | 
| -  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
 | 
| -
 | 
| -  /* Discard the token being shifted unless it is eof.  */
 | 
| -  if (yychar != YYEOF)
 | 
| -    yychar = YYEMPTY;
 | 
| -
 | 
| -  *++yyvsp = yylval;
 | 
| -
 | 
| -
 | 
| -  /* Count tokens shifted since error; after three, turn off error
 | 
| -     status.  */
 | 
| -  if (yyerrstatus)
 | 
| -    yyerrstatus--;
 | 
| -
 | 
| -  yystate = yyn;
 | 
| -  goto yynewstate;
 | 
| -
 | 
| -
 | 
| -/*-----------------------------------------------------------.
 | 
| -| yydefault -- do the default action for the current state.  |
 | 
| -`-----------------------------------------------------------*/
 | 
| -yydefault:
 | 
| -  yyn = yydefact[yystate];
 | 
| -  if (yyn == 0)
 | 
| -    goto yyerrlab;
 | 
| -  goto yyreduce;
 | 
| -
 | 
| -
 | 
| -/*-----------------------------.
 | 
| -| yyreduce -- Do a reduction.  |
 | 
| -`-----------------------------*/
 | 
| -yyreduce:
 | 
| -  /* yyn is the number of a rule to reduce with.  */
 | 
| -  yylen = yyr2[yyn];
 | 
| -
 | 
| -  /* If YYLEN is nonzero, implement the default value of the action:
 | 
| -     `$$ = $1'.
 | 
| -
 | 
| -     Otherwise, the following line sets YYVAL to garbage.
 | 
| -     This behavior is undocumented and Bison
 | 
| -     users should not rely upon it.  Assigning to YYVAL
 | 
| -     unconditionally makes the parser a bit smaller, and it avoids a
 | 
| -     GCC warning that YYVAL may be used uninitialized.  */
 | 
| -  yyval = yyvsp[1-yylen];
 | 
| -
 | 
| -
 | 
| -  YY_REDUCE_PRINT (yyn);
 | 
| -  switch (yyn)
 | 
| -    {
 | 
| -        case 4:
 | 
| -#line 208 "m2-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 217 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_IND); }
 | 
| -    break;
 | 
| -
 | 
| -  case 6:
 | 
| -#line 221 "m2-exp.y"
 | 
| -    { number_sign = -1; }
 | 
| -    break;
 | 
| -
 | 
| -  case 7:
 | 
| -#line 223 "m2-exp.y"
 | 
| -    { number_sign = 1;
 | 
| -			  write_exp_elt_opcode (UNOP_NEG); }
 | 
| -    break;
 | 
| -
 | 
| -  case 8:
 | 
| -#line 228 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode(UNOP_PLUS); }
 | 
| -    break;
 | 
| -
 | 
| -  case 9:
 | 
| -#line 232 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 12:
 | 
| -#line 240 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_CAP); }
 | 
| -    break;
 | 
| -
 | 
| -  case 13:
 | 
| -#line 244 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_ORD); }
 | 
| -    break;
 | 
| -
 | 
| -  case 14:
 | 
| -#line 248 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_ABS); }
 | 
| -    break;
 | 
| -
 | 
| -  case 15:
 | 
| -#line 252 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_HIGH); }
 | 
| -    break;
 | 
| -
 | 
| -  case 16:
 | 
| -#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 17:
 | 
| -#line 262 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_MAX);
 | 
| -			  write_exp_elt_type (yyvsp[-1].tval);
 | 
| -			  write_exp_elt_opcode (UNOP_MAX); }
 | 
| -    break;
 | 
| -
 | 
| -  case 18:
 | 
| -#line 268 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_FLOAT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 19:
 | 
| -#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 20:
 | 
| -#line 278 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_CHR); }
 | 
| -    break;
 | 
| -
 | 
| -  case 21:
 | 
| -#line 282 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_ODD); }
 | 
| -    break;
 | 
| -
 | 
| -  case 22:
 | 
| -#line 286 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_TRUNC); }
 | 
| -    break;
 | 
| -
 | 
| -  case 23:
 | 
| -#line 290 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_SIZEOF); }
 | 
| -    break;
 | 
| -
 | 
| -  case 24:
 | 
| -#line 294 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_SIZEOF); }
 | 
| -    break;
 | 
| -
 | 
| -  case 25:
 | 
| -#line 299 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode(UNOP_PREINCREMENT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 26:
 | 
| -#line 303 "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 27:
 | 
| -#line 309 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode(UNOP_PREDECREMENT);}
 | 
| -    break;
 | 
| -
 | 
| -  case 28:
 | 
| -#line 313 "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 29:
 | 
| -#line 319 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (STRUCTOP_STRUCT);
 | 
| -			  write_exp_string (yyvsp[0].sval);
 | 
| -			  write_exp_elt_opcode (STRUCTOP_STRUCT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 31:
 | 
| -#line 328 "m2-exp.y"
 | 
| -    { error (_("Sets are not implemented."));}
 | 
| -    break;
 | 
| -
 | 
| -  case 32:
 | 
| -#line 332 "m2-exp.y"
 | 
| -    { error (_("Sets are not implemented."));}
 | 
| -    break;
 | 
| -
 | 
| -  case 33:
 | 
| -#line 336 "m2-exp.y"
 | 
| -    { error (_("Sets are not implemented."));}
 | 
| -    break;
 | 
| -
 | 
| -  case 34:
 | 
| -#line 340 "m2-exp.y"
 | 
| -    { error (_("Sets are not implemented."));}
 | 
| -    break;
 | 
| -
 | 
| -  case 35:
 | 
| -#line 342 "m2-exp.y"
 | 
| -    { error (_("Sets are not implemented."));}
 | 
| -    break;
 | 
| -
 | 
| -  case 36:
 | 
| -#line 351 "m2-exp.y"
 | 
| -    { start_arglist(); }
 | 
| -    break;
 | 
| -
 | 
| -  case 37:
 | 
| -#line 353 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (MULTI_SUBSCRIPT);
 | 
| -			  write_exp_elt_longcst ((LONGEST) end_arglist());
 | 
| -			  write_exp_elt_opcode (MULTI_SUBSCRIPT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 38:
 | 
| -#line 359 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 39:
 | 
| -#line 365 "m2-exp.y"
 | 
| -    { start_arglist (); }
 | 
| -    break;
 | 
| -
 | 
| -  case 40:
 | 
| -#line 367 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (OP_FUNCALL);
 | 
| -			  write_exp_elt_longcst ((LONGEST) end_arglist ());
 | 
| -			  write_exp_elt_opcode (OP_FUNCALL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 42:
 | 
| -#line 376 "m2-exp.y"
 | 
| -    { arglist_len = 1; }
 | 
| -    break;
 | 
| -
 | 
| -  case 43:
 | 
| -#line 380 "m2-exp.y"
 | 
| -    { arglist_len++; }
 | 
| -    break;
 | 
| -
 | 
| -  case 44:
 | 
| -#line 385 "m2-exp.y"
 | 
| -    { arglist_len = 1; }
 | 
| -    break;
 | 
| -
 | 
| -  case 45:
 | 
| -#line 390 "m2-exp.y"
 | 
| -    { arglist_len++; }
 | 
| -    break;
 | 
| -
 | 
| -  case 46:
 | 
| -#line 395 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_MEMVAL);
 | 
| -			  write_exp_elt_type (yyvsp[-2].tval);
 | 
| -			  write_exp_elt_opcode (UNOP_MEMVAL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 47:
 | 
| -#line 401 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (UNOP_CAST);
 | 
| -			  write_exp_elt_type (yyvsp[-3].tval);
 | 
| -			  write_exp_elt_opcode (UNOP_CAST); }
 | 
| -    break;
 | 
| -
 | 
| -  case 48:
 | 
| -#line 407 "m2-exp.y"
 | 
| -    { }
 | 
| -    break;
 | 
| -
 | 
| -  case 49:
 | 
| -#line 415 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_REPEAT); }
 | 
| -    break;
 | 
| -
 | 
| -  case 50:
 | 
| -#line 419 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_MUL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 51:
 | 
| -#line 423 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_DIV); }
 | 
| -    break;
 | 
| -
 | 
| -  case 52:
 | 
| -#line 427 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_INTDIV); }
 | 
| -    break;
 | 
| -
 | 
| -  case 53:
 | 
| -#line 431 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_REM); }
 | 
| -    break;
 | 
| -
 | 
| -  case 54:
 | 
| -#line 435 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_ADD); }
 | 
| -    break;
 | 
| -
 | 
| -  case 55:
 | 
| -#line 439 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_SUB); }
 | 
| -    break;
 | 
| -
 | 
| -  case 56:
 | 
| -#line 443 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_EQUAL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 57:
 | 
| -#line 447 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_NOTEQUAL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 58:
 | 
| -#line 449 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_NOTEQUAL); }
 | 
| -    break;
 | 
| -
 | 
| -  case 59:
 | 
| -#line 453 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_LEQ); }
 | 
| -    break;
 | 
| -
 | 
| -  case 60:
 | 
| -#line 457 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_GEQ); }
 | 
| -    break;
 | 
| -
 | 
| -  case 61:
 | 
| -#line 461 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_LESS); }
 | 
| -    break;
 | 
| -
 | 
| -  case 62:
 | 
| -#line 465 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_GTR); }
 | 
| -    break;
 | 
| -
 | 
| -  case 63:
 | 
| -#line 469 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
 | 
| -    break;
 | 
| -
 | 
| -  case 64:
 | 
| -#line 473 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
 | 
| -    break;
 | 
| -
 | 
| -  case 65:
 | 
| -#line 477 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (BINOP_ASSIGN); }
 | 
| -    break;
 | 
| -
 | 
| -  case 66:
 | 
| -#line 484 "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 67:
 | 
| -#line 490 "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 68:
 | 
| -#line 496 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (OP_LONG);
 | 
| -			  write_exp_elt_type (parse_m2_type->builtin_int);
 | 
| -			  write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
 | 
| -			  write_exp_elt_opcode (OP_LONG); }
 | 
| -    break;
 | 
| -
 | 
| -  case 69:
 | 
| -#line 503 "m2-exp.y"
 | 
| -    {
 | 
| -			  write_exp_elt_opcode (OP_LONG);
 | 
| -			  write_exp_elt_type (parse_m2_type->builtin_card);
 | 
| -			  write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
 | 
| -			  write_exp_elt_opcode (OP_LONG);
 | 
| -			}
 | 
| -    break;
 | 
| -
 | 
| -  case 70:
 | 
| -#line 512 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (OP_LONG);
 | 
| -			  write_exp_elt_type (parse_m2_type->builtin_char);
 | 
| -			  write_exp_elt_longcst ((LONGEST) yyvsp[0].ulval);
 | 
| -			  write_exp_elt_opcode (OP_LONG); }
 | 
| -    break;
 | 
| -
 | 
| -  case 71:
 | 
| -#line 520 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (OP_DOUBLE);
 | 
| -			  write_exp_elt_type (parse_m2_type->builtin_real);
 | 
| -			  write_exp_elt_dblcst (yyvsp[0].dval);
 | 
| -			  write_exp_elt_opcode (OP_DOUBLE); }
 | 
| -    break;
 | 
| -
 | 
| -  case 73:
 | 
| -#line 530 "m2-exp.y"
 | 
| -    { write_exp_elt_opcode (OP_LONG);
 | 
| -			  write_exp_elt_type (parse_type->builtin_int);
 | 
| -			  write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
 | 
| -			  write_exp_elt_opcode (OP_LONG); }
 | 
| -    break;
 | 
| -
 | 
| -  case 74:
 | 
| -#line 537 "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 75:
 | 
| -#line 544 "m2-exp.y"
 | 
| -    { yyval.bval = SYMBOL_BLOCK_VALUE(yyvsp[0].sym); }
 | 
| -    break;
 | 
| -
 | 
| -  case 76:
 | 
| -#line 548 "m2-exp.y"
 | 
| -    { struct symbol *sym
 | 
| -			    = lookup_symbol (copy_name (yyvsp[0].sval), expression_context_block,
 | 
| -					     VAR_DOMAIN, 0);
 | 
| -			  yyval.sym = sym;}
 | 
| -    break;
 | 
| -
 | 
| -  case 77:
 | 
| -#line 557 "m2-exp.y"
 | 
| -    { struct symbol *tem
 | 
| -			    = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
 | 
| -					     VAR_DOMAIN, 0);
 | 
| -			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
 | 
| -			    error (_("No function \"%s\" in specified context."),
 | 
| -				   copy_name (yyvsp[0].sval));
 | 
| -			  yyval.sym = tem;
 | 
| -			}
 | 
| -    break;
 | 
| -
 | 
| -  case 78:
 | 
| -#line 569 "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 80:
 | 
| -#line 581 "m2-exp.y"
 | 
| -    { struct symbol *sym;
 | 
| -			  sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
 | 
| -					       VAR_DOMAIN, 0);
 | 
| -			  if (sym == 0)
 | 
| -			    error (_("No symbol \"%s\" in specified context."),
 | 
| -				   copy_name (yyvsp[0].sval));
 | 
| -			  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);
 | 
| -			  /* 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 81:
 | 
| -#line 604 "m2-exp.y"
 | 
| -    { struct symbol *sym;
 | 
| -			  int is_a_field_of_this;
 | 
| -
 | 
| - 			  sym = lookup_symbol (copy_name (yyvsp[0].sval),
 | 
| -					       expression_context_block,
 | 
| -					       VAR_DOMAIN,
 | 
| -					       &is_a_field_of_this);
 | 
| -			  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;
 | 
| -			      char *arg = copy_name (yyvsp[0].sval);
 | 
| -
 | 
| -			      msymbol =
 | 
| -				lookup_minimal_symbol (arg, NULL, NULL);
 | 
| -			      if (msymbol != NULL)
 | 
| -				write_exp_msymbol (msymbol);
 | 
| -			      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 82:
 | 
| -#line 649 "m2-exp.y"
 | 
| -    { yyval.tval = lookup_typename (parse_language, parse_gdbarch,
 | 
| -						copy_name (yyvsp[0].sval),
 | 
| -						expression_context_block, 0); }
 | 
| -    break;
 | 
| -
 | 
| -
 | 
| -    }
 | 
| -
 | 
| -/* Line 1000 of yacc.c.  */
 | 
| -#line 1967 "m2-exp.c"
 | 
| -
 | 
| -  yyvsp -= yylen;
 | 
| -  yyssp -= yylen;
 | 
| -
 | 
| -
 | 
| -  YY_STACK_PRINT (yyss, yyssp);
 | 
| -
 | 
| -  *++yyvsp = yyval;
 | 
| -
 | 
| -
 | 
| -  /* Now `shift' the result of the reduction.  Determine what state
 | 
| -     that goes to, based on the state we popped back to and the rule
 | 
| -     number reduced by.  */
 | 
| -
 | 
| -  yyn = yyr1[yyn];
 | 
| -
 | 
| -  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
 | 
| -  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
 | 
| -    yystate = yytable[yystate];
 | 
| -  else
 | 
| -    yystate = yydefgoto[yyn - YYNTOKENS];
 | 
| -
 | 
| -  goto yynewstate;
 | 
| -
 | 
| -
 | 
| -/*------------------------------------.
 | 
| -| yyerrlab -- here on detecting error |
 | 
| -`------------------------------------*/
 | 
| -yyerrlab:
 | 
| -  /* If not already recovering from an error, report this error.  */
 | 
| -  if (!yyerrstatus)
 | 
| -    {
 | 
| -      ++yynerrs;
 | 
| -#if YYERROR_VERBOSE
 | 
| -      yyn = yypact[yystate];
 | 
| -
 | 
| -      if (YYPACT_NINF < yyn && yyn < YYLAST)
 | 
| -	{
 | 
| -	  YYSIZE_T yysize = 0;
 | 
| -	  int yytype = YYTRANSLATE (yychar);
 | 
| -	  const char* yyprefix;
 | 
| -	  char *yymsg;
 | 
| -	  int yyx;
 | 
| -
 | 
| -	  /* Start YYX at -YYN if negative to avoid negative indexes in
 | 
| -	     YYCHECK.  */
 | 
| -	  int yyxbegin = yyn < 0 ? -yyn : 0;
 | 
| -
 | 
| -	  /* Stay within bounds of both yycheck and yytname.  */
 | 
| -	  int yychecklim = YYLAST - yyn;
 | 
| -	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
 | 
| -	  int yycount = 0;
 | 
| -
 | 
| -	  yyprefix = ", expecting ";
 | 
| -	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
 | 
| -	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 | 
| -	      {
 | 
| -		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
 | 
| -		yycount += 1;
 | 
| -		if (yycount == 5)
 | 
| -		  {
 | 
| -		    yysize = 0;
 | 
| -		    break;
 | 
| -		  }
 | 
| -	      }
 | 
| -	  yysize += (sizeof ("syntax error, unexpected ")
 | 
| -		     + yystrlen (yytname[yytype]));
 | 
| -	  yymsg = (char *) YYSTACK_ALLOC (yysize);
 | 
| -	  if (yymsg != 0)
 | 
| -	    {
 | 
| -	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
 | 
| -	      yyp = yystpcpy (yyp, yytname[yytype]);
 | 
| -
 | 
| -	      if (yycount < 5)
 | 
| -		{
 | 
| -		  yyprefix = ", expecting ";
 | 
| -		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
 | 
| -		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 | 
| -		      {
 | 
| -			yyp = yystpcpy (yyp, yyprefix);
 | 
| -			yyp = yystpcpy (yyp, yytname[yyx]);
 | 
| -			yyprefix = " or ";
 | 
| -		      }
 | 
| -		}
 | 
| -	      yyerror (yymsg);
 | 
| -	      YYSTACK_FREE (yymsg);
 | 
| -	    }
 | 
| -	  else
 | 
| -	    yyerror ("syntax error; also virtual memory exhausted");
 | 
| -	}
 | 
| -      else
 | 
| -#endif /* YYERROR_VERBOSE */
 | 
| -	yyerror ("syntax error");
 | 
| -    }
 | 
| -
 | 
| -
 | 
| -
 | 
| -  if (yyerrstatus == 3)
 | 
| -    {
 | 
| -      /* If just tried and failed to reuse lookahead token after an
 | 
| -	 error, discard it.  */
 | 
| -
 | 
| -      if (yychar <= YYEOF)
 | 
| -        {
 | 
| -          /* If at end of input, pop the error token,
 | 
| -	     then the rest of the stack, then return failure.  */
 | 
| -	  if (yychar == YYEOF)
 | 
| -	     for (;;)
 | 
| -	       {
 | 
| -		 YYPOPSTACK;
 | 
| -		 if (yyssp == yyss)
 | 
| -		   YYABORT;
 | 
| -		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
 | 
| -		 yydestruct (yystos[*yyssp], yyvsp);
 | 
| -	       }
 | 
| -        }
 | 
| -      else
 | 
| -	{
 | 
| -	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
 | 
| -	  yydestruct (yytoken, &yylval);
 | 
| -	  yychar = YYEMPTY;
 | 
| -
 | 
| -	}
 | 
| -    }
 | 
| -
 | 
| -  /* Else will try to reuse lookahead token after shifting the error
 | 
| -     token.  */
 | 
| -  goto yyerrlab1;
 | 
| -
 | 
| -
 | 
| -/*---------------------------------------------------.
 | 
| -| yyerrorlab -- error raised explicitly by YYERROR.  |
 | 
| -`---------------------------------------------------*/
 | 
| -yyerrorlab:
 | 
| -
 | 
| -#ifdef __GNUC__
 | 
| -  /* Pacify GCC when the user code never invokes YYERROR and the label
 | 
| -     yyerrorlab therefore never appears in user code.  */
 | 
| -  if (0)
 | 
| -     goto yyerrorlab;
 | 
| -#endif
 | 
| -
 | 
| -  yyvsp -= yylen;
 | 
| -  yyssp -= yylen;
 | 
| -  yystate = *yyssp;
 | 
| -  goto yyerrlab1;
 | 
| -
 | 
| -
 | 
| -/*-------------------------------------------------------------.
 | 
| -| yyerrlab1 -- common code for both syntax error and YYERROR.  |
 | 
| -`-------------------------------------------------------------*/
 | 
| -yyerrlab1:
 | 
| -  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 | 
| -
 | 
| -  for (;;)
 | 
| -    {
 | 
| -      yyn = yypact[yystate];
 | 
| -      if (yyn != YYPACT_NINF)
 | 
| -	{
 | 
| -	  yyn += YYTERROR;
 | 
| -	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
 | 
| -	    {
 | 
| -	      yyn = yytable[yyn];
 | 
| -	      if (0 < yyn)
 | 
| -		break;
 | 
| -	    }
 | 
| -	}
 | 
| -
 | 
| -      /* Pop the current state because it cannot handle the error token.  */
 | 
| -      if (yyssp == yyss)
 | 
| -	YYABORT;
 | 
| -
 | 
| -      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
 | 
| -      yydestruct (yystos[yystate], yyvsp);
 | 
| -      YYPOPSTACK;
 | 
| -      yystate = *yyssp;
 | 
| -      YY_STACK_PRINT (yyss, yyssp);
 | 
| -    }
 | 
| -
 | 
| -  if (yyn == YYFINAL)
 | 
| -    YYACCEPT;
 | 
| -
 | 
| -  YYDPRINTF ((stderr, "Shifting error token, "));
 | 
| -
 | 
| -  *++yyvsp = yylval;
 | 
| -
 | 
| -
 | 
| -  yystate = yyn;
 | 
| -  goto yynewstate;
 | 
| -
 | 
| -
 | 
| -/*-------------------------------------.
 | 
| -| yyacceptlab -- YYACCEPT comes here.  |
 | 
| -`-------------------------------------*/
 | 
| -yyacceptlab:
 | 
| -  yyresult = 0;
 | 
| -  goto yyreturn;
 | 
| -
 | 
| -/*-----------------------------------.
 | 
| -| yyabortlab -- YYABORT comes here.  |
 | 
| -`-----------------------------------*/
 | 
| -yyabortlab:
 | 
| -  yyresult = 1;
 | 
| -  goto yyreturn;
 | 
| -
 | 
| -#ifndef yyoverflow
 | 
| -/*----------------------------------------------.
 | 
| -| yyoverflowlab -- parser overflow comes here.  |
 | 
| -`----------------------------------------------*/
 | 
| -yyoverflowlab:
 | 
| -  yyerror ("parser stack overflow");
 | 
| -  yyresult = 2;
 | 
| -  /* Fall through.  */
 | 
| -#endif
 | 
| -
 | 
| -yyreturn:
 | 
| -#ifndef yyoverflow
 | 
| -  if (yyss != yyssa)
 | 
| -    YYSTACK_FREE (yyss);
 | 
| -#endif
 | 
| -  return yyresult;
 | 
| -}
 | 
| -
 | 
| -
 | 
| -#line 655 "m2-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 (int olen)
 | 
| -{
 | 
| -  char *p = lexptr;
 | 
| -  LONGEST n = 0;
 | 
| -  LONGEST prevn = 0;
 | 
| -  int c,i,ischar=0;
 | 
| -  int base = input_radix;
 | 
| -  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	 },
 | 
| -    {"TSIZE", SIZE       },
 | 
| -};
 | 
| -
 | 
| -
 | 
| -/* 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 (void)
 | 
| -{
 | 
| -  int c;
 | 
| -  int namelen;
 | 
| -  int i;
 | 
| -  char *tokstart;
 | 
| -  char quote;
 | 
| -
 | 
| - retry:
 | 
| -
 | 
| -  prev_lexptr = lexptr;
 | 
| -
 | 
| -  tokstart = lexptr;
 | 
| -
 | 
| -
 | 
| -  /* See if it is a special token of length 2 */
 | 
| -  for( i = 0 ; i < (int) (sizeof tokentab2 / sizeof tokentab2[0]) ; i++)
 | 
| -     if (strncmp (tokentab2[i].name, tokstart, 2) == 0)
 | 
| -     {
 | 
| -	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;
 | 
| -      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)
 | 
| -	 && strncmp (tokstart, keytab[i].keyw, namelen) == 0)
 | 
| -	   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_symtab (tmp))
 | 
| -      return BLOCKNAME;
 | 
| -    sym = lookup_symbol (tmp, expression_context_block, VAR_DOMAIN, 0);
 | 
| -    if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
 | 
| -      return BLOCKNAME;
 | 
| -    if (lookup_typename (parse_language, parse_gdbarch,
 | 
| -			 copy_name (yylval.sval), expression_context_block, 1))
 | 
| -      return TYPENAME;
 | 
| -
 | 
| -    if(sym)
 | 
| -    {
 | 
| -      switch(SYMBOL_CLASS (sym))
 | 
| -       {
 | 
| -       case LOC_STATIC:
 | 
| -       case LOC_REGISTER:
 | 
| -       case LOC_ARG:
 | 
| -       case LOC_REF_ARG:
 | 
| -       case LOC_REGPARM_ADDR:
 | 
| -       case LOC_LOCAL:
 | 
| -       case LOC_CONST:
 | 
| -       case LOC_CONST_BYTES:
 | 
| -       case LOC_OPTIMIZED_OUT:
 | 
| -       case LOC_COMPUTED:
 | 
| -	  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()"));
 | 
| -
 | 
| -       default:
 | 
| -	  error (_("unhandled token in m2lex()"));
 | 
| -	  break;
 | 
| -       }
 | 
| -    }
 | 
| -    else
 | 
| -    {
 | 
| -       /* Built-in BOOLEAN type.  This is sort of a hack.  */
 | 
| -       if (strncmp (tokstart, "TRUE", 4) == 0)
 | 
| -       {
 | 
| -	  yylval.ulval = 1;
 | 
| -	  return M2_TRUE;
 | 
| -       }
 | 
| -       else if (strncmp (tokstart, "FALSE", 5) == 0)
 | 
| -       {
 | 
| -	  yylval.ulval = 0;
 | 
| -	  return M2_FALSE;
 | 
| -       }
 | 
| -    }
 | 
| -
 | 
| -    /* Must be another type of name...  */
 | 
| -    return NAME;
 | 
| - }
 | 
| -}
 | 
| -
 | 
| -void
 | 
| -yyerror (char *msg)
 | 
| -{
 | 
| -  if (prev_lexptr)
 | 
| -    lexptr = prev_lexptr;
 | 
| -
 | 
| -  error (_("A %s in expression, near `%s'."), (msg ? msg : "error"), lexptr);
 | 
| -}
 | 
| -
 | 
| -
 | 
| 
 |