/[ascend]/trunk/base/generic/compiler/ascParse_no_yacc.c
ViewVC logotype

Diff of /trunk/base/generic/compiler/ascParse_no_yacc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1522 by jpye, Sat Jun 30 01:23:36 2007 UTC revision 1523 by jpye, Sat Jun 30 14:55:05 2007 UTC
# Line 1  Line 1 
1  /* A Bison parser, made by GNU Bison 2.0.  */  /* A Bison parser, made by GNU Bison 2.3.  */
2    
3  /* Skeleton parser for Yacc-like parsing with Bison,  /* Skeleton implementation for Bison's Yacc-like parsers in C
4     Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.  
5       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6       Free Software Foundation, Inc.
7    
8     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
# Line 15  Line 17 
17    
18     You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
19     along with this program; if not, write to the Free Software     along with this program; if not, write to the Free Software
20     Foundation, Inc., 59 Temple Place - Suite 330,     Foundation, Inc., 51 Franklin Street, Fifth Floor,
21     Boston, MA 02111-1307, USA.  */     Boston, MA 02110-1301, USA.  */
22    
23    /* As a special exception, you may create a larger work that contains
24       part or all of the Bison parser skeleton and distribute that work
25       under terms of your choice, so long as that work isn't itself a
26       parser generator using the skeleton or a modified version thereof
27       as a parser skeleton.  Alternatively, if you modify or redistribute
28       the parser skeleton itself, you may (at your option) remove this
29       special exception, which will cause the skeleton and the resulting
30       Bison output files to be licensed under the GNU General Public
31       License without this special exception.
32    
33  /* As a special exception, when this file is copied by Bison into a     This special exception was added by the Free Software Foundation in
34     Bison output file, you may use that output file without restriction.     version 2.2 of Bison.  */
    This special exception was added by the Free Software Foundation  
    in version 1.24 of Bison.  */  
35    
36  /* Written by Richard Stallman by simplifying the original so called  /* C LALR(1) parser skeleton written by Richard Stallman, by
37     ``semantic'' parser.  */     simplifying the original so-called "semantic" parser.  */
38    
39  /* All symbols defined below should begin with yy or YY, to avoid  /* All symbols defined below should begin with yy or YY, to avoid
40     infringing on user name space.  This should be done even for local     infringing on user name space.  This should be done even for local
# Line 36  Line 46 
46  /* Identify Bison output.  */  /* Identify Bison output.  */
47  #define YYBISON 1  #define YYBISON 1
48    
49    /* Bison version.  */
50    #define YYBISON_VERSION "2.3"
51    
52  /* Skeleton name.  */  /* Skeleton name.  */
53  #define YYSKELETON_NAME "yacc.c"  #define YYSKELETON_NAME "yacc.c"
54    
# Line 170  Line 183 
183       UMINUS_TOK = 364       UMINUS_TOK = 364
184     };     };
185  #endif  #endif
186    /* Tokens.  */
187  #define ADD_TOK 258  #define ADD_TOK 258
188  #define ALIASES_TOK 259  #define ALIASES_TOK 259
189  #define AND_TOK 260  #define AND_TOK 260
# Line 282  Line 296 
296    
297    
298  /* Copy the first part of user declarations.  */  /* Copy the first part of user declarations.  */
299  #line 31 "base\\generic\\compiler\\ascParse.y"  #line 31 "base/generic/compiler/ascParse.y"
300    
301  #include <stdio.h>  #include <stdio.h>
302  #include <stdarg.h>  #include <stdarg.h>
# Line 565  static void CollectNote(struct Note *); Line 579  static void CollectNote(struct Note *);
579  # define YYERROR_VERBOSE 0  # define YYERROR_VERBOSE 0
580  #endif  #endif
581    
582  #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)  /* Enabling the token table.  */
583  #line 304 "base\\generic\\compiler\\ascParse.y"  #ifndef YYTOKEN_TABLE
584  typedef union YYSTYPE {  # define YYTOKEN_TABLE 0
585    #endif
586    
587    #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
588    typedef union YYSTYPE
589    #line 304 "base/generic/compiler/ascParse.y"
590    {
591    double real_value;    double real_value;
592    long   int_value;    long   int_value;
593    struct fraction frac_value;    struct fraction frac_value;
# Line 593  typedef union YYSTYPE { Line 613  typedef union YYSTYPE {
613    dim_type dimen;    dim_type dimen;
614    enum ForOrder order;    enum ForOrder order;
615    enum ForKind fkind;    enum ForKind fkind;
616  } YYSTYPE;  }
617  /* Line 190 of yacc.c.  */  /* Line 187 of yacc.c.  */
618  #line 599 "base\\generic\\compiler\\ascParse.c"  #line 619 "base/generic/compiler/ascParse.c"
619        YYSTYPE;
620  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define yystype YYSTYPE /* obsolescent; will be withdrawn */
621  # define YYSTYPE_IS_DECLARED 1  # define YYSTYPE_IS_DECLARED 1
622  # define YYSTYPE_IS_TRIVIAL 1  # define YYSTYPE_IS_TRIVIAL 1
# Line 606  typedef union YYSTYPE { Line 627  typedef union YYSTYPE {
627  /* Copy the second part of user declarations.  */  /* Copy the second part of user declarations.  */
628    
629    
630  /* Line 213 of yacc.c.  */  /* Line 216 of yacc.c.  */
631  #line 611 "base\\generic\\compiler\\ascParse.c"  #line 632 "base/generic/compiler/ascParse.c"
632    
633    #ifdef short
634    # undef short
635    #endif
636    
637    #ifdef YYTYPE_UINT8
638    typedef YYTYPE_UINT8 yytype_uint8;
639    #else
640    typedef unsigned char yytype_uint8;
641    #endif
642    
643    #ifdef YYTYPE_INT8
644    typedef YYTYPE_INT8 yytype_int8;
645    #elif (defined __STDC__ || defined __C99__FUNC__ \
646         || defined __cplusplus || defined _MSC_VER)
647    typedef signed char yytype_int8;
648    #else
649    typedef short int yytype_int8;
650    #endif
651    
652    #ifdef YYTYPE_UINT16
653    typedef YYTYPE_UINT16 yytype_uint16;
654    #else
655    typedef unsigned short int yytype_uint16;
656    #endif
657    
658  #if ! defined (yyoverflow) || YYERROR_VERBOSE  #ifdef YYTYPE_INT16
659    typedef YYTYPE_INT16 yytype_int16;
660    #else
661    typedef short int yytype_int16;
662    #endif
663    
664  # ifndef YYFREE  #ifndef YYSIZE_T
665  #  define YYFREE free  # ifdef __SIZE_TYPE__
666    #  define YYSIZE_T __SIZE_TYPE__
667    # elif defined size_t
668    #  define YYSIZE_T size_t
669    # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
670         || defined __cplusplus || defined _MSC_VER)
671    #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
672    #  define YYSIZE_T size_t
673    # else
674    #  define YYSIZE_T unsigned int
675    # endif
676    #endif
677    
678    #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
679    
680    #ifndef YY_
681    # if YYENABLE_NLS
682    #  if ENABLE_NLS
683    #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
684    #   define YY_(msgid) dgettext ("bison-runtime", msgid)
685    #  endif
686  # endif  # endif
687  # ifndef YYMALLOC  # ifndef YY_
688  #  define YYMALLOC malloc  #  define YY_(msgid) msgid
689  # endif  # endif
690    #endif
691    
692    /* Suppress unused-variable warnings by "using" E.  */
693    #if ! defined lint || defined __GNUC__
694    # define YYUSE(e) ((void) (e))
695    #else
696    # define YYUSE(e) /* empty */
697    #endif
698    
699    /* Identity function, used to suppress warnings about constant conditions.  */
700    #ifndef lint
701    # define YYID(n) (n)
702    #else
703    #if (defined __STDC__ || defined __C99__FUNC__ \
704         || defined __cplusplus || defined _MSC_VER)
705    static int
706    YYID (int i)
707    #else
708    static int
709    YYID (i)
710        int i;
711    #endif
712    {
713      return i;
714    }
715    #endif
716    
717    #if ! defined yyoverflow || YYERROR_VERBOSE
718    
719  /* The parser invokes alloca or malloc; define the necessary symbols.  */  /* The parser invokes alloca or malloc; define the necessary symbols.  */
720    
# Line 624  typedef union YYSTYPE { Line 722  typedef union YYSTYPE {
722  #  if YYSTACK_USE_ALLOCA  #  if YYSTACK_USE_ALLOCA
723  #   ifdef __GNUC__  #   ifdef __GNUC__
724  #    define YYSTACK_ALLOC __builtin_alloca  #    define YYSTACK_ALLOC __builtin_alloca
725    #   elif defined __BUILTIN_VA_ARG_INCR
726    #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
727    #   elif defined _AIX
728    #    define YYSTACK_ALLOC __alloca
729    #   elif defined _MSC_VER
730    #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
731    #    define alloca _alloca
732  #   else  #   else
733  #    define YYSTACK_ALLOC alloca  #    define YYSTACK_ALLOC alloca
734    #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
735         || defined __cplusplus || defined _MSC_VER)
736    #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
737    #     ifndef _STDLIB_H
738    #      define _STDLIB_H 1
739    #     endif
740    #    endif
741  #   endif  #   endif
742  #  endif  #  endif
743  # endif  # endif
744    
745  # ifdef YYSTACK_ALLOC  # ifdef YYSTACK_ALLOC
746     /* Pacify GCC's `empty if-body' warning. */     /* Pacify GCC's `empty if-body' warning.  */
747  #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)  #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
748  # else  #  ifndef YYSTACK_ALLOC_MAXIMUM
749  #  if defined (__STDC__) || defined (__cplusplus)      /* The OS might guarantee only one guard page at the bottom of the stack,
750  #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */         and a page size can be as small as 4096 bytes.  So we cannot safely
751  #   define YYSIZE_T size_t         invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
752           to allow for a few compiler-allocated temporary stack slots.  */
753    #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
754  #  endif  #  endif
755    # else
756  #  define YYSTACK_ALLOC YYMALLOC  #  define YYSTACK_ALLOC YYMALLOC
757  #  define YYSTACK_FREE YYFREE  #  define YYSTACK_FREE YYFREE
758    #  ifndef YYSTACK_ALLOC_MAXIMUM
759    #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
760    #  endif
761    #  if (defined __cplusplus && ! defined _STDLIB_H \
762           && ! ((defined YYMALLOC || defined malloc) \
763             && (defined YYFREE || defined free)))
764    #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
765    #   ifndef _STDLIB_H
766    #    define _STDLIB_H 1
767    #   endif
768    #  endif
769    #  ifndef YYMALLOC
770    #   define YYMALLOC malloc
771    #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
772         || defined __cplusplus || defined _MSC_VER)
773    void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
774    #   endif
775    #  endif
776    #  ifndef YYFREE
777    #   define YYFREE free
778    #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
779         || defined __cplusplus || defined _MSC_VER)
780    void free (void *); /* INFRINGES ON USER NAME SPACE */
781    #   endif
782    #  endif
783  # endif  # endif
784  #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */  #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
785    
786    
787  #if (! defined (yyoverflow) \  #if (! defined yyoverflow \
788       && (! defined (__cplusplus) \       && (! defined __cplusplus \
789       || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))       || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
790    
791  /* A type that is properly aligned for any stack member.  */  /* A type that is properly aligned for any stack member.  */
792  union yyalloc  union yyalloc
793  {  {
794    short int yyss;    yytype_int16 yyss;
795    YYSTYPE yyvs;    YYSTYPE yyvs;
796    };    };
797    
# Line 661  union yyalloc Line 801  union yyalloc
801  /* The size of an array large to enough to hold all stacks, each with  /* The size of an array large to enough to hold all stacks, each with
802     N elements.  */     N elements.  */
803  # define YYSTACK_BYTES(N) \  # define YYSTACK_BYTES(N) \
804       ((N) * (sizeof (short int) + sizeof (YYSTYPE))         \       ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
805        + YYSTACK_GAP_MAXIMUM)        + YYSTACK_GAP_MAXIMUM)
806    
807  /* Copy COUNT objects from FROM to TO.  The source and destination do  /* Copy COUNT objects from FROM to TO.  The source and destination do
808     not overlap.  */     not overlap.  */
809  # ifndef YYCOPY  # ifndef YYCOPY
810  #  if defined (__GNUC__) && 1 < __GNUC__  #  if defined __GNUC__ && 1 < __GNUC__
811  #   define YYCOPY(To, From, Count) \  #   define YYCOPY(To, From, Count) \
812        __builtin_memcpy (To, From, (Count) * sizeof (*(From)))        __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
813  #  else  #  else
814  #   define YYCOPY(To, From, Count)      \  #   define YYCOPY(To, From, Count)      \
815        do                    \        do                    \
816      {                   \      {                   \
817        register YYSIZE_T yyi;        \        YYSIZE_T yyi;             \
818        for (yyi = 0; yyi < (Count); yyi++)   \        for (yyi = 0; yyi < (Count); yyi++)   \
819          (To)[yyi] = (From)[yyi];        \          (To)[yyi] = (From)[yyi];        \
820      }                   \      }                   \
821        while (0)        while (YYID (0))
822  #  endif  #  endif
823  # endif  # endif
824    
# Line 696  union yyalloc Line 836  union yyalloc
836      yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \      yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
837      yyptr += yynewbytes / sizeof (*yyptr);              \      yyptr += yynewbytes / sizeof (*yyptr);              \
838        }                                 \        }                                 \
839      while (0)      while (YYID (0))
   
 #endif  
840    
 #if defined (__STDC__) || defined (__cplusplus)  
    typedef signed char yysigned_char;  
 #else  
    typedef short int yysigned_char;  
841  #endif  #endif
842    
843  /* YYFINAL -- State number of the termination state. */  /* YYFINAL -- State number of the termination state.  */
844  #define YYFINAL  2  #define YYFINAL  2
845  /* YYLAST -- Last index in YYTABLE.  */  /* YYLAST -- Last index in YYTABLE.  */
846  #define YYLAST   1102  #define YYLAST   1102
847    
848  /* YYNTOKENS -- Number of terminals. */  /* YYNTOKENS -- Number of terminals.  */
849  #define YYNTOKENS  127  #define YYNTOKENS  127
850  /* YYNNTS -- Number of nonterminals. */  /* YYNNTS -- Number of nonterminals.  */
851  #define YYNNTS  116  #define YYNNTS  116
852  /* YYNRULES -- Number of rules. */  /* YYNRULES -- Number of rules.  */
853  #define YYNRULES  307  #define YYNRULES  307
854  /* YYNRULES -- Number of states. */  /* YYNRULES -- Number of states.  */
855  #define YYNSTATES  616  #define YYNSTATES  616
856    
857  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
858  #define YYUNDEFTOK  2  #define YYUNDEFTOK  2
859  #define YYMAXUTOK   364  #define YYMAXUTOK   364
860    
861  #define YYTRANSLATE(YYX)                        \  #define YYTRANSLATE(YYX)                        \
862    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
863    
864  /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */  /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
865  static const unsigned char yytranslate[] =  static const yytype_uint8 yytranslate[] =
866  {  {
867         0,     2,     2,     2,     2,     2,     2,     2,     2,     2,         0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
868         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 772  static const unsigned char yytranslate[] Line 906  static const unsigned char yytranslate[]
906  #if YYDEBUG  #if YYDEBUG
907  /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in  /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
908     YYRHS.  */     YYRHS.  */
909  static const unsigned short int yyprhs[] =  static const yytype_uint16 yyprhs[] =
910  {  {
911         0,     0,     3,     4,     7,     9,    11,    13,    15,    17,         0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
912        19,    21,    23,    25,    27,    29,    31,    33,    35,    41,        19,    21,    23,    25,    27,    29,    31,    33,    35,    41,
# Line 807  static const unsigned short int yyprhs[] Line 941  static const unsigned short int yyprhs[]
941      1020,  1022,  1024,  1026,  1028,  1030,  1032,  1034      1020,  1022,  1024,  1026,  1028,  1030,  1032,  1034
942  };  };
943    
944  /* YYRHS -- A `-1'-separated list of the rules' RHS. */  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
945  static const short int yyrhs[] =  static const yytype_int16 yyrhs[] =
946  {  {
947       128,     0,    -1,    -1,   128,   129,    -1,   131,    -1,   132,       128,     0,    -1,    -1,   128,   129,    -1,   131,    -1,   132,
948        -1,   133,    -1,   136,    -1,   138,    -1,   134,    -1,   144,        -1,   133,    -1,   136,    -1,   138,    -1,   134,    -1,   144,
# Line 917  static const short int yyrhs[] = Line 1051  static const short int yyrhs[] =
1051  };  };
1052    
1053  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1054  static const unsigned short int yyrline[] =  static const yytype_uint16 yyrline[] =
1055  {  {
1056         0,   423,   423,   425,   429,   430,   431,   432,   433,   434,         0,   423,   423,   425,   429,   430,   431,   432,   433,   434,
1057       435,   436,   437,   438,   439,   440,   441,   442,   449,   494,       435,   436,   437,   438,   439,   440,   441,   442,   449,   494,
# Line 953  static const unsigned short int yyrline[ Line 1087  static const unsigned short int yyrline[
1087  };  };
1088  #endif  #endif
1089    
1090  #if YYDEBUG || YYERROR_VERBOSE  #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1091  /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.  /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1092     First, the terminals, then, starting at YYNTOKENS, nonterminals. */     First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1093  static const char *const yytname[] =  static const char *const yytname[] =
1094  {  {
1095    "$end", "error", "$undefined", "ADD_TOK", "ALIASES_TOK", "AND_TOK",    "$end", "error", "$undefined", "ADD_TOK", "ALIASES_TOK", "AND_TOK",
# Line 1018  static const char *const yytname[] = Line 1152  static const char *const yytname[] =
1152  # ifdef YYPRINT  # ifdef YYPRINT
1153  /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to  /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1154     token YYLEX-NUM.  */     token YYLEX-NUM.  */
1155  static const unsigned short int yytoknum[] =  static const yytype_uint16 yytoknum[] =
1156  {  {
1157         0,   256,   257,   258,   259,   260,   261,   262,   263,   264,         0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1158       265,   266,   267,   268,   269,   270,   271,   272,   273,   274,       265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
# Line 1037  static const unsigned short int yytoknum Line 1171  static const unsigned short int yytoknum
1171  # endif  # endif
1172    
1173  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1174  static const unsigned char yyr1[] =  static const yytype_uint8 yyr1[] =
1175  {  {
1176         0,   127,   128,   128,   129,   129,   129,   129,   129,   129,         0,   127,   128,   128,   129,   129,   129,   129,   129,   129,
1177       129,   129,   129,   129,   129,   129,   129,   129,   130,   131,       129,   129,   129,   129,   129,   129,   129,   129,   130,   131,
# Line 1073  static const unsigned char yyr1[] = Line 1207  static const unsigned char yyr1[] =
1207  };  };
1208    
1209  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1210  static const unsigned char yyr2[] =  static const yytype_uint8 yyr2[] =
1211  {  {
1212         0,     2,     0,     2,     1,     1,     1,     1,     1,     1,         0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1213         1,     1,     1,     1,     1,     1,     1,     1,     5,     3,         1,     1,     1,     1,     1,     1,     1,     1,     5,     3,
# Line 1111  static const unsigned char yyr2[] = Line 1245  static const unsigned char yyr2[] =
1245  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1246     STATE-NUM when YYTABLE doesn't specify something else to do.  Zero     STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
1247     means the default is an error.  */     means the default is an error.  */
1248  static const unsigned short int yydefact[] =  static const yytype_uint16 yydefact[] =
1249  {  {
1250         2,     0,     1,    17,     0,     0,     0,     0,     0,     0,         2,     0,     1,    17,     0,     0,     0,     0,     0,     0,
1251         0,     0,    68,    63,     3,    16,     4,     5,     6,     9,         0,     0,    68,    63,     3,    16,     4,     5,     6,     9,
# Line 1177  static const unsigned short int yydefact Line 1311  static const unsigned short int yydefact
1311       255,     0,   116,   231,     0,   118       255,     0,   116,   231,     0,   118
1312  };  };
1313    
1314  /* YYDEFGOTO[NTERM-NUM]. */  /* YYDEFGOTO[NTERM-NUM].  */
1315  static const short int yydefgoto[] =  static const yytype_int16 yydefgoto[] =
1316  {  {
1317        -1,     1,    14,    15,    16,    17,    18,    19,    20,    21,        -1,     1,    14,    15,    16,    17,    18,    19,    20,    21,
1318        22,    23,    24,    25,    59,    60,   471,    26,    61,   514,        22,    23,    24,    25,    59,    60,   471,    26,    61,   514,
# Line 1197  static const short int yydefgoto[] = Line 1331  static const short int yydefgoto[] =
1331  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1332     STATE-NUM.  */     STATE-NUM.  */
1333  #define YYPACT_NINF -437  #define YYPACT_NINF -437
1334  static const short int yypact[] =  static const yytype_int16 yypact[] =
1335  {  {
1336      -437,  1006,  -437,  -437,    88,   -83,   -54,   -52,    18,    17,      -437,  1006,  -437,  -437,    88,   -83,   -54,   -52,    18,    17,
1337        81,    79,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,        81,    79,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,
# Line 1264  static const short int yypact[] = Line 1398  static const short int yypact[] =
1398  };  };
1399    
1400  /* YYPGOTO[NTERM-NUM].  */  /* YYPGOTO[NTERM-NUM].  */
1401  static const short int yypgoto[] =  static const yytype_int16 yypgoto[] =
1402  {  {
1403      -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,      -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,
1404      -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,      -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,  -437,
# Line 1285  static const short int yypgoto[] = Line 1419  static const short int yypgoto[] =
1419     number is the opposite.  If zero, do what YYDEFACT says.     number is the opposite.  If zero, do what YYDEFACT says.
1420     If YYTABLE_NINF, syntax error.  */     If YYTABLE_NINF, syntax error.  */
1421  #define YYTABLE_NINF -206  #define YYTABLE_NINF -206
1422  static const short int yytable[] =  static const yytype_int16 yytable[] =
1423  {  {
1424        86,   485,    89,    90,    53,    94,   174,   185,    64,   496,        86,   485,    89,    90,    53,    94,   174,   185,    64,   496,
1425        79,   272,    56,   173,    68,   186,   197,   349,   519,    79,        79,   272,    56,   173,    68,   186,   197,   349,   519,    79,
# Line 1400  static const short int yytable[] = Line 1534  static const short int yytable[] =
1534         0,     0,   211         0,     0,   211
1535  };  };
1536    
1537  static const short int yycheck[] =  static const yytype_int16 yycheck[] =
1538  {  {
1539        49,   427,    50,    51,    24,    53,    55,    64,    32,   445,        49,   427,    50,    51,    24,    53,    55,    64,    32,   445,
1540        32,   140,    11,    55,    38,    27,    27,    17,    35,    32,        32,   140,    11,    55,    38,    27,    27,    17,    35,    32,
# Line 1517  static const short int yycheck[] = Line 1651  static const short int yycheck[] =
1651    
1652  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1653     symbol of state STATE-NUM.  */     symbol of state STATE-NUM.  */
1654  static const unsigned char yystos[] =  static const yytype_uint8 yystos[] =
1655  {  {
1656         0,   128,     0,     1,     3,    27,    41,    43,    65,    67,         0,   128,     0,     1,     3,    27,    41,    43,    65,    67,
1657        69,    70,    83,    84,   129,   130,   131,   132,   133,   134,        69,    70,    83,    84,   129,   130,   131,   132,   133,   134,
# Line 1583  static const unsigned char yystos[] = Line 1717  static const unsigned char yystos[] =
1717       122,   101,   174,   121,   229,   122       122,   101,   174,   121,   229,   122
1718  };  };
1719    
 #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  
   
1720  #define yyerrok     (yyerrstatus = 0)  #define yyerrok     (yyerrstatus = 0)
1721  #define yyclearin   (yychar = YYEMPTY)  #define yyclearin   (yychar = YYEMPTY)
1722  #define YYEMPTY     (-2)  #define YYEMPTY     (-2)
# Line 1624  do                             \ Line 1742  do                             \
1742        yychar = (Token);                     \        yychar = (Token);                     \
1743        yylval = (Value);                     \        yylval = (Value);                     \
1744        yytoken = YYTRANSLATE (yychar);               \        yytoken = YYTRANSLATE (yychar);               \
1745        YYPOPSTACK;                       \        YYPOPSTACK (1);                       \
1746        goto yybackup;                        \        goto yybackup;                        \
1747      }                               \      }                               \
1748    else                              \    else                              \
1749      {                               \      {                               \
1750        yyerror ("syntax error: cannot back up");\        yyerror (YY_("syntax error: cannot back up")); \
1751        YYERROR;                          \        YYERROR;                          \
1752      }                               \      }                               \
1753  while (0)  while (YYID (0))
1754    
1755    
1756  #define YYTERROR    1  #define YYTERROR    1
# Line 1647  while (0) Line 1765  while (0)
1765  #ifndef YYLLOC_DEFAULT  #ifndef YYLLOC_DEFAULT
1766  # define YYLLOC_DEFAULT(Current, Rhs, N)                \  # define YYLLOC_DEFAULT(Current, Rhs, N)                \
1767      do                                  \      do                                  \
1768        if (N)                                \        if (YYID (N))                                                    \
1769      {                               \      {                               \
1770        (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \        (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
1771        (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \        (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \
# Line 1661  while (0) Line 1779  while (0)
1779        (Current).first_column = (Current).last_column =      \        (Current).first_column = (Current).last_column =      \
1780          YYRHSLOC (Rhs, 0).last_column;              \          YYRHSLOC (Rhs, 0).last_column;              \
1781      }                               \      }                               \
1782      while (0)      while (YYID (0))
1783  #endif  #endif
1784    
1785    
# Line 1673  while (0) Line 1791  while (0)
1791  # if YYLTYPE_IS_TRIVIAL  # if YYLTYPE_IS_TRIVIAL
1792  #  define YY_LOCATION_PRINT(File, Loc)          \  #  define YY_LOCATION_PRINT(File, Loc)          \
1793       fprintf (File, "%d.%d-%d.%d",          \       fprintf (File, "%d.%d-%d.%d",          \
1794                (Loc).first_line, (Loc).first_column, \            (Loc).first_line, (Loc).first_column, \
1795                (Loc).last_line,  (Loc).last_column)            (Loc).last_line,  (Loc).last_column)
1796  # else  # else
1797  #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)  #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1798  # endif  # endif
# Line 1701  while (0) Line 1819  while (0)
1819  do {                        \  do {                        \
1820    if (yydebug)                  \    if (yydebug)                  \
1821      YYFPRINTF Args;             \      YYFPRINTF Args;             \
1822  } while (0)  } while (YYID (0))
1823    
1824  # define YY_SYMBOL_PRINT(Title, Type, Value, Location)      \  # define YY_SYMBOL_PRINT(Title, Type, Value, Location)            \
1825  do {                                \  do {                                      \
1826    if (yydebug)                          \    if (yydebug)                                \
1827      {                               \      {                                     \
1828        YYFPRINTF (stderr, "%s ", Title);             \        YYFPRINTF (stderr, "%s ", Title);                   \
1829        yysymprint (stderr,                   \        yy_symbol_print (stderr,                        \
1830                    Type, Value); \            Type, Value); \
1831        YYFPRINTF (stderr, "\n");                 \        YYFPRINTF (stderr, "\n");                       \
1832      }                               \      }                                     \
1833  } while (0)  } while (YYID (0))
1834    
1835    
1836    /*--------------------------------.
1837    | Print this symbol on YYOUTPUT.  |
1838    `--------------------------------*/
1839    
1840    /*ARGSUSED*/
1841    #if (defined __STDC__ || defined __C99__FUNC__ \
1842         || defined __cplusplus || defined _MSC_VER)
1843    static void
1844    yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1845    #else
1846    static void
1847    yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1848        FILE *yyoutput;
1849        int yytype;
1850        YYSTYPE const * const yyvaluep;
1851    #endif
1852    {
1853      if (!yyvaluep)
1854        return;
1855    # ifdef YYPRINT
1856      if (yytype < YYNTOKENS)
1857        YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1858    # else
1859      YYUSE (yyoutput);
1860    # endif
1861      switch (yytype)
1862        {
1863          default:
1864        break;
1865        }
1866    }
1867    
1868    
1869    /*--------------------------------.
1870    | Print this symbol on YYOUTPUT.  |
1871    `--------------------------------*/
1872    
1873    #if (defined __STDC__ || defined __C99__FUNC__ \
1874         || defined __cplusplus || defined _MSC_VER)
1875    static void
1876    yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1877    #else
1878    static void
1879    yy_symbol_print (yyoutput, yytype, yyvaluep)
1880        FILE *yyoutput;
1881        int yytype;
1882        YYSTYPE const * const yyvaluep;
1883    #endif
1884    {
1885      if (yytype < YYNTOKENS)
1886        YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1887      else
1888        YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1889    
1890      yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1891      YYFPRINTF (yyoutput, ")");
1892    }
1893    
1894  /*------------------------------------------------------------------.  /*------------------------------------------------------------------.
1895  | yy_stack_print -- Print the state stack from its BOTTOM up to its |  | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1896  | TOP (included).                                                   |  | TOP (included).                                                   |
1897  `------------------------------------------------------------------*/  `------------------------------------------------------------------*/
1898    
1899  #if defined (__STDC__) || defined (__cplusplus)  #if (defined __STDC__ || defined __C99__FUNC__ \
1900         || defined __cplusplus || defined _MSC_VER)
1901  static void  static void
1902  yy_stack_print (short int *bottom, short int *top)  yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1903  #else  #else
1904  static void  static void
1905  yy_stack_print (bottom, top)  yy_stack_print (bottom, top)
1906      short int *bottom;      yytype_int16 *bottom;
1907      short int *top;      yytype_int16 *top;
1908  #endif  #endif
1909  {  {
1910    YYFPRINTF (stderr, "Stack now");    YYFPRINTF (stderr, "Stack now");
1911    for (/* Nothing. */; bottom <= top; ++bottom)    for (; bottom <= top; ++bottom)
1912      YYFPRINTF (stderr, " %d", *bottom);      YYFPRINTF (stderr, " %d", *bottom);
1913    YYFPRINTF (stderr, "\n");    YYFPRINTF (stderr, "\n");
1914  }  }
# Line 1739  yy_stack_print (bottom, top) Line 1917  yy_stack_print (bottom, top)
1917  do {                                \  do {                                \
1918    if (yydebug)                          \    if (yydebug)                          \
1919      yy_stack_print ((Bottom), (Top));               \      yy_stack_print ((Bottom), (Top));               \
1920  } while (0)  } while (YYID (0))
1921    
1922    
1923  /*------------------------------------------------.  /*------------------------------------------------.
1924  | Report that the YYRULE is going to be reduced.  |  | Report that the YYRULE is going to be reduced.  |
1925  `------------------------------------------------*/  `------------------------------------------------*/
1926    
1927  #if defined (__STDC__) || defined (__cplusplus)  #if (defined __STDC__ || defined __C99__FUNC__ \
1928         || defined __cplusplus || defined _MSC_VER)
1929  static void  static void
1930  yy_reduce_print (int yyrule)  yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1931  #else  #else
1932  static void  static void
1933  yy_reduce_print (yyrule)  yy_reduce_print (yyvsp, yyrule)
1934        YYSTYPE *yyvsp;
1935      int yyrule;      int yyrule;
1936  #endif  #endif
1937  {  {
1938      int yynrhs = yyr2[yyrule];
1939    int yyi;    int yyi;
1940    unsigned int yylno = yyrline[yyrule];    unsigned long int yylno = yyrline[yyrule];
1941    YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",    YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1942               yyrule - 1, yylno);           yyrule - 1, yylno);
1943    /* Print the symbols being reduced, and their result.  */    /* The symbols being reduced.  */
1944    for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)    for (yyi = 0; yyi < yynrhs; yyi++)
1945      YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);      {
1946    YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);        fprintf (stderr, "   $%d = ", yyi + 1);
1947          yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1948                   &(yyvsp[(yyi + 1) - (yynrhs)])
1949                               );
1950          fprintf (stderr, "\n");
1951        }
1952  }  }
1953    
1954  # define YY_REDUCE_PRINT(Rule)      \  # define YY_REDUCE_PRINT(Rule)      \
1955  do {                    \  do {                    \
1956    if (yydebug)              \    if (yydebug)              \
1957      yy_reduce_print (Rule);     \      yy_reduce_print (yyvsp, Rule); \
1958  } while (0)  } while (YYID (0))
1959    
1960  /* Nonzero means print parse trace.  It is left uninitialized so that  /* Nonzero means print parse trace.  It is left uninitialized so that
1961     multiple parsers can coexist.  */     multiple parsers can coexist.  */
# Line 1791  int yydebug; Line 1977  int yydebug;
1977     if the built-in stack extension method is used).     if the built-in stack extension method is used).
1978    
1979     Do not make this value too large; the results are undefined if     Do not make this value too large; the results are undefined if
1980     SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1981     evaluated with infinite-precision integer arithmetic.  */     evaluated with infinite-precision integer arithmetic.  */
1982    
1983  #ifndef YYMAXDEPTH  #ifndef YYMAXDEPTH
# Line 1803  int yydebug; Line 1989  int yydebug;
1989  #if YYERROR_VERBOSE  #if YYERROR_VERBOSE
1990    
1991  # ifndef yystrlen  # ifndef yystrlen
1992  #  if defined (__GLIBC__) && defined (_STRING_H)  #  if defined __GLIBC__ && defined _STRING_H
1993  #   define yystrlen strlen  #   define yystrlen strlen
1994  #  else  #  else
1995  /* Return the length of YYSTR.  */  /* Return the length of YYSTR.  */
1996    #if (defined __STDC__ || defined __C99__FUNC__ \
1997         || defined __cplusplus || defined _MSC_VER)
1998  static YYSIZE_T  static YYSIZE_T
 #   if defined (__STDC__) || defined (__cplusplus)  
1999  yystrlen (const char *yystr)  yystrlen (const char *yystr)
2000  #   else  #else
2001    static YYSIZE_T
2002  yystrlen (yystr)  yystrlen (yystr)
2003       const char *yystr;      const char *yystr;
2004  #   endif  #endif
2005  {  {
2006    register const char *yys = yystr;    YYSIZE_T yylen;
2007      for (yylen = 0; yystr[yylen]; yylen++)
   while (*yys++ != '\0')  
2008      continue;      continue;
2009      return yylen;
   return yys - yystr - 1;  
2010  }  }
2011  #  endif  #  endif
2012  # endif  # endif
2013    
2014  # ifndef yystpcpy  # ifndef yystpcpy
2015  #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)  #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2016  #   define yystpcpy stpcpy  #   define yystpcpy stpcpy
2017  #  else  #  else
2018  /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in  /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2019     YYDEST.  */     YYDEST.  */
2020    #if (defined __STDC__ || defined __C99__FUNC__ \
2021         || defined __cplusplus || defined _MSC_VER)
2022  static char *  static char *
 #   if defined (__STDC__) || defined (__cplusplus)  
2023  yystpcpy (char *yydest, const char *yysrc)  yystpcpy (char *yydest, const char *yysrc)
2024  #   else  #else
2025    static char *
2026  yystpcpy (yydest, yysrc)  yystpcpy (yydest, yysrc)
2027       char *yydest;      char *yydest;
2028       const char *yysrc;      const char *yysrc;
2029  #   endif  #endif
2030  {  {
2031    register char *yyd = yydest;    char *yyd = yydest;
2032    register const char *yys = yysrc;    const char *yys = yysrc;
2033    
2034    while ((*yyd++ = *yys++) != '\0')    while ((*yyd++ = *yys++) != '\0')
2035      continue;      continue;
# Line 1851  yystpcpy (yydest, yysrc) Line 2039  yystpcpy (yydest, yysrc)
2039  #  endif  #  endif
2040  # endif  # endif
2041    
2042  #endif /* !YYERROR_VERBOSE */  # ifndef yytnamerr
2043    /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2044       quotes and backslashes, so that it's suitable for yyerror.  The
2045       heuristic is that double-quoting is unnecessary unless the string
2046       contains an apostrophe, a comma, or backslash (other than
2047       backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2048       null, do not copy; instead, return the length of what the result
2049       would have been.  */
2050    static YYSIZE_T
2051    yytnamerr (char *yyres, const char *yystr)
2052    {
2053      if (*yystr == '"')
2054        {
2055          YYSIZE_T yyn = 0;
2056          char const *yyp = yystr;
2057    
2058          for (;;)
2059        switch (*++yyp)
2060          {
2061          case '\'':
2062          case ',':
2063            goto do_not_strip_quotes;
2064    
2065          case '\\':
2066            if (*++yyp != '\\')
2067              goto do_not_strip_quotes;
2068            /* Fall through.  */
2069          default:
2070            if (yyres)
2071              yyres[yyn] = *yyp;
2072            yyn++;
2073            break;
2074    
2075  #if YYDEBUG        case '"':
2076  /*--------------------------------.          if (yyres)
2077  | Print this symbol on YYOUTPUT.  |            yyres[yyn] = '\0';
2078  `--------------------------------*/          return yyn;
2079          }
2080        do_not_strip_quotes: ;
2081        }
2082    
2083  #if defined (__STDC__) || defined (__cplusplus)    if (! yyres)
2084  static void      return yystrlen (yystr);
2085  yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)  
2086  #else    return yystpcpy (yyres, yystr) - yyres;
2087  static void  }
2088  yysymprint (yyoutput, yytype, yyvaluep)  # endif
2089      FILE *yyoutput;  
2090      int yytype;  /* Copy into YYRESULT an error message about the unexpected token
2091      YYSTYPE *yyvaluep;     YYCHAR while in state YYSTATE.  Return the number of bytes copied,
2092  #endif     including the terminating null byte.  If YYRESULT is null, do not
2093       copy anything; just return the number of bytes that would be
2094       copied.  As a special case, return 0 if an ordinary "syntax error"
2095       message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
2096       size calculation.  */
2097    static YYSIZE_T
2098    yysyntax_error (char *yyresult, int yystate, int yychar)
2099  {  {
2100    /* Pacify ``unused variable'' warnings.  */    int yyn = yypact[yystate];
   (void) yyvaluep;  
2101    
2102    if (yytype < YYNTOKENS)    if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2103      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);      return 0;
2104    else    else
2105      YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);      {
2106          int yytype = YYTRANSLATE (yychar);
2107          YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2108          YYSIZE_T yysize = yysize0;
2109          YYSIZE_T yysize1;
2110          int yysize_overflow = 0;
2111          enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2112          char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2113          int yyx;
2114    
2115    # if 0
2116          /* This is so xgettext sees the translatable formats that are
2117         constructed on the fly.  */
2118          YY_("syntax error, unexpected %s");
2119          YY_("syntax error, unexpected %s, expecting %s");
2120          YY_("syntax error, unexpected %s, expecting %s or %s");
2121          YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2122          YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2123    # endif
2124          char *yyfmt;
2125          char const *yyf;
2126          static char const yyunexpected[] = "syntax error, unexpected %s";
2127          static char const yyexpecting[] = ", expecting %s";
2128          static char const yyor[] = " or %s";
2129          char yyformat[sizeof yyunexpected
2130                + sizeof yyexpecting - 1
2131                + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2132                   * (sizeof yyor - 1))];
2133          char const *yyprefix = yyexpecting;
2134    
2135          /* Start YYX at -YYN if negative to avoid negative indexes in
2136         YYCHECK.  */
2137          int yyxbegin = yyn < 0 ? -yyn : 0;
2138    
2139          /* Stay within bounds of both yycheck and yytname.  */
2140          int yychecklim = YYLAST - yyn + 1;
2141          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2142          int yycount = 1;
2143    
2144          yyarg[0] = yytname[yytype];
2145          yyfmt = yystpcpy (yyformat, yyunexpected);
2146    
2147          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2148        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2149          {
2150            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2151              {
2152            yycount = 1;
2153            yysize = yysize0;
2154            yyformat[sizeof yyunexpected - 1] = '\0';
2155            break;
2156              }
2157            yyarg[yycount++] = yytname[yyx];
2158            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2159            yysize_overflow |= (yysize1 < yysize);
2160            yysize = yysize1;
2161            yyfmt = yystpcpy (yyfmt, yyprefix);
2162            yyprefix = yyor;
2163          }
2164    
2165          yyf = YY_(yyformat);
2166          yysize1 = yysize + yystrlen (yyf);
2167          yysize_overflow |= (yysize1 < yysize);
2168          yysize = yysize1;
2169    
2170          if (yysize_overflow)
2171        return YYSIZE_MAXIMUM;
2172    
2173  # ifdef YYPRINT        if (yyresult)
2174    if (yytype < YYNTOKENS)      {
2175      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);        /* Avoid sprintf, as that infringes on the user's name space.
2176  # endif           Don't have undefined behavior even if the translation
2177    switch (yytype)           produced a string with the wrong number of "%s"s.  */
2178      {        char *yyp = yyresult;
2179        default:        int yyi = 0;
2180          break;        while ((*yyp = *yyf) != '\0')
2181            {
2182              if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2183            {
2184              yyp += yytnamerr (yyp, yyarg[yyi++]);
2185              yyf += 2;
2186            }
2187              else
2188            {
2189              yyp++;
2190              yyf++;
2191            }
2192            }
2193        }
2194          return yysize;
2195      }      }
   YYFPRINTF (yyoutput, ")");  
2196  }  }
2197    #endif /* YYERROR_VERBOSE */
2198    
2199    
 #endif /* ! YYDEBUG */  
2200  /*-----------------------------------------------.  /*-----------------------------------------------.
2201  | Release the memory associated to this symbol.  |  | Release the memory associated to this symbol.  |
2202  `-----------------------------------------------*/  `-----------------------------------------------*/
2203    
2204  #if defined (__STDC__) || defined (__cplusplus)  /*ARGSUSED*/
2205    #if (defined __STDC__ || defined __C99__FUNC__ \
2206         || defined __cplusplus || defined _MSC_VER)
2207  static void  static void
2208  yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)  yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2209  #else  #else
# Line 1908  yydestruct (yymsg, yytype, yyvaluep) Line 2214  yydestruct (yymsg, yytype, yyvaluep)
2214      YYSTYPE *yyvaluep;      YYSTYPE *yyvaluep;
2215  #endif  #endif
2216  {  {
2217    /* Pacify ``unused variable'' warnings.  */    YYUSE (yyvaluep);
   (void) yyvaluep;  
2218    
2219    if (!yymsg)    if (!yymsg)
2220      yymsg = "Deleting";      yymsg = "Deleting";
# Line 1919  yydestruct (yymsg, yytype, yyvaluep) Line 2224  yydestruct (yymsg, yytype, yyvaluep)
2224      {      {
2225    
2226        default:        default:
2227          break;      break;
2228      }      }
2229  }  }
2230    
# Line 1927  yydestruct (yymsg, yytype, yyvaluep) Line 2232  yydestruct (yymsg, yytype, yyvaluep)
2232  /* Prevent warnings from -Wmissing-prototypes.  */  /* Prevent warnings from -Wmissing-prototypes.  */
2233    
2234  #ifdef YYPARSE_PARAM  #ifdef YYPARSE_PARAM
2235  # if defined (__STDC__) || defined (__cplusplus)  #if defined __STDC__ || defined __cplusplus
2236  int yyparse (void *YYPARSE_PARAM);  int yyparse (void *YYPARSE_PARAM);
2237  # else  #else
2238  int yyparse ();  int yyparse ();
2239  # endif  #endif
2240  #else /* ! YYPARSE_PARAM */  #else /* ! YYPARSE_PARAM */
2241  #if defined (__STDC__) || defined (__cplusplus)  #if defined __STDC__ || defined __cplusplus
2242  int yyparse (void);  int yyparse (void);
2243  #else  #else
2244  int yyparse ();  int yyparse ();
# Line 1958  int yynerrs; Line 2263  int yynerrs;
2263  `----------*/  `----------*/
2264    
2265  #ifdef YYPARSE_PARAM  #ifdef YYPARSE_PARAM
2266  # if defined (__STDC__) || defined (__cplusplus)  #if (defined __STDC__ || defined __C99__FUNC__ \
2267  int yyparse (void *YYPARSE_PARAM)       || defined __cplusplus || defined _MSC_VER)
2268  # else  int
2269  int yyparse (YYPARSE_PARAM)  yyparse (void *YYPARSE_PARAM)
2270    void *YYPARSE_PARAM;  #else
2271  # endif  int
2272    yyparse (YYPARSE_PARAM)
2273        void *YYPARSE_PARAM;
2274    #endif
2275  #else /* ! YYPARSE_PARAM */  #else /* ! YYPARSE_PARAM */
2276  #if defined (__STDC__) || defined (__cplusplus)  #if (defined __STDC__ || defined __C99__FUNC__ \
2277         || defined __cplusplus || defined _MSC_VER)
2278  int  int
2279  yyparse (void)  yyparse (void)
2280  #else  #else
# Line 1976  yyparse () Line 2285  yyparse ()
2285  #endif  #endif
2286  {  {
2287        
2288    register int yystate;    int yystate;
2289    register int yyn;    int yyn;
2290    int yyresult;    int yyresult;
2291    /* Number of tokens to shift before error messages enabled.  */    /* Number of tokens to shift before error messages enabled.  */
2292    int yyerrstatus;    int yyerrstatus;
2293    /* Look-ahead token as an internal (translated) token number.  */    /* Look-ahead token as an internal (translated) token number.  */
2294    int yytoken = 0;    int yytoken = 0;
2295    #if YYERROR_VERBOSE
2296      /* Buffer for error messages, and its allocated size.  */
2297      char yymsgbuf[128];
2298      char *yymsg = yymsgbuf;
2299      YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2300    #endif
2301    
2302    /* Three stacks and their tools:    /* Three stacks and their tools:
2303       `yyss': related to states,       `yyss': related to states,
# Line 1993  yyparse () Line 2308  yyparse ()
2308       to reallocate them elsewhere.  */       to reallocate them elsewhere.  */
2309    
2310    /* The state stack.  */    /* The state stack.  */
2311    short int yyssa[YYINITDEPTH];    yytype_int16 yyssa[YYINITDEPTH];
2312    short int *yyss = yyssa;    yytype_int16 *yyss = yyssa;
2313    register short int *yyssp;    yytype_int16 *yyssp;
2314    
2315    /* The semantic value stack.  */    /* The semantic value stack.  */
2316    YYSTYPE yyvsa[YYINITDEPTH];    YYSTYPE yyvsa[YYINITDEPTH];
2317    YYSTYPE *yyvs = yyvsa;    YYSTYPE *yyvs = yyvsa;
2318    register YYSTYPE *yyvsp;    YYSTYPE *yyvsp;
2319    
2320    
2321    
2322  #define YYPOPSTACK   (yyvsp--, yyssp--)  #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2323    
2324    YYSIZE_T yystacksize = YYINITDEPTH;    YYSIZE_T yystacksize = YYINITDEPTH;
2325    
# Line 2013  yyparse () Line 2328  yyparse ()
2328    YYSTYPE yyval;    YYSTYPE yyval;
2329    
2330    
2331    /* When reducing, the number of symbols on the RHS of the reduced    /* The number of symbols on the RHS of the reduced rule.
2332       rule.  */       Keep to zero when no symbol should be popped.  */
2333    int yylen;    int yylen = 0;
2334    
2335    YYDPRINTF ((stderr, "Starting parse\n"));    YYDPRINTF ((stderr, "Starting parse\n"));
2336    
# Line 2032  yyparse () Line 2347  yyparse ()
2347    yyssp = yyss;    yyssp = yyss;
2348    yyvsp = yyvs;    yyvsp = yyvs;
2349    
   
   yyvsp[0] = yylval;  
   
2350    goto yysetstate;    goto yysetstate;
2351    
2352  /*------------------------------------------------------------.  /*------------------------------------------------------------.
# Line 2042  yyparse () Line 2354  yyparse ()
2354  `------------------------------------------------------------*/  `------------------------------------------------------------*/
2355   yynewstate:   yynewstate:
2356    /* In all cases, when you get here, the value and location stacks    /* In all cases, when you get here, the value and location stacks
2357       have just been pushed. so pushing a state here evens the stacks.       have just been pushed.  So pushing a state here evens the stacks.  */
      */  
2358    yyssp++;    yyssp++;
2359    
2360   yysetstate:   yysetstate:
# Line 2056  yyparse () Line 2367  yyparse ()
2367    
2368  #ifdef yyoverflow  #ifdef yyoverflow
2369        {        {
2370      /* Give user a chance to reallocate the stack. Use copies of      /* Give user a chance to reallocate the stack.  Use copies of
2371         these so that the &'s don't force the real ones into         these so that the &'s don't force the real ones into
2372         memory.  */         memory.  */
2373      YYSTYPE *yyvs1 = yyvs;      YYSTYPE *yyvs1 = yyvs;
2374      short int *yyss1 = yyss;      yytype_int16 *yyss1 = yyss;
2375    
2376    
2377      /* Each stack pointer address is followed by the size of the      /* Each stack pointer address is followed by the size of the
2378         data in use in that stack, in bytes.  This used to be a         data in use in that stack, in bytes.  This used to be a
2379         conditional around just the two extra args, but that might         conditional around just the two extra args, but that might
2380         be undefined if yyoverflow is a macro.  */         be undefined if yyoverflow is a macro.  */
2381      yyoverflow ("parser stack overflow",      yyoverflow (YY_("memory exhausted"),
2382              &yyss1, yysize * sizeof (*yyssp),              &yyss1, yysize * sizeof (*yyssp),
2383              &yyvs1, yysize * sizeof (*yyvsp),              &yyvs1, yysize * sizeof (*yyvsp),
2384    
# Line 2078  yyparse () Line 2389  yyparse ()
2389        }        }
2390  #else /* no yyoverflow */  #else /* no yyoverflow */
2391  # ifndef YYSTACK_RELOCATE  # ifndef YYSTACK_RELOCATE
2392        goto yyoverflowlab;        goto yyexhaustedlab;
2393  # else  # else
2394        /* Extend the stack our own way.  */        /* Extend the stack our own way.  */
2395        if (YYMAXDEPTH <= yystacksize)        if (YYMAXDEPTH <= yystacksize)
2396      goto yyoverflowlab;      goto yyexhaustedlab;
2397        yystacksize *= 2;        yystacksize *= 2;
2398        if (YYMAXDEPTH < yystacksize)        if (YYMAXDEPTH < yystacksize)
2399      yystacksize = YYMAXDEPTH;      yystacksize = YYMAXDEPTH;
2400    
2401        {        {
2402      short int *yyss1 = yyss;      yytype_int16 *yyss1 = yyss;
2403      union yyalloc *yyptr =      union yyalloc *yyptr =
2404        (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));        (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2405      if (! yyptr)      if (! yyptr)
2406        goto yyoverflowlab;        goto yyexhaustedlab;
2407      YYSTACK_RELOCATE (yyss);      YYSTACK_RELOCATE (yyss);
2408      YYSTACK_RELOCATE (yyvs);      YYSTACK_RELOCATE (yyvs);
2409    
# Line 2123  yyparse () Line 2434  yyparse ()
2434  `-----------*/  `-----------*/
2435  yybackup:  yybackup:
2436    
2437  /* Do appropriate processing given the current state.  */    /* Do appropriate processing given the current state.  Read a
2438  /* Read a look-ahead token if we need one and don't already have one.  */       look-ahead token if we need one and don't already have one.  */
 /* yyresume: */  
2439    
2440    /* First try to decide what to do without reference to look-ahead token.  */    /* First try to decide what to do without reference to look-ahead token.  */
   
2441    yyn = yypact[yystate];    yyn = yypact[yystate];
2442    if (yyn == YYPACT_NINF)    if (yyn == YYPACT_NINF)
2443      goto yydefault;      goto yydefault;
# Line 2170  yybackup: Line 2479  yybackup:
2479    if (yyn == YYFINAL)    if (yyn == YYFINAL)
2480      YYACCEPT;      YYACCEPT;
2481    
2482      /* Count tokens shifted since error; after three, turn off error
2483         status.  */
2484      if (yyerrstatus)
2485        yyerrstatus--;
2486    
2487    /* Shift the look-ahead token.  */    /* Shift the look-ahead token.  */
2488    YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);    YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2489    
2490    /* Discard the token being shifted unless it is eof.  */    /* Discard the shifted token unless it is eof.  */
2491    if (yychar != YYEOF)    if (yychar != YYEOF)
2492      yychar = YYEMPTY;      yychar = YYEMPTY;
2493    
2494      yystate = yyn;
2495    *++yyvsp = yylval;    *++yyvsp = yylval;
2496    
   
   /* Count tokens shifted since error; after three, turn off error  
      status.  */  
   if (yyerrstatus)  
     yyerrstatus--;  
   
   yystate = yyn;  
2497    goto yynewstate;    goto yynewstate;
2498    
2499    
# Line 2221  yyreduce: Line 2529  yyreduce:
2529    switch (yyn)    switch (yyn)
2530      {      {
2531          case 17:          case 17:
2532  #line 443 "base\\generic\\compiler\\ascParse.y"  #line 443 "base/generic/compiler/ascParse.y"
2533      {      {
2534        ErrMsg_Generic("Error in definition.");        ErrMsg_Generic("Error in definition.");
2535      }      }
2536      break;      break;
2537    
2538    case 18:    case 18:
2539  #line 450 "base\\generic\\compiler\\ascParse.y"  #line 450 "base/generic/compiler/ascParse.y"
2540      {      {
2541        /* the following steps apply to string buffers only, not files */        /* the following steps apply to string buffers only, not files */
2542        struct gl_list_t *stats;        struct gl_list_t *stats;
2543        int dispose;        int dispose;
2544        if ((yyvsp[-2].slptr) != NULL) {        if ((yyvsp[(3) - (5)].slptr) != NULL) {
2545          stats = gl_create(1L);          stats = gl_create(1L);
2546          gl_append_ptr(stats,(void *)(yyvsp[-2].slptr));          gl_append_ptr(stats,(void *)(yyvsp[(3) - (5)].slptr));
2547          if (g_untrapped_error) {          if (g_untrapped_error) {
2548            ErrMsg_Generic("Because of a syntax error, the following statements are being ignored:");            ErrMsg_Generic("Because of a syntax error, the following statements are being ignored:");
2549            WriteStatementList(ASCERR,(yyvsp[-2].slptr),4);            WriteStatementList(ASCERR,(yyvsp[(3) - (5)].slptr),4);
2550            DestroyStatementList((yyvsp[-2].slptr));            DestroyStatementList((yyvsp[(3) - (5)].slptr));
2551          }else{          }else{
2552            dispose = Asc_ModuleAddStatements(Asc_CurrentModule(),stats);            dispose = Asc_ModuleAddStatements(Asc_CurrentModule(),stats);
2553            switch (dispose) {            switch (dispose) {
# Line 2253  yyreduce: Line 2561  yyreduce:
2561              case -1: /* illegal in file */              case -1: /* illegal in file */
2562                ErrMsg_Generic("GLOBAL statements can only be made interactively. Ignoring:");                ErrMsg_Generic("GLOBAL statements can only be made interactively. Ignoring:");
2563                if (stats != NULL) {                if (stats != NULL) {
2564                  WriteStatementList(ASCERR,(yyvsp[-2].slptr),4);                  WriteStatementList(ASCERR,(yyvsp[(3) - (5)].slptr),4);
2565                  gl_iterate(stats,(DestroyFunc)DestroyStatementList);                  gl_iterate(stats,(DestroyFunc)DestroyStatementList);
2566                  gl_destroy(stats);                  gl_destroy(stats);
2567                }                }
# Line 2273  yyreduce: Line 2581  yyreduce:
2581      break;      break;
2582    
2583    case 19:    case 19:
2584  #line 495 "base\\generic\\compiler\\ascParse.y"  #line 495 "base/generic/compiler/ascParse.y"
2585      {      {
2586        Asc_ScannerPushBuffer((yyvsp[-1].dquote_ptr));        Asc_ScannerPushBuffer((yyvsp[(2) - (3)].dquote_ptr));
2587      }      }
2588      break;      break;
2589    
2590    case 20:    case 20:
2591  #line 499 "base\\generic\\compiler\\ascParse.y"  #line 499 "base/generic/compiler/ascParse.y"
2592      {      {
2593        DestroyName((yyvsp[-1].nptr));        DestroyName((yyvsp[(2) - (3)].nptr));
2594        ErrMsg_Generic("REQUIRE statement syntax is 'REQUIRE \"filename\";'.");        ErrMsg_Generic("REQUIRE statement syntax is 'REQUIRE \"filename\";'.");
2595      }      }
2596      break;      break;
2597    
2598    case 21:    case 21:
2599  #line 504 "base\\generic\\compiler\\ascParse.y"  #line 504 "base/generic/compiler/ascParse.y"
2600      {      {
2601        DestroyName((yyvsp[0].nptr));        DestroyName((yyvsp[(2) - (2)].nptr));
2602        ErrMsg_Generic("REQUIRE statement syntax is 'REQUIRE \"filename\";'.");        ErrMsg_Generic("REQUIRE statement syntax is 'REQUIRE \"filename\";'.");
2603      }      }
2604      break;      break;
2605    
2606    case 22:    case 22:
2607  #line 512 "base\\generic\\compiler\\ascParse.y"  #line 512 "base/generic/compiler/ascParse.y"
2608      {      {
2609            Asc_ModuleCreateAlias(Asc_CurrentModule(),(yyvsp[-1].dquote_ptr));            Asc_ModuleCreateAlias(Asc_CurrentModule(),(yyvsp[(2) - (3)].dquote_ptr));
2610          }          }
2611      break;      break;
2612    
2613    case 23:    case 23:
2614  #line 516 "base\\generic\\compiler\\ascParse.y"  #line 516 "base/generic/compiler/ascParse.y"
2615      {      {
2616        DestroyName((yyvsp[-1].nptr));        DestroyName((yyvsp[(2) - (3)].nptr));
2617        ErrMsg_Generic("PROVIDE statement syntax is 'PROVIDE \"filename\";'.");        ErrMsg_Generic("PROVIDE statement syntax is 'PROVIDE \"filename\";'.");
2618      }      }
2619      break;      break;
2620    
2621    case 24:    case 24:
2622  #line 521 "base\\generic\\compiler\\ascParse.y"  #line 521 "base/generic/compiler/ascParse.y"
2623      {      {
2624        DestroyName((yyvsp[0].nptr));        DestroyName((yyvsp[(2) - (2)].nptr));
2625        ErrMsg_Generic("PROVIDE statement syntax is 'PROVIDE \"filename\";'.");        ErrMsg_Generic("PROVIDE statement syntax is 'PROVIDE \"filename\";'.");
2626      }      }
2627      break;      break;
2628    
2629    case 25:    case 25:
2630  #line 529 "base\\generic\\compiler\\ascParse.y"  #line 529 "base/generic/compiler/ascParse.y"
2631      {      {
2632        if(package_load((yyvsp[-1].dquote_ptr),SCP((yyvsp[-3].id_ptr)))){        if(package_load((yyvsp[(4) - (5)].dquote_ptr),SCP((yyvsp[(2) - (5)].id_ptr)))){
2633          ErrMsg_Generic("IMPORT failed");          ErrMsg_Generic("IMPORT failed");
2634        }        }
2635      }      }
2636      break;      break;
2637    
2638    case 26:    case 26:
2639  #line 535 "base\\generic\\compiler\\ascParse.y"  #line 535 "base/generic/compiler/ascParse.y"
2640      {      {
2641        if(package_load(SCP((yyvsp[-1].dquote_ptr)),NULL)){        if(package_load(SCP((yyvsp[(2) - (3)].dquote_ptr)),NULL)){
2642          ErrMsg_Generic("IMPORT failed");          ErrMsg_Generic("IMPORT failed");
2643        }        }
2644      }      }
2645      break;      break;
2646    
2647    case 27:    case 27:
2648  #line 544 "base\\generic\\compiler\\ascParse.y"  #line 544 "base/generic/compiler/ascParse.y"
2649      {      {
2650        /*  see comments for notes statement.  */        /*  see comments for notes statement.  */
2651        if( (yyvsp[-1].int_value) != NOTES_TOK ) {        if( (yyvsp[(3) - (4)].int_value) != NOTES_TOK ) {
2652          WarnMsg_MismatchEnd("NOTES", NULL, (yyvsp[-1].int_value), NULL);          WarnMsg_MismatchEnd("NOTES", NULL, (yyvsp[(3) - (4)].int_value), NULL);
2653        }        }
2654        if ((yyvsp[-2].notesptr) != NULL) {        if ((yyvsp[(2) - (4)].notesptr) != NULL) {
2655          struct NoteTmp *nt;          struct NoteTmp *nt;
2656          symchar *lang=NULL; /* dummy */          symchar *lang=NULL; /* dummy */
2657          nt = (yyvsp[-2].notesptr);          nt = (yyvsp[(2) - (4)].notesptr);
2658          while (nt != NULL) {          while (nt != NULL) {
2659            if (nt->lang != NULL) {            if (nt->lang != NULL) {
2660              lang = nt->lang;              lang = nt->lang;
# Line 2360  yyreduce: Line 2668  yyreduce:
2668          }          }
2669          /* now keep them */          /* now keep them */
2670          ProcessNotes(1);          ProcessNotes(1);
2671          DestroyNoteTmpList((yyvsp[-2].notesptr));          DestroyNoteTmpList((yyvsp[(2) - (4)].notesptr));
2672        }        }
2673        g_type_name = g_proc_name = NULL;        g_type_name = g_proc_name = NULL;
2674        g_untrapped_error = 0;        g_untrapped_error = 0;
# Line 2368  yyreduce: Line 2676  yyreduce:
2676      break;      break;
2677    
2678    case 28:    case 28:
2679  #line 575 "base\\generic\\compiler\\ascParse.y"  #line 575 "base/generic/compiler/ascParse.y"
2680      {      {
2681        g_type_name = (yyvsp[-2].id_ptr);        g_type_name = (yyvsp[(4) - (6)].id_ptr);
2682        g_proc_name = (yyvsp[-1].id_ptr);        g_proc_name = (yyvsp[(5) - (6)].id_ptr);
2683      }      }
2684      break;      break;
2685    
2686    case 29:    case 29:
2687  #line 583 "base\\generic\\compiler\\ascParse.y"  #line 583 "base/generic/compiler/ascParse.y"
2688      {      {
2689        if ((yyvsp[-3].tptr) == NULL) {        if ((yyvsp[(1) - (4)].tptr) == NULL) {
2690          DestroyProcedureList((yyvsp[-2].listp));          DestroyProcedureList((yyvsp[(2) - (4)].listp));
2691        } else {        } else {
2692          if( (yyvsp[-1].int_value) != METHODS_TOK ) {          if( (yyvsp[(3) - (4)].int_value) != METHODS_TOK ) {
2693            WarnMsg_MismatchEnd("ADD METHODS", NULL, (yyvsp[-1].int_value), "METHODS");            WarnMsg_MismatchEnd("ADD METHODS", NULL, (yyvsp[(3) - (4)].int_value), "METHODS");
2694          }          }
2695          if (AddMethods((yyvsp[-3].tptr),(yyvsp[-2].listp),g_untrapped_error) != 0) {          if (AddMethods((yyvsp[(1) - (4)].tptr),(yyvsp[(2) - (4)].listp),g_untrapped_error) != 0) {
2696            if ((yyvsp[-3].tptr) != ILLEGAL_DEFINITION) {            if ((yyvsp[(1) - (4)].tptr) != ILLEGAL_DEFINITION) {
2697              error_reporter_current_line(ASC_USER_ERROR              error_reporter_current_line(ASC_USER_ERROR
2698                ,"ADD METHODS failed for type %s"                ,"ADD METHODS failed for type %s"
2699                ,SCP(GetName((yyvsp[-3].tptr)))                ,SCP(GetName((yyvsp[(1) - (4)].tptr)))
2700              );              );
2701              DestroyProcedureList((yyvsp[-2].listp));              DestroyProcedureList((yyvsp[(2) - (4)].listp));
2702            } /* else adding in DEFINITION MODEL may have misgone */            } /* else adding in DEFINITION MODEL may have misgone */
2703          }          }
2704        }        }
# Line 2399  yyreduce: Line 2707  yyreduce:
2707      break;      break;
2708    
2709    case 30:    case 30:
2710  #line 606 "base\\generic\\compiler\\ascParse.y"  #line 606 "base/generic/compiler/ascParse.y"
2711      {      {
2712        struct TypeDescription *tmptype;        struct TypeDescription *tmptype;
2713        tmptype = FindType((yyvsp[-1].id_ptr));        tmptype = FindType((yyvsp[(4) - (5)].id_ptr));
2714        if(tmptype == NULL){        if(tmptype == NULL){
2715          error_reporter_current_line(ASC_USER_ERROR          error_reporter_current_line(ASC_USER_ERROR
2716            ,"ADD METHODS called with undefined type (%s)"            ,"ADD METHODS called with undefined type (%s)"
2717            ,SCP((yyvsp[-1].id_ptr))            ,SCP((yyvsp[(4) - (5)].id_ptr))
2718          );          );
2719        }        }
2720        (yyval.tptr) = tmptype; /* parent should check for NULL */        (yyval.tptr) = tmptype; /* parent should check for NULL */
2721        g_type_name = (yyvsp[-1].id_ptr); /* scope for notes */        g_type_name = (yyvsp[(4) - (5)].id_ptr); /* scope for notes */
2722      }      }
2723      break;      break;
2724    
2725    case 31:    case 31:
2726  #line 619 "base\\generic\\compiler\\ascParse.y"  #line 619 "base/generic/compiler/ascParse.y"
2727      {      {
2728        (yyval.tptr) = ILLEGAL_DEFINITION;        (yyval.tptr) = ILLEGAL_DEFINITION;
2729        /* need a bit of global state here to tag base methods */        /* need a bit of global state here to tag base methods */
# Line 2423  yyreduce: Line 2731  yyreduce:
2731      break;      break;
2732    
2733    case 32:    case 32:
2734  #line 627 "base\\generic\\compiler\\ascParse.y"  #line 627 "base/generic/compiler/ascParse.y"
2735      {      {
2736        if ((yyvsp[-3].tptr) == NULL) {        if ((yyvsp[(1) - (4)].tptr) == NULL) {
2737          DestroyProcedureList((yyvsp[-2].listp));          DestroyProcedureList((yyvsp[(2) - (4)].listp));
2738        } else {        } else {
2739          if( (yyvsp[-1].int_value) != METHODS_TOK ) {          if( (yyvsp[(3) - (4)].int_value) != METHODS_TOK ) {
2740            WarnMsg_MismatchEnd("REPLACE METHODS", NULL, (yyvsp[-1].int_value), "METHODS");            WarnMsg_MismatchEnd("REPLACE METHODS", NULL, (yyvsp[(3) - (4)].int_value), "METHODS");
2741          }          }
2742          if (ReplaceMethods((yyvsp[-3].tptr),(yyvsp[-2].listp),g_untrapped_error) != 0) {          if (ReplaceMethods((yyvsp[(1) - (4)].tptr),(yyvsp[(2) - (4)].listp),g_untrapped_error) != 0) {
2743            error_reporter_current_line(ASC_USER_ERROR            error_reporter_current_line(ASC_USER_ERROR
2744              ,"REPLACE METHODS failed for type %s"              ,"REPLACE METHODS failed for type %s"
2745              ,SCP(GetName((yyvsp[-3].tptr)))              ,SCP(GetName((yyvsp[(1) - (4)].tptr)))
2746            );            );
2747            DestroyProcedureList((yyvsp[-2].listp));            DestroyProcedureList((yyvsp[(2) - (4)].listp));
2748          }          }
2749        }        }
2750        g_untrapped_error = 0;        g_untrapped_error = 0;
# Line 2444  yyreduce: Line 2752  yyreduce:
2752      break;      break;
2753    
2754    case 33:    case 33:
2755  #line 648 "base\\generic\\compiler\\ascParse.y"  #line 648 "base/generic/compiler/ascParse.y"
2756      {      {
2757        struct TypeDescription *tmptype;        struct TypeDescription *tmptype;
2758        tmptype = FindType((yyvsp[-1].id_ptr));        tmptype = FindType((yyvsp[(4) - (5)].id_ptr));
2759        if (tmptype == NULL) {        if (tmptype == NULL) {
2760          error_reporter_current_line(ASC_USER_ERROR          error_reporter_current_line(ASC_USER_ERROR
2761            ,"REPLACE METHODS called with undefined type (%s)"            ,"REPLACE METHODS called with undefined type (%s)"
2762            ,SCP((yyvsp[-1].id_ptr))            ,SCP((yyvsp[(4) - (5)].id_ptr))
2763          );          );
2764        }        }
2765        (yyval.tptr) = tmptype; /* parent should check for NULL */        (yyval.tptr) = tmptype; /* parent should check for NULL */
# Line 2459  yyreduce: Line 2767  yyreduce:
2767      break;      break;
2768    
2769    case 34:    case 34:
2770  #line 660 "base\\generic\\compiler\\ascParse.y"  #line 660 "base/generic/compiler/ascParse.y"
2771      {      {
2772        (yyval.tptr) = ILLEGAL_DEFINITION;        (yyval.tptr) = ILLEGAL_DEFINITION;
2773        /* need a bit of global state here to tag base methods */        /* need a bit of global state here to tag base methods */
# Line 2467  yyreduce: Line 2775  yyreduce:
2775      break;      break;
2776    
2777    case 35:    case 35:
2778  #line 668 "base\\generic\\compiler\\ascParse.y"  #line 668 "base/generic/compiler/ascParse.y"
2779      {      {
2780        struct TypeDescription *def_ptr;        struct TypeDescription *def_ptr;
2781        int keepnotes = 0;        int keepnotes = 0;
2782    
2783        if(( (yyvsp[-1].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {        if(( (yyvsp[(5) - (6)].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {
2784          /* all identifier_t are from symbol table, so ptr match          /* all identifier_t are from symbol table, so ptr match
2785           * is sufficient for equality.           * is sufficient for equality.
2786           */           */
2787          WarnMsg_MismatchEnd("ATOM", SCP(g_type_name),          WarnMsg_MismatchEnd("ATOM", SCP(g_type_name),
2788                              (yyvsp[-1].int_value), SCP(g_type_name));                              (yyvsp[(5) - (6)].int_value), SCP(g_type_name));
2789        }        }
2790        g_atom_dim_ptr = CheckDimensionsMatch(g_default_dim_ptr,        g_atom_dim_ptr = CheckDimensionsMatch(g_default_dim_ptr,
2791                                              g_atom_dim_ptr);                                              g_atom_dim_ptr);
# Line 2486  yyreduce: Line 2794  yyreduce:
2794                                      g_refines_name,                                      g_refines_name,
2795                                      real_type, /* ignored..really */                                      real_type, /* ignored..really */
2796                                      Asc_CurrentModule(),                                      Asc_CurrentModule(),
2797                                      (yyvsp[-5].int_value),                                      (yyvsp[(1) - (6)].int_value),
2798                                      (yyvsp[-3].slptr),                                      (yyvsp[(3) - (6)].slptr),
2799                                      (yyvsp[-2].listp),                                      (yyvsp[(4) - (6)].listp),
2800                                      g_defaulted,                                      g_defaulted,
2801                                      g_default_double,                                      g_default_double,
2802                                      g_atom_dim_ptr,                                      g_atom_dim_ptr,
# Line 2509  yyreduce: Line 2817  yyreduce:
2817            ,"Atom dimensions don't match in ATOM %s"            ,"Atom dimensions don't match in ATOM %s"
2818            ,SCP(g_type_name)            ,SCP(g_type_name)
2819          );          );
2820          DestroyStatementList((yyvsp[-3].slptr));          DestroyStatementList((yyvsp[(3) - (6)].slptr));
2821          DestroyProcedureList((yyvsp[-2].listp));          DestroyProcedureList((yyvsp[(4) - (6)].listp));
2822        }        }
2823        ProcessNotes(keepnotes);        ProcessNotes(keepnotes);
2824        g_type_name = g_refines_name = g_proc_name = NULL;        g_type_name = g_refines_name = g_proc_name = NULL;
# Line 2519  yyreduce: Line 2827  yyreduce:
2827      break;      break;
2828    
2829    case 36:    case 36:
2830  #line 720 "base\\generic\\compiler\\ascParse.y"  #line 720 "base/generic/compiler/ascParse.y"
2831      {      {
2832        /* g_type_name = $1; */        /* g_type_name = $1; */
2833        g_refines_name = (yyvsp[-3].id_ptr);        g_refines_name = (yyvsp[(3) - (6)].id_ptr);
2834        g_atom_dim_ptr = (yyvsp[-2].dimp);        g_atom_dim_ptr = (yyvsp[(4) - (6)].dimp);
2835        g_default_double = (yyvsp[-1].real_value);        g_default_double = (yyvsp[(5) - (6)].real_value);
2836        g_header_linenum = LineNum();        g_header_linenum = LineNum();
2837      }      }
2838      break;      break;
2839    
2840    case 37:    case 37:
2841  #line 731 "base\\generic\\compiler\\ascParse.y"  #line 731 "base/generic/compiler/ascParse.y"
2842      {      {
2843        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
2844        g_type_name = (yyvsp[0].id_ptr); /* want this set early so parm lists see it */        g_type_name = (yyvsp[(2) - (2)].id_ptr); /* want this set early so parm lists see it */
2845      }      }
2846      break;      break;
2847    
2848    case 38:    case 38:
2849  #line 739 "base\\generic\\compiler\\ascParse.y"  #line 739 "base/generic/compiler/ascParse.y"
2850      {      {
2851        (yyval.real_value) = 0.0;        (yyval.real_value) = 0.0;
2852        g_default_dim_ptr = WildDimension();        g_default_dim_ptr = WildDimension();
# Line 2547  yyreduce: Line 2855  yyreduce:
2855      break;      break;
2856    
2857    case 39:    case 39:
2858  #line 745 "base\\generic\\compiler\\ascParse.y"  #line 745 "base/generic/compiler/ascParse.y"
2859      {      {
2860        (yyval.real_value) = (yyvsp[-1].int_value) ? -(yyvsp[0].real_value) : (yyvsp[0].real_value);        (yyval.real_value) = (yyvsp[(2) - (3)].int_value) ? -(yyvsp[(3) - (3)].real_value) : (yyvsp[(3) - (3)].real_value);
2861        g_defaulted = 1;        g_defaulted = 1;
2862      }      }
2863      break;      break;
2864    
2865    case 40:    case 40:
2866  #line 750 "base\\generic\\compiler\\ascParse.y"  #line 750 "base/generic/compiler/ascParse.y"
2867      {      {
2868        (yyval.real_value) = 0.0;        (yyval.real_value) = 0.0;
2869        g_default_dim_ptr = Dimensionless();        g_default_dim_ptr = Dimensionless();
# Line 2565  yyreduce: Line 2873  yyreduce:
2873      break;      break;
2874    
2875    case 41:    case 41:
2876  #line 757 "base\\generic\\compiler\\ascParse.y"  #line 757 "base/generic/compiler/ascParse.y"
2877      {      {
2878        (yyval.real_value) = 0.0;        (yyval.real_value) = 0.0;
2879        g_default_dim_ptr = Dimensionless();        g_default_dim_ptr = Dimensionless();
# Line 2575  yyreduce: Line 2883  yyreduce:
2883      break;      break;
2884    
2885    case 42:    case 42:
2886  #line 764 "base\\generic\\compiler\\ascParse.y"  #line 764 "base/generic/compiler/ascParse.y"
2887      {      {
2888        (yyval.real_value) = 0.0;        (yyval.real_value) = 0.0;
2889        g_default_dim_ptr = Dimensionless();        g_default_dim_ptr = Dimensionless();
2890        g_default_symbol = (yyvsp[0].sym_ptr);        g_default_symbol = (yyvsp[(2) - (2)].sym_ptr);
2891        g_defaulted = 0;        g_defaulted = 0;
2892      }      }
2893      break;      break;
2894    
2895    case 43:    case 43:
2896  #line 774 "base\\generic\\compiler\\ascParse.y"  #line 774 "base/generic/compiler/ascParse.y"
2897      {      {
2898        struct TypeDescription *def_ptr;        struct TypeDescription *def_ptr;
2899        int keepnotes = 0;        int keepnotes = 0;
# Line 2597  yyreduce: Line 2905  yyreduce:
2905          def_ptr = CreateConstantTypeDef(g_type_name,          def_ptr = CreateConstantTypeDef(g_type_name,
2906                                          g_refines_name,                                          g_refines_name,
2907                                          Asc_CurrentModule(),                                          Asc_CurrentModule(),
2908                                          (yyvsp[-1].int_value),                                          (yyvsp[(1) - (2)].int_value),
2909                                          g_defaulted,                                          g_defaulted,
2910                                          g_default_double,                                          g_default_double,
2911                                          g_default_long,                                          g_default_long,
# Line 2624  yyreduce: Line 2932  yyreduce:
2932      break;      break;
2933    
2934    case 44:    case 44:
2935  #line 814 "base\\generic\\compiler\\ascParse.y"  #line 814 "base/generic/compiler/ascParse.y"
2936      {      {
2937        g_type_name = (yyvsp[-6].id_ptr);        g_type_name = (yyvsp[(2) - (8)].id_ptr);
2938        g_refines_name = (yyvsp[-4].id_ptr);        g_refines_name = (yyvsp[(4) - (8)].id_ptr);
2939        g_atom_dim_ptr = (yyvsp[-3].dimp);        g_atom_dim_ptr = (yyvsp[(5) - (8)].dimp);
2940        switch (g_constant_type) {        switch (g_constant_type) {
2941        case DOUBLECONSTANT:        case DOUBLECONSTANT:
2942          g_default_double = (yyvsp[-2].real_value);          g_default_double = (yyvsp[(6) - (8)].real_value);
2943          break;          break;
2944        case LONGCONSTANT:        case LONGCONSTANT:
2945          g_default_long = (yyvsp[-2].real_value);          g_default_long = (yyvsp[(6) - (8)].real_value);
2946          break;          break;
2947        case BOOLEANCONSTANT:        case BOOLEANCONSTANT:
2948          g_default_long = (yyvsp[-2].int_value);          g_default_long = (yyvsp[(6) - (8)].int_value);
2949          break;          break;
2950        case SYMBOLCONSTANT:        case SYMBOLCONSTANT:
2951          g_default_symbol = (yyvsp[-2].sym_ptr);          g_default_symbol = (yyvsp[(6) - (8)].sym_ptr);
2952          break;          break;
2953        default:        default:
2954          ErrMsg_Generic("Wierd constant type assign encountered.");          ErrMsg_Generic("Wierd constant type assign encountered.");
2955          break; /* better not be reached. */          break; /* better not be reached. */
2956        }        }
2957        g_header_linenum = LineNum();        g_header_linenum = LineNum();
2958        if ((yyvsp[-1].dquote_ptr) != NULL) {        if ((yyvsp[(7) - (8)].dquote_ptr) != NULL) {
2959          CollectNote(CreateNote(g_type_name,InlineNote(),SelfNote(),NULL,          CollectNote(CreateNote(g_type_name,InlineNote(),SelfNote(),NULL,
2960                                 Asc_ModuleBestName(Asc_CurrentModule()),                                 Asc_ModuleBestName(Asc_CurrentModule()),
2961                                 AddBraceChar((yyvsp[-1].dquote_ptr),InlineNote()),                                 AddBraceChar((yyvsp[(7) - (8)].dquote_ptr),InlineNote()),
2962                                 g_header_linenum,NULL,nd_empty));                                 g_header_linenum,NULL,nd_empty));
2963        }        }
2964      }      }
2965      break;      break;
2966    
2967    case 45:    case 45:
2968  #line 847 "base\\generic\\compiler\\ascParse.y"  #line 847 "base/generic/compiler/ascParse.y"
2969      {      {
2970        (yyval.real_value) = 0.0;        (yyval.real_value) = 0.0;
2971        g_default_dim_ptr = WildDimension();        g_default_dim_ptr = WildDimension();
# Line 2666  yyreduce: Line 2974  yyreduce:
2974      break;      break;
2975    
2976    case 46:    case 46:
2977  #line 853 "base\\generic\\compiler\\ascParse.y"  #line 853 "base/generic/compiler/ascParse.y"
2978      {      {
2979        (yyval.real_value) = (yyvsp[-1].int_value) ? -(yyvsp[0].real_value) : (yyvsp[0].real_value);        (yyval.real_value) = (yyvsp[(2) - (3)].int_value) ? -(yyvsp[(3) - (3)].real_value) : (yyvsp[(3) - (3)].real_value);
2980        g_defaulted = 1;        g_defaulted = 1;
2981      }      }
2982      break;      break;
2983    
2984    case 47:    case 47:
2985  #line 858 "base\\generic\\compiler\\ascParse.y"  #line 858 "base/generic/compiler/ascParse.y"
2986      {      {
2987        (yyval.int_value) = 1;        (yyval.int_value) = 1;
2988        g_defaulted = 1;        g_defaulted = 1;
# Line 2684  yyreduce: Line 2992  yyreduce:
2992      break;      break;
2993    
2994    case 48:    case 48:
2995  #line 865 "base\\generic\\compiler\\ascParse.y"  #line 865 "base/generic/compiler/ascParse.y"
2996      {      {
2997        (yyval.int_value) = 0;        (yyval.int_value) = 0;
2998        g_defaulted = 1;        g_defaulted = 1;
# Line 2694  yyreduce: Line 3002  yyreduce:
3002      break;      break;
3003    
3004    case 49:    case 49:
3005  #line 872 "base\\generic\\compiler\\ascParse.y"  #line 872 "base/generic/compiler/ascParse.y"
3006      {      {
3007        (yyval.sym_ptr) = (yyvsp[0].sym_ptr);        (yyval.sym_ptr) = (yyvsp[(2) - (2)].sym_ptr);
3008        g_defaulted = 1;        g_defaulted = 1;
3009        g_default_dim_ptr = Dimensionless();        g_default_dim_ptr = Dimensionless();
3010        g_constant_type = SYMBOLCONSTANT;        g_constant_type = SYMBOLCONSTANT;
# Line 2704  yyreduce: Line 3012  yyreduce:
3012      break;      break;
3013    
3014    case 50:    case 50:
3015  #line 882 "base\\generic\\compiler\\ascParse.y"  #line 882 "base/generic/compiler/ascParse.y"
3016      {      {
3017        struct TypeDescription *def_ptr;        struct TypeDescription *def_ptr;
3018        int keepnotes = 0;        int keepnotes = 0;
3019        if(( (yyvsp[-1].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {        if(( (yyvsp[(5) - (6)].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {
3020          /* all identifier_t are from symbol table, so ptr match          /* all identifier_t are from symbol table, so ptr match
3021           * is sufficient for equality.           * is sufficient for equality.
3022           */           */
3023          WarnMsg_MismatchEnd("MODEL", SCP(g_type_name),          WarnMsg_MismatchEnd("MODEL", SCP(g_type_name),
3024                              (yyvsp[-1].int_value), SCP(g_type_name));                              (yyvsp[(5) - (6)].int_value), SCP(g_type_name));
3025        }        }
3026        def_ptr = CreateModelTypeDef(g_type_name,        def_ptr = CreateModelTypeDef(g_type_name,
3027                                     g_refines_name,                                     g_refines_name,
3028                                     Asc_CurrentModule(),                                     Asc_CurrentModule(),
3029                                     (yyvsp[-5].int_value),                                     (yyvsp[(1) - (6)].int_value),
3030                                     (yyvsp[-3].slptr),                                     (yyvsp[(3) - (6)].slptr),
3031                                     (yyvsp[-2].listp),                                     (yyvsp[(4) - (6)].listp),
3032                                     g_model_parameters,                                     g_model_parameters,
3033                                     g_parameter_reduction,                                     g_parameter_reduction,
3034                                     g_parameter_wheres,                                     g_parameter_wheres,
# Line 2745  yyreduce: Line 3053  yyreduce:
3053      break;      break;
3054    
3055    case 51:    case 51:
3056  #line 924 "base\\generic\\compiler\\ascParse.y"  #line 924 "base/generic/compiler/ascParse.y"
3057      {      {
3058        /* g_type_name = $1; */        /* g_type_name = $1; */
3059        g_model_parameters = (yyvsp[-2].slptr);        g_model_parameters = (yyvsp[(2) - (4)].slptr);
3060        g_parameter_wheres = (yyvsp[-1].slptr);        g_parameter_wheres = (yyvsp[(3) - (4)].slptr);
3061        g_refines_name = NULL;        g_refines_name = NULL;
3062        g_header_linenum = LineNum();        g_header_linenum = LineNum();
3063      }      }
3064      break;      break;
3065    
3066    case 52:    case 52:
3067  #line 933 "base\\generic\\compiler\\ascParse.y"  #line 933 "base/generic/compiler/ascParse.y"
3068      {      {
3069        /* g_type_name = $1; */        /* g_type_name = $1; */
3070        g_model_parameters = (yyvsp[-5].slptr);        g_model_parameters = (yyvsp[(2) - (7)].slptr);
3071        g_parameter_wheres = (yyvsp[-4].slptr);        g_parameter_wheres = (yyvsp[(3) - (7)].slptr);
3072        g_refines_name = (yyvsp[-2].id_ptr);        g_refines_name = (yyvsp[(5) - (7)].id_ptr);
3073        g_parameter_reduction = (yyvsp[-1].slptr);        g_parameter_reduction = (yyvsp[(6) - (7)].slptr);
3074        g_header_linenum = LineNum();        g_header_linenum = LineNum();
3075      }      }
3076      break;      break;
3077    
3078    case 53:    case 53:
3079  #line 945 "base\\generic\\compiler\\ascParse.y"  #line 945 "base/generic/compiler/ascParse.y"
3080      {      {
3081        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
3082        g_type_name = (yyvsp[0].id_ptr); /* want this set early so parm lists see it */        g_type_name = (yyvsp[(2) - (2)].id_ptr); /* want this set early so parm lists see it */
3083      }      }
3084      break;      break;
3085    
3086    case 54:    case 54:
3087  #line 953 "base\\generic\\compiler\\ascParse.y"  #line 953 "base/generic/compiler/ascParse.y"
3088      {      {
3089        (yyval.slptr) = NULL;        (yyval.slptr) = NULL;
3090      }      }
3091      break;      break;
3092    
3093    case 55:    case 55:
3094  #line 957 "base\\generic\\compiler\\ascParse.y"  #line 957 "base/generic/compiler/ascParse.y"
3095      {      {
3096        (yyval.slptr) = (yyvsp[-1].slptr); /* this could be much more sophisticated */        (yyval.slptr) = (yyvsp[(2) - (3)].slptr); /* this could be much more sophisticated */
3097      }      }
3098      break;      break;
3099    
3100    case 56:    case 56:
3101  #line 964 "base\\generic\\compiler\\ascParse.y"  #line 964 "base/generic/compiler/ascParse.y"
3102      {      {
3103        (yyval.slptr) = NULL;        (yyval.slptr) = NULL;
3104      }      }
3105      break;      break;
3106    
3107    case 57:    case 57:
3108  #line 968 "base\\generic\\compiler\\ascParse.y"  #line 968 "base/generic/compiler/ascParse.y"
3109      {      {
3110        (yyval.slptr) = (yyvsp[-1].slptr); /* this could be much more sophisticated */        (yyval.slptr) = (yyvsp[(3) - (4)].slptr); /* this could be much more sophisticated */
3111      }      }
3112      break;      break;
3113    
3114    case 58:    case 58:
3115  #line 975 "base\\generic\\compiler\\ascParse.y"  #line 975 "base/generic/compiler/ascParse.y"
3116      {      {
3117        (yyval.slptr) = NULL;        (yyval.slptr) = NULL;
3118      }      }
3119      break;      break;
3120    
3121    case 59:    case 59:
3122  #line 979 "base\\generic\\compiler\\ascParse.y"  #line 979 "base/generic/compiler/ascParse.y"
3123      {      {
3124        (yyval.slptr) = (yyvsp[-1].slptr); /* this could be much more sophisticated */        (yyval.slptr) = (yyvsp[(2) - (3)].slptr); /* this could be much more sophisticated */
3125      }      }
3126      break;      break;
3127    
3128    case 60:    case 60:
3129  #line 986 "base\\generic\\compiler\\ascParse.y"  #line 986 "base/generic/compiler/ascParse.y"
3130      {      {
3131        struct TypeDescription *def_ptr;        struct TypeDescription *def_ptr;
3132        if (((yyvsp[-1].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {        if (((yyvsp[(4) - (5)].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != g_type_name )) {
3133          /* all identifier_t are from symbol table, so ptr match          /* all identifier_t are from symbol table, so ptr match
3134           * is sufficient for equality.           * is sufficient for equality.
3135           */           */
3136          WarnMsg_MismatchEnd("PATCH", SCP(g_type_name),          WarnMsg_MismatchEnd("PATCH", SCP(g_type_name),
3137                              (yyvsp[-1].int_value), SCP(g_type_name));                              (yyvsp[(4) - (5)].int_value), SCP(g_type_name));
3138        }        }
3139        def_ptr = CreatePatchTypeDef(g_type_name,        def_ptr = CreatePatchTypeDef(g_type_name,
3140                                     g_refines_name,                                     g_refines_name,
3141                                     NULL,                                     NULL,
3142                                     Asc_CurrentModule(),                                     Asc_CurrentModule(),
3143                                     (yyvsp[-3].slptr),                                     (yyvsp[(2) - (5)].slptr),
3144                                     (yyvsp[-2].listp),                                     (yyvsp[(3) - (5)].listp),
3145                                     g_untrapped_error);                                     g_untrapped_error);
3146        g_untrapped_error = 0;        g_untrapped_error = 0;
3147        if (def_ptr != NULL) {        if (def_ptr != NULL) {
# Line 2850  yyreduce: Line 3158  yyreduce:
3158      break;      break;
3159    
3160    case 61:    case 61:
3161  #line 1018 "base\\generic\\compiler\\ascParse.y"  #line 1018 "base/generic/compiler/ascParse.y"
3162      {      {
3163        /*        /*
3164         * A patch definition looks just like a model def.         * A patch definition looks just like a model def.
3165         * with the original name <=> refine name.         * with the original name <=> refine name.
3166         */         */
3167        g_type_name = (yyvsp[-3].id_ptr);        g_type_name = (yyvsp[(2) - (5)].id_ptr);
3168        g_refines_name = (yyvsp[-1].id_ptr);        g_refines_name = (yyvsp[(4) - (5)].id_ptr);
3169        g_header_linenum = LineNum();        g_header_linenum = LineNum();
3170      }      }
3171      break;      break;
3172    
3173    case 62:    case 62:
3174  #line 1031 "base\\generic\\compiler\\ascParse.y"  #line 1031 "base/generic/compiler/ascParse.y"
3175      {      {
3176        (yyval.int_value) = 0;        (yyval.int_value) = 0;
3177      }      }
3178      break;      break;
3179    
3180    case 63:    case 63:
3181  #line 1035 "base\\generic\\compiler\\ascParse.y"  #line 1035 "base/generic/compiler/ascParse.y"
3182      {      {
3183        (yyval.int_value) = 1;        (yyval.int_value) = 1;
3184      }      }
3185      break;      break;
3186    
3187    case 64:    case 64:
3188  #line 1042 "base\\generic\\compiler\\ascParse.y"  #line 1042 "base/generic/compiler/ascParse.y"
3189      {      {
3190        struct TypeDescription *def_ptr;        struct TypeDescription *def_ptr;
3191        int keepnotes = 0;        int keepnotes = 0;
3192    
3193        if(( (yyvsp[-1].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != (yyvsp[-4].id_ptr) )) {        if(( (yyvsp[(4) - (5)].int_value) != IDENTIFIER_TOK ) || ( g_end_identifier != (yyvsp[(1) - (5)].id_ptr) )) {
3194          WarnMsg_MismatchEnd("DEFINITION", SCP((yyvsp[-4].id_ptr)), (yyvsp[-1].int_value), SCP((yyvsp[-4].id_ptr)));          WarnMsg_MismatchEnd("DEFINITION", SCP((yyvsp[(1) - (5)].id_ptr)), (yyvsp[(4) - (5)].int_value), SCP((yyvsp[(1) - (5)].id_ptr)));
3195        }        }
3196        if( (yyvsp[-4].id_ptr) == GetBaseTypeName(relation_type)) {        if( (yyvsp[(1) - (5)].id_ptr) == GetBaseTypeName(relation_type)) {
3197          def_ptr = CreateRelationTypeDef(Asc_CurrentModule(),(yyvsp[-4].id_ptr),(yyvsp[-3].slptr),(yyvsp[-2].listp));          def_ptr = CreateRelationTypeDef(Asc_CurrentModule(),(yyvsp[(1) - (5)].id_ptr),(yyvsp[(2) - (5)].slptr),(yyvsp[(3) - (5)].listp));
3198        }        }
3199        else if( (yyvsp[-4].id_ptr) == GetBaseTypeName(logrel_type) ) {        else if( (yyvsp[(1) - (5)].id_ptr) == GetBaseTypeName(logrel_type) ) {
3200          def_ptr = CreateLogRelTypeDef(Asc_CurrentModule(),(yyvsp[-4].id_ptr),(yyvsp[-3].slptr),(yyvsp[-2].listp));          def_ptr = CreateLogRelTypeDef(Asc_CurrentModule(),(yyvsp[(1) - (5)].id_ptr),(yyvsp[(2) - (5)].slptr),(yyvsp[(3) - (5)].listp));
3201        }        }
3202        else {        else {
3203          ErrMsg_Generic("Bad type passed to DEFINITION statement.");          ErrMsg_Generic("Bad type passed to DEFINITION statement.");
# Line 2898  yyreduce: Line 3206  yyreduce:
3206        if ( def_ptr != NULL ) {        if ( def_ptr != NULL ) {
3207          keepnotes = AddType(def_ptr);          keepnotes = AddType(def_ptr);
3208        } else {        } else {
3209          ErrMsg_NullDefPointer(SCP((yyvsp[-4].id_ptr)));          ErrMsg_NullDefPointer(SCP((yyvsp[(1) - (5)].id_ptr)));
3210        }        }
3211        ProcessNotes(keepnotes);        ProcessNotes(keepnotes);
3212        g_type_name = NULL;        g_type_name = NULL;
# Line 2907  yyreduce: Line 3215  yyreduce:
3215      break;      break;
3216    
3217    case 65:    case 65:
3218  #line 1072 "base\\generic\\compiler\\ascParse.y"  #line 1072 "base/generic/compiler/ascParse.y"
3219      {      {
3220        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
3221        g_type_name = (yyvsp[0].id_ptr); /* want this set early so parm lists see it */        g_type_name = (yyvsp[(2) - (2)].id_ptr); /* want this set early so parm lists see it */
3222      }      }
3223      break;      break;
3224    
3225    case 66:    case 66:
3226  #line 1081 "base\\generic\\compiler\\ascParse.y"  #line 1081 "base/generic/compiler/ascParse.y"
3227      { /* nothing to do. just cruft to fix ; problem */ }      { /* nothing to do. just cruft to fix ; problem */ }
3228      break;      break;
3229    
3230    case 67:    case 67:
3231  #line 1086 "base\\generic\\compiler\\ascParse.y"  #line 1086 "base/generic/compiler/ascParse.y"
3232      {      {
3233            struct UnitDefinition *ud;            struct UnitDefinition *ud;
3234            unsigned long c,len;            unsigned long c,len;
3235    
3236        if( (yyvsp[0].int_value) != UNITS_TOK ) {        if( (yyvsp[(3) - (3)].int_value) != UNITS_TOK ) {
3237          WarnMsg_MismatchEnd("UNITS", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("UNITS", NULL, (yyvsp[(3) - (3)].int_value), NULL);
3238        }        }
3239            len = gl_length((yyvsp[-1].listp));            len = gl_length((yyvsp[(2) - (3)].listp));
3240            for (c=1; c <= len; c++) {            for (c=1; c <= len; c++) {
3241              ud = (struct UnitDefinition *)gl_fetch((yyvsp[-1].listp),c);              ud = (struct UnitDefinition *)gl_fetch((yyvsp[(2) - (3)].listp),c);
3242              ProcessUnitDef(ud);              ProcessUnitDef(ud);
3243              DestroyUnitDef(ud);              DestroyUnitDef(ud);
3244            }            }
3245            gl_destroy((yyvsp[-1].listp));            gl_destroy((yyvsp[(2) - (3)].listp));
3246            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3247      }      }
3248      break;      break;
3249    
3250    case 68:    case 68:
3251  #line 1105 "base\\generic\\compiler\\ascParse.y"  #line 1105 "base/generic/compiler/ascParse.y"
3252      {      {
3253        (yyval.listp) = gl_create(100L);        (yyval.listp) = gl_create(100L);
3254      }      }
3255      break;      break;
3256    
3257    case 69:    case 69:
3258  #line 1109 "base\\generic\\compiler\\ascParse.y"  #line 1109 "base/generic/compiler/ascParse.y"
3259      {      {
3260        gl_append_ptr((yyvsp[-1].listp),(char *)(yyvsp[0].udefptr));        gl_append_ptr((yyvsp[(1) - (2)].listp),(char *)(yyvsp[(2) - (2)].udefptr));
3261        (yyval.listp) = (yyvsp[-1].listp);        (yyval.listp) = (yyvsp[(1) - (2)].listp);
3262      }      }
3263      break;      break;
3264    
3265    case 70:    case 70:
3266  #line 1117 "base\\generic\\compiler\\ascParse.y"  #line 1117 "base/generic/compiler/ascParse.y"
3267      {      {
3268        (yyval.udefptr) = CreateUnitDef((yyvsp[-3].id_ptr),(yyvsp[-1].braced_ptr),Asc_ModuleBestName(Asc_CurrentModule()),        (yyval.udefptr) = CreateUnitDef((yyvsp[(1) - (4)].id_ptr),(yyvsp[(3) - (4)].braced_ptr),Asc_ModuleBestName(Asc_CurrentModule()),
3269                               LineNum());                               LineNum());
3270      }      }
3271      break;      break;
3272    
3273    case 71:    case 71:
3274  #line 1126 "base\\generic\\compiler\\ascParse.y"  #line 1126 "base/generic/compiler/ascParse.y"
3275      {      {
3276        (yyval.listp) = NULL;        (yyval.listp) = NULL;
3277      }      }
3278      break;      break;
3279    
3280    case 72:    case 72:
3281  #line 1130 "base\\generic\\compiler\\ascParse.y"  #line 1130 "base/generic/compiler/ascParse.y"
3282      { /* To get rid of this, we will need a global proclist      { /* To get rid of this, we will need a global proclist
3283             * that accumulates procs until a MODEL production is             * that accumulates procs until a MODEL production is
3284             * completed. If any other sort of production is started,             * completed. If any other sort of production is started,
# Line 2980  yyreduce: Line 3288  yyreduce:
3288      break;      break;
3289    
3290    case 73:    case 73:
3291  #line 1137 "base\\generic\\compiler\\ascParse.y"  #line 1137 "base/generic/compiler/ascParse.y"
3292      {      {
3293        (yyval.listp) = (yyvsp[0].listp);        (yyval.listp) = (yyvsp[(3) - (3)].listp);
3294      }      }
3295      break;      break;
3296    
3297    case 74:    case 74:
3298  #line 1144 "base\\generic\\compiler\\ascParse.y"  #line 1144 "base/generic/compiler/ascParse.y"
3299      {      {
3300        (yyval.listp) = (yyvsp[0].listp);        (yyval.listp) = (yyvsp[(1) - (1)].listp);
3301        gl_sort((yyval.listp),(CmpFunc)CmpProcs);        gl_sort((yyval.listp),(CmpFunc)CmpProcs);
3302      }      }
3303      break;      break;
3304    
3305    case 75:    case 75:
3306  #line 1151 "base\\generic\\compiler\\ascParse.y"  #line 1151 "base/generic/compiler/ascParse.y"
3307      {      {
3308        (yyval.listp) = gl_create(7L);        (yyval.listp) = gl_create(7L);
3309      }      }
3310      break;      break;
3311    
3312    case 76:    case 76:
3313  #line 1155 "base\\generic\\compiler\\ascParse.y"  #line 1155 "base/generic/compiler/ascParse.y"
3314      {      {
3315        unsigned long c;        unsigned long c;
3316        struct InitProcedure *oldproc;        struct InitProcedure *oldproc;
3317        c = gl_length((yyvsp[-1].listp));        c = gl_length((yyvsp[(1) - (2)].listp));
3318            while (c > 0) {            while (c > 0) {
3319              oldproc = (struct InitProcedure *)gl_fetch((yyvsp[-1].listp),c);              oldproc = (struct InitProcedure *)gl_fetch((yyvsp[(1) - (2)].listp),c);
3320              if (ProcName((yyvsp[0].procptr)) == ProcName(oldproc)) {              if (ProcName((yyvsp[(2) - (2)].procptr)) == ProcName(oldproc)) {
3321                error_reporter_current_line(ASC_USER_WARNING                error_reporter_current_line(ASC_USER_WARNING
3322                  ,"Duplicate METHOD %s rejected", SCP(ProcName((yyvsp[0].procptr)))                  ,"Duplicate METHOD %s rejected", SCP(ProcName((yyvsp[(2) - (2)].procptr)))
3323                );                );
3324                break;                break;
3325              }              }
3326              c--;              c--;
3327            }            }
3328        if (c) { /* broke early */        if (c) { /* broke early */
3329          DestroyProcedure((yyvsp[0].procptr));          DestroyProcedure((yyvsp[(2) - (2)].procptr));
3330        } else {        } else {
3331          gl_append_ptr((yyvsp[-1].listp),(char *)(yyvsp[0].procptr));          gl_append_ptr((yyvsp[(1) - (2)].listp),(char *)(yyvsp[(2) - (2)].procptr));
3332        }        }
3333        (yyval.listp) = (yyvsp[-1].listp);        (yyval.listp) = (yyvsp[(1) - (2)].listp);
3334      }      }
3335      break;      break;
3336    
3337    case 77:    case 77:
3338  #line 1180 "base\\generic\\compiler\\ascParse.y"  #line 1180 "base/generic/compiler/ascParse.y"
3339      {      {
3340        if (((yyvsp[-1].int_value) != IDENTIFIER_TOK) || ((yyvsp[-4].id_ptr) != g_end_identifier)) {        if (((yyvsp[(4) - (5)].int_value) != IDENTIFIER_TOK) || ((yyvsp[(1) - (5)].id_ptr) != g_end_identifier)) {
3341          /* all identifier_t are from symbol table, so ptr match          /* all identifier_t are from symbol table, so ptr match
3342           * is sufficient for equality.           * is sufficient for equality.
3343           */           */
3344          WarnMsg_MismatchEnd("METHOD", SCP((yyvsp[-4].id_ptr)), (yyvsp[-1].int_value), SCP((yyvsp[-4].id_ptr)));          WarnMsg_MismatchEnd("METHOD", SCP((yyvsp[(1) - (5)].id_ptr)), (yyvsp[(4) - (5)].int_value), SCP((yyvsp[(1) - (5)].id_ptr)));
3345        }        }
3346        (yyval.procptr) = CreateProcedure((yyvsp[-4].id_ptr),(yyvsp[-2].slptr));        (yyval.procptr) = CreateProcedure((yyvsp[(1) - (5)].id_ptr),(yyvsp[(3) - (5)].slptr));
3347        g_proc_name = NULL;        g_proc_name = NULL;
3348      }      }
3349      break;      break;
3350    
3351    case 78:    case 78:
3352  #line 1194 "base\\generic\\compiler\\ascParse.y"  #line 1194 "base/generic/compiler/ascParse.y"
3353      {      {
3354        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
3355        g_proc_name = (yyvsp[0].id_ptr);        g_proc_name = (yyvsp[(2) - (2)].id_ptr);
3356      }      }
3357      break;      break;
3358    
3359    case 79:    case 79:
3360  #line 1203 "base\\generic\\compiler\\ascParse.y"  #line 1203 "base/generic/compiler/ascParse.y"
3361      {      {
3362        (yyval.slptr) = CreateStatementList((yyvsp[0].listp));        (yyval.slptr) = CreateStatementList((yyvsp[(1) - (1)].listp));
3363      }      }
3364      break;      break;
3365    
3366    case 80:    case 80:
3367  #line 1210 "base\\generic\\compiler\\ascParse.y"  #line 1210 "base/generic/compiler/ascParse.y"
3368      {      {
3369        (yyval.listp) = gl_create(7L);        (yyval.listp) = gl_create(7L);
3370      }      }
3371      break;      break;
3372    
3373    case 81:    case 81:
3374  #line 1214 "base\\generic\\compiler\\ascParse.y"  #line 1214 "base/generic/compiler/ascParse.y"
3375      {      {
3376        /* this is appending to a gllist of statements, not yet slist. */        /* this is appending to a gllist of statements, not yet slist. */
3377        if ((yyvsp[-1].statptr) != NULL) {        if ((yyvsp[(2) - (3)].statptr) != NULL) {
3378          gl_append_ptr((yyvsp[-2].listp),(char *)(yyvsp[-1].statptr));          gl_append_ptr((yyvsp[(1) - (3)].listp),(char *)(yyvsp[(2) - (3)].statptr));
3379        }        }
3380        (yyval.listp) = (yyvsp[-2].listp);        (yyval.listp) = (yyvsp[(1) - (3)].listp);
3381      }      }
3382      break;      break;
3383    
3384    case 82:    case 82:
3385  #line 1222 "base\\generic\\compiler\\ascParse.y"  #line 1222 "base/generic/compiler/ascParse.y"
3386      {      {
3387        ErrMsg_Generic("Error in statement input.");        ErrMsg_Generic("Error in statement input.");
3388        (yyval.listp) = (yyvsp[-2].listp);        (yyval.listp) = (yyvsp[(1) - (3)].listp);
3389      }      }
3390      break;      break;
3391    
3392    case 113:    case 113:
3393  #line 1263 "base\\generic\\compiler\\ascParse.y"  #line 1263 "base/generic/compiler/ascParse.y"
3394      {      {
3395        struct TypeDescription *tmptype;        struct TypeDescription *tmptype;
3396        tmptype = FindType((yyvsp[-2].id_ptr));        tmptype = FindType((yyvsp[(3) - (5)].id_ptr));
3397        if ((yyvsp[0].eptr) != NULL) {        if ((yyvsp[(5) - (5)].eptr) != NULL) {
3398          ErrMsg_Generic("WITH VALUE clause not allowed in IS_A.");          ErrMsg_Generic("WITH VALUE clause not allowed in IS_A.");
3399          g_untrapped_error++;          g_untrapped_error++;
3400          DestroyVariableList((yyvsp[-4].lptr));          DestroyVariableList((yyvsp[(1) - (5)].lptr));
3401          DestroySetList(g_typeargs);          DestroySetList(g_typeargs);
3402          DestroyExprList((yyvsp[0].eptr));          DestroyExprList((yyvsp[(5) - (5)].eptr));
3403          (yyval.statptr) = NULL;          (yyval.statptr) = NULL;
3404        } else {        } else {
3405          if (tmptype != NULL) {          if (tmptype != NULL) {
# Line 3099  yyreduce: Line 3407  yyreduce:
3407                (g_typeargs != NULL)) {                (g_typeargs != NULL)) {
3408              error_reporter_current_line(ASC_USER_ERROR,              error_reporter_current_line(ASC_USER_ERROR,
3409                      "IS_A has arguments to the nonmodel type %s.\n",                      "IS_A has arguments to the nonmodel type %s.\n",
3410                      SCP((yyvsp[-2].id_ptr)));                      SCP((yyvsp[(3) - (5)].id_ptr)));
3411              DestroyVariableList((yyvsp[-4].lptr));              DestroyVariableList((yyvsp[(1) - (5)].lptr));
3412              DestroySetList(g_typeargs);              DestroySetList(g_typeargs);
3413              DestroyExprList((yyvsp[0].eptr));              DestroyExprList((yyvsp[(5) - (5)].eptr));
3414              g_untrapped_error++;              g_untrapped_error++;
3415              (yyval.statptr) = NULL;              (yyval.statptr) = NULL;
3416            } else {            } else {
3417              (yyval.statptr) = CreateISA((yyvsp[-4].lptr),(yyvsp[-2].id_ptr),g_typeargs,(yyvsp[-1].id_ptr));              (yyval.statptr) = CreateISA((yyvsp[(1) - (5)].lptr),(yyvsp[(3) - (5)].id_ptr),g_typeargs,(yyvsp[(4) - (5)].id_ptr));
3418            }            }
3419          } else {          } else {
3420            error_reporter_current_line(ASC_USER_ERROR,"IS_A uses the undefined type %s.", SCP((yyvsp[-2].id_ptr)));            error_reporter_current_line(ASC_USER_ERROR,"IS_A uses the undefined type %s.", SCP((yyvsp[(3) - (5)].id_ptr)));
3421            DestroyVariableList((yyvsp[-4].lptr));            DestroyVariableList((yyvsp[(1) - (5)].lptr));
3422            DestroySetList(g_typeargs);            DestroySetList(g_typeargs);
3423            DestroyExprList((yyvsp[0].eptr));            DestroyExprList((yyvsp[(5) - (5)].eptr));
3424            g_untrapped_error++;            g_untrapped_error++;
3425            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3426          }          }
# Line 3123  yyreduce: Line 3431  yyreduce:
3431      break;      break;
3432    
3433    case 114:    case 114:
3434  #line 1304 "base\\generic\\compiler\\ascParse.y"  #line 1304 "base/generic/compiler/ascParse.y"
3435      {      {
3436        struct TypeDescription *tmptype;        struct TypeDescription *tmptype;
3437        tmptype = FindType((yyvsp[-2].id_ptr));        tmptype = FindType((yyvsp[(3) - (5)].id_ptr));
3438        if (tmptype != NULL) {        if (tmptype != NULL) {
3439          if ((GetBaseType(tmptype) != model_type) &&          if ((GetBaseType(tmptype) != model_type) &&
3440              (g_typeargs != NULL)) {              (g_typeargs != NULL)) {
3441            error_reporter_current_line(ASC_USER_ERROR,"WILL_BE has arguments to the nonmodel type '%s'",SCP((yyvsp[-2].id_ptr)));            error_reporter_current_line(ASC_USER_ERROR,"WILL_BE has arguments to the nonmodel type '%s'",SCP((yyvsp[(3) - (5)].id_ptr)));
3442            DestroyVariableList((yyvsp[-4].lptr));            DestroyVariableList((yyvsp[(1) - (5)].lptr));
3443            DestroySetList(g_typeargs);            DestroySetList(g_typeargs);
3444            DestroyExprList((yyvsp[0].eptr));            DestroyExprList((yyvsp[(5) - (5)].eptr));
3445            g_untrapped_error++;            g_untrapped_error++;
3446            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3447          } else {          } else {
3448            (yyval.statptr) = CreateWILLBE((yyvsp[-4].lptr),(yyvsp[-2].id_ptr),g_typeargs,(yyvsp[-1].id_ptr),(yyvsp[0].eptr));            (yyval.statptr) = CreateWILLBE((yyvsp[(1) - (5)].lptr),(yyvsp[(3) - (5)].id_ptr),g_typeargs,(yyvsp[(4) - (5)].id_ptr),(yyvsp[(5) - (5)].eptr));
3449          }          }
3450        } else {        } else {
3451          DestroyVariableList((yyvsp[-4].lptr));          DestroyVariableList((yyvsp[(1) - (5)].lptr));
3452          DestroySetList(g_typeargs);          DestroySetList(g_typeargs);
3453          DestroyExprList((yyvsp[0].eptr));          DestroyExprList((yyvsp[(5) - (5)].eptr));
3454          g_untrapped_error++;          g_untrapped_error++;
3455          (yyval.statptr) = NULL;          (yyval.statptr) = NULL;
3456          error_reporter_current_line(ASC_USER_ERROR,"WILL_BE uses the undefined type %s.",SCP((yyvsp[-2].id_ptr)));          error_reporter_current_line(ASC_USER_ERROR,"WILL_BE uses the undefined type %s.",SCP((yyvsp[(3) - (5)].id_ptr)));
3457        }        }
3458        g_typeargs = NULL;        g_typeargs = NULL;
3459      }      }
3460      break;      break;
3461    
3462    case 115:    case 115:
3463  #line 1333 "base\\generic\\compiler\\ascParse.y"  #line 1333 "base/generic/compiler/ascParse.y"
3464      {      {
3465        (yyval.statptr) = CreateALIASES((yyvsp[-2].lptr),(yyvsp[0].nptr));        (yyval.statptr) = CreateALIASES((yyvsp[(1) - (3)].lptr),(yyvsp[(3) - (3)].nptr));
3466      }      }
3467      break;      break;
3468    
3469    case 116:    case 116:
3470  #line 1338 "base\\generic\\compiler\\ascParse.y"  #line 1338 "base/generic/compiler/ascParse.y"
3471      {      {
3472        int carray_err;        int carray_err;
3473        carray_err = 0;        carray_err = 0;
3474        if (VariableListLength((yyvsp[-11].lptr)) != 1L) {        if (VariableListLength((yyvsp[(1) - (12)].lptr)) != 1L) {
3475          carray_err = 1;          carray_err = 1;
3476          error_reporter_current_line(ASC_USER_ERROR,          error_reporter_current_line(ASC_USER_ERROR,
3477                  "Compound ALIASES allows only 1 LHS name. Found:");                  "Compound ALIASES allows only 1 LHS name. Found:");
3478          WriteVariableList(ASCERR,(yyvsp[-11].lptr));          WriteVariableList(ASCERR,(yyvsp[(1) - (12)].lptr));
3479        }        }
3480        if (VariableListLength((yyvsp[-5].lptr)) != 1L) {        if (VariableListLength((yyvsp[(7) - (12)].lptr)) != 1L) {
3481          carray_err = 1;          carray_err = 1;
3482          error_reporter_current_line(ASC_USER_ERROR,          error_reporter_current_line(ASC_USER_ERROR,
3483                  "Compound ALIASES/IS_A allows only one LHS name. Found:");                  "Compound ALIASES/IS_A allows only one LHS name. Found:");
3484          WriteVariableList(ASCERR,(yyvsp[-5].lptr));          WriteVariableList(ASCERR,(yyvsp[(7) - (12)].lptr));
3485        }        }
3486        /* verify $9 == "set" */        /* verify $9 == "set" */
3487        if (!carray_err && (yyvsp[-3].id_ptr) != GetBaseTypeName(set_type)) {        if (!carray_err && (yyvsp[(9) - (12)].id_ptr) != GetBaseTypeName(set_type)) {
3488          carray_err = 1;          carray_err = 1;
3489          error_reporter_current_line(ASC_USER_ERROR,"Compound ALIASES statement requires IS_A %s. ",SCP(GetBaseTypeName(set_type)));          error_reporter_current_line(ASC_USER_ERROR,"Compound ALIASES statement requires IS_A %s. ",SCP(GetBaseTypeName(set_type)));
3490          FPRINTF(ASCERR,"    Found %s.\n",SCP((yyvsp[-3].id_ptr)));          FPRINTF(ASCERR,"    Found %s.\n",SCP((yyvsp[(9) - (12)].id_ptr)));
3491        }        }
3492        /* verify set type */        /* verify set type */
3493        if ((!carray_err) &&        if ((!carray_err) &&
3494            ((yyvsp[-1].id_ptr) != GetBaseTypeName(symbol_constant_type)) &&            ((yyvsp[(11) - (12)].id_ptr) != GetBaseTypeName(symbol_constant_type)) &&
3495            ((yyvsp[-1].id_ptr) != GetBaseTypeName(integer_constant_type))) {            ((yyvsp[(11) - (12)].id_ptr) != GetBaseTypeName(integer_constant_type))) {
3496          carray_err = 1;          carray_err = 1;
3497          error_reporter_current_line(ASC_USER_ERROR,          error_reporter_current_line(ASC_USER_ERROR,
3498                  "Compound ALIASES IS_A statement requires %s or %s.\n",                  "Compound ALIASES IS_A statement requires %s or %s.\n",
3499                  SCP(GetBaseTypeName(integer_constant_type)),                  SCP(GetBaseTypeName(integer_constant_type)),
3500                  SCP(GetBaseTypeName(symbol_constant_type)));                  SCP(GetBaseTypeName(symbol_constant_type)));
3501          FPRINTF(ASCERR,"    Found %s.\n",SCP((yyvsp[-1].id_ptr)));          FPRINTF(ASCERR,"    Found %s.\n",SCP((yyvsp[(11) - (12)].id_ptr)));
3502        }        }
3503        if (carray_err) {        if (carray_err) {
3504          DestroyVariableList((yyvsp[-11].lptr));          DestroyVariableList((yyvsp[(1) - (12)].lptr));
3505          DestroyVariableList((yyvsp[-8].lptr));          DestroyVariableList((yyvsp[(4) - (12)].lptr));
3506          DestroyVariableList((yyvsp[-5].lptr));          DestroyVariableList((yyvsp[(7) - (12)].lptr));
3507          DestroySetList((yyvsp[0].sptr));          DestroySetList((yyvsp[(12) - (12)].sptr));
3508          g_untrapped_error++;          g_untrapped_error++;
3509          (yyval.statptr) = NULL;          (yyval.statptr) = NULL;
3510        } else {        } else {
3511          int intset;          int intset;
3512          intset = ((yyvsp[-1].id_ptr) == GetBaseTypeName(integer_constant_type));          intset = ((yyvsp[(11) - (12)].id_ptr) == GetBaseTypeName(integer_constant_type));
3513          (yyval.statptr) = CreateARR((yyvsp[-11].lptr),(yyvsp[-8].lptr),(yyvsp[-5].lptr),intset,(yyvsp[0].sptr));          (yyval.statptr) = CreateARR((yyvsp[(1) - (12)].lptr),(yyvsp[(4) - (12)].lptr),(yyvsp[(7) - (12)].lptr),intset,(yyvsp[(12) - (12)].sptr));
3514        }        }
3515      }      }
3516      break;      break;
3517    
3518    case 117:    case 117:
3519  #line 1387 "base\\generic\\compiler\\ascParse.y"  #line 1387 "base/generic/compiler/ascParse.y"
3520      {      {
3521        (yyval.sptr) = NULL;        (yyval.sptr) = NULL;
3522      }      }
3523      break;      break;
3524    
3525    case 118:    case 118:
3526  #line 1391 "base\\generic\\compiler\\ascParse.y"  #line 1391 "base/generic/compiler/ascParse.y"
3527      {      {
3528        (yyval.sptr) = (yyvsp[-1].sptr);        (yyval.sptr) = (yyvsp[(3) - (4)].sptr);
3529      }      }
3530      break;      break;
3531    
3532    case 119:    case 119:
3533  #line 1398 "base\\generic\\compiler\\ascParse.y"  #line 1398 "base/generic/compiler/ascParse.y"
3534      {      {
3535        if (FindType((yyvsp[-1].id_ptr))) {        if (FindType((yyvsp[(3) - (4)].id_ptr))) {
3536          (yyval.statptr) = CreateREF((yyvsp[-3].lptr),(yyvsp[-1].id_ptr),(yyvsp[0].id_ptr),1);          (yyval.statptr) = CreateREF((yyvsp[(1) - (4)].lptr),(yyvsp[(3) - (4)].id_ptr),(yyvsp[(4) - (4)].id_ptr),1);
3537        } else {        } else {
3538          (yyval.statptr) = CreateREF((yyvsp[-3].lptr),(yyvsp[-1].id_ptr),(yyvsp[0].id_ptr),1);          (yyval.statptr) = CreateREF((yyvsp[(1) - (4)].lptr),(yyvsp[(3) - (4)].id_ptr),(yyvsp[(4) - (4)].id_ptr),1);
3539          error_reporter_current_line(ASC_USER_WARNING,"_IS_ uses the unbuilt prototype %s.\n",SCP((yyvsp[-1].id_ptr)));          error_reporter_current_line(ASC_USER_WARNING,"_IS_ uses the unbuilt prototype %s.\n",SCP((yyvsp[(3) - (4)].id_ptr)));
3540        }        }
3541      }      }
3542      break;      break;
3543    
3544    case 120:    case 120:
3545  #line 1410 "base\\generic\\compiler\\ascParse.y"  #line 1410 "base/generic/compiler/ascParse.y"
3546      {      {
3547        struct TypeDescription *tmptype;        struct TypeDescription *tmptype;
3548        tmptype = FindType((yyvsp[0].id_ptr));        tmptype = FindType((yyvsp[(3) - (3)].id_ptr));
3549        if (tmptype != NULL) {        if (tmptype != NULL) {
3550          if ((GetBaseType(tmptype) != model_type) &&          if ((GetBaseType(tmptype) != model_type) &&
3551                  (g_typeargs != NULL)) {                  (g_typeargs != NULL)) {
3552            error_reporter_current_line(ASC_USER_ERROR,"IS_REFINED_TO has arguments to the nonmodel type %s.",SCP((yyvsp[0].id_ptr)));            error_reporter_current_line(ASC_USER_ERROR,"IS_REFINED_TO has arguments to the nonmodel type %s.",SCP((yyvsp[(3) - (3)].id_ptr)));
3553            DestroyVariableList((yyvsp[-2].lptr));            DestroyVariableList((yyvsp[(1) - (3)].lptr));
3554            DestroySetList(g_typeargs);            DestroySetList(g_typeargs);
3555            g_untrapped_error++;            g_untrapped_error++;
3556            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3557          } else {          } else {
3558            (yyval.statptr) = CreateIRT((yyvsp[-2].lptr),(yyvsp[0].id_ptr),g_typeargs);            (yyval.statptr) = CreateIRT((yyvsp[(1) - (3)].lptr),(yyvsp[(3) - (3)].id_ptr),g_typeargs);
3559          }          }
3560        } else {        } else {
3561          error_reporter_current_line(ASC_USER_ERROR,"The IS_REFINED_TO uses the undefined type %s.\n",SCP((yyvsp[0].id_ptr)));          error_reporter_current_line(ASC_USER_ERROR,"The IS_REFINED_TO uses the undefined type %s.\n",SCP((yyvsp[(3) - (3)].id_ptr)));
3562          DestroyVariableList((yyvsp[-2].lptr));          DestroyVariableList((yyvsp[(1) - (3)].lptr));
3563          DestroySetList(g_typeargs);          DestroySetList(g_typeargs);
3564          g_untrapped_error++;          g_untrapped_error++;
3565          (yyval.statptr) = NULL;          (yyval.statptr) = NULL;
# Line 3261  yyreduce: Line 3569  yyreduce:
3569      break;      break;
3570    
3571    case 121:    case 121:
3572  #line 1437 "base\\generic\\compiler\\ascParse.y"  #line 1437 "base/generic/compiler/ascParse.y"
3573      {      {
3574        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(1) - (1)].id_ptr);
3575        g_callargs = NULL;        g_callargs = NULL;
3576      }      }
3577      break;      break;
3578    
3579    case 122:    case 122:
3580  #line 1442 "base\\generic\\compiler\\ascParse.y"  #line 1442 "base/generic/compiler/ascParse.y"
3581      {      {
3582        (yyval.id_ptr) = (yyvsp[-3].id_ptr);        (yyval.id_ptr) = (yyvsp[(1) - (4)].id_ptr);
3583        g_callargs = (yyvsp[-1].sptr);        g_callargs = (yyvsp[(3) - (4)].sptr);
3584      }      }
3585      break;      break;
3586    
3587    case 123:    case 123:
3588  #line 1450 "base\\generic\\compiler\\ascParse.y"  #line 1450 "base/generic/compiler/ascParse.y"
3589      {      {
3590        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(1) - (1)].id_ptr);
3591        g_typeargs = NULL;        g_typeargs = NULL;
3592      }      }
3593      break;      break;
3594    
3595    case 124:    case 124:
3596  #line 1455 "base\\generic\\compiler\\ascParse.y"  #line 1455 "base/generic/compiler/ascParse.y"
3597      {      {
3598        (yyval.id_ptr) = (yyvsp[-3].id_ptr);        (yyval.id_ptr) = (yyvsp[(1) - (4)].id_ptr);
3599        g_typeargs = (yyvsp[-1].sptr);        g_typeargs = (yyvsp[(3) - (4)].sptr);
3600      }      }
3601      break;      break;
3602    
3603    case 125:    case 125:
3604  #line 1463 "base\\generic\\compiler\\ascParse.y"  #line 1463 "base/generic/compiler/ascParse.y"
3605      {      {
3606        (yyval.id_ptr) = NULL;        (yyval.id_ptr) = NULL;
3607      }      }
3608      break;      break;
3609    
3610    case 126:    case 126:
3611  #line 1467 "base\\generic\\compiler\\ascParse.y"  #line 1467 "base/generic/compiler/ascParse.y"
3612      {      {
3613        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
3614      }      }
3615      break;      break;
3616    
3617    case 127:    case 127:
3618  #line 1474 "base\\generic\\compiler\\ascParse.y"  #line 1474 "base/generic/compiler/ascParse.y"
3619      {      {
3620        (yyval.id_ptr) = NULL;        (yyval.id_ptr) = NULL;
3621      }      }
3622      break;      break;
3623    
3624    case 128:    case 128:
3625  #line 1478 "base\\generic\\compiler\\ascParse.y"  #line 1478 "base/generic/compiler/ascParse.y"
3626      {      {
3627        (yyval.id_ptr) = (yyvsp[0].id_ptr);        (yyval.id_ptr) = (yyvsp[(2) - (2)].id_ptr);
3628      }      }
3629      break;      break;
3630    
3631    case 129:    case 129:
3632  #line 1485 "base\\generic\\compiler\\ascParse.y"  #line 1485 "base/generic/compiler/ascParse.y"
3633      {      {
3634        (yyval.eptr) = NULL;        (yyval.eptr) = NULL;
3635      }      }
3636      break;      break;
3637    
3638    case 130:    case 130:
3639  #line 1489 "base\\generic\\compiler\\ascParse.y"  #line 1489 "base/generic/compiler/ascParse.y"
3640      {      {
3641        (yyval.eptr) = (yyvsp[0].eptr);        (yyval.eptr) = (yyvsp[(2) - (2)].eptr);
3642      }      }
3643      break;      break;
3644    
3645    case 131:    case 131:
3646  #line 1496 "base\\generic\\compiler\\ascParse.y"  #line 1496 "base/generic/compiler/ascParse.y"
3647      {      {
3648        (yyval.statptr) = CreateAA((yyvsp[-1].lptr));        (yyval.statptr) = CreateAA((yyvsp[(1) - (2)].lptr));
3649      }      }
3650      break;      break;
3651    
3652    case 132:    case 132:
3653  #line 1503 "base\\generic\\compiler\\ascParse.y"  #line 1503 "base/generic/compiler/ascParse.y"
3654      {      {
3655        (yyval.statptr) = CreateATS((yyvsp[-1].lptr));        (yyval.statptr) = CreateATS((yyvsp[(1) - (2)].lptr));
3656      }      }
3657      break;      break;
3658    
3659    case 133:    case 133:
3660  #line 1510 "base\\generic\\compiler\\ascParse.y"  #line 1510 "base/generic/compiler/ascParse.y"
3661      {      {
3662        (yyval.statptr) = CreateWBTS((yyvsp[-1].lptr));        (yyval.statptr) = CreateWBTS((yyvsp[(1) - (2)].lptr));
3663      }      }
3664      break;      break;
3665    
3666    case 134:    case 134:
3667  #line 1517 "base\\generic\\compiler\\ascParse.y"  #line 1517 "base/generic/compiler/ascParse.y"
3668      {      {
3669        (yyval.statptr) = CreateWNBTS((yyvsp[-1].lptr));        (yyval.statptr) = CreateWNBTS((yyvsp[(1) - (2)].lptr));
3670      }      }
3671      break;      break;
3672    
3673    case 135:    case 135:
3674  #line 1524 "base\\generic\\compiler\\ascParse.y"  #line 1524 "base/generic/compiler/ascParse.y"
3675      {      {
3676        (yyval.statptr) = CreateASSIGN((yyvsp[-2].nptr),(yyvsp[0].eptr));        (yyval.statptr) = CreateASSIGN((yyvsp[(1) - (3)].nptr),(yyvsp[(3) - (3)].eptr));
3677      }      }
3678      break;      break;
3679    
3680    case 136:    case 136:
3681  #line 1528 "base\\generic\\compiler\\ascParse.y"  #line 1528 "base/generic/compiler/ascParse.y"
3682      {      {
3683        (yyval.statptr) = CreateCASSIGN((yyvsp[-2].nptr),(yyvsp[0].eptr));        (yyval.statptr) = CreateCASSIGN((yyvsp[(1) - (3)].nptr),(yyvsp[(3) - (3)].eptr));
3684      }      }
3685      break;      break;
3686    
3687    case 137:    case 137:
3688  #line 1535 "base\\generic\\compiler\\ascParse.y"  #line 1535 "base/generic/compiler/ascParse.y"
3689      {      {
3690        if (IsRelation((yyvsp[0].eptr))) {        if (IsRelation((yyvsp[(1) - (1)].eptr))) {
3691          if (g_parse_relns == 0) {          if (g_parse_relns == 0) {
3692            DestroyExprList((yyvsp[0].eptr));            DestroyExprList((yyvsp[(1) - (1)].eptr));
3693            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3694          } else {          } else {
3695            (yyval.statptr) = CreateREL(NULL,(yyvsp[0].eptr));            (yyval.statptr) = CreateREL(NULL,(yyvsp[(1) - (1)].eptr));
3696          }          }
3697        } else {        } else {
3698          (yyval.statptr) = CreateLOGREL(NULL,(yyvsp[0].eptr));          (yyval.statptr) = CreateLOGREL(NULL,(yyvsp[(1) - (1)].eptr));
3699        }        }
3700      }      }
3701      break;      break;
3702    
3703    case 138:    case 138:
3704  #line 1548 "base\\generic\\compiler\\ascParse.y"  #line 1548 "base/generic/compiler/ascParse.y"
3705      {      {
3706        if (IsRelation((yyvsp[0].eptr))) {        if (IsRelation((yyvsp[(3) - (3)].eptr))) {
3707          if (g_parse_relns == 0) {          if (g_parse_relns == 0) {
3708            DestroyExprList((yyvsp[0].eptr));            DestroyExprList((yyvsp[(3) - (3)].eptr));
3709            DestroyName((yyvsp[-2].nptr));            DestroyName((yyvsp[(1) - (3)].nptr));
3710            (yyval.statptr) = NULL;            (yyval.statptr) = NULL;
3711          } else {          } else {
3712            (yyval.statptr) = CreateREL((yyvsp[-2].nptr),(yyvsp[0].eptr));            (yyval.statptr) = CreateREL((yyvsp[(1) - (3)].nptr),(yyvsp[(3) - (3)].eptr));
3713          }          }
3714        } else {        } else {
3715          (yyval.statptr) = CreateLOGREL((yyvsp[-2].nptr),(yyvsp[0].eptr));          (yyval.statptr) = CreateLOGREL((yyvsp[(1) - (3)].nptr),(yyvsp[(3) - (3)].eptr));
3716        }        }
3717      }      }
3718      break;      break;
3719    
3720    case 139:    case 139:
3721  #line 1565 "base\\generic\\compiler\\ascParse.y"  #line 1565 "base/generic/compiler/ascParse.y"
3722      {      {
3723        (yyval.eptr) = (yyvsp[0].eptr);        (yyval.eptr) = (yyvsp[(1) - (1)].eptr);
3724        if (NumberOfRelOps((yyvsp[0].eptr)) < 1) {        if (NumberOfRelOps((yyvsp[(1) - (1)].eptr)) < 1) {
3725          /* want at least 1. restriction to exactly 1 is in typelint */          /* want at least 1. restriction to exactly 1 is in typelint */
3726          ErrMsg_Generic("Missing punctuation (,;:) or else expression contains the \          ErrMsg_Generic("Missing punctuation (,;:) or else expression contains the \
3727  wrong number of relation operators (=, ==, <, >, <=, >=, !=) preceeding or.");  wrong number of relation operators (=, ==, <, >, <=, >=, !=) preceeding or.");
# Line 3423  wrong number of relation operators (=, = Line 3731  wrong number of relation operators (=, =
3731      break;      break;
3732    
3733    case 140:    case 140:
3734  #line 1575 "base\\generic\\compiler\\ascParse.y"  #line 1575 "base/generic/compiler/ascParse.y"
3735      {      {
3736        (yyval.eptr) = JoinExprLists((yyvsp[0].eptr),CreateOpExpr(e_minimize));        (yyval.eptr) = JoinExprLists((yyvsp[(2) - (2)].eptr),CreateOpExpr(e_minimize));
3737        if (NumberOfRelOps((yyvsp[0].eptr)) > 0) {        if (NumberOfRelOps((yyvsp[(2) - (2)].eptr)) > 0) {
3738          ErrMsg_Generic("Objective function contains relation operators (=, ==, <, >, <=, >=, !=).");          ErrMsg_Generic("Objective function contains relation operators (=, ==, <, >, <=, >=, !=).");
3739          g_untrapped_error++;          g_untrapped_error++;
3740        }        }
# Line 3434  wrong number of relation operators (=, = Line 3742  wrong number of relation operators (=, =
3742      break;      break;
3743    
3744    case 141:    case 141:
3745  #line 1583 "base\\generic\\compiler\\ascParse.y"  #line 1583 "base/generic/compiler/ascParse.y"
3746      {      {
3747        (yyval.eptr) = JoinExprLists((yyvsp[0].eptr),CreateOpExpr(e_maximize));        (yyval.eptr) = JoinExprLists((yyvsp[(2) - (2)].eptr),CreateOpExpr(e_maximize));
3748        if (NumberOfRelOps((yyvsp[0].eptr))>0) {        if (NumberOfRelOps((yyvsp[(2) - (2)].eptr))>0) {
3749          ErrMsg_Generic("Objective function contains relation operators (=, ==, <, >, <=, >=, !=).");          ErrMsg_Generic("Objective function contains relation operators (=, ==, <, >, <=, >=, !=).");
3750          g_untrapped_error++;          g_untrapped_error++;
3751        }        }
# Line 3445  wrong number of relation operators (=, = Line 3753  wrong number of relation operators (=, =
3753      break;      break;
3754    
3755    case 142:    case 142:
3756  #line 1594 "base\\generic\\compiler\\ascParse.y"  #line 1594 "base/generic/compiler/ascParse.y"
3757      {      {
3758        /*        /*
3759         * This is the blackbox declarative external relation.         * This is the blackbox declarative external relation.
3760         */         */
3761        struct VariableList *vl;        struct VariableList *vl;
3762        vl = JoinVariableLists((yyvsp[-4].lptr),(yyvsp[-2].lptr));        vl = JoinVariableLists((yyvsp[(5) - (9)].lptr),(yyvsp[(7) - (9)].lptr));
3763        /* $$ = CreateEXTERN(2,$1,SCP($3),vl,$8,NULL); */        /* $$ = CreateEXTERN(2,$1,SCP($3),vl,$8,NULL); */
3764        (yyval.statptr) = CreateEXTERNBlackBox((yyvsp[-8].nptr),SCP((yyvsp[-6].id_ptr)),vl,(yyvsp[-1].nptr));        (yyval.statptr) = CreateEXTERNBlackBox((yyvsp[(1) - (9)].nptr),SCP((yyvsp[(3) - (9)].id_ptr)),vl,(yyvsp[(8) - (9)].nptr));
3765      }      }
3766      break;      break;
3767    
3768    case 143:    case 143:
3769  #line 1607 "base\\generic\\compiler\\ascParse.y"  #line 1607 "base/generic/compiler/ascParse.y"
3770      {      {
3771        (yyval.lptr) = (yyvsp[-2].lptr);        (yyval.lptr) = (yyvsp[(1) - (3)].lptr);
3772      }      }
3773      break;      break;
3774    
3775    case 144:    case 144:
3776  #line 1614 "base\\generic\\compiler\\ascParse.y"  #line 1614 "base/generic/compiler/ascParse.y"
3777      {      {
3778        (yyval.lptr) = (yyvsp[-2].lptr);        (yyval.lptr) = (yyvsp[(1) - (3)].lptr);
3779      }      }
3780      break;      break;
3781    
3782    case 145:    case 145:
3783  #line 1621 "base\\generic\\compiler\\ascParse.y"  #line 1621 "base/generic/compiler/ascParse.y"
3784      {      {
3785        (yyval.nptr) = NULL;        (yyval.nptr) = NULL;
3786      }      }
3787      break;      break;
3788    
3789    case 146:    case 146:
3790  #line 1625 "base\\generic\\compiler\\ascParse.y"  #line 1625 "base/generic/compiler/ascParse.y"
3791      {      {
3792        (yyval.nptr) = (yyvsp[-2].nptr);        (yyval.nptr) = (yyvsp[(2) - (4)].nptr);
3793      }      }
3794      break;      break;
3795    
3796    case 147:    case 147:
3797  #line 1632 "base\\generic\\compiler\\ascParse.y"  #line 1632 "base/generic/compiler/ascParse.y"
3798      {      {
3799        /*        /*
3800         * This is the glassbox declarative external relation.         * This is the glassbox declarative external relation.
3801         * This now allows a scope for placement of the relations         * This now allows a scope for placement of the relations
3802         */         */
3803        struct VariableList *vl = (yyvsp[-4].lptr);        struct VariableList *vl = (yyvsp[(5) - (9)].lptr);
3804        struct Name *nptr;        struct Name *nptr;
3805        char tmp[32];        char tmp[32];
3806        symchar *str;        symchar *str;
3807    
3808        sprintf(tmp,"%ld",(yyvsp[-2].int_value));        sprintf(tmp,"%ld",(yyvsp[(7) - (9)].int_value));
3809        str = AddSymbol(tmp);        str = AddSymbol(tmp);
3810        nptr = CreateIdName(str);        nptr = CreateIdName(str);
3811      /* $$ = CreateEXTERN(1,$1,SCP($3),vl,nptr,$9); */      /* $$ = CreateEXTERN(1,$1,SCP($3),vl,nptr,$9); */
3812        (yyval.statptr) = CreateEXTERNGlassBox((yyvsp[-8].nptr),SCP((yyvsp[-6].id_ptr)),vl,nptr,(yyvsp[0].nptr));        (yyval.statptr) = CreateEXTERNGlassBox((yyvsp[(1) - (9)].nptr),SCP((yyvsp[(3) - (9)].id_ptr)),vl,nptr,(yyvsp[(9) - (9)].nptr));
3813      }      }
3814      break;      break;
3815    
3816    case 148:    case 148:
3817  #line 1652 "base\\generic\\compiler\\ascParse.y"  #line 1652 "base/generic/compiler/ascParse.y"
3818      {      {
3819        (yyval.nptr) = NULL;        (yyval.nptr) = NULL;
3820      }      }
3821      break;      break;
3822    
3823    case 149:    case 149:
3824  #line 1656 "base\\generic\\compiler\\ascParse.y"  #line 1656 "base/generic/compiler/ascParse.y"
3825      {      {
3826        (yyval.nptr) = (yyvsp[0].nptr);        (yyval.nptr) = (yyvsp[(2) - (2)].nptr);
3827      }      }
3828      break;      break;
3829    
3830    case 150:    case 150:
3831  #line 1664 "base\\generic\\compiler\\ascParse.y"  #line 1664 "base/generic/compiler/ascParse.y"
3832      {      {
3833        if( (yyvsp[0].int_value) != FOR_TOK ) {        if( (yyvsp[(8) - (8)].int_value) != FOR_TOK ) {
3834          WarnMsg_MismatchEnd("FOR", SCP((yyvsp[-6].id_ptr)), (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("FOR", SCP((yyvsp[(2) - (8)].id_ptr)), (yyvsp[(8) - (8)].int_value), NULL);
3835        }        }
3836            if ((yyvsp[-2].fkind) == fk_create && (yyvsp[-3].order) != f_random) {            if ((yyvsp[(6) - (8)].fkind) == fk_create && (yyvsp[(5) - (8)].order) != f_random) {
3837              /* create cannot have an order in declarative FOR */              /* create cannot have an order in declarative FOR */
3838          ErrMsg_Generic("FOR loops only accept DECREASING or INCREASING in the method section.");          ErrMsg_Generic("FOR loops only accept DECREASING or INCREASING in the method section.");
3839          g_untrapped_error++;          g_untrapped_error++;
3840            }            }
3841            if ((yyvsp[-2].fkind) == fk_do && (yyvsp[-3].order) == f_random) {            if ((yyvsp[(6) - (8)].fkind) == fk_do && (yyvsp[(5) - (8)].order) == f_random) {
3842              /* all FOR/DO default to increasing */              /* all FOR/DO default to increasing */
3843          (yyval.statptr) = CreateFOR((yyvsp[-6].id_ptr),(yyvsp[-4].eptr),(yyvsp[-1].slptr),f_increasing,(yyvsp[-2].fkind));          (yyval.statptr) = CreateFOR((yyvsp[(2) - (8)].id_ptr),(yyvsp[(4) - (8)].eptr),(yyvsp[(7) - (8)].slptr),f_increasing,(yyvsp[(6) - (8)].fkind));
3844            } else {            } else {
3845          (yyval.statptr) = CreateFOR((yyvsp[-6].id_ptr),(yyvsp[-4].eptr),(yyvsp[-1].slptr),(yyvsp[-3].order),(yyvsp[-2].fkind));          (yyval.statptr) = CreateFOR((yyvsp[(2) - (8)].id_ptr),(yyvsp[(4) - (8)].eptr),(yyvsp[(7) - (8)].slptr),(yyvsp[(5) - (8)].order),(yyvsp[(6) - (8)].fkind));
3846            }            }
3847      }      }
3848      break;      break;
3849    
3850    case 151:    case 151:
3851  #line 1684 "base\\generic\\compiler\\ascParse.y"  #line 1684 "base/generic/compiler/ascParse.y"
3852      {      {
3853        (yyval.order) = f_random;        (yyval.order) = f_random;
3854      }      }
3855      break;      break;
3856    
3857    case 152:    case 152:
3858  #line 1688 "base\\generic\\compiler\\ascParse.y"  #line 1688 "base/generic/compiler/ascParse.y"
3859      {      {
3860        (yyval.order) = f_increasing;        (yyval.order) = f_increasing;
3861      }      }
3862      break;      break;
3863    
3864    case 153:    case 153:
3865  #line 1692 "base\\generic\\compiler\\ascParse.y"  #line 1692 "base/generic/compiler/ascParse.y"
3866      {      {
3867        (yyval.order) = f_decreasing;        (yyval.order) = f_decreasing;
3868      }      }
3869      break;      break;
3870    
3871    case 154:    case 154:
3872  #line 1699 "base\\generic\\compiler\\ascParse.y"  #line 1699 "base/generic/compiler/ascParse.y"
3873      {      {
3874            (yyval.fkind) = fk_create; /* declarative FOR */            (yyval.fkind) = fk_create; /* declarative FOR */
3875      }      }
3876      break;      break;
3877    
3878    case 155:    case 155:
3879  #line 1703 "base\\generic\\compiler\\ascParse.y"  #line 1703 "base/generic/compiler/ascParse.y"
3880      {      {
3881            (yyval.fkind) = fk_expect; /* parameter FOR */            (yyval.fkind) = fk_expect; /* parameter FOR */
3882      }      }
3883      break;      break;
3884    
3885    case 156:    case 156:
3886  #line 1707 "base\\generic\\compiler\\ascParse.y"  #line 1707 "base/generic/compiler/ascParse.y"
3887      {      {
3888            (yyval.fkind) = fk_check; /* WHERE FOR */            (yyval.fkind) = fk_check; /* WHERE FOR */
3889      }      }
3890      break;      break;
3891    
3892    case 157:    case 157:
3893  #line 1711 "base\\generic\\compiler\\ascParse.y"  #line 1711 "base/generic/compiler/ascParse.y"
3894      {      {
3895            (yyval.fkind) = fk_do; /* method FOR */            (yyval.fkind) = fk_do; /* method FOR */
3896      }      }
3897      break;      break;
3898    
3899    case 158:    case 158:
3900  #line 1718 "base\\generic\\compiler\\ascParse.y"  #line 1718 "base/generic/compiler/ascParse.y"
3901      {      {
3902        (yyval.statptr) = CreateRUN((yyvsp[0].nptr),NULL);        (yyval.statptr) = CreateRUN((yyvsp[(2) - (2)].nptr),NULL);
3903      }      }
3904      break;      break;
3905    
3906    case 159:    case 159:
3907  #line 1722 "base\\generic\\compiler\\ascParse.y"  #line 1722 "base/generic/compiler/ascParse.y"
3908      {      {
3909        (yyval.statptr) = CreateRUN((yyvsp[0].nptr),(yyvsp[-2].nptr));      /* type :: name */        (yyval.statptr) = CreateRUN((yyvsp[(4) - (4)].nptr),(yyvsp[(2) - (4)].nptr));   /* type :: name */
3910      }      }
3911      break;      break;
3912    
3913    case 160:    case 160:
3914  #line 1729 "base\\generic\\compiler\\ascParse.y"  #line 1729 "base/generic/compiler/ascParse.y"
3915      {      {
3916          (yyval.statptr) = CreateFIX((yyvsp[0].lptr));          (yyval.statptr) = CreateFIX((yyvsp[(2) - (2)].lptr));
3917      }      }
3918      break;      break;
3919    
3920    case 161:    case 161:
3921  #line 1736 "base\\generic\\compiler\\ascParse.y"  #line 1736 "base/generic/compiler/ascParse.y"
3922      {      {
3923          (yyval.statptr) = CreateFREE((yyvsp[0].lptr));          (yyval.statptr) = CreateFREE((yyvsp[(2) - (2)].lptr));
3924      }      }
3925      break;      break;
3926    
3927    case 162:    case 162:
3928  #line 1743 "base\\generic\\compiler\\ascParse.y"  #line 1743 "base/generic/compiler/ascParse.y"
3929      {      {
3930        /*        /*
3931         * This is procedural external code. Was:         * This is procedural external code. Was:
3932        $$ = CreateEXTERN(0,NULL,SCP($2),$4,NULL,NULL);        $$ = CreateEXTERN(0,NULL,SCP($2),$4,NULL,NULL);
3933         */         */
3934        (yyval.statptr) = CreateEXTERNMethod(SCP((yyvsp[-3].id_ptr)),(yyvsp[-1].lptr));        (yyval.statptr) = CreateEXTERNMethod(SCP((yyvsp[(2) - (5)].id_ptr)),(yyvsp[(4) - (5)].lptr));
3935      }      }
3936      break;      break;
3937    
3938    case 163:    case 163:
3939  #line 1754 "base\\generic\\compiler\\ascParse.y"  #line 1754 "base/generic/compiler/ascParse.y"
3940      {      {
3941        /*        /*
3942         * This is proper procedural external method code.         * This is proper procedural external method code.
3943         */         */
3944        (yyval.statptr) = CreateCALL((yyvsp[0].id_ptr),g_callargs);        (yyval.statptr) = CreateCALL((yyvsp[(2) - (2)].id_ptr),g_callargs);
3945            g_callargs = NULL;            g_callargs = NULL;
3946      }      }
3947      break;      break;
3948    
3949    case 164:    case 164:
3950  #line 1765 "base\\generic\\compiler\\ascParse.y"  #line 1765 "base/generic/compiler/ascParse.y"
3951      {      {
3952          (yyval.statptr) = CreateASSERT((yyvsp[0].eptr));          (yyval.statptr) = CreateASSERT((yyvsp[(2) - (2)].eptr));
3953      }      }
3954      break;      break;
3955    
3956    case 165:    case 165:
3957  #line 1771 "base\\generic\\compiler\\ascParse.y"  #line 1771 "base/generic/compiler/ascParse.y"
3958      {      {
3959        if( (yyvsp[0].int_value) != IF_TOK ) {        if( (yyvsp[(6) - (6)].int_value) != IF_TOK ) {
3960          WarnMsg_MismatchEnd("IF", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("IF", NULL, (yyvsp[(6) - (6)].int_value), NULL);
3961        }        }
3962        (yyval.statptr) = CreateIF((yyvsp[-4].eptr),(yyvsp[-2].slptr),(yyvsp[-1].slptr));        (yyval.statptr) = CreateIF((yyvsp[(2) - (6)].eptr),(yyvsp[(4) - (6)].slptr),(yyvsp[(5) - (6)].slptr));
3963      }      }
3964      break;      break;
3965    
3966    case 166:    case 166:
3967  #line 1781 "base\\generic\\compiler\\ascParse.y"  #line 1781 "base/generic/compiler/ascParse.y"
3968      {      {
3969        if( (yyvsp[0].int_value) != WHILE_TOK ) {        if( (yyvsp[(5) - (5)].int_value) != WHILE_TOK ) {
3970          WarnMsg_MismatchEnd("WHILE", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("WHILE", NULL, (yyvsp[(5) - (5)].int_value), NULL);
3971        }        }
3972        (yyval.statptr) = CreateWhile((yyvsp[-3].eptr),(yyvsp[-1].slptr));        (yyval.statptr) = CreateWhile((yyvsp[(2) - (5)].eptr),(yyvsp[(4) - (5)].slptr));
3973      }      }
3974      break;      break;
3975    
3976    case 167:    case 167:
3977  #line 1790 "base\\generic\\compiler\\ascParse.y"  #line 1790 "base/generic/compiler/ascParse.y"
3978      {      {
3979        (yyval.slptr) = NULL;        (yyval.slptr) = NULL;
3980      }      }
3981      break;      break;
3982    
3983    case 168:    case 168:
3984  #line 1794 "base\\generic\\compiler\\ascParse.y"  #line 1794 "base/generic/compiler/ascParse.y"
3985      {      {
3986        (yyval.slptr) = (yyvsp[0].slptr);        (yyval.slptr) = (yyvsp[(2) - (2)].slptr);
3987      }      }
3988      break;      break;
3989    
3990    case 169:    case 169:
3991  #line 1801 "base\\generic\\compiler\\ascParse.y"  #line 1801 "base/generic/compiler/ascParse.y"
3992      {      {
3993        if( (yyvsp[0].int_value) != WHEN_TOK ) {        if( (yyvsp[(4) - (4)].int_value) != WHEN_TOK ) {
3994          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[(4) - (4)].int_value), NULL);
3995        }        }
3996        ErrMsg_Generic("() missing in WHEN statement.");        ErrMsg_Generic("() missing in WHEN statement.");
3997        DestroyWhenList((yyvsp[-1].wptr));        DestroyWhenList((yyvsp[(3) - (4)].wptr));
3998        DestroyVariableList((yyvsp[-2].lptr));        DestroyVariableList((yyvsp[(2) - (4)].lptr));
3999        g_untrapped_error++;        g_untrapped_error++;
4000        (yyval.statptr) = NULL;        (yyval.statptr) = NULL;
4001      }      }
4002      break;      break;
4003    
4004    case 170:    case 170:
4005  #line 1812 "base\\generic\\compiler\\ascParse.y"  #line 1812 "base/generic/compiler/ascParse.y"
4006      {      {
4007        if( (yyvsp[0].int_value) != WHEN_TOK ) {        if( (yyvsp[(6) - (6)].int_value) != WHEN_TOK ) {
4008          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[(6) - (6)].int_value), NULL);
4009        }        }
4010        ErrMsg_Generic("() missing in WHEN statement.");        ErrMsg_Generic("() missing in WHEN statement.");
4011        DestroyWhenList((yyvsp[-1].wptr));        DestroyWhenList((yyvsp[(5) - (6)].wptr));
4012        DestroyVariableList((yyvsp[-2].lptr));        DestroyVariableList((yyvsp[(4) - (6)].lptr));
4013        DestroyName((yyvsp[-5].nptr));        DestroyName((yyvsp[(1) - (6)].nptr));
4014        g_untrapped_error++;        g_untrapped_error++;
4015        (yyval.statptr) = NULL;        (yyval.statptr) = NULL;
4016      }      }
4017      break;      break;
4018    
4019    case 171:    case 171:
4020  #line 1824 "base\\generic\\compiler\\ascParse.y"  #line 1824 "base/generic/compiler/ascParse.y"
4021      {      {
4022        if( (yyvsp[0].int_value) != WHEN_TOK ) {        if( (yyvsp[(6) - (6)].int_value) != WHEN_TOK ) {
4023          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[(6) - (6)].int_value), NULL);
4024        }        }
4025        (yyval.statptr) = CreateWHEN(NULL,(yyvsp[-3].lptr),(yyvsp[-1].wptr));        (yyval.statptr) = CreateWHEN(NULL,(yyvsp[(3) - (6)].lptr),(yyvsp[(5) - (6)].wptr));
4026      }      }
4027      break;      break;
4028    
4029    case 172:    case 172:
4030  #line 1831 "base\\generic\\compiler\\ascParse.y"  #line 1831 "base/generic/compiler/ascParse.y"
4031      {      {
4032        if( (yyvsp[0].int_value) != WHEN_TOK ) {        if( (yyvsp[(8) - (8)].int_value) != WHEN_TOK ) {
4033          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("WHEN", NULL, (yyvsp[(8) - (8)].int_value), NULL);
4034        }        }
4035        (yyval.statptr) = CreateWHEN((yyvsp[-7].nptr),(yyvsp[-3].lptr),(yyvsp[-1].wptr));        (yyval.statptr) = CreateWHEN((yyvsp[(1) - (8)].nptr),(yyvsp[(5) - (8)].lptr),(yyvsp[(7) - (8)].wptr));
4036      }      }
4037      break;      break;
4038    
4039    case 173:    case 173:
4040  #line 1841 "base\\generic\\compiler\\ascParse.y"  #line 1841 "base/generic/compiler/ascParse.y"
4041      {      {
4042        (yyval.wptr) = ReverseWhenCases((yyvsp[0].wptr));        (yyval.wptr) = ReverseWhenCases((yyvsp[(1) - (1)].wptr));
4043      }      }
4044      break;      break;
4045    
4046    case 174:    case 174:
4047  #line 1848 "base\\generic\\compiler\\ascParse.y"  #line 1848 "base/generic/compiler/ascParse.y"
4048      {      {
4049        (yyval.wptr) = CreateWhen((yyvsp[-2].sptr),(yyvsp[0].slptr));        (yyval.wptr) = CreateWhen((yyvsp[(2) - (4)].sptr),(yyvsp[(4) - (4)].slptr));
4050      }      }
4051      break;      break;
4052    
4053    case 175:    case 175:
4054  #line 1852 "base\\generic\\compiler\\ascParse.y"  #line 1852 "base/generic/compiler/ascParse.y"
4055      {      {
4056        (yyval.wptr) = CreateWhen(NULL,(yyvsp[0].slptr));        (yyval.wptr) = CreateWhen(NULL,(yyvsp[(3) - (3)].slptr));
4057      }      }
4058      break;      break;
4059    
4060    case 176:    case 176:
4061  #line 1856 "base\\generic\\compiler\\ascParse.y"  #line 1856 "base/generic/compiler/ascParse.y"
4062      {      {
4063        (yyval.wptr) = LinkWhenCases(CreateWhen((yyvsp[-2].sptr),(yyvsp[0].slptr)),(yyvsp[-4].wptr));        (yyval.wptr) = LinkWhenCases(CreateWhen((yyvsp[(3) - (5)].sptr),(yyvsp[(5) - (5)].slptr)),(yyvsp[(1) - (5)].wptr));
4064      }      }
4065      break;      break;
4066    
4067    case 177:    case 177:
4068  #line 1860 "base\\generic\\compiler\\ascParse.y"  #line 1860 "base/generic/compiler/ascParse.y"
4069      {      {
4070        (yyval.wptr) = LinkWhenCases(CreateWhen(NULL,(yyvsp[0].slptr)),(yyvsp[-3].wptr));        (yyval.wptr) = LinkWhenCases(CreateWhen(NULL,(yyvsp[(4) - (4)].slptr)),(yyvsp[(1) - (4)].wptr));
4071      }      }
4072      break;      break;
4073    
4074    case 178:    case 178:
4075  #line 1867 "base\\generic\\compiler\\ascParse.y"  #line 1867 "base/generic/compiler/ascParse.y"
4076      {      {
4077        (yyval.statptr) = CreateFlow(fc_break,NULL);        (yyval.statptr) = CreateFlow(fc_break,NULL);
4078      }      }
4079      break;      break;
4080    
4081    case 179:    case 179:
4082  #line 1871 "base\\generic\\compiler\\ascParse.y"  #line 1871 "base/generic/compiler/ascParse.y"
4083      {      {
4084        (yyval.statptr) = CreateFlow(fc_continue,NULL);        (yyval.statptr) = CreateFlow(fc_continue,NULL);
4085      }      }
4086      break;      break;
4087    
4088    case 180:    case 180:
4089  #line 1875 "base\\generic\\compiler\\ascParse.y"  #line 1875 "base/generic/compiler/ascParse.y"
4090      {      {
4091        (yyval.statptr) = CreateFlow(fc_fallthru,NULL);        (yyval.statptr) = CreateFlow(fc_fallthru,NULL);
4092      }      }
4093      break;      break;
4094    
4095    case 181:    case 181:
4096  #line 1879 "base\\generic\\compiler\\ascParse.y"  #line 1879 "base/generic/compiler/ascParse.y"
4097      {      {
4098        (yyval.statptr) = CreateFlow(fc_return,NULL);        (yyval.statptr) = CreateFlow(fc_return,NULL);
4099      }      }
4100      break;      break;
4101    
4102    case 182:    case 182:
4103  #line 1883 "base\\generic\\compiler\\ascParse.y"  #line 1883 "base/generic/compiler/ascParse.y"
4104      {      {
4105        (yyval.statptr) = CreateFlow(fc_stop,(yyvsp[0].braced_ptr));        (yyval.statptr) = CreateFlow(fc_stop,(yyvsp[(2) - (2)].braced_ptr));
4106      }      }
4107      break;      break;
4108    
4109    case 183:    case 183:
4110  #line 1890 "base\\generic\\compiler\\ascParse.y"  #line 1890 "base/generic/compiler/ascParse.y"
4111      {      {
4112        (yyval.statptr) = CreateFNAME((yyvsp[0].nptr));        (yyval.statptr) = CreateFNAME((yyvsp[(2) - (2)].nptr));
4113      }      }
4114      break;      break;
4115    
4116    case 184:    case 184:
4117  #line 1897 "base\\generic\\compiler\\ascParse.y"  #line 1897 "base/generic/compiler/ascParse.y"
4118      {      {
4119        if( (yyvsp[0].int_value) != SELECT_TOK ) {        if( (yyvsp[(4) - (4)].int_value) != SELECT_TOK ) {
4120          WarnMsg_MismatchEnd("SELECT", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("SELECT", NULL, (yyvsp[(4) - (4)].int_value), NULL);
4121        }        }
4122        ErrMsg_Generic("() missing in SELECT statement.");        ErrMsg_Generic("() missing in SELECT statement.");
4123        DestroySelectList((yyvsp[-1].septr));        DestroySelectList((yyvsp[(3) - (4)].septr));
4124        DestroyVariableList((yyvsp[-2].lptr));        DestroyVariableList((yyvsp[(2) - (4)].lptr));
4125        g_untrapped_error++;        g_untrapped_error++;
4126        (yyval.statptr) = NULL;        (yyval.statptr) = NULL;
4127      }      }
4128      break;      break;
4129    
4130    case 185:    case 185:
4131  #line 1908 "base\\generic\\compiler\\ascParse.y"  #line 1908 "base/generic/compiler/ascParse.y"
4132      {      {
4133        if( (yyvsp[0].int_value) != SELECT_TOK ) {        if( (yyvsp[(6) - (6)].int_value) != SELECT_TOK ) {
4134          WarnMsg_MismatchEnd("SELECT", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("SELECT", NULL, (yyvsp[(6) - (6)].int_value), NULL);
4135        }        }
4136        (yyval.statptr) = CreateSELECT((yyvsp[-3].lptr),(yyvsp[-1].septr));        (yyval.statptr) = CreateSELECT((yyvsp[(3) - (6)].lptr),(yyvsp[(5) - (6)].septr));
4137      }      }
4138      break;      break;
4139    
4140    case 186:    case 186:
4141  #line 1918 "base\\generic\\compiler\\ascParse.y"  #line 1918 "base/generic/compiler/ascParse.y"
4142      {      {
4143        (yyval.septr) = ReverseSelectCases((yyvsp[0].septr));        (yyval.septr) = ReverseSelectCases((yyvsp[(1) - (1)].septr));
4144      }      }
4145      break;      break;
4146    
4147    case 187:    case 187:
4148  #line 1925 "base\\generic\\compiler\\ascParse.y"  #line 1925 "base/generic/compiler/ascParse.y"
4149      {      {
4150        (yyval.septr) = CreateSelect((yyvsp[-2].sptr),(yyvsp[0].slptr));        (yyval.septr) = CreateSelect((yyvsp[(2) - (4)].sptr),(yyvsp[(4) - (4)].slptr));
4151      }      }
4152      break;      break;
4153    
4154    case 188:    case 188:
4155  #line 1929 "base\\generic\\compiler\\ascParse.y"  #line 1929 "base/generic/compiler/ascParse.y"
4156      {      {
4157        (yyval.septr) = CreateSelect(NULL,(yyvsp[0].slptr));        (yyval.septr) = CreateSelect(NULL,(yyvsp[(3) - (3)].slptr));
4158      }      }
4159      break;      break;
4160    
4161    case 189:    case 189:
4162  #line 1933 "base\\generic\\compiler\\ascParse.y"  #line 1933 "base/generic/compiler/ascParse.y"
4163      {      {
4164        (yyval.septr) = LinkSelectCases(CreateSelect((yyvsp[-2].sptr),(yyvsp[0].slptr)),(yyvsp[-4].septr));        (yyval.septr) = LinkSelectCases(CreateSelect((yyvsp[(3) - (5)].sptr),(yyvsp[(5) - (5)].slptr)),(yyvsp[(1) - (5)].septr));
4165      }      }
4166      break;      break;
4167    
4168    case 190:    case 190:
4169  #line 1937 "base\\generic\\compiler\\ascParse.y"  #line 1937 "base/generic/compiler/ascParse.y"
4170      {      {
4171        (yyval.septr) = LinkSelectCases(CreateSelect(NULL,(yyvsp[0].slptr)),(yyvsp[-3].septr));        (yyval.septr) = LinkSelectCases(CreateSelect(NULL,(yyvsp[(4) - (4)].slptr)),(yyvsp[(1) - (4)].septr));
4172      }      }
4173      break;      break;
4174    
4175    case 191:    case 191:
4176  #line 1944 "base\\generic\\compiler\\ascParse.y"  #line 1944 "base/generic/compiler/ascParse.y"
4177      {      {
4178        if( (yyvsp[0].int_value) != SWITCH_TOK ) {        if( (yyvsp[(4) - (4)].int_value) != SWITCH_TOK ) {
4179          WarnMsg_MismatchEnd("SWITCH", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("SWITCH", NULL, (yyvsp[(4) - (4)].int_value), NULL);
4180        }        }
4181        ErrMsg_Generic("() missing in SWITCH statement.");        ErrMsg_Generic("() missing in SWITCH statement.");
4182        DestroySwitchList((yyvsp[-1].swptr));        DestroySwitchList((yyvsp[(3) - (4)].swptr));
4183        DestroyVariableList((yyvsp[-2].lptr));        DestroyVariableList((yyvsp[(2) - (4)].lptr));
4184        g_untrapped_error++;        g_untrapped_error++;
4185        (yyval.statptr) = NULL;        (yyval.statptr) = NULL;
4186      }      }
4187      break;      break;
4188    
4189    case 192:    case 192:
4190  #line 1955 "base\\generic\\compiler\\ascParse.y"  #line 1955 "base/generic/compiler/ascParse.y"
4191      {      {
4192        if( (yyvsp[0].int_value) != SWITCH_TOK ) {        if( (yyvsp[(6) - (6)].int_value) != SWITCH_TOK ) {
4193          WarnMsg_MismatchEnd("SWITCH", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("SWITCH", NULL, (yyvsp[(6) - (6)].int_value), NULL);
4194        }        }
4195        (yyval.statptr) = CreateSWITCH((yyvsp[-3].lptr),(yyvsp[-1].swptr));        (yyval.statptr) = CreateSWITCH((yyvsp[(3) - (6)].lptr),(yyvsp[(5) - (6)].swptr));
4196      }      }
4197      break;      break;
4198    
4199    case 193:    case 193:
4200  #line 1965 "base\\generic\\compiler\\ascParse.y"  #line 1965 "base/generic/compiler/ascParse.y"
4201      {      {
4202        (yyval.swptr) = ReverseSwitchCases((yyvsp[0].swptr));        (yyval.swptr) = ReverseSwitchCases((yyvsp[(1) - (1)].swptr));
4203      }      }
4204      break;      break;
4205    
4206    case 194:    case 194:
4207  #line 1972 "base\\generic\\compiler\\ascParse.y"  #line 1972 "base/generic/compiler/ascParse.y"
4208      {      {
4209        (yyval.swptr) = CreateSwitch((yyvsp[-2].sptr),(yyvsp[0].slptr));        (yyval.swptr) = CreateSwitch((yyvsp[(2) - (4)].sptr),(yyvsp[(4) - (4)].slptr));
4210      }      }
4211      break;      break;
4212    
4213    case 195:    case 195:
4214  #line 1976 "base\\generic\\compiler\\ascParse.y"  #line 1976 "base/generic/compiler/ascParse.y"
4215      {      {
4216        (yyval.swptr) = CreateSwitch(NULL,(yyvsp[0].slptr));        (yyval.swptr) = CreateSwitch(NULL,(yyvsp[(3) - (3)].slptr));
4217      }      }
4218      break;      break;
4219    
4220    case 196:    case 196:
4221  #line 1980 "base\\generic\\compiler\\ascParse.y"  #line 1980 "base/generic/compiler/ascParse.y"
4222      {      {
4223        (yyval.swptr) = LinkSwitchCases(CreateSwitch((yyvsp[-2].sptr),(yyvsp[0].slptr)),(yyvsp[-4].swptr));        (yyval.swptr) = LinkSwitchCases(CreateSwitch((yyvsp[(3) - (5)].sptr),(yyvsp[(5) - (5)].slptr)),(yyvsp[(1) - (5)].swptr));
4224      }      }
4225      break;      break;
4226    
4227    case 197:    case 197:
4228  #line 1984 "base\\generic\\compiler\\ascParse.y"  #line 1984 "base/generic/compiler/ascParse.y"
4229      {      {
4230        (yyval.swptr) = LinkSwitchCases(CreateSwitch(NULL,(yyvsp[0].slptr)),(yyvsp[-3].swptr));        (yyval.swptr) = LinkSwitchCases(CreateSwitch(NULL,(yyvsp[(4) - (4)].slptr)),(yyvsp[(1) - (4)].swptr));
4231      }      }
4232      break;      break;
4233    
4234    case 198:    case 198:
4235  #line 1991 "base\\generic\\compiler\\ascParse.y"  #line 1991 "base/generic/compiler/ascParse.y"
4236      {      {
4237        if( (yyvsp[0].int_value) != CONDITIONAL_TOK ) {        if( (yyvsp[(3) - (3)].int_value) != CONDITIONAL_TOK ) {
4238          WarnMsg_MismatchEnd("CONDITIONAL", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("CONDITIONAL", NULL, (yyvsp[(3) - (3)].int_value), NULL);
4239        }        }
4240        (yyval.statptr) = CreateCOND((yyvsp[-1].slptr));        (yyval.statptr) = CreateCOND((yyvsp[(2) - (3)].slptr));
4241      }      }
4242      break;      break;
4243    
4244    case 199:    case 199:
4245  #line 2001 "base\\generic\\compiler\\ascParse.y"  #line 2001 "base/generic/compiler/ascParse.y"
4246      {      {
4247        /*  All processing of notes takes place on the notes_body here.        /*  All processing of notes takes place on the notes_body here.
4248         *  Notes should NOT be added to the statement list.         *  Notes should NOT be added to the statement list.
4249         *  Here we know the current type and method names.         *  Here we know the current type and method names.
4250         */         */
4251        if( (yyvsp[0].int_value) != NOTES_TOK ) {        if( (yyvsp[(3) - (3)].int_value) != NOTES_TOK ) {
4252          WarnMsg_MismatchEnd("NOTES", NULL, (yyvsp[0].int_value), NULL);          WarnMsg_MismatchEnd("NOTES", NULL, (yyvsp[(3) - (3)].int_value), NULL);
4253        }        }
4254        if ((yyvsp[-1].notesptr) != NULL) {        if ((yyvsp[(2) - (3)].notesptr) != NULL) {
4255          struct NoteTmp *nt;          struct NoteTmp *nt;
4256          symchar *lang=NULL; /* dummy */          symchar *lang=NULL; /* dummy */
4257          nt = (yyvsp[-1].notesptr);          nt = (yyvsp[(2) - (3)].notesptr);
4258          while (nt != NULL) {          while (nt != NULL) {
4259            if (nt->lang != NULL) {            if (nt->lang != NULL) {
4260              /* this logic works because of the reverse sort that              /* this logic works because of the reverse sort that
# Line 3964  wrong number of relation operators (=, = Line 4272  wrong number of relation operators (=, =
4272                                   nt->line, nt->vardata, nd_vlist));                                   nt->line, nt->vardata, nd_vlist));
4273            nt = nt->next;            nt = nt->next;
4274          }          }
4275          DestroyNoteTmpList((yyvsp[-1].notesptr));          DestroyNoteTmpList((yyvsp[(2) - (3)].notesptr));
4276            }            }
4277        (yyval.statptr) = NULL;        (yyval.statptr) = NULL;
4278      }      }
4279      break;      break;
4280    
4281    case 200:    case 200:
4282  #line 2038 "base\\generic\\compiler\\ascParse.y"  #line 2038 "base/generic/compiler/ascParse.y"
4283      {      {
4284        /*  At this point we have the "language", the names of the        /*  At this point we have the "language", the names of the
4285         *  objects we are explaining, and the explanation/notes itself.         *  objects we are explaining, and the explanation/notes itself.
4286         */         */
4287        (yyval.notesptr) = (yyvsp[0].notesptr);        (yyval.notesptr) = (yyvsp[(2) - (2)].notesptr);
4288        assert((yyval.notesptr)->lang == NULL);        assert((yyval.notesptr)->lang == NULL);
4289        (yyval.notesptr)->lang = (yyvsp[-1].sym_ptr);        (yyval.notesptr)->lang = (yyvsp[(1) - (2)].sym_ptr);
4290      }      }
4291      break;      break;
4292    
4293    case 201:    case 201:
4294  #line 2047 "base\\generic\\compiler\\ascParse.y"  #line 2047 "base/generic/compiler/ascParse.y"
4295      {      {
4296        struct NoteTmp *nt;        struct NoteTmp *nt;
4297        (yyval.notesptr) = (yyvsp[-2].notesptr);        (yyval.notesptr) = (yyvsp[(1) - (3)].notesptr);
4298        assert((yyvsp[0].notesptr)->lang == NULL);        assert((yyvsp[(3) - (3)].notesptr)->lang == NULL);
4299        (yyvsp[0].notesptr)->lang = (yyvsp[-1].sym_ptr);        (yyvsp[(3) - (3)].notesptr)->lang = (yyvsp[(2) - (3)].sym_ptr);
4300        nt = (yyval.notesptr);        nt = (yyval.notesptr);
4301        while (nt->next != NULL) {        while (nt->next != NULL) {
4302          nt = nt->next;          nt = nt->next;
4303        }        }
4304        LinkNoteTmp(nt,(yyvsp[0].notesptr));        LinkNoteTmp(nt,(yyvsp[(3) - (3)].notesptr));
4305      }      }
4306      break;      break;
4307    
4308    case 202:    case 202:
4309  #line 2062 "base\\generic\\compiler\\ascParse.y"  #line 2062 "base/generic/compiler/ascParse.y"
4310      {      {
4311        (yyval.notesptr) = CreateNoteTmp(NULL, AddBraceChar((yyvsp[0].braced_ptr),NULL),        (yyval.notesptr) = CreateNoteTmp(NULL, AddBraceChar((yyvsp[(2) - (2)].braced_ptr),NULL),
4312                               (void *)(yyvsp[-1].lptr), LineNum());                               (void *)(yyvsp[(1) - (2)].lptr), LineNum());
4313      }      }
4314      break;      break;
4315    
4316    case 203:    case 203:
4317  #line 2067 "base\\generic\\compiler\\ascParse.y"  #line 2067 "base/generic/compiler/ascParse.y"
4318      {      {
4319        (yyval.notesptr) = CreateNoteTmp(NULL, AddBraceChar((yyvsp[0].braced_ptr),NULL),        (yyval.notesptr) = CreateNoteTmp(NULL, AddBraceChar((yyvsp[(3) - (3)].braced_ptr),NULL),
4320                           (void *)(yyvsp[-1].lptr), LineNum());                           (void *)(yyvsp[(2) - (3)].lptr), LineNum());
4321        LinkNoteTmp((yyval.notesptr),(yyvsp[-2].notesptr));        LinkNoteTmp((yyval.notesptr),(yyvsp[(1) - (3)].notesptr));
4322      }      }
4323      break;      break;
4324    
4325    case 204:    case 204:
4326  #line 2076 "base\\generic\\compiler\\ascParse.y"  #line 2076 "base/generic/compiler/ascParse.y"
4327      {      {
4328        /*        /*
4329         * Reversing the variable list is now essential to deal with         * Reversing the variable list is now essential to deal with
4330         * external procedures and other things where order is important.         * external procedures and other things where order is important.
4331         */         */
4332        (yyval.lptr) = ReverseVariableList((yyvsp[0].lptr));        (yyval.lptr) = ReverseVariableList((yyvsp[(1) - (1)].lptr));
4333      }      }
4334      break;      break;
4335    
4336    case 205:    case 205:
4337  #line 2087 "base\\generic\\compiler\\ascParse.y"  #line 2087 "base/generic/compiler/ascParse.y"
4338      {      {
4339        (yyval.lptr) = CreateVariableNode((yyvsp[0].nptr));        (yyval.lptr) = CreateVariableNode((yyvsp[(1) - (1)].nptr));
4340      }      }
4341      break;      break;
4342    
4343    case 206:    case 206:
4344  #line 2091 "base\\generic\\compiler\\ascParse.y"  #line 2091 "base/generic/compiler/ascParse.y"
4345      {      {
4346        (yyval.lptr) = CreateVariableNode((yyvsp[0].nptr));        (yyval.lptr) = CreateVariableNode((yyvsp[(3) - (3)].nptr));
4347        LinkVariableNodes((yyval.lptr),(yyvsp[-2].lptr));        LinkVariableNodes((yyval.lptr),(yyvsp[(1) - (3)].lptr));
4348      }      }
4349      break;      break;
4350    
4351    case 207:    case 207:
4352  #line 2096 "base\\generic\\compiler\\ascParse.y"  #line 2096 "base/generic/compiler/ascParse.y"
4353      {      {
4354        ErrMsg_CommaName("name",(yyvsp[0].nptr));        ErrMsg_CommaName("name",(yyvsp[(2) - (2)].nptr));
4355        (yyval.lptr) = CreateVariableNode((yyvsp[0].nptr));        (yyval.lptr) = CreateVariableNode((yyvsp[(2) - (2)].nptr));
4356        LinkVariableNodes((yyval.lptr),(yyvsp[-1].lptr));        LinkVariableNodes((yyval.lptr),(yyvsp[(1) - (2)].lptr));
4357        /* trash the definition. keep the loose fname around because        /* trash the definition. keep the loose fname around because
4358         * destroying here is inconvenient         * destroying here is inconvenient
4359         */         */
# Line 4054  wrong number of relation operators (=, = Line 4362  wrong number of relation operators (=, =
4362      break;      break;
4363    
4364    case 208:    case 208:
4365  #line 2109 "base\\generic\\compiler\\ascParse.y"  #line 2109 "base/generic/compiler/ascParse.y"
4366      {      {
4367        symchar *simple;        symchar *simple;
4368        void *data;        void *data;
4369        enum NoteData nd;        enum NoteData nd;
4370        (yyval.nptr) = ReverseName((yyvsp[-1].nptr));        (yyval.nptr) = ReverseName((yyvsp[(1) - (2)].nptr));
4371        if ((yyvsp[0].dquote_ptr) != NULL && (yyvsp[-1].nptr) != NULL) {        if ((yyvsp[(2) - (2)].dquote_ptr) != NULL && (yyvsp[(1) - (2)].nptr) != NULL) {
4372              simple = SimpleNameIdPtr((yyval.nptr));              simple = SimpleNameIdPtr((yyval.nptr));
4373          data = (simple == NULL ? (void *)(yyval.nptr) : NULL);          data = (simple == NULL ? (void *)(yyval.nptr) : NULL);
4374          nd = (data == NULL ? nd_empty : nd_name);          nd = (data == NULL ? nd_empty : nd_name);
4375          CollectNote(CreateNote(g_type_name, InlineNote(), simple,          CollectNote(CreateNote(g_type_name, InlineNote(), simple,
4376                                 g_proc_name,                                 g_proc_name,
4377                                 Asc_ModuleBestName(Asc_CurrentModule()),                                 Asc_ModuleBestName(Asc_CurrentModule()),
4378                                 AddBraceChar((yyvsp[0].dquote_ptr),InlineNote()),                                 AddBraceChar((yyvsp[(2) - (2)].dquote_ptr),InlineNote()),
4379                                 LineNum(), data, nd));                                 LineNum(), data, nd));
4380        }        }
4381      }      }
4382      break;      break;
4383    
4384    case 209:    case 209:
4385  #line 2129 "base\\generic\\compiler\\ascParse.y"  #line 2129 "base/generic/compiler/ascParse.y"
4386      {      {
4387        (yyval.nptr) = CreateIdName((yyvsp[0].id_ptr));        (yyval.nptr) = CreateIdName((yyvsp[(1) - (1)].id_ptr));
4388      }      }
4389      break;      break;
4390    
4391    case 210:    case 210:
4392  #line 2133 "base\\generic\\compiler\\ascParse.y"  #line 2133 "base/generic/compiler/ascParse.y"
4393      {      {
4394        (yyval.nptr) = CreateIdName((yyvsp[0].id_ptr));        (yyval.nptr) = CreateIdName((yyvsp[(3) - (3)].id_ptr));
4395        LinkNames((yyval.nptr),(yyvsp[-2].nptr));        LinkNames((yyval.nptr),(yyvsp[(1) - (3)].nptr));
4396      }      }
4397      break;      break;
4398    
4399    case 211:    case 211:
4400  #line 2138 "base\\generic\\compiler\\ascParse.y"  #line 2138 "base/generic/compiler/ascParse.y"
4401      {      {
4402        if ((yyvsp[-1].sptr) == NULL) {        if ((yyvsp[(3) - (4)].sptr) == NULL) {
4403          error_reporter_current_line(ASC_USER_ERROR,"syntax error: Empty set in name definition, name:");          error_reporter_current_line(ASC_USER_ERROR,"syntax error: Empty set in name definition, name:");
4404          WriteName(ASCERR,(yyvsp[-3].nptr));          WriteName(ASCERR,(yyvsp[(1) - (4)].nptr));
4405          FPRINTF(ASCERR,"[]\n");          FPRINTF(ASCERR,"[]\n");
4406          g_untrapped_error++;          g_untrapped_error++;
4407        } else {        } else {
4408          (yyval.nptr) = CreateSetName((yyvsp[-1].sptr));          (yyval.nptr) = CreateSetName((yyvsp[(3) - (4)].sptr));
4409          LinkNames((yyval.nptr),(yyvsp[-3].nptr));          LinkNames((yyval.nptr),(yyvsp[(1) - (4)].nptr));
4410        }        }
4411      }      }
4412      break;      break;
4413    
4414    case 212:    case 212:
4415  #line 2153 "base\\generic\\compiler\\ascParse.y"  #line 2153 "base/generic/compiler/ascParse.y"
4416      {      {
4417            g_end_identifier = NULL;            g_end_identifier = NULL;
4418            (yyval.int_value) = CONDITIONAL_TOK;            (yyval.int_value) = CONDITIONAL_TOK;
# Line 4112  wrong number of relation operators (=, = Line 4420  wrong number of relation operators (=, =
4420      break;      break;
4421    
4422    case 213:    case 213:
4423  #line 2158 "base\\generic\\compiler\\ascParse.y"  #line 2158 "base/generic/compiler/ascParse.y"
4424      {      {
4425            g_end_identifier = NULL;            g_end_identifier = NULL;
4426            (yyval.int_value) = FOR_TOK;            (yyval.int_value) = FOR_TOK;
# Line 4120  wrong number of relation operators (=, = Line 4428  wrong number of relation operators (=, =
4428      break;      break;
4429    
4430    case 214:    case 214:
4431  #line 2163 "base\\generic\\compiler\\ascParse.y"  #line 2163 "base/generic/compiler/ascParse.y"
4432      {      {
4433            g_end_identifier = NULL;            g_end_identifier = NULL;
4434            (yyval.int_value) = IF_TOK;            (yyval.int_value) = IF_TOK;
# Line 4128  wrong number of relation operators (=, = Line 4436  wrong number of relation operators (=, =
4436      break;      break;
4437    
4438    case 215:    case 215:
4439  #line 2168 "base\\generic\\compiler\\ascParse.y"  #line 2168 "base/generic/compiler/ascParse.y"
4440      {      {
4441            g_end_identifier = NULL;            g_end_identifier = NULL;
4442            (yyval.int_value) = INTERACTIVE_TOK;            (yyval.int_value) = INTERACTIVE_TOK;
# Line 4136  wrong number of relation operators (=, = Line 4444  wrong number of relation operators (=, =
4444      break;      break;
4445    
4446    case 216:    case 216:
4447  #line 2173 "base\\generic\\compiler\\ascParse.y"  #line 2173 "base/generic/compiler/ascParse.y"
4448      {      {
4449            g_end_identifier = NULL;            g_end_identifier = NULL;
4450            (yyval.int_value) = METHODS_TOK;            (yyval.int_value) = METHODS_TOK;
# Line 4144  wrong number of relation operators (=, = Line 4452  wrong number of relation operators (=, =
4452      break;      break;
4453    
4454    case 217:    case 217:
4455  #line 2178 "base\\generic\\compiler\\ascParse.y"  #line 2178 "base/generic/compiler/ascParse.y"
4456      {      {
4457            g_end_identifier = NULL;            g_end_identifier = NULL;
4458            (yyval.int_value) = NOTES_TOK;            (yyval.int_value) = NOTES_TOK;
# Line 4152  wrong number of relation operators (=, = Line 4460  wrong number of relation operators (=, =
4460      break;      break;
4461    
4462    case 218:    case 218:
4463  #line 2183 "base\\generic\\compiler\\ascParse.y"  #line 2183 "base/generic/compiler/ascParse.y"
4464      {      {
4465            g_end_identifier = NULL;            g_end_identifier = NULL;
4466            (yyval.int_value) = SELECT_TOK;            (yyval.int_value) = SELECT_TOK;
# Line 4160  wrong number of relation operators (=, = Line 4468  wrong number of relation operators (=, =
4468      break;      break;
4469    
4470    case 219:    case 219:
4471  #line 2188 "base\\generic\\compiler\\ascParse.y"  #line 2188 "base/generic/compiler/ascParse.y"
4472      {      {
4473            g_end_identifier = NULL;            g_end_identifier = NULL;
4474            (yyval.int_value) = SWITCH_TOK;            (yyval.int_value) = SWITCH_TOK;
# Line 4168  wrong number of relation operators (=, = Line 4476  wrong number of relation operators (=, =
4476      break;      break;
4477    
4478    case 220:    case 220:
4479  #line 2193 "base\\generic\\compiler\\ascParse.y"  #line 2193 "base/generic/compiler/ascParse.y"
4480      {      {
4481            g_end_identifier = NULL;            g_end_identifier = NULL;
4482            (yyval.int_value) = UNITS_TOK;            (yyval.int_value) = UNITS_TOK;
# Line 4176  wrong number of relation operators (=, = Line 4484  wrong number of relation operators (=, =
4484      break;      break;
4485    
4486    case 221:    case 221:
4487  #line 2198 "base\\generic\\compiler\\ascParse.y"  #line 2198 "base/generic/compiler/ascParse.y"
4488      {      {
4489            g_end_identifier = NULL;            g_end_identifier = NULL;
4490            (yyval.int_value) = GLOBAL_TOK;            (yyval.int_value) = GLOBAL_TOK;
# Line 4184  wrong number of relation operators (=, = Line 4492  wrong number of relation operators (=, =
4492      break;      break;
4493    
4494    case 222:    case 222:
4495  #line 2203 "base\\generic\\compiler\\ascParse.y"  #line 2203 "base/generic/compiler/ascParse.y"
4496      {      {
4497            g_end_identifier = NULL;            g_end_identifier = NULL;
4498            (yyval.int_value) = WHEN_TOK;            (yyval.int_value) = WHEN_TOK;
# Line 4192  wrong number of relation operators (=, = Line 4500  wrong number of relation operators (=, =
4500      break;      break;
4501    
4502    case 223:    case 223:
4503  #line 2208 "base\\generic\\compiler\\ascParse.y"  #line 2208 "base/generic/compiler/ascParse.y"
4504      {      {
4505            g_end_identifier = NULL;            g_end_identifier = NULL;
4506            (yyval.int_value) = WHILE_TOK;            (yyval.int_value) = WHILE_TOK;
# Line 4200  wrong number of relation operators (=, = Line 4508  wrong number of relation operators (=, =
4508      break;      break;
4509    
4510    case 224:    case 224: