summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/fe/y.tab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/fe/y.tab.cpp')
-rw-r--r--TAO/TAO_IDL/fe/y.tab.cpp8247
1 files changed, 8247 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/fe/y.tab.cpp b/TAO/TAO_IDL/fe/y.tab.cpp
new file mode 100644
index 00000000000..0b58b9b6047
--- /dev/null
+++ b/TAO/TAO_IDL/fe/y.tab.cpp
@@ -0,0 +1,8247 @@
+// $Id$
+/* A Bison parser, made by GNU Bison 1.875d. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
+
+/* All symbols defined below should begin with tao_yy or TAO_YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define TAO_YYBISON 1
+
+/* Skeleton name. */
+#define TAO_YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define TAO_YYPURE 0
+
+/* Using locations. */
+#define TAO_YYLSP_NEEDED 0
+
+
+
+/* Tokens. */
+#ifndef TAO_YYTOKENTYPE
+# define TAO_YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum tao_yytokentype {
+ IDENTIFIER = 258,
+ IDL_CONST = 259,
+ IDL_MODULE = 260,
+ IDL_INTERFACE = 261,
+ IDL_TYPEDEF = 262,
+ IDL_LONG = 263,
+ IDL_SHORT = 264,
+ IDL_UNSIGNED = 265,
+ IDL_DOUBLE = 266,
+ IDL_FLOAT = 267,
+ IDL_CHAR = 268,
+ IDL_WCHAR = 269,
+ IDL_OCTET = 270,
+ IDL_BOOLEAN = 271,
+ IDL_FIXED = 272,
+ IDL_ANY = 273,
+ IDL_OBJECT = 274,
+ IDL_STRUCT = 275,
+ IDL_UNION = 276,
+ IDL_SWITCH = 277,
+ IDL_ENUM = 278,
+ IDL_SEQUENCE = 279,
+ IDL_STRING = 280,
+ IDL_WSTRING = 281,
+ IDL_EXCEPTION = 282,
+ IDL_CASE = 283,
+ IDL_DEFAULT = 284,
+ IDL_READONLY = 285,
+ IDL_ATTRIBUTE = 286,
+ IDL_ONEWAY = 287,
+ IDL_IDEMPOTENT = 288,
+ IDL_VOID = 289,
+ IDL_IN = 290,
+ IDL_OUT = 291,
+ IDL_INOUT = 292,
+ IDL_RAISES = 293,
+ IDL_CONTEXT = 294,
+ IDL_NATIVE = 295,
+ IDL_LOCAL = 296,
+ IDL_ABSTRACT = 297,
+ IDL_CUSTOM = 298,
+ IDL_FACTORY = 299,
+ IDL_PRIVATE = 300,
+ IDL_PUBLIC = 301,
+ IDL_SUPPORTS = 302,
+ IDL_TRUNCATABLE = 303,
+ IDL_VALUETYPE = 304,
+ IDL_COMPONENT = 305,
+ IDL_CONSUMES = 306,
+ IDL_EMITS = 307,
+ IDL_EVENTTYPE = 308,
+ IDL_FINDER = 309,
+ IDL_GETRAISES = 310,
+ IDL_HOME = 311,
+ IDL_IMPORT = 312,
+ IDL_MULTIPLE = 313,
+ IDL_PRIMARYKEY = 314,
+ IDL_PROVIDES = 315,
+ IDL_PUBLISHES = 316,
+ IDL_SETRAISES = 317,
+ IDL_TYPEID = 318,
+ IDL_TYPEPREFIX = 319,
+ IDL_USES = 320,
+ IDL_MANAGES = 321,
+ IDL_INTEGER_LITERAL = 322,
+ IDL_UINTEGER_LITERAL = 323,
+ IDL_STRING_LITERAL = 324,
+ IDL_CHARACTER_LITERAL = 325,
+ IDL_FLOATING_PT_LITERAL = 326,
+ IDL_TRUETOK = 327,
+ IDL_FALSETOK = 328,
+ IDL_SCOPE_DELIMITOR = 329,
+ IDL_LEFT_SHIFT = 330,
+ IDL_RIGHT_SHIFT = 331,
+ IDL_WCHAR_LITERAL = 332,
+ IDL_WSTRING_LITERAL = 333
+ };
+#endif
+#define IDENTIFIER 258
+#define IDL_CONST 259
+#define IDL_MODULE 260
+#define IDL_INTERFACE 261
+#define IDL_TYPEDEF 262
+#define IDL_LONG 263
+#define IDL_SHORT 264
+#define IDL_UNSIGNED 265
+#define IDL_DOUBLE 266
+#define IDL_FLOAT 267
+#define IDL_CHAR 268
+#define IDL_WCHAR 269
+#define IDL_OCTET 270
+#define IDL_BOOLEAN 271
+#define IDL_FIXED 272
+#define IDL_ANY 273
+#define IDL_OBJECT 274
+#define IDL_STRUCT 275
+#define IDL_UNION 276
+#define IDL_SWITCH 277
+#define IDL_ENUM 278
+#define IDL_SEQUENCE 279
+#define IDL_STRING 280
+#define IDL_WSTRING 281
+#define IDL_EXCEPTION 282
+#define IDL_CASE 283
+#define IDL_DEFAULT 284
+#define IDL_READONLY 285
+#define IDL_ATTRIBUTE 286
+#define IDL_ONEWAY 287
+#define IDL_IDEMPOTENT 288
+#define IDL_VOID 289
+#define IDL_IN 290
+#define IDL_OUT 291
+#define IDL_INOUT 292
+#define IDL_RAISES 293
+#define IDL_CONTEXT 294
+#define IDL_NATIVE 295
+#define IDL_LOCAL 296
+#define IDL_ABSTRACT 297
+#define IDL_CUSTOM 298
+#define IDL_FACTORY 299
+#define IDL_PRIVATE 300
+#define IDL_PUBLIC 301
+#define IDL_SUPPORTS 302
+#define IDL_TRUNCATABLE 303
+#define IDL_VALUETYPE 304
+#define IDL_COMPONENT 305
+#define IDL_CONSUMES 306
+#define IDL_EMITS 307
+#define IDL_EVENTTYPE 308
+#define IDL_FINDER 309
+#define IDL_GETRAISES 310
+#define IDL_HOME 311
+#define IDL_IMPORT 312
+#define IDL_MULTIPLE 313
+#define IDL_PRIMARYKEY 314
+#define IDL_PROVIDES 315
+#define IDL_PUBLISHES 316
+#define IDL_SETRAISES 317
+#define IDL_TYPEID 318
+#define IDL_TYPEPREFIX 319
+#define IDL_USES 320
+#define IDL_MANAGES 321
+#define IDL_INTEGER_LITERAL 322
+#define IDL_UINTEGER_LITERAL 323
+#define IDL_STRING_LITERAL 324
+#define IDL_CHARACTER_LITERAL 325
+#define IDL_FLOATING_PT_LITERAL 326
+#define IDL_TRUETOK 327
+#define IDL_FALSETOK 328
+#define IDL_SCOPE_DELIMITOR 329
+#define IDL_LEFT_SHIFT 330
+#define IDL_RIGHT_SHIFT 331
+#define IDL_WCHAR_LITERAL 332
+#define IDL_WSTRING_LITERAL 333
+
+
+
+
+/* Copy the first part of user declarations. */
+
+
+#include "ast_argument.h"
+#include "ast_array.h"
+#include "ast_attribute.h"
+#include "ast_field.h"
+#include "ast_expression.h"
+#include "ast_operation.h"
+#include "ast_generator.h"
+#include "ast_module.h"
+#include "ast_valuebox.h"
+#include "ast_valuetype.h"
+#include "ast_valuetype_fwd.h"
+#include "ast_eventtype.h"
+#include "ast_eventtype_fwd.h"
+#include "ast_component.h"
+#include "ast_component_fwd.h"
+#include "ast_home.h"
+#include "ast_constant.h"
+#include "ast_union.h"
+#include "ast_union_fwd.h"
+#include "ast_structure_fwd.h"
+#include "ast_extern.h"
+#include "ast_enum.h"
+#include "ast_root.h"
+#include "ast_sequence.h"
+#include "ast_string.h"
+#include "ast_factory.h"
+#include "ast_exception.h"
+#include "fe_declarator.h"
+#include "fe_interface_header.h"
+#include "utl_identifier.h"
+#include "utl_err.h"
+#include "utl_string.h"
+#include "utl_strlist.h"
+#include "utl_namelist.h"
+#include "utl_exprlist.h"
+#include "utl_labellist.h"
+#include "utl_decllist.h"
+#include "global_extern.h"
+#include "nr_extern.h"
+
+#if (defined(apollo) || defined(hpux)) && defined(__cplusplus)
+extern "C" int tao_yywrap();
+#endif // (defined(apollo) || defined(hpux)) && defined(__cplusplus)
+
+
+void tao_yyerror (const char *);
+int tao_yylex (void);
+extern "C" int tao_yywrap (void);
+extern char tao_yytext[];
+extern int tao_yyleng;
+AST_Decl *tao_enum_constant_decl = 0;
+#define TAO_YYDEBUG_LEXER_TEXT (tao_yytext[tao_yyleng] = '\0', tao_yytext)
+// Force the pretty debugging code to compile.
+#define TAO_YYDEBUG 1
+
+
+/* Enabling traces. */
+#ifndef TAO_YYDEBUG
+# define TAO_YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef TAO_YYERROR_VERBOSE
+# undef TAO_YYERROR_VERBOSE
+# define TAO_YYERROR_VERBOSE 1
+#else
+# define TAO_YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (TAO_YYSTYPE) && ! defined (TAO_YYSTYPE_IS_DECLARED)
+
+typedef union TAO_YYSTYPE {
+ AST_Decl *dcval; /* Decl value */
+ UTL_StrList *slval; /* String list */
+ UTL_NameList *nlval; /* Name list */
+ UTL_ExprList *elval; /* Expression list */
+ UTL_LabelList *llval; /* Label list */
+ UTL_DeclList *dlval; /* Declaration list */
+ FE_InterfaceHeader *ihval; /* Interface header */
+ FE_OBVHeader *vhval; /* Valuetype header */
+ FE_EventHeader *ehval; /* Event header */
+ FE_ComponentHeader *chval; /* Component header */
+ FE_HomeHeader *hhval; /* Home header */
+ AST_Expression *exval; /* Expression value */
+ AST_UnionLabel *ulval; /* Union label */
+ AST_Field *ffval; /* Field value */
+ AST_Field::Visibility vival; /* N/A, pub or priv */
+ AST_Expression::ExprType etval; /* Expression type */
+ AST_Argument::Direction dival; /* Argument direction */
+ AST_Operation::Flags ofval; /* Operation flags */
+ FE_Declarator *deval; /* Declarator value */
+ bool bval; /* Boolean value */
+ long ival; /* Long value */
+ idl_uns_long uival; /* Unsigned long value */
+ double dval; /* Double value */
+ float fval; /* Float value */
+ char cval; /* Char value */
+ ACE_CDR::WChar wcval; /* WChar value */
+ UTL_String *sval; /* String value */
+ char *wsval; /* WString value */
+ char *strval; /* char * value */
+ Identifier *idval; /* Identifier */
+ UTL_IdList *idlist; /* Identifier list */
+} TAO_YYSTYPE;
+/* Line 191 of yacc.c. */
+
+# define tao_yystype TAO_YYSTYPE /* obsolescent; will be withdrawn */
+# define TAO_YYSTYPE_IS_DECLARED 1
+# define TAO_YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 214 of yacc.c. */
+
+
+#if ! defined (tao_yyoverflow) || TAO_YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef TAO_YYSTACK_USE_ALLOCA
+# if TAO_YYSTACK_USE_ALLOCA
+# define TAO_YYSTACK_ALLOC alloca
+# endif
+# else
+# if defined (alloca) || defined (_ALLOCA_H)
+# define TAO_YYSTACK_ALLOC alloca
+# else
+# ifdef __GNUC__
+# define TAO_YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+
+# ifdef TAO_YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define TAO_YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define TAO_YYSIZE_T size_t
+# endif
+# define TAO_YYSTACK_ALLOC malloc
+# define TAO_YYSTACK_FREE free
+# endif
+#endif /* ! defined (tao_yyoverflow) || TAO_YYERROR_VERBOSE */
+
+
+#if (! defined (tao_yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (TAO_YYSTYPE_IS_TRIVIAL) && TAO_YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union tao_yyalloc
+{
+ short tao_yyss;
+ TAO_YYSTYPE tao_yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define TAO_YYSTACK_GAP_MAXIMUM (sizeof (union tao_yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define TAO_YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (TAO_YYSTYPE)) \
+ + TAO_YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef TAO_YYCOPY
+# if defined (__GNUC__) && 1 < __GNUC__
+# define TAO_YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define TAO_YYCOPY(To, From, Count) \
+ do \
+ { \
+ register TAO_YYSIZE_T tao_yyi; \
+ for (tao_yyi = 0; tao_yyi < (Count); tao_yyi++) \
+ (To)[tao_yyi] = (From)[tao_yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables TAO_YYSIZE and TAO_YYSTACKSIZE give the old and new number of
+ elements in the stack, and TAO_YYPTR gives the new location of the
+ stack. Advance TAO_YYPTR to a properly aligned location for the next
+ stack. */
+# define TAO_YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ TAO_YYSIZE_T tao_yynewbytes; \
+ TAO_YYCOPY (&tao_yyptr->Stack, Stack, tao_yysize); \
+ Stack = &tao_yyptr->Stack; \
+ tao_yynewbytes = tao_yystacksize * sizeof (*Stack) + TAO_YYSTACK_GAP_MAXIMUM; \
+ tao_yyptr += tao_yynewbytes / sizeof (*tao_yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char tao_yysigned_char;
+#else
+ typedef short tao_yysigned_char;
+#endif
+
+/* TAO_YYFINAL -- State number of the termination state. */
+#define TAO_YYFINAL 3
+/* TAO_YYLAST -- Last index in TAO_YYTABLE. */
+#define TAO_YYLAST 1111
+
+/* TAO_YYNTOKENS -- Number of terminals. */
+#define TAO_YYNTOKENS 100
+/* TAO_YYNNTS -- Number of nonterminals. */
+#define TAO_YYNNTS 322
+/* TAO_YYNRULES -- Number of rules. */
+#define TAO_YYNRULES 477
+/* TAO_YYNRULES -- Number of states. */
+#define TAO_YYNSTATES 675
+
+/* TAO_YYTRANSLATE(TAO_YYLEX) -- Bison symbol number corresponding to TAO_YYLEX. */
+#define TAO_YYUNDEFTOK 2
+#define TAO_YYMAXUTOK 333
+
+#define TAO_YYTRANSLATE(TAO_YYX) \
+ ((unsigned int) (TAO_YYX) <= TAO_YYMAXUTOK ? tao_yytranslate[TAO_YYX] : TAO_YYUNDEFTOK)
+
+/* TAO_YYTRANSLATE[TAO_YYLEX] -- Bison symbol number corresponding to TAO_YYLEX. */
+static const unsigned char tao_yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 92, 87, 2,
+ 94, 95, 90, 88, 83, 89, 2, 91, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 82, 79,
+ 97, 84, 96, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 98, 2, 99, 86, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 80, 85, 81, 93, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78
+};
+
+#if TAO_YYDEBUG
+/* TAO_YYPRHS[TAO_YYN] -- Index of the first RHS symbol of rule number TAO_YYN in
+ TAO_YYRHS. */
+static const unsigned short tao_yyprhs[] =
+{
+ 0, 0, 3, 5, 8, 9, 10, 14, 15, 19,
+ 20, 24, 25, 29, 30, 34, 35, 39, 40, 44,
+ 45, 49, 50, 54, 55, 59, 60, 64, 65, 69,
+ 70, 71, 72, 73, 83, 85, 87, 88, 89, 90,
+ 98, 99, 103, 106, 110, 114, 115, 120, 121, 123,
+ 125, 127, 129, 132, 134, 135, 136, 137, 145, 146,
+ 147, 148, 157, 158, 163, 164, 168, 170, 171, 174,
+ 175, 178, 180, 183, 186, 187, 189, 191, 194, 195,
+ 199, 200, 204, 207, 208, 209, 213, 214, 218, 219,
+ 223, 224, 228, 229, 233, 234, 238, 239, 243, 244,
+ 248, 251, 252, 257, 258, 260, 261, 265, 266, 271,
+ 273, 275, 278, 281, 282, 283, 284, 285, 295, 297,
+ 299, 301, 303, 305, 307, 309, 311, 313, 315, 317,
+ 319, 323, 325, 329, 331, 335, 337, 341, 345, 347,
+ 351, 355, 357, 361, 365, 369, 371, 374, 377, 380,
+ 382, 384, 388, 390, 392, 394, 396, 398, 400, 402,
+ 404, 406, 408, 409, 413, 415, 417, 419, 422, 424,
+ 425, 429, 431, 433, 435, 437, 439, 441, 443, 445,
+ 447, 449, 451, 453, 455, 457, 459, 461, 463, 465,
+ 467, 469, 471, 474, 475, 480, 481, 483, 485, 488,
+ 489, 494, 495, 497, 499, 501, 503, 505, 508, 510,
+ 513, 517, 520, 522, 524, 527, 529, 531, 533, 535,
+ 537, 539, 541, 542, 546, 547, 548, 549, 557, 560,
+ 563, 564, 565, 568, 569, 570, 576, 577, 581, 582,
+ 586, 587, 588, 589, 590, 591, 592, 607, 609, 611,
+ 613, 615, 617, 619, 622, 625, 626, 627, 628, 634,
+ 635, 639, 642, 645, 646, 647, 651, 652, 653, 659,
+ 660, 664, 666, 668, 669, 670, 671, 672, 682, 685,
+ 686, 691, 692, 694, 695, 696, 703, 706, 707, 708,
+ 714, 715, 716, 723, 725, 727, 728, 729, 736, 738,
+ 740, 741, 745, 748, 751, 752, 753, 754, 760, 762,
+ 764, 765, 766, 767, 768, 778, 779, 780, 781, 782,
+ 792, 793, 794, 795, 796, 806, 807, 808, 809, 810,
+ 821, 823, 825, 826, 828, 830, 831, 832, 833, 841,
+ 842, 846, 847, 852, 855, 856, 861, 862, 863, 864,
+ 870, 871, 875, 876, 881, 884, 885, 890, 891, 892,
+ 893, 899, 901, 903, 905, 907, 909, 911, 913, 914,
+ 915, 922, 923, 924, 925, 932, 933, 934, 935, 942,
+ 943, 944, 945, 952, 953, 956, 957, 962, 963, 967,
+ 971, 973, 975, 978, 979, 980, 981, 989, 990, 991,
+ 998, 999, 1003, 1004, 1007, 1008, 1009, 1013, 1014, 1018,
+ 1019, 1023, 1024, 1028, 1029, 1033, 1034, 1038, 1042, 1044,
+ 1046, 1051, 1053, 1054, 1058, 1062, 1066, 1067, 1071, 1072,
+ 1073, 1074, 1075, 1076, 1077, 1091, 1092, 1096, 1097, 1100,
+ 1101, 1102, 1103, 1109, 1112, 1113, 1115, 1116, 1120, 1121,
+ 1125, 1126, 1127, 1134, 1135, 1136, 1143, 1145, 1147, 1149,
+ 1151, 1153, 1156, 1160, 1161, 1162, 1163, 1172, 1176, 1180,
+ 1183, 1184, 1188, 1189, 1190, 1191, 1200, 1202
+};
+
+/* TAO_YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short tao_yyrhs[] =
+{
+ 101, 0, -1, 102, -1, 102, 103, -1, -1, -1,
+ 190, 104, 79, -1, -1, 351, 105, 79, -1, -1,
+ 352, 106, 79, -1, -1, 172, 107, 79, -1, -1,
+ 300, 108, 79, -1, -1, 121, 109, 79, -1, -1,
+ 116, 110, 79, -1, -1, 131, 111, 79, -1, -1,
+ 353, 112, 79, -1, -1, 379, 113, 79, -1, -1,
+ 404, 114, 79, -1, -1, 1, 115, 79, -1, -1,
+ -1, -1, -1, 5, 117, 3, 118, 80, 119, 102,
+ 120, 81, -1, 122, -1, 171, -1, -1, -1, -1,
+ 128, 123, 80, 124, 154, 125, 81, -1, -1, 6,
+ 127, 170, -1, 126, 129, -1, 41, 126, 129, -1,
+ 42, 126, 129, -1, -1, 82, 145, 130, 164, -1,
+ -1, 132, -1, 137, -1, 147, -1, 148, -1, 43,
+ 133, -1, 133, -1, -1, -1, -1, 141, 134, 80,
+ 135, 149, 136, 81, -1, -1, -1, -1, 42, 141,
+ 138, 80, 139, 154, 140, 81, -1, -1, 143, 129,
+ 142, 146, -1, -1, 49, 144, 170, -1, 48, -1,
+ -1, 47, 164, -1, -1, 42, 143, -1, 143, -1,
+ 143, 194, -1, 149, 150, -1, -1, 151, -1, 155,
+ -1, 312, 79, -1, -1, 46, 152, 229, -1, -1,
+ 45, 153, 229, -1, 154, 155, -1, -1, -1, 190,
+ 156, 79, -1, -1, 351, 157, 79, -1, -1, 352,
+ 158, 79, -1, -1, 172, 159, 79, -1, -1, 300,
+ 160, 79, -1, -1, 289, 161, 79, -1, -1, 305,
+ 162, 79, -1, -1, 1, 163, 79, -1, 167, 165,
+ -1, -1, 165, 83, 166, 167, -1, -1, 170, -1,
+ -1, 74, 168, 170, -1, -1, 167, 74, 169, 170,
+ -1, 3, -1, 126, -1, 41, 126, -1, 42, 126,
+ -1, -1, -1, -1, -1, 4, 173, 177, 174, 170,
+ 175, 84, 176, 178, -1, 209, -1, 214, -1, 215,
+ -1, 216, -1, 212, -1, 213, -1, 274, -1, 278,
+ -1, 167, -1, 179, -1, 180, -1, 181, -1, 180,
+ 85, 181, -1, 182, -1, 181, 86, 182, -1, 183,
+ -1, 182, 87, 183, -1, 184, -1, 183, 75, 184,
+ -1, 183, 76, 184, -1, 185, -1, 184, 88, 185,
+ -1, 184, 89, 185, -1, 186, -1, 185, 90, 186,
+ -1, 185, 91, 186, -1, 185, 92, 186, -1, 187,
+ -1, 88, 187, -1, 89, 187, -1, 93, 187, -1,
+ 167, -1, 188, -1, 94, 179, 95, -1, 67, -1,
+ 68, -1, 69, -1, 78, -1, 70, -1, 77, -1,
+ 71, -1, 72, -1, 73, -1, 179, -1, -1, 7,
+ 191, 192, -1, 221, -1, 235, -1, 259, -1, 40,
+ 207, -1, 199, -1, -1, 194, 193, 200, -1, 195,
+ -1, 198, -1, 196, -1, 197, -1, 167, -1, 209,
+ -1, 212, -1, 214, -1, 216, -1, 215, -1, 213,
+ -1, 217, -1, 218, -1, 268, -1, 274, -1, 278,
+ -1, 221, -1, 235, -1, 259, -1, 257, -1, 258,
+ -1, 203, 201, -1, -1, 201, 83, 202, 203, -1,
+ -1, 207, -1, 208, -1, 207, 205, -1, -1, 205,
+ 83, 206, 207, -1, -1, 170, -1, 282, -1, 210,
+ -1, 211, -1, 8, -1, 8, 8, -1, 9, -1,
+ 10, 8, -1, 10, 8, 8, -1, 10, 9, -1,
+ 11, -1, 12, -1, 8, 11, -1, 17, -1, 13,
+ -1, 14, -1, 15, -1, 16, -1, 18, -1, 19,
+ -1, -1, 20, 220, 170, -1, -1, -1, -1, 219,
+ 222, 80, 223, 225, 224, 81, -1, 227, 226, -1,
+ 226, 227, -1, -1, -1, 228, 229, -1, -1, -1,
+ 194, 230, 200, 231, 79, -1, -1, 1, 232, 79,
+ -1, -1, 21, 234, 170, -1, -1, -1, -1, -1,
+ -1, -1, 233, 22, 236, 94, 237, 242, 238, 95,
+ 239, 80, 240, 243, 241, 81, -1, 209, -1, 214,
+ -1, 215, -1, 216, -1, 259, -1, 167, -1, 245,
+ 244, -1, 244, 245, -1, -1, -1, -1, 249, 246,
+ 255, 247, 79, -1, -1, 1, 248, 79, -1, 251,
+ 250, -1, 250, 251, -1, -1, -1, 29, 252, 82,
+ -1, -1, -1, 28, 253, 179, 254, 82, -1, -1,
+ 194, 256, 203, -1, 219, -1, 233, -1, -1, -1,
+ -1, -1, 23, 260, 170, 261, 80, 262, 264, 263,
+ 81, -1, 267, 265, -1, -1, 265, 83, 266, 267,
+ -1, -1, 3, -1, -1, -1, 271, 83, 269, 189,
+ 270, 96, -1, 271, 96, -1, -1, -1, 24, 272,
+ 97, 273, 195, -1, -1, -1, 277, 97, 275, 189,
+ 276, 96, -1, 277, -1, 25, -1, -1, -1, 281,
+ 97, 279, 189, 280, 96, -1, 281, -1, 26, -1,
+ -1, 170, 283, 284, -1, 286, 285, -1, 285, 286,
+ -1, -1, -1, -1, 98, 287, 189, 288, 99, -1,
+ 290, -1, 295, -1, -1, -1, -1, -1, 30, 291,
+ 31, 292, 334, 293, 204, 294, 336, -1, -1, -1,
+ -1, -1, 31, 296, 334, 297, 204, 298, 339, 299,
+ 342, -1, -1, -1, -1, -1, 27, 301, 170, 302,
+ 80, 303, 226, 304, 81, -1, -1, -1, -1, -1,
+ 310, 311, 306, 3, 307, 325, 308, 336, 309, 345,
+ -1, 32, -1, 33, -1, -1, 334, -1, 34, -1,
+ -1, -1, -1, 44, 313, 3, 314, 316, 315, 336,
+ -1, -1, 94, 317, 95, -1, -1, 94, 318, 319,
+ 95, -1, 322, 320, -1, -1, 320, 83, 321, 322,
+ -1, -1, -1, -1, 35, 323, 334, 324, 203, -1,
+ -1, 94, 326, 95, -1, -1, 94, 327, 328, 95,
+ -1, 331, 329, -1, -1, 329, 83, 330, 331, -1,
+ -1, -1, -1, 335, 332, 334, 333, 203, -1, 196,
+ -1, 274, -1, 278, -1, 167, -1, 35, -1, 36,
+ -1, 37, -1, -1, -1, 38, 337, 94, 338, 164,
+ 95, -1, -1, -1, -1, 55, 340, 94, 341, 164,
+ 95, -1, -1, -1, -1, 62, 343, 94, 344, 164,
+ 95, -1, -1, -1, -1, 39, 346, 94, 347, 348,
+ 95, -1, -1, 69, 349, -1, -1, 349, 83, 350,
+ 69, -1, -1, 63, 167, 69, -1, 64, 167, 69,
+ -1, 355, -1, 354, -1, 50, 170, -1, -1, -1,
+ -1, 359, 356, 80, 357, 364, 358, 81, -1, -1,
+ -1, 50, 170, 360, 362, 361, 146, -1, -1, 82,
+ 363, 167, -1, -1, 364, 365, -1, -1, -1, 372,
+ 366, 79, -1, -1, 374, 367, 79, -1, -1, 376,
+ 368, 79, -1, -1, 377, 369, 79, -1, -1, 378,
+ 370, 79, -1, -1, 289, 371, 79, -1, 60, 373,
+ 170, -1, 167, -1, 19, -1, 65, 375, 373, 170,
+ -1, 58, -1, -1, 52, 167, 170, -1, 61, 167,
+ 170, -1, 51, 167, 170, -1, -1, 381, 380, 391,
+ -1, -1, -1, -1, -1, -1, -1, 56, 382, 170,
+ 383, 388, 384, 146, 385, 66, 386, 167, 387, 390,
+ -1, -1, 82, 389, 167, -1, -1, 59, 167, -1,
+ -1, -1, -1, 80, 392, 394, 393, 81, -1, 394,
+ 395, -1, -1, 155, -1, -1, 398, 396, 79, -1,
+ -1, 401, 397, 79, -1, -1, -1, 44, 170, 399,
+ 316, 400, 336, -1, -1, -1, 54, 170, 402, 316,
+ 403, 336, -1, 417, -1, 408, -1, 405, -1, 407,
+ -1, 406, -1, 53, 170, -1, 42, 53, 170, -1,
+ -1, -1, -1, 412, 415, 409, 80, 410, 154, 411,
+ 81, -1, 42, 53, 170, -1, 43, 53, 170, -1,
+ 53, 170, -1, -1, 129, 416, 146, -1, -1, -1,
+ -1, 421, 415, 418, 80, 419, 149, 420, 81, -1,
+ 413, -1, 414, -1
+};
+
+/* TAO_YYRLINE[TAO_YYN] -- source line where rule number TAO_YYN was defined. */
+static const unsigned short tao_yyrline[] =
+{
+ 0, 320, 320, 323, 324, 329, 328, 339, 338, 349,
+ 348, 359, 358, 369, 368, 379, 378, 389, 388, 399,
+ 398, 409, 408, 419, 418, 429, 428, 439, 438, 452,
+ 457, 483, 488, 451, 504, 505, 510, 549, 554, 509,
+ 572, 571, 585, 623, 654, 688, 687, 699, 706, 707,
+ 708, 709, 713, 724, 729, 773, 778, 728, 807, 846,
+ 851, 805, 870, 868, 919, 918, 932, 938, 945, 952,
+ 959, 985, 1012, 1067, 1068, 1072, 1073, 1074, 1080, 1079,
+ 1087, 1086, 1096, 1097, 1102, 1101, 1112, 1111, 1122, 1121,
+ 1132, 1131, 1142, 1141, 1152, 1151, 1162, 1161, 1172, 1171,
+ 1185, 1198, 1196, 1226, 1233, 1244, 1243, 1271, 1269, 1296,
+ 1308, 1354, 1382, 1413, 1418, 1423, 1428, 1412, 1481, 1482,
+ 1483, 1484, 1485, 1486, 1487, 1499, 1504, 1579, 1581, 1583,
+ 1584, 1598, 1599, 1613, 1614, 1627, 1628, 1638, 1651, 1652,
+ 1662, 1675, 1676, 1686, 1696, 1709, 1710, 1720, 1730, 1743,
+ 1778, 1779, 1788, 1793, 1800, 1808, 1813, 1818, 1824, 1829,
+ 1834, 1842, 1914, 1913, 1923, 1928, 1933, 1938, 1965, 1974,
+ 1973, 2032, 2033, 2037, 2045, 2046, 2074, 2075, 2076, 2077,
+ 2078, 2079, 2080, 2081, 2085, 2086, 2087, 2091, 2092, 2093,
+ 2097, 2098, 2102, 2115, 2113, 2143, 2150, 2151, 2155, 2168,
+ 2166, 2196, 2203, 2220, 2239, 2240, 2244, 2249, 2254, 2262,
+ 2267, 2272, 2280, 2285, 2290, 2298, 2312, 2317, 2325, 2333,
+ 2341, 2349, 2358, 2357, 2373, 2407, 2412, 2372, 2431, 2434,
+ 2435, 2439, 2439, 2449, 2454, 2448, 2517, 2516, 2531, 2530,
+ 2545, 2550, 2555, 2560, 2607, 2612, 2544, 2636, 2644, 2658,
+ 2668, 2676, 2677, 2785, 2788, 2789, 2794, 2799, 2793, 2835,
+ 2834, 2848, 2859, 2881, 2889, 2888, 2904, 2909, 2903, 2926,
+ 2925, 2978, 3002, 3027, 3032, 3065, 3070, 3026, 3096, 3101,
+ 3099, 3106, 3110, 3147, 3152, 3145, 3219, 3274, 3284, 3273,
+ 3299, 3304, 3297, 3345, 3369, 3379, 3384, 3377, 3414, 3437,
+ 3446, 3445, 3481, 3492, 3514, 3522, 3527, 3521, 3564, 3565,
+ 3570, 3575, 3580, 3585, 3569, 3654, 3659, 3664, 3669, 3653,
+ 3747, 3752, 3782, 3787, 3746, 3805, 3810, 3863, 3868, 3803,
+ 3905, 3911, 3918, 3925, 3926, 3938, 3944, 3986, 3937, 4008,
+ 4007, 4018, 4017, 4030, 4035, 4033, 4040, 4045, 4050, 4044,
+ 4091, 4090, 4101, 4100, 4113, 4118, 4116, 4123, 4128, 4133,
+ 4127, 4180, 4188, 4189, 4190, 4233, 4238, 4243, 4252, 4257,
+ 4251, 4269, 4277, 4282, 4276, 4294, 4302, 4307, 4301, 4319,
+ 4327, 4332, 4326, 4344, 4351, 4364, 4362, 4390, 4397, 4426,
+ 4464, 4465, 4469, 4499, 4539, 4544, 4498, 4563, 4568, 4561,
+ 4610, 4609, 4620, 4627, 4628, 4633, 4632, 4643, 4642, 4653,
+ 4652, 4663, 4662, 4673, 4672, 4683, 4682, 4695, 4759, 4766,
+ 4791, 4864, 4870, 4877, 4935, 4993, 5052, 5051, 5101, 5106,
+ 5111, 5116, 5121, 5126, 5100, 5180, 5179, 5190, 5197, 5204,
+ 5212, 5217, 5211, 5229, 5230, 5234, 5236, 5235, 5246, 5245,
+ 5260, 5296, 5258, 5330, 5366, 5328, 5398, 5399, 5400, 5404,
+ 5405, 5409, 5437, 5468, 5513, 5518, 5466, 5535, 5545, 5564,
+ 5576, 5575, 5626, 5676, 5681, 5624, 5698, 5703
+};
+#endif
+
+#if TAO_YYDEBUG || TAO_YYERROR_VERBOSE
+/* TAO_YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at TAO_YYNTOKENS, nonterminals. */
+static const char *const tao_yytname[] =
+{
+ "$end", "error", "$undefined", "IDENTIFIER", "IDL_CONST", "IDL_MODULE",
+ "IDL_INTERFACE", "IDL_TYPEDEF", "IDL_LONG", "IDL_SHORT", "IDL_UNSIGNED",
+ "IDL_DOUBLE", "IDL_FLOAT", "IDL_CHAR", "IDL_WCHAR", "IDL_OCTET",
+ "IDL_BOOLEAN", "IDL_FIXED", "IDL_ANY", "IDL_OBJECT", "IDL_STRUCT",
+ "IDL_UNION", "IDL_SWITCH", "IDL_ENUM", "IDL_SEQUENCE", "IDL_STRING",
+ "IDL_WSTRING", "IDL_EXCEPTION", "IDL_CASE", "IDL_DEFAULT",
+ "IDL_READONLY", "IDL_ATTRIBUTE", "IDL_ONEWAY", "IDL_IDEMPOTENT",
+ "IDL_VOID", "IDL_IN", "IDL_OUT", "IDL_INOUT", "IDL_RAISES",
+ "IDL_CONTEXT", "IDL_NATIVE", "IDL_LOCAL", "IDL_ABSTRACT", "IDL_CUSTOM",
+ "IDL_FACTORY", "IDL_PRIVATE", "IDL_PUBLIC", "IDL_SUPPORTS",
+ "IDL_TRUNCATABLE", "IDL_VALUETYPE", "IDL_COMPONENT", "IDL_CONSUMES",
+ "IDL_EMITS", "IDL_EVENTTYPE", "IDL_FINDER", "IDL_GETRAISES", "IDL_HOME",
+ "IDL_IMPORT", "IDL_MULTIPLE", "IDL_PRIMARYKEY", "IDL_PROVIDES",
+ "IDL_PUBLISHES", "IDL_SETRAISES", "IDL_TYPEID", "IDL_TYPEPREFIX",
+ "IDL_USES", "IDL_MANAGES", "IDL_INTEGER_LITERAL", "IDL_UINTEGER_LITERAL",
+ "IDL_STRING_LITERAL", "IDL_CHARACTER_LITERAL", "IDL_FLOATING_PT_LITERAL",
+ "IDL_TRUETOK", "IDL_FALSETOK", "IDL_SCOPE_DELIMITOR", "IDL_LEFT_SHIFT",
+ "IDL_RIGHT_SHIFT", "IDL_WCHAR_LITERAL", "IDL_WSTRING_LITERAL", "';'",
+ "'{'", "'}'", "':'", "','", "'='", "'|'", "'^'", "'&'", "'+'", "'-'",
+ "'*'", "'/'", "'%'", "'~'", "'('", "')'", "'>'", "'<'", "'['", "']'",
+ "$accept", "start", "definitions", "definition", "@1", "@2", "@3", "@4",
+ "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "module", "@13",
+ "@14", "@15", "@16", "interface_def", "interface", "@17", "@18", "@19",
+ "interface_decl", "@20", "interface_header", "inheritance_spec", "@21",
+ "value_def", "valuetype", "value_concrete_decl", "@22", "@23", "@24",
+ "value_abs_decl", "@25", "@26", "@27", "value_header", "@28",
+ "value_decl", "@29", "opt_truncatable", "supports_spec",
+ "value_forward_decl", "value_box_decl", "value_elements",
+ "value_element", "state_member", "@30", "@31", "exports", "export",
+ "@32", "@33", "@34", "@35", "@36", "@37", "@38", "@39",
+ "at_least_one_scoped_name", "scoped_names", "@40", "scoped_name", "@41",
+ "@42", "id", "interface_forward", "const_dcl", "@43", "@44", "@45",
+ "@46", "const_type", "expression", "const_expr", "or_expr", "xor_expr",
+ "and_expr", "shift_expr", "add_expr", "mult_expr", "unary_expr",
+ "primary_expr", "literal", "positive_int_expr", "type_dcl", "@47",
+ "type_declarator", "@48", "type_spec", "simple_type_spec",
+ "base_type_spec", "template_type_spec", "constructed_type_spec",
+ "constructed_forward_type_spec", "at_least_one_declarator",
+ "declarators", "@49", "declarator", "at_least_one_simple_declarator",
+ "simple_declarators", "@50", "simple_declarator", "complex_declarator",
+ "integer_type", "signed_int", "unsigned_int", "floating_pt_type",
+ "fixed_type", "char_type", "octet_type", "boolean_type", "any_type",
+ "object_type", "struct_decl", "@51", "struct_type", "@52", "@53", "@54",
+ "at_least_one_member", "members", "member", "@55", "member_i", "@56",
+ "@57", "@58", "union_decl", "@59", "union_type", "@60", "@61", "@62",
+ "@63", "@64", "@65", "switch_type_spec", "at_least_one_case_branch",
+ "case_branches", "case_branch", "@66", "@67", "@68",
+ "at_least_one_case_label", "case_labels", "case_label", "@69", "@70",
+ "@71", "element_spec", "@72", "struct_forward_type",
+ "union_forward_type", "enum_type", "@73", "@74", "@75", "@76",
+ "at_least_one_enumerator", "enumerators", "@77", "enumerator",
+ "sequence_type_spec", "@78", "@79", "seq_head", "@80", "@81",
+ "string_type_spec", "@82", "@83", "string_head", "wstring_type_spec",
+ "@84", "@85", "wstring_head", "array_declarator", "@86",
+ "at_least_one_array_dim", "array_dims", "array_dim", "@87", "@88",
+ "attribute", "attribute_readonly", "@89", "@90", "@91", "@92",
+ "attribute_readwrite", "@93", "@94", "@95", "@96", "exception", "@97",
+ "@98", "@99", "@100", "operation", "@101", "@102", "@103", "@104",
+ "opt_op_attribute", "op_type_spec", "init_decl", "@105", "@106", "@107",
+ "init_parameter_list", "@108", "@109", "at_least_one_in_parameter",
+ "in_parameters", "@110", "in_parameter", "@111", "@112",
+ "parameter_list", "@113", "@114", "at_least_one_parameter", "parameters",
+ "@115", "parameter", "@116", "@117", "param_type_spec", "direction",
+ "opt_raises", "@118", "@119", "opt_getraises", "@120", "@121",
+ "opt_setraises", "@122", "@123", "opt_context", "@124", "@125",
+ "at_least_one_string_literal", "string_literals", "@126", "typeid_dcl",
+ "typeprefix_dcl", "component", "component_forward_decl",
+ "component_decl", "@127", "@128", "@129", "component_header", "@130",
+ "@131", "component_inheritance_spec", "@132", "component_exports",
+ "component_export", "@133", "@134", "@135", "@136", "@137", "@138",
+ "provides_decl", "interface_type", "uses_decl", "opt_multiple",
+ "emits_decl", "publishes_decl", "consumes_decl", "home_decl", "@139",
+ "home_header", "@140", "@141", "@142", "@143", "@144", "@145",
+ "home_inheritance_spec", "@146", "primary_key_spec", "home_body", "@147",
+ "@148", "home_exports", "home_export", "@149", "@150", "factory_decl",
+ "@151", "@152", "finder_decl", "@153", "@154", "event",
+ "event_forward_decl", "event_concrete_forward_decl",
+ "event_abs_forward_decl", "event_abs_decl", "@155", "@156", "@157",
+ "event_abs_header", "event_custom_header", "event_plain_header",
+ "event_rest_of_header", "@158", "event_decl", "@159", "@160", "@161",
+ "event_header", 0
+};
+#endif
+
+# ifdef TAO_YYPRINT
+/* TAO_YYTOKNUM[TAO_YYLEX-NUM] -- Internal token number corresponding to
+ token TAO_YYLEX-NUM. */
+static const unsigned short tao_yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 59,
+ 123, 125, 58, 44, 61, 124, 94, 38, 43, 45,
+ 42, 47, 37, 126, 40, 41, 62, 60, 91, 93
+};
+# endif
+
+/* TAO_YYR1[TAO_YYN] -- Symbol number of symbol that rule TAO_YYN derives. */
+static const unsigned short tao_yyr1[] =
+{
+ 0, 100, 101, 102, 102, 104, 103, 105, 103, 106,
+ 103, 107, 103, 108, 103, 109, 103, 110, 103, 111,
+ 103, 112, 103, 113, 103, 114, 103, 115, 103, 117,
+ 118, 119, 120, 116, 121, 121, 123, 124, 125, 122,
+ 127, 126, 128, 128, 128, 130, 129, 129, 131, 131,
+ 131, 131, 132, 132, 134, 135, 136, 133, 138, 139,
+ 140, 137, 142, 141, 144, 143, 145, 145, 146, 146,
+ 147, 147, 148, 149, 149, 150, 150, 150, 152, 151,
+ 153, 151, 154, 154, 156, 155, 157, 155, 158, 155,
+ 159, 155, 160, 155, 161, 155, 162, 155, 163, 155,
+ 164, 166, 165, 165, 167, 168, 167, 169, 167, 170,
+ 171, 171, 171, 173, 174, 175, 176, 172, 177, 177,
+ 177, 177, 177, 177, 177, 177, 177, 178, 179, 180,
+ 180, 181, 181, 182, 182, 183, 183, 183, 184, 184,
+ 184, 185, 185, 185, 185, 186, 186, 186, 186, 187,
+ 187, 187, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 189, 191, 190, 190, 190, 190, 190, 190, 193,
+ 192, 194, 194, 195, 195, 195, 196, 196, 196, 196,
+ 196, 196, 196, 196, 197, 197, 197, 198, 198, 198,
+ 199, 199, 200, 202, 201, 201, 203, 203, 204, 206,
+ 205, 205, 207, 208, 209, 209, 210, 210, 210, 211,
+ 211, 211, 212, 212, 212, 213, 214, 214, 215, 216,
+ 217, 218, 220, 219, 222, 223, 224, 221, 225, 226,
+ 226, 228, 227, 230, 231, 229, 232, 229, 234, 233,
+ 236, 237, 238, 239, 240, 241, 235, 242, 242, 242,
+ 242, 242, 242, 243, 244, 244, 246, 247, 245, 248,
+ 245, 249, 250, 250, 252, 251, 253, 254, 251, 256,
+ 255, 257, 258, 260, 261, 262, 263, 259, 264, 266,
+ 265, 265, 267, 269, 270, 268, 268, 272, 273, 271,
+ 275, 276, 274, 274, 277, 279, 280, 278, 278, 281,
+ 283, 282, 284, 285, 285, 287, 288, 286, 289, 289,
+ 291, 292, 293, 294, 290, 296, 297, 298, 299, 295,
+ 301, 302, 303, 304, 300, 306, 307, 308, 309, 305,
+ 310, 310, 310, 311, 311, 313, 314, 315, 312, 317,
+ 316, 318, 316, 319, 321, 320, 320, 323, 324, 322,
+ 326, 325, 327, 325, 328, 330, 329, 329, 332, 333,
+ 331, 334, 334, 334, 334, 335, 335, 335, 337, 338,
+ 336, 336, 340, 341, 339, 339, 343, 344, 342, 342,
+ 346, 347, 345, 345, 348, 350, 349, 349, 351, 352,
+ 353, 353, 354, 356, 357, 358, 355, 360, 361, 359,
+ 363, 362, 362, 364, 364, 366, 365, 367, 365, 368,
+ 365, 369, 365, 370, 365, 371, 365, 372, 373, 373,
+ 374, 375, 375, 376, 377, 378, 380, 379, 382, 383,
+ 384, 385, 386, 387, 381, 389, 388, 388, 390, 390,
+ 392, 393, 391, 394, 394, 395, 396, 395, 397, 395,
+ 399, 400, 398, 402, 403, 401, 404, 404, 404, 405,
+ 405, 406, 407, 409, 410, 411, 408, 412, 413, 414,
+ 416, 415, 418, 419, 420, 417, 421, 421
+};
+
+/* TAO_YYR2[TAO_YYN] -- Number of symbols composing right hand side of rule TAO_YYN. */
+static const unsigned char tao_yyr2[] =
+{
+ 0, 2, 1, 2, 0, 0, 3, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
+ 0, 0, 0, 9, 1, 1, 0, 0, 0, 7,
+ 0, 3, 2, 3, 3, 0, 4, 0, 1, 1,
+ 1, 1, 2, 1, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 4, 0, 3, 1, 0, 2, 0,
+ 2, 1, 2, 2, 0, 1, 1, 2, 0, 3,
+ 0, 3, 2, 0, 0, 3, 0, 3, 0, 3,
+ 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
+ 2, 0, 4, 0, 1, 0, 3, 0, 4, 1,
+ 1, 2, 2, 0, 0, 0, 0, 9, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 3, 1, 3, 1, 3, 3, 1, 3,
+ 3, 1, 3, 3, 3, 1, 2, 2, 2, 1,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 3, 1, 1, 1, 2, 1, 0,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 0, 4, 0, 1, 1, 2, 0,
+ 4, 0, 1, 1, 1, 1, 1, 2, 1, 2,
+ 3, 2, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 0, 3, 0, 0, 0, 7, 2, 2,
+ 0, 0, 2, 0, 0, 5, 0, 3, 0, 3,
+ 0, 0, 0, 0, 0, 0, 14, 1, 1, 1,
+ 1, 1, 1, 2, 2, 0, 0, 0, 5, 0,
+ 3, 2, 2, 0, 0, 3, 0, 0, 5, 0,
+ 3, 1, 1, 0, 0, 0, 0, 9, 2, 0,
+ 4, 0, 1, 0, 0, 6, 2, 0, 0, 5,
+ 0, 0, 6, 1, 1, 0, 0, 6, 1, 1,
+ 0, 3, 2, 2, 0, 0, 0, 5, 1, 1,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 10,
+ 1, 1, 0, 1, 1, 0, 0, 0, 7, 0,
+ 3, 0, 4, 2, 0, 4, 0, 0, 0, 5,
+ 0, 3, 0, 4, 2, 0, 4, 0, 0, 0,
+ 5, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 6, 0, 0, 0, 6, 0, 0, 0, 6, 0,
+ 0, 0, 6, 0, 2, 0, 4, 0, 3, 3,
+ 1, 1, 2, 0, 0, 0, 7, 0, 0, 6,
+ 0, 3, 0, 2, 0, 0, 3, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 3, 3, 1, 1,
+ 4, 1, 0, 3, 3, 3, 0, 3, 0, 0,
+ 0, 0, 0, 0, 13, 0, 3, 0, 2, 0,
+ 0, 0, 5, 2, 0, 1, 0, 3, 0, 3,
+ 0, 0, 6, 0, 0, 6, 1, 1, 1, 1,
+ 1, 2, 3, 0, 0, 0, 8, 3, 3, 2,
+ 0, 3, 0, 0, 0, 8, 1, 1
+};
+
+/* TAO_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when TAO_YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned short tao_yydefact[] =
+{
+ 4, 0, 0, 1, 27, 113, 29, 40, 162, 222,
+ 238, 273, 320, 0, 0, 0, 0, 64, 0, 0,
+ 428, 0, 0, 3, 17, 15, 34, 47, 36, 19,
+ 48, 53, 49, 54, 47, 50, 51, 35, 11, 5,
+ 168, 224, 164, 272, 165, 190, 191, 166, 13, 7,
+ 9, 21, 391, 390, 393, 23, 426, 25, 458, 460,
+ 459, 457, 47, 476, 477, 456, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 109, 202, 167, 47,
+ 0, 47, 58, 47, 0, 52, 47, 0, 397, 469,
+ 0, 105, 0, 104, 0, 0, 0, 67, 42, 0,
+ 0, 0, 206, 208, 0, 212, 213, 216, 217, 218,
+ 219, 215, 220, 221, 287, 294, 299, 62, 175, 72,
+ 171, 173, 174, 172, 176, 204, 205, 177, 181, 178,
+ 180, 179, 182, 183, 224, 187, 0, 188, 189, 184,
+ 0, 185, 293, 186, 298, 0, 0, 0, 240, 0,
+ 0, 0, 0, 0, 0, 0, 0, 470, 463, 472,
+ 28, 126, 114, 118, 122, 123, 119, 120, 121, 124,
+ 125, 30, 41, 163, 169, 223, 239, 274, 321, 43,
+ 467, 44, 0, 468, 65, 402, 429, 0, 388, 107,
+ 389, 18, 16, 66, 45, 37, 20, 55, 207, 214,
+ 209, 211, 0, 69, 283, 286, 290, 295, 12, 6,
+ 225, 0, 14, 8, 10, 22, 394, 24, 440, 427,
+ 26, 69, 0, 0, 0, 0, 0, 0, 0, 59,
+ 400, 398, 437, 106, 0, 0, 83, 74, 210, 288,
+ 0, 63, 0, 0, 0, 231, 241, 404, 444, 471,
+ 464, 473, 115, 31, 202, 170, 195, 196, 197, 203,
+ 275, 322, 83, 0, 69, 435, 430, 108, 46, 103,
+ 0, 0, 0, 68, 152, 153, 154, 156, 158, 159,
+ 160, 157, 155, 0, 0, 0, 0, 149, 161, 128,
+ 129, 131, 133, 135, 138, 141, 145, 150, 284, 291,
+ 296, 226, 230, 0, 0, 395, 0, 83, 74, 0,
+ 4, 0, 192, 0, 230, 0, 401, 399, 0, 69,
+ 100, 98, 310, 315, 330, 331, 0, 82, 90, 84,
+ 94, 308, 309, 92, 96, 0, 86, 88, 335, 80,
+ 78, 0, 73, 75, 76, 0, 289, 146, 147, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 231, 236, 233, 232, 206,
+ 252, 247, 248, 249, 250, 242, 251, 0, 0, 0,
+ 0, 422, 415, 0, 403, 405, 407, 409, 411, 413,
+ 0, 0, 445, 0, 443, 446, 448, 0, 0, 116,
+ 0, 305, 301, 304, 193, 282, 276, 281, 231, 0,
+ 436, 431, 101, 0, 0, 0, 39, 0, 0, 0,
+ 0, 0, 334, 364, 361, 362, 363, 325, 333, 0,
+ 0, 0, 0, 0, 57, 77, 151, 130, 132, 134,
+ 136, 137, 139, 140, 142, 143, 144, 285, 292, 297,
+ 227, 229, 0, 0, 0, 0, 0, 419, 418, 0,
+ 0, 421, 0, 0, 396, 0, 0, 0, 0, 0,
+ 450, 453, 442, 0, 0, 0, 0, 0, 0, 0,
+ 302, 0, 0, 278, 0, 61, 0, 0, 99, 311,
+ 316, 91, 85, 95, 93, 97, 0, 87, 89, 336,
+ 81, 79, 237, 234, 243, 425, 423, 417, 424, 0,
+ 416, 406, 408, 410, 412, 414, 0, 0, 447, 449,
+ 466, 475, 117, 127, 33, 306, 303, 194, 277, 279,
+ 324, 432, 102, 0, 0, 326, 0, 0, 0, 420,
+ 339, 451, 454, 0, 0, 0, 312, 317, 201, 0,
+ 337, 235, 244, 0, 0, 371, 371, 307, 280, 433,
+ 0, 375, 198, 352, 327, 371, 0, 340, 347, 0,
+ 346, 368, 452, 455, 439, 313, 372, 318, 199, 0,
+ 0, 371, 338, 259, 266, 264, 245, 255, 256, 263,
+ 0, 342, 343, 0, 0, 434, 371, 0, 379, 0,
+ 351, 365, 366, 367, 0, 357, 358, 328, 0, 0,
+ 0, 0, 0, 0, 261, 348, 344, 369, 438, 314,
+ 373, 376, 319, 200, 353, 354, 0, 383, 260, 267,
+ 265, 246, 254, 269, 257, 262, 0, 0, 0, 0,
+ 0, 355, 359, 380, 329, 0, 0, 0, 349, 345,
+ 0, 0, 377, 0, 0, 0, 268, 270, 258, 370,
+ 374, 0, 356, 360, 381, 0, 0, 378, 387, 0,
+ 384, 382, 385, 0, 386
+};
+
+/* TAO_YYDEFGOTO[NTERM-NUM]. */
+static const short tao_yydefgoto[] =
+{
+ -1, 1, 2, 23, 146, 150, 151, 145, 149, 96,
+ 95, 100, 152, 154, 156, 67, 24, 69, 225, 310,
+ 478, 25, 26, 99, 236, 326, 27, 70, 28, 117,
+ 235, 29, 30, 31, 101, 237, 341, 32, 182, 262,
+ 409, 33, 203, 34, 87, 194, 241, 35, 36, 271,
+ 342, 343, 433, 432, 270, 327, 418, 429, 430, 417,
+ 420, 419, 421, 413, 268, 320, 487, 287, 187, 234,
+ 93, 37, 328, 68, 224, 309, 477, 162, 522, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 329, 71, 173, 226, 367, 120, 121, 122, 123, 40,
+ 255, 312, 481, 256, 547, 562, 599, 257, 258, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 41,
+ 72, 42, 147, 245, 364, 301, 365, 451, 303, 368,
+ 453, 537, 452, 43, 73, 44, 211, 304, 454, 538,
+ 566, 611, 375, 586, 612, 587, 613, 647, 608, 588,
+ 614, 589, 610, 609, 645, 634, 646, 45, 46, 47,
+ 74, 227, 313, 482, 406, 483, 544, 407, 139, 242,
+ 361, 140, 202, 272, 141, 243, 362, 142, 143, 244,
+ 363, 144, 259, 311, 402, 480, 403, 479, 543, 330,
+ 331, 414, 533, 560, 596, 332, 415, 534, 561, 598,
+ 333, 75, 228, 314, 484, 334, 496, 549, 581, 627,
+ 335, 427, 345, 431, 536, 565, 541, 553, 554, 569,
+ 592, 637, 570, 590, 636, 564, 579, 580, 604, 625,
+ 653, 605, 626, 654, 428, 606, 572, 593, 638, 577,
+ 597, 639, 622, 640, 661, 644, 655, 666, 669, 670,
+ 673, 336, 337, 51, 52, 53, 153, 247, 383, 54,
+ 185, 264, 231, 263, 305, 384, 465, 466, 467, 468,
+ 469, 463, 385, 459, 386, 462, 387, 388, 389, 55,
+ 155, 56, 90, 232, 319, 486, 545, 574, 266, 318,
+ 595, 219, 248, 393, 306, 394, 473, 474, 395, 516,
+ 555, 396, 517, 556, 57, 58, 59, 60, 61, 222,
+ 307, 475, 62, 63, 64, 158, 221, 65, 223, 308,
+ 476, 66
+};
+
+/* TAO_YYPACT[STATE-NUM] -- Index in TAO_YYTABLE of the portion describing
+ STATE-NUM. */
+#define TAO_YYPACT_NINF -483
+static const short tao_yypact[] =
+{
+ -483, 49, 1047, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, 61, 60, 66, 68, -483, 61, 61,
+ -483, 40, 40, -483, -483, -483, -483, -45, -483, -483,
+ -483, -483, -483, -483, 70, -483, -483, -483, -483, -483,
+ -483, -4, -483, 88, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, 10, -483, -483, -483, 10, 39, 221, 147,
+ 61, 467, 61, 61, 61, 61, -483, -483, -483, 48,
+ 61, 69, -483, 101, 61, -483, 10, 61, 75, 77,
+ 61, -483, -33, -483, -11, 79, 109, 72, -483, 118,
+ 131, 132, 185, -483, 91, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, 144, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, 88, -483, -483, -483,
+ -52, -483, 123, -483, 126, 160, 170, 172, -483, 181,
+ 188, 191, 194, 197, 200, 201, 203, -483, -483, -483,
+ -483, 144, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ 205, -483, 216, -483, -483, 215, -483, 61, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ 293, -483, 207, 255, -483, -483, -483, -483, -483, -483,
+ -483, 211, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, 255, 226, 229, 61, 231, 61, 233, 235, -483,
+ -483, -483, 234, -483, 61, 40, -483, -483, -483, -483,
+ 40, -483, 35, 35, 35, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, 220, -483, -483, -483, -483, -483,
+ -483, -483, -483, 40, 255, -483, -483, -483, -483, 144,
+ 866, 641, 494, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, 65, 65, 65, 35, 144, -483, 237,
+ 239, 236, 106, 52, 110, -483, -483, -483, -483, -483,
+ -483, -483, -483, 152, 176, 238, 791, -483, -483, 240,
+ -483, 228, 248, 329, -483, 901, 144, -483, 40, 255,
+ 250, -483, -483, -483, -483, -483, 253, -483, -483, -483,
+ -483, -483, -483, -483, -483, 1009, -483, -483, -483, -483,
+ -483, 257, -483, -483, -483, 260, -483, -483, -483, -483,
+ 246, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 249, 251, 252, 261, 263, -483, -483, -483, 338,
+ 144, -483, -483, -483, -483, -483, -483, 40, 40, 37,
+ 40, 291, -483, 271, -483, -483, -483, -483, -483, -483,
+ 61, 61, -483, 272, -483, -483, -483, 976, 716, -483,
+ 287, -483, -483, -483, -483, -483, -483, -483, 275, 276,
+ 144, -483, -483, 279, 332, 377, -483, 285, 286, 288,
+ 290, 292, -483, 144, -483, -483, -483, -483, -483, 294,
+ 295, 363, 152, 152, -483, -483, -483, 239, 236, 106,
+ 52, 52, 110, 110, -483, -483, -483, -483, -483, -483,
+ -483, -483, 296, 61, 277, 42, 42, -483, 144, 61,
+ 42, -483, 37, 297, -483, 300, 302, 303, 304, 305,
+ -483, -483, -483, 319, 320, 289, 323, 35, 324, 35,
+ 228, 61, 325, 341, 344, -483, 360, 40, -483, -483,
+ -483, -483, -483, -483, -483, -483, 424, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, 61,
+ -483, -483, -483, -483, -483, -483, 334, 334, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, 144, 377, 61, -483, 334, 350, 351, -483,
+ 395, -483, -483, 333, 329, 40, -483, -483, -483, 339,
+ -483, -483, -483, 340, 399, 398, 398, -483, -483, 144,
+ 61, 382, 355, 353, -483, 398, 97, -483, -483, 354,
+ -483, -483, -483, -483, 380, -483, -483, -483, -483, 357,
+ 171, 398, -483, -483, -483, -483, -483, -483, -483, -483,
+ 377, -483, 362, 356, 40, -483, 398, 359, 392, 61,
+ -483, -483, -483, -483, 361, -483, -483, -483, 376, 35,
+ 375, 378, 41, 467, 117, -483, -483, -483, 144, -483,
+ -483, -483, -483, -483, -483, 379, 377, 419, -483, -483,
+ -483, -483, -483, -483, -483, -483, 61, 399, 40, 40,
+ 366, -483, -483, -483, -483, 381, 61, 385, -483, -483,
+ 370, 371, -483, 171, 61, 367, -483, -483, -483, -483,
+ -483, 40, -483, -483, -483, 372, 402, -483, -483, 394,
+ 391, -483, -483, 425, -483
+};
+
+/* TAO_YYPGOTO[NTERM-NUM]. */
+static const short tao_yypgoto[] =
+{
+ -483, -483, 189, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, 180, -483, -483, 182,
+ -483, -483, -483, 479, -483, -483, -483, -483, -483, -483,
+ -483, 483, -483, 199, -483, -483, -188, -483, -483, 192,
+ -483, -483, -483, -483, -210, -241, -483, -483, -483, -483,
+ -483, -483, -483, -483, -220, -483, -483, -18, -483, -483,
+ -13, -483, 11, -483, -483, -483, -483, -483, -483, -274,
+ -483, 150, 162, 163, -127, -114, -101, 36, -483, -217,
+ 20, -483, -483, -483, -24, 245, -314, -483, -483, -483,
+ 71, -483, -483, -449, -37, -483, -483, -12, -483, -53,
+ -483, -483, 457, 458, -51, -49, -40, -483, -483, -25,
+ -483, -23, -483, -483, -483, -483, 214, 298, -483, -167,
+ -483, -483, -483, -20, -483, -16, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -81, -483, -483, -483, -483,
+ -483, -82, -483, -483, -483, -483, -483, -483, -483, -32,
+ -483, -483, -483, -483, -483, -483, -483, -10, -483, -483,
+ -483, -483, -483, -483, -61, -483, -483, -483, -60, -483,
+ -483, -483, -483, -483, -483, -483, 53, -483, -483, 230,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ 21, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -482, -483, -483, -483,
+ -483, -483, -100, -483, -483, -483, -483, -483, -483, -483,
+ -483, -117, -483, -483, -386, -483, -340, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, 22, 23, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, 76, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, -483, -483, -483, -483, -483,
+ -483, -483, -483, -483, -483, 473, -483, -483, -483, -483,
+ -483, -483
+};
+
+/* TAO_YYTABLE[TAO_YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what TAO_YYDEFACT says.
+ If TAO_YYTABLE_NINF, syntax error. */
+#define TAO_YYTABLE_NINF -475
+static const short tao_yytable[] =
+{
+ 77, 78, 138, 92, 94, 88, 89, 169, 170, 134,
+ 119, 135, 350, 38, 136, 163, 118, 166, 137, 167,
+ 273, 424, 39, 48, 49, 50, 299, 300, 168, 490,
+ 344, 204, 527, 249, -110, 542, 188, 97, 76, 138,
+ 76, 189, 583, 76, 205, 76, 134, 174, 135, 3,
+ 161, 136, 315, 118, 550, 137, 457, 172, 190, 175,
+ 176, 177, 178, 189, 76, 392, 7, 180, 76, 584,
+ 585, 183, 7, 76, 184, -271, 317, 186, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 9, 10, 97, 11, 114, 115, 116, 397, 583, 200,
+ 201, 424, 274, 275, 276, 277, 278, 279, 280, 91,
+ 148, 91, 281, 282, 91, 17, 189, 17, 160, 80,
+ 193, 84, -253, 283, 284, 584, 585, -111, 285, 286,
+ 97, 411, 274, 275, 276, 277, 278, 279, 280, 91,
+ 356, 357, 281, 282, 91, 584, 585, 546, -112, -71,
+ 171, 97, 97, 366, -392, 76, -461, 344, 191, 286,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 9, 10, 233, 11, 114, 115, 116, 76,
+ -70, 354, 355, 97, 369, 103, 104, 648, 192, 107,
+ 108, 109, 110, 198, 79, 81, 199, 657, 195, 11,
+ 358, 359, 360, 523, 615, 663, 601, 602, 603, 98,
+ 196, 252, 197, 254, 83, 86, 573, 269, 189, 424,
+ 206, 267, 269, 207, 76, 582, 91, 440, 441, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 208,
+ 642, 607, 442, 443, 157, 316, 115, 116, 157, 209,
+ 91, 371, 210, 372, 118, 373, 619, 444, 445, 446,
+ 212, 179, 525, 181, 374, 500, 501, 213, 322, 323,
+ 214, 138, 376, 215, 425, 426, 424, 216, 134, 217,
+ 135, 218, 220, 136, -462, 118, 370, 137, 4, 377,
+ 378, 5, 6, 7, 8, 91, 229, 230, 379, 380,
+ 410, 238, 240, 381, 239, 246, 250, 9, 10, 251,
+ 11, 253, 424, 260, 12, 261, 265, 423, -300, 347,
+ 348, 349, 351, 353, 399, 352, 401, 13, 14, 15,
+ 16, 404, 405, 412, 416, 629, 17, 18, 434, 435,
+ 19, 436, 450, 20, -228, 447, 198, 448, 449, 461,
+ 21, 22, 464, 472, 425, 426, -323, 485, 488, 455,
+ 456, 458, 460, 489, 491, 492, 499, 493, -32, 494,
+ 520, 495, 504, 497, 498, 502, 510, 470, 471, 511,
+ 76, 512, 513, 514, 515, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 423, 518, 519,
+ 138, 138, 115, 116, 521, 524, 528, 134, 134, 135,
+ 135, 38, 136, 136, 118, 118, 137, 137, 650, 651,
+ 39, 48, 49, 50, 529, 530, 531, 535, 540, 551,
+ -341, 552, 557, 563, 568, 567, 571, 576, 578, 594,
+ 254, 665, 505, 506, 458, 616, 507, 508, -350, 591,
+ 617, 91, 600, 620, 621, 628, 624, 630, 643, 631,
+ 652, 664, 641, 656, 658, 659, 660, 667, 254, 532,
+ 76, 668, 425, 426, 672, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 9, 10, 671,
+ 11, 114, 115, 116, 674, 85, 539, 76, 82, 400,
+ 398, 437, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 438, 423, 439, 346, 114, 115,
+ 116, 77, 548, 575, 503, 164, 165, 559, 408, 425,
+ 426, 632, 635, 526, 558, 382, 662, 649, 509, 159,
+ 0, 91, 0, 302, 0, 0, 0, 77, 548, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 425, 426, 0, 91, 0,
+ 0, 0, 423, 0, 0, 0, 618, 0, 0, 0,
+ 0, 138, 0, 0, 0, 0, 77, 623, 134, 633,
+ 135, 0, 0, 136, 0, 118, 0, 137, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 423, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 269, 269, 0, 254, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 254, 0, 0, 0, 0, 0, 0,
+ 0, 254, 321, 269, -332, 5, 0, 0, 8, -332,
+ -332, -332, -332, -332, -332, -332, -332, -332, -332, -332,
+ -332, 9, 10, 0, 11, 0, -332, -332, 12, 0,
+ 0, 322, 323, 324, 325, -332, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 338, 339, 340, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -332, 0, 321, 0, -332,
+ 5, 0, -56, 8, -332, -332, -332, -332, -332, -332,
+ -332, -332, -332, -332, -332, -332, 9, 10, 0, 11,
+ 0, -332, -332, 12, 0, 0, 322, 323, 324, 325,
+ -332, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 338, 339, 340, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -332, 0, 321, 0, -332, 5, 0, -474, 8, -332,
+ -332, -332, -332, -332, -332, -332, -332, -332, -332, -332,
+ -332, 9, 10, 0, 11, 0, -332, -332, 12, 0,
+ 0, 322, 323, 324, 325, -332, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 390, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 391, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -332, 0, 321, 0, -332,
+ 5, 0, -441, 8, -332, -332, -332, -332, -332, -332,
+ -332, -332, -332, -332, -332, -332, 9, 10, 0, 11,
+ 0, -332, -332, 12, 0, 0, 322, 323, 324, 325,
+ -332, 0, 321, 0, -332, 5, 13, 0, 8, -332,
+ -332, -332, -332, -332, -332, -332, -332, -332, -332, -332,
+ -332, 9, 10, 0, 11, 0, -332, -332, 12, 21,
+ 22, 322, 323, 324, 325, -332, 0, 0, 0, 0,
+ -332, 13, 0, 0, 0, 0, 0, -38, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 22, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -332, 0, 321, 0, -332,
+ 5, 0, -60, 8, -332, -332, -332, -332, -332, -332,
+ -332, -332, -332, -332, -332, -332, 9, 10, 0, 11,
+ 0, -332, -332, 12, 0, 0, 322, 323, 324, 325,
+ -332, 0, 76, 0, 0, 0, 13, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 0,
+ 0, 0, 0, 0, 115, 116, 0, 0, 0, 21,
+ 22, 0, 0, 422, 0, 0, 0, -2, 4, 0,
+ -332, 5, 6, 7, 8, 0, 0, -465, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 10, 0,
+ 11, 0, 0, 0, 12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 91, 0, 0, 0, 13, 14, 15,
+ 16, 0, 0, 0, 0, 0, 17, 18, 0, 0,
+ 19, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 21, 22
+};
+
+static const short tao_yycheck[] =
+{
+ 13, 13, 34, 21, 22, 18, 19, 68, 68, 34,
+ 34, 34, 286, 2, 34, 68, 34, 68, 34, 68,
+ 240, 335, 2, 2, 2, 2, 243, 244, 68, 415,
+ 271, 83, 481, 221, 79, 517, 69, 82, 3, 71,
+ 3, 74, 1, 3, 96, 3, 71, 71, 71, 0,
+ 68, 71, 262, 71, 536, 71, 19, 70, 69, 72,
+ 73, 74, 75, 74, 3, 306, 6, 80, 3, 28,
+ 29, 84, 6, 3, 87, 79, 264, 90, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 82, 23, 24, 25, 26, 307, 1, 8,
+ 9, 415, 67, 68, 69, 70, 71, 72, 73, 74,
+ 22, 74, 77, 78, 74, 49, 74, 49, 79, 53,
+ 48, 53, 81, 88, 89, 28, 29, 79, 93, 94,
+ 82, 319, 67, 68, 69, 70, 71, 72, 73, 74,
+ 88, 89, 77, 78, 74, 28, 29, 533, 79, 79,
+ 3, 82, 82, 1, 79, 3, 79, 398, 79, 94,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 187, 23, 24, 25, 26, 3,
+ 79, 75, 76, 82, 8, 9, 10, 636, 79, 13,
+ 14, 15, 16, 8, 14, 15, 11, 646, 80, 23,
+ 90, 91, 92, 477, 590, 654, 35, 36, 37, 27,
+ 79, 224, 80, 226, 15, 16, 556, 235, 74, 533,
+ 97, 234, 240, 97, 3, 565, 74, 354, 355, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 79,
+ 626, 581, 356, 357, 62, 263, 25, 26, 66, 79,
+ 74, 304, 80, 304, 272, 304, 596, 358, 359, 360,
+ 79, 79, 479, 81, 304, 432, 433, 79, 30, 31,
+ 79, 303, 304, 79, 335, 335, 590, 80, 303, 79,
+ 303, 80, 79, 303, 79, 303, 304, 303, 1, 51,
+ 52, 4, 5, 6, 7, 74, 80, 82, 60, 61,
+ 318, 8, 47, 65, 97, 94, 80, 20, 21, 80,
+ 23, 80, 626, 80, 27, 80, 82, 335, 98, 283,
+ 284, 285, 85, 87, 84, 86, 98, 40, 41, 42,
+ 43, 83, 3, 83, 81, 609, 49, 50, 81, 79,
+ 53, 95, 81, 56, 81, 96, 8, 96, 96, 58,
+ 63, 64, 81, 81, 415, 415, 81, 81, 79, 377,
+ 378, 379, 380, 31, 79, 79, 3, 79, 81, 79,
+ 81, 79, 95, 79, 79, 79, 79, 390, 391, 79,
+ 3, 79, 79, 79, 79, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 415, 79, 79,
+ 432, 433, 25, 26, 81, 81, 81, 432, 433, 432,
+ 433, 400, 432, 433, 432, 433, 432, 433, 638, 639,
+ 400, 400, 400, 400, 83, 81, 66, 3, 94, 79,
+ 35, 80, 99, 94, 35, 95, 38, 55, 83, 59,
+ 453, 661, 455, 456, 462, 83, 459, 460, 95, 95,
+ 94, 74, 95, 94, 62, 79, 95, 82, 39, 81,
+ 94, 94, 83, 82, 79, 95, 95, 95, 481, 487,
+ 3, 69, 533, 533, 83, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 95,
+ 23, 24, 25, 26, 69, 16, 509, 3, 15, 310,
+ 308, 351, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 352, 533, 353, 272, 24, 25,
+ 26, 534, 534, 560, 453, 68, 68, 545, 314, 590,
+ 590, 612, 614, 480, 544, 305, 653, 637, 462, 66,
+ -1, 74, -1, 245, -1, -1, -1, 560, 560, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 626, 626, -1, 74, -1,
+ -1, -1, 590, -1, -1, -1, 594, -1, -1, -1,
+ -1, 613, -1, -1, -1, -1, 599, 599, 613, 613,
+ 613, -1, -1, 613, -1, 613, -1, 613, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 626, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 638, 639, -1, 636, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 646, -1, -1, -1, -1, -1, -1,
+ -1, 654, 1, 661, 3, 4, -1, -1, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, -1, 23, -1, 25, 26, 27, -1,
+ -1, 30, 31, 32, 33, 34, -1, -1, -1, -1,
+ -1, 40, -1, -1, -1, 44, 45, 46, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 74, -1, 1, -1, 3,
+ 4, -1, 81, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, 23,
+ -1, 25, 26, 27, -1, -1, 30, 31, 32, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, -1,
+ 44, 45, 46, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 74, -1, 1, -1, 3, 4, -1, 81, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, -1, 23, -1, 25, 26, 27, -1,
+ -1, 30, 31, 32, 33, 34, -1, -1, -1, -1,
+ -1, 40, -1, -1, -1, 44, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 54, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 74, -1, 1, -1, 3,
+ 4, -1, 81, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, 23,
+ -1, 25, 26, 27, -1, -1, 30, 31, 32, 33,
+ 34, -1, 1, -1, 3, 4, 40, -1, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, -1, 23, -1, 25, 26, 27, 63,
+ 64, 30, 31, 32, 33, 34, -1, -1, -1, -1,
+ 74, 40, -1, -1, -1, -1, -1, 81, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 74, -1, 1, -1, 3,
+ 4, -1, 81, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, 23,
+ -1, 25, 26, 27, -1, -1, 30, 31, 32, 33,
+ 34, -1, 3, -1, -1, -1, 40, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, -1,
+ -1, -1, -1, -1, 25, 26, -1, -1, -1, 63,
+ 64, -1, -1, 34, -1, -1, -1, 0, 1, -1,
+ 74, 4, 5, 6, 7, -1, -1, 81, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 20, 21, -1,
+ 23, -1, -1, -1, 27, -1, -1, -1, -1, -1,
+ -1, -1, -1, 74, -1, -1, -1, 40, 41, 42,
+ 43, -1, -1, -1, -1, -1, 49, 50, -1, -1,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ 63, 64
+};
+
+/* TAO_YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned short tao_yystos[] =
+{
+ 0, 101, 102, 0, 1, 4, 5, 6, 7, 20,
+ 21, 23, 27, 40, 41, 42, 43, 49, 50, 53,
+ 56, 63, 64, 103, 116, 121, 122, 126, 128, 131,
+ 132, 133, 137, 141, 143, 147, 148, 171, 172, 190,
+ 199, 219, 221, 233, 235, 257, 258, 259, 300, 351,
+ 352, 353, 354, 355, 359, 379, 381, 404, 405, 406,
+ 407, 408, 412, 413, 414, 417, 421, 115, 173, 117,
+ 127, 191, 220, 234, 260, 301, 3, 170, 207, 126,
+ 53, 126, 141, 143, 53, 133, 143, 144, 170, 170,
+ 382, 74, 167, 170, 167, 110, 109, 82, 129, 123,
+ 111, 134, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 24, 25, 26, 129, 167, 194,
+ 195, 196, 197, 198, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 221, 233, 235, 259, 268,
+ 271, 274, 277, 278, 281, 107, 104, 222, 22, 108,
+ 105, 106, 112, 356, 113, 380, 114, 129, 415, 415,
+ 79, 167, 177, 209, 212, 213, 214, 215, 216, 274,
+ 278, 3, 170, 192, 194, 170, 170, 170, 170, 129,
+ 170, 129, 138, 170, 170, 360, 170, 168, 69, 74,
+ 69, 79, 79, 48, 145, 80, 79, 80, 8, 11,
+ 8, 9, 272, 142, 83, 96, 97, 97, 79, 79,
+ 80, 236, 79, 79, 79, 79, 80, 79, 80, 391,
+ 79, 416, 409, 418, 174, 118, 193, 261, 302, 80,
+ 82, 362, 383, 170, 169, 130, 124, 135, 8, 97,
+ 47, 146, 269, 275, 279, 223, 94, 357, 392, 146,
+ 80, 80, 170, 80, 170, 200, 203, 207, 208, 282,
+ 80, 80, 139, 363, 361, 82, 388, 170, 164, 167,
+ 154, 149, 273, 164, 67, 68, 69, 70, 71, 72,
+ 73, 77, 78, 88, 89, 93, 94, 167, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 189,
+ 189, 225, 227, 228, 237, 364, 394, 410, 419, 175,
+ 119, 283, 201, 262, 303, 154, 167, 146, 389, 384,
+ 165, 1, 30, 31, 32, 33, 125, 155, 172, 190,
+ 289, 290, 295, 300, 305, 310, 351, 352, 44, 45,
+ 46, 136, 150, 151, 155, 312, 195, 187, 187, 187,
+ 179, 85, 86, 87, 75, 76, 88, 89, 90, 91,
+ 92, 270, 276, 280, 224, 226, 1, 194, 229, 8,
+ 167, 209, 214, 215, 216, 242, 259, 51, 52, 60,
+ 61, 65, 289, 358, 365, 372, 374, 376, 377, 378,
+ 44, 54, 155, 393, 395, 398, 401, 154, 149, 84,
+ 102, 98, 284, 286, 83, 3, 264, 267, 226, 140,
+ 167, 146, 83, 163, 291, 296, 81, 159, 156, 161,
+ 160, 162, 34, 167, 196, 274, 278, 311, 334, 157,
+ 158, 313, 153, 152, 81, 79, 95, 181, 182, 183,
+ 184, 184, 185, 185, 186, 186, 186, 96, 96, 96,
+ 81, 227, 232, 230, 238, 167, 167, 19, 167, 373,
+ 167, 58, 375, 371, 81, 366, 367, 368, 369, 370,
+ 170, 170, 81, 396, 397, 411, 420, 176, 120, 287,
+ 285, 202, 263, 265, 304, 81, 385, 166, 79, 31,
+ 334, 79, 79, 79, 79, 79, 306, 79, 79, 3,
+ 229, 229, 79, 200, 95, 170, 170, 170, 170, 373,
+ 79, 79, 79, 79, 79, 79, 399, 402, 79, 79,
+ 81, 81, 178, 179, 81, 189, 286, 203, 81, 83,
+ 81, 66, 167, 292, 297, 3, 314, 231, 239, 170,
+ 94, 316, 316, 288, 266, 386, 334, 204, 207, 307,
+ 316, 79, 80, 317, 318, 400, 403, 99, 267, 167,
+ 293, 298, 205, 94, 325, 315, 240, 95, 35, 319,
+ 322, 38, 336, 336, 387, 204, 55, 339, 83, 326,
+ 327, 308, 336, 1, 28, 29, 243, 245, 249, 251,
+ 323, 95, 320, 337, 59, 390, 294, 340, 299, 206,
+ 95, 35, 36, 37, 328, 331, 335, 336, 248, 253,
+ 252, 241, 244, 246, 250, 334, 83, 94, 167, 336,
+ 94, 62, 342, 207, 95, 329, 332, 309, 79, 179,
+ 82, 81, 245, 194, 255, 251, 324, 321, 338, 341,
+ 343, 83, 334, 39, 345, 254, 256, 247, 203, 322,
+ 164, 164, 94, 330, 333, 346, 82, 203, 79, 95,
+ 95, 344, 331, 203, 94, 164, 347, 95, 69, 348,
+ 349, 95, 83, 350, 69
+};
+
+#if ! defined (TAO_YYSIZE_T) && defined (__SIZE_TYPE__)
+# define TAO_YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (TAO_YYSIZE_T) && defined (size_t)
+# define TAO_YYSIZE_T size_t
+#endif
+#if ! defined (TAO_YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define TAO_YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (TAO_YYSIZE_T)
+# define TAO_YYSIZE_T unsigned int
+#endif
+
+#define tao_yyerrok (tao_yyerrstatus = 0)
+#define tao_yyclearin (tao_yychar = TAO_YYEMPTY)
+#define TAO_YYEMPTY (-2)
+#define TAO_YYEOF 0
+
+#define TAO_YYACCEPT goto tao_yyacceptlab
+#define TAO_YYABORT goto tao_yyabortlab
+#define TAO_YYERROR goto tao_yyerrorlab
+
+
+/* Like TAO_YYERROR except do call tao_yyerror. This remains here temporarily
+ to ease the transition to the new meaning of TAO_YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define TAO_YYFAIL goto tao_yyerrlab
+
+#define TAO_YYRECOVERING() (!!tao_yyerrstatus)
+
+#define TAO_YYBACKUP(Token, Value) \
+do \
+ if (tao_yychar == TAO_YYEMPTY && tao_yylen == 1) \
+ { \
+ tao_yychar = (Token); \
+ tao_yylval = (Value); \
+ tao_yytoken = TAO_YYTRANSLATE (tao_yychar); \
+ TAO_YYPOPSTACK; \
+ goto tao_yybackup; \
+ } \
+ else \
+ { \
+ tao_yyerror ("syntax error: cannot back up");\
+ TAO_YYERROR; \
+ } \
+while (0)
+
+#define TAO_YYTERROR 1
+#define TAO_YYERRCODE 256
+
+/* TAO_YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run). */
+
+#ifndef TAO_YYLLOC_DEFAULT
+# define TAO_YYLLOC_DEFAULT(Current, Rhs, N) \
+ ((Current).first_line = (Rhs)[1].first_line, \
+ (Current).first_column = (Rhs)[1].first_column, \
+ (Current).last_line = (Rhs)[N].last_line, \
+ (Current).last_column = (Rhs)[N].last_column)
+#endif
+
+/* TAO_YYLEX -- calling `tao_yylex' with the right arguments. */
+
+#ifdef TAO_YYLEX_PARAM
+# define TAO_YYLEX tao_yylex (TAO_YYLEX_PARAM)
+#else
+# define TAO_YYLEX tao_yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if TAO_YYDEBUG
+
+# ifndef TAO_YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define TAO_YYFPRINTF fprintf
+# endif
+
+# define TAO_YYDPRINTF(Args) \
+do { \
+ if (tao_yydebug) \
+ TAO_YYFPRINTF Args; \
+} while (0)
+
+# define TAO_YYDSYMPRINT(Args) \
+do { \
+ if (tao_yydebug) \
+ tao_yysymprint Args; \
+} while (0)
+
+# define TAO_YYDSYMPRINTF(Title, Token, Value, Location) \
+do { \
+ if (tao_yydebug) \
+ { \
+ TAO_YYFPRINTF (stderr, "%s ", Title); \
+ tao_yysymprint (stderr, \
+ Token, Value); \
+ TAO_YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+/*------------------------------------------------------------------.
+| tao_yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+tao_yy_stack_print (short *bottom, short *top)
+#else
+static void
+tao_yy_stack_print (bottom, top)
+ short *bottom;
+ short *top;
+#endif
+{
+ TAO_YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ TAO_YYFPRINTF (stderr, " %d", *bottom);
+ TAO_YYFPRINTF (stderr, "\n");
+}
+
+# define TAO_YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (tao_yydebug) \
+ tao_yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the TAO_YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+tao_yy_reduce_print (int tao_yyrule)
+#else
+static void
+tao_yy_reduce_print (tao_yyrule)
+ int tao_yyrule;
+#endif
+{
+ int tao_yyi;
+ unsigned int tao_yylno = tao_yyrline[tao_yyrule];
+ TAO_YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ tao_yyrule - 1, tao_yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (tao_yyi = tao_yyprhs[tao_yyrule]; 0 <= tao_yyrhs[tao_yyi]; tao_yyi++)
+ TAO_YYFPRINTF (stderr, "%s ", tao_yytname [tao_yyrhs[tao_yyi]]);
+ TAO_YYFPRINTF (stderr, "-> %s\n", tao_yytname [tao_yyr1[tao_yyrule]]);
+}
+
+# define TAO_YY_REDUCE_PRINT(Rule) \
+do { \
+ if (tao_yydebug) \
+ tao_yy_reduce_print (Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int tao_yydebug;
+#else /* !TAO_YYDEBUG */
+# define TAO_YYDPRINTF(Args)
+# define TAO_YYDSYMPRINT(Args)
+# define TAO_YYDSYMPRINTF(Title, Token, Value, Location)
+# define TAO_YY_STACK_PRINT(Bottom, Top)
+# define TAO_YY_REDUCE_PRINT(Rule)
+#endif /* !TAO_YYDEBUG */
+
+
+/* TAO_YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef TAO_YYINITDEPTH
+# define TAO_YYINITDEPTH 200
+#endif
+
+/* TAO_YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < TAO_YYSTACK_BYTES (TAO_YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if defined (TAO_YYMAXDEPTH) && TAO_YYMAXDEPTH == 0
+# undef TAO_YYMAXDEPTH
+#endif
+
+#ifndef TAO_YYMAXDEPTH
+# define TAO_YYMAXDEPTH 10000
+#endif
+
+
+
+#if TAO_YYERROR_VERBOSE
+
+# ifndef tao_yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define tao_yystrlen strlen
+# else
+/* Return the length of TAO_YYSTR. */
+static TAO_YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+tao_yystrlen (const char *tao_yystr)
+# else
+tao_yystrlen (tao_yystr)
+ const char *tao_yystr;
+# endif
+{
+ register const char *tao_yys = tao_yystr;
+
+ while (*tao_yys++ != '\0')
+ continue;
+
+ return tao_yys - tao_yystr - 1;
+}
+# endif
+# endif
+
+# ifndef tao_yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define tao_yystpcpy stpcpy
+# else
+/* Copy TAO_YYSRC to TAO_YYDEST, returning the address of the terminating '\0' in
+ TAO_YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+tao_yystpcpy (char *tao_yydest, const char *tao_yysrc)
+# else
+tao_yystpcpy (tao_yydest, tao_yysrc)
+ char *tao_yydest;
+ const char *tao_yysrc;
+# endif
+{
+ register char *tao_yyd = tao_yydest;
+ register const char *tao_yys = tao_yysrc;
+
+ while ((*tao_yyd++ = *tao_yys++) != '\0')
+ continue;
+
+ return tao_yyd - 1;
+}
+# endif
+# endif
+
+#endif /* !TAO_YYERROR_VERBOSE */
+
+
+
+#if TAO_YYDEBUG
+/*--------------------------------.
+| Print this symbol on TAO_YYOUTPUT. |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+tao_yysymprint (FILE *tao_yyoutput, int tao_yytype, TAO_YYSTYPE *tao_yyvaluep)
+#else
+static void
+tao_yysymprint (tao_yyoutput, tao_yytype, tao_yyvaluep)
+ FILE *tao_yyoutput;
+ int tao_yytype;
+ TAO_YYSTYPE *tao_yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) tao_yyvaluep;
+
+ if (tao_yytype < TAO_YYNTOKENS)
+ {
+ TAO_YYFPRINTF (tao_yyoutput, "token %s (", tao_yytname[tao_yytype]);
+# ifdef TAO_YYPRINT
+ TAO_YYPRINT (tao_yyoutput, tao_yytoknum[tao_yytype], *tao_yyvaluep);
+# endif
+ }
+ else
+ TAO_YYFPRINTF (tao_yyoutput, "nterm %s (", tao_yytname[tao_yytype]);
+
+ TAO_YYFPRINTF (tao_yyoutput, ")");
+}
+
+#endif /* ! TAO_YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+tao_yydestruct (int tao_yytype, TAO_YYSTYPE *tao_yyvaluep)
+#else
+static void
+tao_yydestruct (tao_yytype, tao_yyvaluep)
+ int tao_yytype;
+ TAO_YYSTYPE *tao_yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) tao_yytype;
+ (void) tao_yyvaluep;
+
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef TAO_YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int tao_yyparse (void *TAO_YYPARSE_PARAM);
+# else
+int tao_yyparse ();
+# endif
+#else /* ! TAO_YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int tao_yyparse (void);
+#else
+int tao_yyparse ();
+#endif
+#endif /* ! TAO_YYPARSE_PARAM */
+
+
+
+/* The lookahead symbol. */
+int tao_yychar;
+
+/* The semantic value of the lookahead symbol. */
+TAO_YYSTYPE tao_yylval;
+
+/* Number of syntax errors so far. */
+int tao_yynerrs;
+
+
+
+/*----------.
+| tao_yyparse. |
+`----------*/
+
+#ifdef TAO_YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int tao_yyparse (void *TAO_YYPARSE_PARAM)
+# else
+int tao_yyparse (TAO_YYPARSE_PARAM)
+ void *TAO_YYPARSE_PARAM;
+# endif
+#else /* ! TAO_YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+tao_yyparse (void)
+#else
+int
+tao_yyparse ()
+
+#endif
+#endif
+{
+
+ register int tao_yystate;
+ register int tao_yyn;
+ int tao_yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int tao_yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int tao_yytoken = 0;
+
+ /* Three stacks and their tools:
+ `tao_yyss': related to states,
+ `tao_yyvs': related to semantic values,
+ `tao_yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow tao_yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short tao_yyssa[TAO_YYINITDEPTH];
+ short *tao_yyss = tao_yyssa;
+ register short *tao_yyssp;
+
+ /* The semantic value stack. */
+ TAO_YYSTYPE tao_yyvsa[TAO_YYINITDEPTH];
+ TAO_YYSTYPE *tao_yyvs = tao_yyvsa;
+ register TAO_YYSTYPE *tao_yyvsp;
+
+
+
+#define TAO_YYPOPSTACK (tao_yyvsp--, tao_yyssp--)
+
+ TAO_YYSIZE_T tao_yystacksize = TAO_YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ TAO_YYSTYPE tao_yyval;
+
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int tao_yylen;
+
+ TAO_YYDPRINTF ((stderr, "Starting parse\n"));
+
+ tao_yystate = 0;
+ tao_yyerrstatus = 0;
+ tao_yynerrs = 0;
+ tao_yychar = TAO_YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ tao_yyssp = tao_yyss;
+ tao_yyvsp = tao_yyvs;
+
+ goto tao_yysetstate;
+
+/*------------------------------------------------------------.
+| tao_yynewstate -- Push a new state, which is found in tao_yystate. |
+`------------------------------------------------------------*/
+ tao_yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ tao_yyssp++;
+
+ tao_yysetstate:
+ *tao_yyssp = tao_yystate;
+
+ if (tao_yyss + tao_yystacksize - 1 <= tao_yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ TAO_YYSIZE_T tao_yysize = tao_yyssp - tao_yyss + 1;
+
+#ifdef tao_yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ TAO_YYSTYPE *tao_yyvs1 = tao_yyvs;
+ short *tao_yyss1 = tao_yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if tao_yyoverflow is a macro. */
+ tao_yyoverflow ("parser stack overflow",
+ &tao_yyss1, tao_yysize * sizeof (*tao_yyssp),
+ &tao_yyvs1, tao_yysize * sizeof (*tao_yyvsp),
+
+ &tao_yystacksize);
+
+ tao_yyss = tao_yyss1;
+ tao_yyvs = tao_yyvs1;
+ }
+#else /* no tao_yyoverflow */
+# ifndef TAO_YYSTACK_RELOCATE
+ goto tao_yyoverflowlab;
+# else
+ /* Extend the stack our own way. */
+ if (TAO_YYMAXDEPTH <= tao_yystacksize)
+ goto tao_yyoverflowlab;
+ tao_yystacksize *= 2;
+ if (TAO_YYMAXDEPTH < tao_yystacksize)
+ tao_yystacksize = TAO_YYMAXDEPTH;
+
+ {
+ short *tao_yyss1 = tao_yyss;
+ union tao_yyalloc *tao_yyptr =
+ (union tao_yyalloc *) TAO_YYSTACK_ALLOC (TAO_YYSTACK_BYTES (tao_yystacksize));
+ if (! tao_yyptr)
+ goto tao_yyoverflowlab;
+ TAO_YYSTACK_RELOCATE (tao_yyss);
+ TAO_YYSTACK_RELOCATE (tao_yyvs);
+
+# undef TAO_YYSTACK_RELOCATE
+ if (tao_yyss1 != tao_yyssa)
+ TAO_YYSTACK_FREE (tao_yyss1);
+ }
+# endif
+#endif /* no tao_yyoverflow */
+
+ tao_yyssp = tao_yyss + tao_yysize - 1;
+ tao_yyvsp = tao_yyvs + tao_yysize - 1;
+
+
+ TAO_YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) tao_yystacksize));
+
+ if (tao_yyss + tao_yystacksize - 1 <= tao_yyssp)
+ TAO_YYABORT;
+ }
+
+ TAO_YYDPRINTF ((stderr, "Entering state %d\n", tao_yystate));
+
+ goto tao_yybackup;
+
+/*-----------.
+| tao_yybackup. |
+`-----------*/
+tao_yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* tao_yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ tao_yyn = tao_yypact[tao_yystate];
+ if (tao_yyn == TAO_YYPACT_NINF)
+ goto tao_yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* TAO_YYCHAR is either TAO_YYEMPTY or TAO_YYEOF or a valid lookahead symbol. */
+ if (tao_yychar == TAO_YYEMPTY)
+ {
+ TAO_YYDPRINTF ((stderr, "Reading a token: "));
+ tao_yychar = TAO_YYLEX;
+ }
+
+ if (tao_yychar <= TAO_YYEOF)
+ {
+ tao_yychar = tao_yytoken = TAO_YYEOF;
+ TAO_YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ tao_yytoken = TAO_YYTRANSLATE (tao_yychar);
+ TAO_YYDSYMPRINTF ("Next token is", tao_yytoken, &tao_yylval, &tao_yylloc);
+ }
+
+ /* If the proper action on seeing token TAO_YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ tao_yyn += tao_yytoken;
+ if (tao_yyn < 0 || TAO_YYLAST < tao_yyn || tao_yycheck[tao_yyn] != tao_yytoken)
+ goto tao_yydefault;
+ tao_yyn = tao_yytable[tao_yyn];
+ if (tao_yyn <= 0)
+ {
+ if (tao_yyn == 0 || tao_yyn == TAO_YYTABLE_NINF)
+ goto tao_yyerrlab;
+ tao_yyn = -tao_yyn;
+ goto tao_yyreduce;
+ }
+
+ if (tao_yyn == TAO_YYFINAL)
+ TAO_YYACCEPT;
+
+ /* Shift the lookahead token. */
+ TAO_YYDPRINTF ((stderr, "Shifting token %s, ", tao_yytname[tao_yytoken]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (tao_yychar != TAO_YYEOF)
+ tao_yychar = TAO_YYEMPTY;
+
+ *++tao_yyvsp = tao_yylval;
+
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (tao_yyerrstatus)
+ tao_yyerrstatus--;
+
+ tao_yystate = tao_yyn;
+ goto tao_yynewstate;
+
+
+/*-----------------------------------------------------------.
+| tao_yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+tao_yydefault:
+ tao_yyn = tao_yydefact[tao_yystate];
+ if (tao_yyn == 0)
+ goto tao_yyerrlab;
+ goto tao_yyreduce;
+
+
+/*-----------------------------.
+| tao_yyreduce -- Do a reduction. |
+`-----------------------------*/
+tao_yyreduce:
+ /* tao_yyn is the number of a rule to reduce with. */
+ tao_yylen = tao_yyr2[tao_yyn];
+
+ /* If TAO_YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets TAO_YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to TAO_YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that TAO_YYVAL may be used uninitialized. */
+ tao_yyval = tao_yyvsp[1-tao_yylen];
+
+
+ TAO_YY_REDUCE_PRINT (tao_yyn);
+ switch (tao_yyn)
+ {
+ case 5:
+
+ {
+// definition : type_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
+ }
+ break;
+
+ case 6:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 7:
+
+ {
+// | typeid_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
+ }
+ break;
+
+ case 8:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 9:
+
+ {
+// | typeprefix_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
+ }
+ break;
+
+ case 10:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 11:
+
+ {
+// | const_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
+ }
+ break;
+
+ case 12:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 13:
+
+ {
+// | exception
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
+ }
+ break;
+
+ case 14:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 15:
+
+ {
+// | interface_def
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
+ }
+ break;
+
+ case 16:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 17:
+
+ {
+// | module
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
+ }
+ break;
+
+ case 18:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 19:
+
+ {
+// | value_def
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
+ }
+ break;
+
+ case 20:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 21:
+
+ {
+// | component
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
+ }
+ break;
+
+ case 22:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 23:
+
+ {
+// | home_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
+ }
+ break;
+
+ case 24:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 25:
+
+ {
+// | event
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
+ }
+ break;
+
+ case 26:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 27:
+
+ {
+// | error
+ idl_global->err()->syntax_error (idl_global->parse_state());
+ }
+ break;
+
+ case 28:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ tao_yyerrok;
+ }
+ break;
+
+ case 29:
+
+ {
+// module : IDL_MODULE
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSeen);
+ }
+ break;
+
+ case 30:
+
+ {
+// IDENTIFIER
+ Identifier id (tao_yyvsp[0].strval);
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+ UTL_ScopedName n (&id,
+ 0);
+ AST_Module *m = 0;
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleIDSeen);
+ /*
+ * Make a new module and add it to the enclosing scope
+ */
+ if (s != 0)
+ {
+ m = idl_global->gen ()->create_module (s,
+ &n);
+ (void) s->fe_add_module (m);
+ }
+ /*
+ * Push it on the stack
+ */
+ idl_global->scopes ().push (m);
+ }
+ break;
+
+ case 31:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
+ }
+ break;
+
+ case 32:
+
+ {
+// definitions
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleBodySeen);
+ }
+ break;
+
+ case 33:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleQsSeen);
+ /*
+ * Finished with this module - pop it from the scope stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 36:
+
+ {
+// interface : interface_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Interface *i = 0;
+
+ /*
+ * Make a new interface node and add it to its enclosing scope.
+ */
+ if (s != 0 && tao_yyvsp[0].ihval != 0)
+ {
+ i =
+ idl_global->gen ()->create_interface (
+ tao_yyvsp[0].ihval->name (),
+ tao_yyvsp[0].ihval->inherits (),
+ tao_yyvsp[0].ihval->n_inherits (),
+ tao_yyvsp[0].ihval->inherits_flat (),
+ tao_yyvsp[0].ihval->n_inherits_flat (),
+ tao_yyvsp[0].ihval->is_local (),
+ tao_yyvsp[0].ihval->is_abstract ()
+ );
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the interface to its definition scope.
+ */
+ (void) s->fe_add_interface (i);
+
+ // This FE_InterfaceHeader class isn't destroyed with the AST.
+ tao_yyvsp[0].ihval->destroy ();
+ delete tao_yyvsp[0].ihval;
+ tao_yyvsp[0].ihval = 0;
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (i);
+ }
+ break;
+
+ case 37:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
+ }
+ break;
+
+ case 38:
+
+ {
+// exports
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceBodySeen);
+ }
+ break;
+
+ case 39:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceQsSeen);
+
+ /*
+ * Done with this interface - pop it off the scopes stack
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 40:
+
+ {
+// interface_decl : IDL_INTERFACE
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSeen);
+ }
+ break;
+
+ case 41:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceIDSeen);
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 42:
+
+ {
+// interface_header : interface_decl inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+
+ if (tao_yyvsp[0].nlval != 0 && tao_yyvsp[0].nlval->truncatable ())
+ {
+ idl_global->err ()->syntax_error (
+ IDL_GlobalData::PS_InheritColonSeen
+ );
+ }
+
+ /*
+ * Create an AST representation of the information in the header
+ * part of an interface - this representation contains a computed
+ * list of all interfaces which this interface inherits from,
+ * recursively
+ */
+ UTL_ScopedName *n = 0;
+ ACE_NEW_RETURN (n,
+ UTL_ScopedName (tao_yyvsp[-1].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.ihval,
+ FE_InterfaceHeader (n,
+ tao_yyvsp[0].nlval,
+ false,
+ false,
+ true),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+ }
+ break;
+
+ case 43:
+
+ {
+// | IDL_LOCAL interface_decl inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+
+ /*
+ * Create an AST representation of the information in the header
+ * part of an interface - this representation contains a computed
+ * list of all interfaces which this interface inherits from,
+ * recursively
+ */
+ UTL_ScopedName *n = 0;
+ ACE_NEW_RETURN (n,
+ UTL_ScopedName (tao_yyvsp[-1].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.ihval,
+ FE_InterfaceHeader (n,
+ tao_yyvsp[0].nlval,
+ true,
+ false,
+ true),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+ }
+ break;
+
+ case 44:
+
+ {
+// | IDL_ABSTRACT interface_decl inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+
+ /*
+ * Create an AST representation of the information in the header
+ * part of an interface - this representation contains a computed
+ * list of all interfaces which this interface inherits from,
+ * recursively
+ */
+ UTL_ScopedName *n = 0;
+ ACE_NEW_RETURN (n,
+ UTL_ScopedName (tao_yyvsp[-1].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.ihval,
+ FE_InterfaceHeader (n,
+ tao_yyvsp[0].nlval,
+ false,
+ true,
+ true),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+ }
+ break;
+
+ case 45:
+
+ {
+// inheritance_spec : ':' opt_truncatable
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
+ }
+ break;
+
+ case 46:
+
+ {
+// at_least_one_scoped_name
+ tao_yyvsp[0].nlval->truncatable (tao_yyvsp[-2].bval);
+ tao_yyval.nlval = tao_yyvsp[0].nlval;
+ }
+ break;
+
+ case 47:
+
+ {
+/* | EMPTY */
+ tao_yyval.nlval = 0;
+ }
+ break;
+
+ case 52:
+
+ {
+// valuetype : IDL_CUSTOM value_concrete_decl
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("error in %s line %d\n"),
+ idl_global->filename ()->get_string (),
+ idl_global->lineno ()));
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
+ ACE_TEXT (" custom yet\n")));
+ }
+ break;
+
+ case 54:
+
+ {
+// value_concrete_decl : value_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_ValueType *v = 0;
+ AST_Interface *i = 0;
+
+ if (s != 0 && tao_yyvsp[0].vhval != 0)
+ {
+ v =
+ idl_global->gen ()->create_valuetype (
+ tao_yyvsp[0].vhval->name (),
+ tao_yyvsp[0].vhval->inherits (),
+ tao_yyvsp[0].vhval->n_inherits (),
+ tao_yyvsp[0].vhval->inherits_concrete (),
+ tao_yyvsp[0].vhval->inherits_flat (),
+ tao_yyvsp[0].vhval->n_inherits_flat (),
+ tao_yyvsp[0].vhval->supports (),
+ tao_yyvsp[0].vhval->n_supports (),
+ tao_yyvsp[0].vhval->supports_concrete (),
+ false,
+ tao_yyvsp[0].vhval->truncatable (),
+ false
+ );
+ i = AST_Interface::narrow_from_decl (v);
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the valuetype to its definition scope
+ */
+ v = AST_ValueType::narrow_from_decl (i);
+ (void) s->fe_add_valuetype (v);
+
+ // FE_OBVHeader is not automatically destroyed in the AST
+ tao_yyvsp[0].vhval->destroy ();
+ delete tao_yyvsp[0].vhval;
+ tao_yyvsp[0].vhval = 0;
+ }
+
+ /*
+ * Push it on the scope stack
+ */
+ idl_global->scopes ().push (v);
+ }
+ break;
+
+ case 55:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
+ }
+ break;
+
+ case 56:
+
+ {
+// value_elements
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
+ }
+ break;
+
+ case 57:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
+
+ AST_ValueType *vt =
+ AST_ValueType::narrow_from_scope (
+ idl_global->scopes ().top_non_null ()
+ );
+
+ if (vt != 0 && vt->will_have_factory ())
+ {
+ idl_global->valuefactory_seen_ = true;
+ }
+
+ /*
+ * Done with this value type - pop it off the scopes stack
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 58:
+
+ {
+// value_abs_decl : IDL_ABSTRACT value_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_ValueType *v = 0;
+ AST_Interface *i = 0;
+
+ if (s != 0 && tao_yyvsp[0].vhval != 0)
+ {
+ v =
+ idl_global->gen ()->create_valuetype (
+ tao_yyvsp[0].vhval->name (),
+ tao_yyvsp[0].vhval->inherits (),
+ tao_yyvsp[0].vhval->n_inherits (),
+ tao_yyvsp[0].vhval->inherits_concrete (),
+ tao_yyvsp[0].vhval->inherits_flat (),
+ tao_yyvsp[0].vhval->n_inherits_flat (),
+ tao_yyvsp[0].vhval->supports (),
+ tao_yyvsp[0].vhval->n_supports (),
+ tao_yyvsp[0].vhval->supports_concrete (),
+ true,
+ false,
+ false
+ );
+ i = AST_Interface::narrow_from_decl (v);
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the valuetype to its definition scope
+ */
+ v = AST_ValueType::narrow_from_decl (i);
+ (void) s->fe_add_valuetype (v);
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (v);
+ }
+ break;
+
+ case 59:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
+ }
+ break;
+
+ case 60:
+
+ {
+// exports
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
+ }
+ break;
+
+ case 61:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
+
+ /*
+ * Done with this valuetype - pop it off the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 62:
+
+ {
+// value_header : value_decl inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+ }
+ break;
+
+ case 63:
+
+ {
+// supports_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
+
+ UTL_ScopedName *sn = 0;
+ ACE_NEW_RETURN (sn,
+ UTL_ScopedName (tao_yyvsp[-3].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.vhval,
+ FE_OBVHeader (sn,
+ tao_yyvsp[-2].nlval,
+ tao_yyvsp[0].nlval,
+ tao_yyvsp[-2].nlval ? tao_yyvsp[-2].nlval->truncatable () : false),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+
+ if (0 != tao_yyvsp[-2].nlval)
+ {
+ tao_yyvsp[-2].nlval->destroy ();
+ delete tao_yyvsp[-2].nlval;
+ tao_yyvsp[-2].nlval = 0;
+ }
+ }
+ break;
+
+ case 64:
+
+ {
+// value_decl : IDL_VALUETYPE
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSeen);
+ }
+ break;
+
+ case 65:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeIDSeen);
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 66:
+
+ {
+// opt_truncatable : IDL_TRUNCATABLE
+ tao_yyval.bval = true;
+ }
+ break;
+
+ case 67:
+
+ {
+/* | EMPTY */
+ tao_yyval.bval = false;
+ }
+ break;
+
+ case 68:
+
+ {
+// supports_spec : IDL_SUPPORTS at_least_one_scoped_name
+ tao_yyval.nlval = tao_yyvsp[0].nlval;
+ }
+ break;
+
+ case 69:
+
+ {
+/* | EMPTY */
+ tao_yyval.nlval = 0;
+ }
+ break;
+
+ case 70:
+
+ {
+// value_forward_decl : IDL_ABSTRACT value_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_ValueTypeFwd *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
+
+ /*
+ * Create a node representing a forward declaration of an
+ * valuetype. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_valuetype_fwd (&n,
+ true);
+ (void) s->fe_add_valuetype_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 71:
+
+ {
+// | value_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_ValueTypeFwd *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
+
+ /*
+ * Create a node representing a forward declaration of an
+ * valuetype. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_valuetype_fwd (&n,
+ false);
+ (void) s->fe_add_valuetype_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 72:
+
+ {
+// value_box_decl : value_decl type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueBoxDeclSeen);
+
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[-1].idval,
+ 0);
+
+ if (s != 0 && tao_yyvsp[0].dcval != 0)
+ {
+ /*
+ * Get the type_spec associated with the valuebox
+ */
+ AST_Type *tp = 0;
+ AST_Typedef *td
+ = AST_Typedef::narrow_from_decl (tao_yyvsp[0].dcval);
+
+ if (td == 0)
+ {
+ tp = AST_Type::narrow_from_decl (tao_yyvsp[0].dcval);
+ }
+ else
+ {
+ tp = td->primitive_base_type ();
+ }
+
+ if (tp == 0)
+ {
+ // The <type_spec> given is a valid type
+ idl_global->err ()->not_a_type (tao_yyvsp[0].dcval);
+ }
+ else
+ {
+ AST_Decl::NodeType nt = tp->node_type ();
+
+ if (nt == AST_Decl::NT_valuetype
+ || nt == AST_Decl::NT_eventtype)
+ {
+ // valuetype is not allowed as <type_spec>
+ // for boxed value
+ idl_global->err ()->error0 (
+ UTL_Error::EIDL_ILLEGAL_BOXED_TYPE
+ );
+ }
+ else
+ {
+ /*
+ * Add the valuebox to its definition scope
+ */
+ AST_ValueBox *vb =
+ idl_global->gen ()->create_valuebox (&n,
+ tp);
+ (void) s->fe_add_valuebox (vb);
+ }
+ }
+ }
+
+ tao_yyvsp[-1].idval->destroy ();
+ delete tao_yyvsp[-1].idval;
+ tao_yyvsp[-1].idval = 0;
+ }
+ break;
+
+ case 78:
+
+ {
+// state_member : IDL_PUBLIC
+ /* is $0 to member_i */
+ tao_yyval.vival = AST_Field::vis_PUBLIC;
+ }
+ break;
+
+ case 80:
+
+ {
+// IDL_PRIVATE
+ /* is $0 to member_i */
+ tao_yyval.vival = AST_Field::vis_PRIVATE;
+ }
+ break;
+
+ case 84:
+
+ {
+// export : type_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
+ }
+ break;
+
+ case 85:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 86:
+
+ {
+// | typeid_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
+ }
+ break;
+
+ case 87:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 88:
+
+ {
+// | typeprefix_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
+ }
+ break;
+
+ case 89:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 90:
+
+ {
+// | const_dcl
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
+ }
+ break;
+
+ case 91:
+
+ {
+// ';'
+ idl_global->set_parse_state(IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 92:
+
+ {
+// | exception
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
+ }
+ break;
+
+ case 93:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 94:
+
+ {
+// | attribute
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
+ }
+ break;
+
+ case 95:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 96:
+
+ {
+// | operation
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpDeclSeen);
+ }
+ break;
+
+ case 97:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 98:
+
+ {
+// | error
+ idl_global->err()->syntax_error (idl_global->parse_state());
+ }
+ break;
+
+ case 99:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ tao_yyerrok;
+ }
+ break;
+
+ case 100:
+
+ {
+// at_least_one_scoped_name : scoped_name scoped_names
+ ACE_NEW_RETURN (tao_yyval.nlval,
+ UTL_NameList (tao_yyvsp[-1].idlist,
+ tao_yyvsp[0].nlval),
+ 1);
+ }
+ break;
+
+ case 101:
+
+ {
+// scoped_names : scoped_names ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_SNListCommaSeen);
+ }
+ break;
+
+ case 102:
+
+ {
+// scoped_name
+ idl_global->set_parse_state (IDL_GlobalData::PS_ScopedNameSeen);
+
+ if (tao_yyvsp[-3].nlval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.nlval,
+ UTL_NameList (tao_yyvsp[0].idlist,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_NameList *nl = 0;
+ ACE_NEW_RETURN (nl,
+ UTL_NameList (tao_yyvsp[0].idlist,
+ 0),
+ 1);
+ tao_yyvsp[-3].nlval->nconc (nl);
+ tao_yyval.nlval = tao_yyvsp[-3].nlval;
+ }
+ }
+ break;
+
+ case 103:
+
+ {
+/* | EMPTY */
+ tao_yyval.nlval = 0;
+ }
+ break;
+
+ case 104:
+
+ {
+// scoped_name : id
+ idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
+
+ ACE_NEW_RETURN (tao_yyval.idlist,
+ UTL_IdList (tao_yyvsp[0].idval,
+ 0),
+ 1);
+ }
+ break;
+
+ case 105:
+
+ {
+// | IDL_SCOPE_DELIMITOR
+ idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
+ }
+ break;
+
+ case 106:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
+
+ Identifier *id = 0;
+ ACE_NEW_RETURN (id,
+ Identifier (tao_yyvsp[-2].strval),
+ 1);
+ ACE::strdelete (tao_yyvsp[-2].strval);
+ tao_yyvsp[-2].strval = 0;
+ UTL_IdList *sn = 0;
+ ACE_NEW_RETURN (sn,
+ UTL_IdList (tao_yyvsp[0].idval,
+ 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.idlist,
+ UTL_IdList (id,
+ sn),
+ 1);
+ }
+ break;
+
+ case 107:
+
+ {
+// | scoped_name IDL_SCOPE_DELIMITOR
+ idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
+
+ // This cleans up all the non-global "::"s in scoped names.
+ // If there is a global one, it gets put into the UTL_IdList,
+ // so we clean it up in the case above.
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+ }
+ break;
+
+ case 108:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
+
+ UTL_IdList *sn = 0;
+ ACE_NEW_RETURN (sn,
+ UTL_IdList (tao_yyvsp[0].idval,
+ 0),
+ 1);
+ tao_yyvsp[-3].idlist->nconc (sn);
+ tao_yyval.idlist = tao_yyvsp[-3].idlist;
+ }
+ break;
+
+ case 109:
+
+ {
+// id: IDENTIFIER
+ ACE_NEW_RETURN (tao_yyval.idval,
+ Identifier (tao_yyvsp[0].strval),
+ 1);
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+ }
+ break;
+
+ case 110:
+
+ {
+// interface_forward : interface_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+
+ if (ACE_OS::strcmp (tao_yyvsp[0].idval->get_string (),
+ "TypeCode") == 0
+ && !idl_global->in_main_file ())
+ {
+ AST_PredefinedType *pdt =
+ idl_global->gen ()->create_predefined_type (
+ AST_PredefinedType::PT_pseudo,
+ &n
+ );
+ (void) s->add_predefined_type (pdt);
+ s->add_to_scope (pdt);
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+
+ AST_InterfaceFwd *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceForwardSeen);
+
+ /*
+ * Create a node representing a forward declaration of an
+ * interface. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_interface_fwd (&n,
+ 0,
+ 0);
+ (void) s->fe_add_interface_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 111:
+
+ {
+// | IDL_LOCAL interface_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_InterfaceFwd *f = 0;
+ idl_global->set_parse_state (
+ IDL_GlobalData::PS_InterfaceForwardSeen
+ );
+
+ /*
+ * Create a node representing a forward declaration of an
+ * interface. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_interface_fwd (&n,
+ 1,
+ 0);
+ (void) s->fe_add_interface_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 112:
+
+ {
+// | IDL_ABSTRACT interface_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_InterfaceFwd *f = 0;
+ idl_global->set_parse_state (
+ IDL_GlobalData::PS_InterfaceForwardSeen
+ );
+
+ /*
+ * Create a node representing a forward declaration of an
+ * interface. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_interface_fwd (&n,
+ 0,
+ 1);
+ (void) s->fe_add_interface_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 113:
+
+ {
+// const_dcl : IDL_CONST
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstSeen);
+ }
+ break;
+
+ case 114:
+
+ {
+// const_type
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstTypeSeen);
+ }
+ break;
+
+ case 115:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstIDSeen);
+ }
+ break;
+
+ case 116:
+
+ {
+// '='
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstAssignSeen);
+ }
+ break;
+
+ case 117:
+
+ {
+// expression
+ UTL_ScopedName n (tao_yyvsp[-4].idval,
+ 0);
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Constant *c = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstExprSeen);
+
+ /*
+ * Create a node representing a constant declaration. Store
+ * it in the enclosing scope.
+ */
+ if (tao_yyvsp[0].exval != 0 && s != 0)
+ {
+ AST_Expression::AST_ExprValue *result =
+ tao_yyvsp[0].exval->check_and_coerce (tao_yyvsp[-6].etval,
+ tao_enum_constant_decl);
+ tao_enum_constant_decl = 0;
+
+ if (result == 0)
+ {
+ idl_global->err ()->coercion_error (tao_yyvsp[0].exval,
+ tao_yyvsp[-6].etval);
+ tao_yyvsp[0].exval->destroy ();
+ delete tao_yyvsp[0].exval;
+ tao_yyvsp[0].exval = 0;
+ }
+ else
+ {
+ c =
+ idl_global->gen ()->create_constant (
+ tao_yyvsp[-6].etval,
+ tao_yyvsp[0].exval,
+ &n
+ );
+ (void) s->fe_add_constant (c);
+ delete result;
+ result = 0;
+ }
+
+ tao_yyvsp[-4].idval->destroy ();
+ delete tao_yyvsp[-4].idval;
+ tao_yyvsp[-4].idval = 0;
+ }
+ }
+ break;
+
+ case 124:
+
+ {
+// const_type
+// : integer_type
+// | char_type
+// | octet_type
+// | boolean_type
+// | floating_pt_type
+// | fixed_type
+// | string_type_spec
+ tao_yyval.etval = AST_Expression::EV_string;
+ }
+ break;
+
+ case 125:
+
+ {
+// | wstring_type_spec
+ tao_yyval.etval = AST_Expression::EV_wstring;
+ }
+ break;
+
+ case 126:
+
+ {
+// | scoped_name
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_PredefinedType *c = 0;
+ AST_Typedef *t = 0;
+
+ /*
+ * If the constant's type is a scoped name, it must resolve
+ * to a scalar constant type
+ */
+ AST_Decl *d =
+ s->lookup_by_name (tao_yyvsp[0].idlist,
+ true);
+
+ tao_yyvsp[0].idlist->destroy ();
+ delete tao_yyvsp[0].idlist;
+ tao_yyvsp[0].idlist = 0;
+
+ if (s != 0 && d != 0)
+ {
+ tao_enum_constant_decl = d;
+
+ /*
+ * Look through typedefs.
+ */
+ while (d->node_type () == AST_Decl::NT_typedef)
+ {
+ t = AST_Typedef::narrow_from_decl (d);
+
+ if (t == 0)
+ {
+ break;
+ }
+
+ d = t->base_type ();
+ }
+
+ if (d == 0)
+ {
+ tao_yyval.etval = AST_Expression::EV_enum;
+ }
+ else if (d->node_type () == AST_Decl::NT_pre_defined)
+ {
+ c = AST_PredefinedType::narrow_from_decl (d);
+
+ if (c != 0)
+ {
+ tao_yyval.etval = idl_global->PredefinedTypeToExprType (c->pt ());
+ }
+ else
+ {
+ tao_yyval.etval = AST_Expression::EV_enum;
+ }
+ }
+ else if (d->node_type () == AST_Decl::NT_string)
+ {
+ tao_yyval.etval = AST_Expression::EV_string;
+ }
+ else if (d->node_type () == AST_Decl::NT_wstring)
+ {
+ tao_yyval.etval = AST_Expression::EV_wstring;
+ }
+ else
+ {
+ tao_yyval.etval = AST_Expression::EV_enum;
+ }
+ }
+ else
+ {
+ tao_yyval.etval = AST_Expression::EV_enum;
+ }
+ }
+ break;
+
+ case 130:
+
+ {
+// or_expr : xor_expr
+// | or_expr '|' xor_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_or,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 132:
+
+ {
+// xor_expr : and_expr
+// | xor_expr '^' and_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_xor,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 134:
+
+ {
+// and_expr : shift_expr | and_expr '&' shift_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_and,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 136:
+
+ {
+// shift_expr : add_expr | shift_expr IDL_LEFT_SHIFT add_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_left,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 137:
+
+ {
+// | shift_expr IDL_RIGHT_SHIFT add_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_right,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 139:
+
+ {
+// add_expr : mult_expr | add_expr '+' mult_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_add,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 140:
+
+ {
+// | add_expr '-' mult_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_minus,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 142:
+
+ {
+// mult_expr : unary_expr | mult_expr '*' unary_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_mul,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 143:
+
+ {
+// | mult_expr '/' unary_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_div,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 144:
+
+ {
+// | mult_expr '%' unary_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_mod,
+ tao_yyvsp[-2].exval,
+ tao_yyvsp[0].exval
+ );
+ }
+ break;
+
+ case 146:
+
+ {
+// unary_expr : primary_expr | '+' primary_expr
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (
+ AST_Expression::EC_u_plus,
+ tao_yyvsp[0].exval,
+ 0
+ );
+ }
+ break;
+
+ case 147:
+
+ {
+// | '-' primary_expr
+ tao_yyval.exval =
+ idl_global->gen()->create_expr (
+ AST_Expression::EC_u_minus,
+ tao_yyvsp[0].exval,
+ 0
+ );
+ }
+ break;
+
+ case 148:
+
+ {
+// | '~' primary_expr
+ tao_yyval.exval =
+ idl_global->gen()->create_expr (
+ AST_Expression::EC_bit_neg,
+ tao_yyvsp[0].exval,
+ 0
+ );
+ }
+ break;
+
+ case 149:
+
+ {
+// primary_expr : scoped_name
+ /*
+ * An expression which is a scoped name is not resolved now,
+ * but only when it is evaluated (such as when it is assigned
+ * as a constant value).
+ */
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[0].idlist,
+ true);
+
+ /*
+ * If the scoped name is an IDL constant, it may be used in an
+ * array dim, a string bound, or a sequence bound. If so, it
+ * must be unsigned and > 0. We assign the constant's value
+ * and type to the expression created here so we can check
+ * them later.
+ */
+ if (d != 0 && d->node_type () == AST_Decl::NT_const)
+ {
+ AST_Constant *c = AST_Constant::narrow_from_decl (d);
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (c->constant_value (),
+ c->et ());
+
+ tao_yyvsp[0].idlist->destroy ();
+ delete tao_yyvsp[0].idlist;
+ tao_yyvsp[0].idlist = 0;
+ }
+ else
+ {
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].idlist);
+ }
+ }
+ break;
+
+ case 151:
+
+ {
+// | literal
+// | '(' const_expr ')'
+ tao_yyval.exval = tao_yyvsp[-1].exval;
+ }
+ break;
+
+ case 152:
+
+ {
+// literal : IDL_INTEGER_LITERAL
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].ival);
+ }
+ break;
+
+ case 153:
+
+ {
+// | IDL_UINTEGER_LITERAL
+ tao_yyval.exval =
+ idl_global->gen ()->create_expr (tao_yyvsp[0].uival,
+ AST_Expression::EV_ulonglong);
+ }
+ break;
+
+ case 154:
+
+ {
+// | IDL_STRING_LITERAL
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].sval);
+ tao_yyvsp[0].sval->destroy ();
+ delete tao_yyvsp[0].sval;
+ tao_yyvsp[0].sval = 0;
+ }
+ break;
+
+ case 155:
+
+ {
+// | IDL_WSTRING_LITERAL
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].wsval);
+ }
+ break;
+
+ case 156:
+
+ {
+// | IDL_CHARACTER_LITERAL
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].cval);
+ }
+ break;
+
+ case 157:
+
+ {
+// | IDL_WCHAR_LITERAL
+ ACE_OutputCDR::from_wchar wc (tao_yyvsp[0].wcval);
+ tao_yyval.exval = idl_global->gen ()->create_expr (wc);
+ }
+ break;
+
+ case 158:
+
+ {
+// | IDL_FLOATING_PT_LITERAL
+ tao_yyval.exval = idl_global->gen ()->create_expr (tao_yyvsp[0].dval);
+ }
+ break;
+
+ case 159:
+
+ {
+// | IDL_TRUETOK
+ tao_yyval.exval = idl_global->gen ()->create_expr (true);
+ }
+ break;
+
+ case 160:
+
+ {
+// | IDL_FALSETOK
+ tao_yyval.exval = idl_global->gen ()->create_expr (false);
+ }
+ break;
+
+ case 161:
+
+ {
+// positive_int_expr : const_expr
+ int good_expression = 1;
+ tao_yyvsp[0].exval->evaluate (AST_Expression::EK_positive_int);
+ AST_Expression::AST_ExprValue *ev = tao_yyvsp[0].exval->ev ();
+
+ /*
+ * If const_expr is an enum value (AST_EnumVal inherits from
+ * AST_Constant), the AST_ExprValue will probably not be set,
+ * but there's no need to check anyway
+ */
+ if (ev != 0)
+ {
+ switch (ev->et)
+ {
+ case AST_Expression::EV_ushort:
+ if (ev->u.usval == 0)
+ {
+ good_expression = 0;
+ }
+
+ break;
+ case AST_Expression::EV_ulong:
+ if (ev->u.ulval == 0)
+ {
+ good_expression = 0;
+ }
+
+ break;
+#if !defined (ACE_LACKS_LONGLONG_T)
+ case AST_Expression::EV_ulonglong:
+ if (ev->u.ullval == 0)
+ {
+ good_expression = 0;
+ }
+
+ break;
+#endif
+ case AST_Expression::EV_octet:
+ if (ev->u.oval == 0)
+ {
+ good_expression = 0;
+ }
+
+ break;
+ case AST_Expression::EV_bool:
+ if (ev->u.bval == 0)
+ {
+ good_expression = 0;
+ }
+
+ break;
+ default:
+ good_expression = 0;
+ break;
+ }
+ }
+
+ if (good_expression)
+ {
+ tao_yyval.exval = tao_yyvsp[0].exval;
+ }
+ else
+ {
+ idl_global->err ()->syntax_error (idl_global->parse_state ());
+ }
+ }
+ break;
+
+ case 162:
+
+ {
+// type_dcl : IDL_TYPEDEF
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
+ }
+ break;
+
+ case 163:
+
+ {
+// type_declarator
+ tao_yyval.ival = 0;
+ }
+ break;
+
+ case 164:
+
+ {
+// | struct_type
+ tao_yyval.ival = 0;
+ }
+ break;
+
+ case 165:
+
+ {
+// | union_type
+ tao_yyval.ival = 0;
+ }
+ break;
+
+ case 166:
+
+ {
+// | enum_type
+ tao_yyval.ival = 0;
+ }
+ break;
+
+ case 167:
+
+ {
+// | IDL_NATIVE simple_declarator
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Native *node = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_NativeSeen);
+
+ /*
+ * Create a node representing a Native and add it to its
+ * enclosing scope
+ */
+ if (s != 0)
+ {
+ node =
+ idl_global->gen ()->create_native (
+ tao_yyvsp[0].deval->name ()
+ );
+ /*
+ * Add it to its defining scope
+ */
+ (void) s->fe_add_native (node);
+ }
+
+ tao_yyvsp[0].deval->destroy ();
+ delete tao_yyvsp[0].deval;
+ tao_yyvsp[0].deval = 0;
+ }
+ break;
+
+ case 168:
+
+ {
+// | constructed_forward_type_spec
+ tao_yyval.ival = 0;
+ }
+ break;
+
+ case 169:
+
+ {
+// type_declarator : type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeSpecSeen);
+ }
+ break;
+
+ case 170:
+
+ {
+// at_least_one_declarator
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ FE_Declarator *d = 0;
+ AST_Typedef *t = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_DeclaratorsSeen);
+
+ /*
+ * Create a list of type renamings. Add them to the
+ * enclosing scope
+ */
+ if (s != 0 && tao_yyvsp[-2].dcval != 0 && tao_yyvsp[0].dlval != 0)
+ {
+ for (UTL_DecllistActiveIterator l (tao_yyvsp[0].dlval);
+ !l.is_done ();
+ l.next ())
+ {
+ d = l.item ();
+
+ if (d == 0)
+ {
+ continue;
+ }
+
+ AST_Type * tp = d->compose (tao_yyvsp[-2].dcval);
+
+ if (tp == 0)
+ {
+ continue;
+ }
+
+ if (AST_Decl::NT_except == tp->node_type ())
+ {
+ idl_global->err ()->not_a_type (tp);
+ continue;
+ }
+
+ t = idl_global->gen ()->create_typedef (tp,
+ d->name (),
+ s->is_local (),
+ s->is_abstract ());
+ (void) s->fe_add_typedef (t);
+ }
+
+ // This FE_Declarator class isn't destroyed with the AST.
+ tao_yyvsp[0].dlval->destroy ();
+ delete tao_yyvsp[0].dlval;
+ tao_yyvsp[0].dlval = 0;
+ }
+ }
+ break;
+
+ case 173:
+
+ {
+// simple_type_spec : base_type_spec
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 175:
+
+ {
+// | template_type_spec
+// | scoped_name
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = 0;
+
+ if (s != 0)
+ {
+ d = s->lookup_by_name (tao_yyvsp[0].idlist,
+ true);
+ }
+
+ if (d == 0)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[0].idlist);
+ }
+ else
+ {
+ d->last_referenced_as (tao_yyvsp[0].idlist);
+ }
+
+
+ tao_yyval.dcval = d;
+ }
+ break;
+
+ case 192:
+
+ {
+// at_least_one_declarator : declarator declarators
+ ACE_NEW_RETURN (tao_yyval.dlval,
+ UTL_DeclList (tao_yyvsp[-1].deval,
+ tao_yyvsp[0].dlval),
+ 1);
+ }
+ break;
+
+ case 193:
+
+ {
+// declarators : declarators ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
+ }
+ break;
+
+ case 194:
+
+ {
+// declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
+
+ if (tao_yyvsp[-3].dlval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.dlval,
+ UTL_DeclList (tao_yyvsp[0].deval,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_DeclList *dl = 0;
+ ACE_NEW_RETURN (dl,
+ UTL_DeclList (tao_yyvsp[0].deval,
+ 0),
+ 1);
+ tao_yyvsp[-3].dlval->nconc (dl);
+ tao_yyval.dlval = tao_yyvsp[-3].dlval;
+ }
+ }
+ break;
+
+ case 195:
+
+ {
+/* | EMPTY */
+ tao_yyval.dlval = 0;
+ }
+ break;
+
+ case 198:
+
+ {
+// at_least_one_simple_declarator : simple_declarator simple_declarators
+ ACE_NEW_RETURN (tao_yyval.dlval,
+ UTL_DeclList (tao_yyvsp[-1].deval,
+ tao_yyvsp[0].dlval),
+ 1);
+ }
+ break;
+
+ case 199:
+
+ {
+// simple_declarators : simple_declarators ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
+ }
+ break;
+
+ case 200:
+
+ {
+// simple_declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
+
+ if (tao_yyvsp[-3].dlval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.dlval,
+ UTL_DeclList (tao_yyvsp[0].deval,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_DeclList *dl = 0;
+ ACE_NEW_RETURN (dl,
+ UTL_DeclList (tao_yyvsp[0].deval,
+ 0),
+ 1);
+ tao_yyvsp[-3].dlval->nconc (dl);
+ tao_yyval.dlval = tao_yyvsp[-3].dlval;
+ }
+ }
+ break;
+
+ case 201:
+
+ {
+/* | EMPTY */
+ tao_yyval.dlval = 0;
+ }
+ break;
+
+ case 202:
+
+ {
+// simple_declarator : id
+ UTL_ScopedName *sn = 0;
+ ACE_NEW_RETURN (sn,
+ UTL_ScopedName (tao_yyvsp[0].idval,
+ 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.deval,
+ FE_Declarator (sn,
+ FE_Declarator::FD_simple,
+ 0),
+ 1);
+ }
+ break;
+
+ case 203:
+
+ {
+// complex_declarator : array_declarator
+ UTL_ScopedName *sn = 0;
+ ACE_NEW_RETURN (sn,
+ UTL_ScopedName (
+ tao_yyvsp[0].dcval->local_name ()->copy (),
+ 0
+ ),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.deval,
+ FE_Declarator (sn,
+ FE_Declarator::FD_complex,
+ tao_yyvsp[0].dcval),
+ 1);
+ }
+ break;
+
+ case 206:
+
+ {
+// signed_int : IDL_LONG
+ tao_yyval.etval = AST_Expression::EV_long;
+ }
+ break;
+
+ case 207:
+
+ {
+// | IDL_LONG IDL_LONG
+ tao_yyval.etval = AST_Expression::EV_longlong;
+ }
+ break;
+
+ case 208:
+
+ {
+// | IDL_SHORT
+ tao_yyval.etval = AST_Expression::EV_short;
+ }
+ break;
+
+ case 209:
+
+ {
+// unsigned_int : IDL_UNSIGNED IDL_LONG
+ tao_yyval.etval = AST_Expression::EV_ulong;
+ }
+ break;
+
+ case 210:
+
+ {
+// | IDL_UNSIGNED IDL_LONG IDL_LONG
+ tao_yyval.etval = AST_Expression::EV_ulonglong;
+ }
+ break;
+
+ case 211:
+
+ {
+// | IDL_UNSIGNED IDL_SHORT
+ tao_yyval.etval = AST_Expression::EV_ushort;
+ }
+ break;
+
+ case 212:
+
+ {
+// floating_pt_type : IDL_DOUBLE
+ tao_yyval.etval = AST_Expression::EV_double;
+ }
+ break;
+
+ case 213:
+
+ {
+// | IDL_FLOAT
+ tao_yyval.etval = AST_Expression::EV_float;
+ }
+ break;
+
+ case 214:
+
+ {
+// | IDL_LONG IDL_DOUBLE
+ tao_yyval.etval = AST_Expression::EV_longdouble;
+ }
+ break;
+
+ case 215:
+
+ {
+// fixed_type : IDL_FIXED
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("error in %s line %d\n"),
+ idl_global->filename ()->get_string (),
+ idl_global->lineno ()));
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
+ ACE_TEXT (" fixed types yet\n")));
+ }
+ break;
+
+ case 216:
+
+ {
+// char_type : IDL_CHAR
+ tao_yyval.etval = AST_Expression::EV_char;
+ }
+ break;
+
+ case 217:
+
+ {
+// | IDL_WCHAR
+ tao_yyval.etval = AST_Expression::EV_wchar;
+ }
+ break;
+
+ case 218:
+
+ {
+// octet_type : IDL_OCTET
+ tao_yyval.etval = AST_Expression::EV_octet;
+ }
+ break;
+
+ case 219:
+
+ {
+// boolean_type : IDL_BOOLEAN
+ tao_yyval.etval = AST_Expression::EV_bool;
+ }
+ break;
+
+ case 220:
+
+ {
+// any_type : IDL_ANY
+ tao_yyval.etval = AST_Expression::EV_any;
+ }
+ break;
+
+ case 221:
+
+ {
+// object_type : IDL_OBJECT
+ tao_yyval.etval = AST_Expression::EV_object;
+ }
+ break;
+
+ case 222:
+
+ {
+// struct_decl : IDL_STRUCT
+ idl_global->set_parse_state (IDL_GlobalData::PS_StructSeen);
+ }
+ break;
+
+ case 223:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_StructIDSeen);
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 224:
+
+ {
+// struct_type : struct_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_Structure *d = 0;
+
+ /*
+ * Create a node representing a struct declaration. Add it
+ * to the enclosing scope
+ */
+ if (s != 0)
+ {
+ d =
+ idl_global->gen ()->create_structure (
+ &n,
+ s->is_local (),
+ s->is_abstract ()
+ );
+ AST_Structure::fwd_redefinition_helper (d,
+ s);
+ (void) s->fe_add_structure (d);
+ }
+
+ /*
+ * Push the scope of the struct on the scopes stack.
+ */
+ idl_global->scopes ().push (d);
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 225:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StructSqSeen);
+ }
+ break;
+
+ case 226:
+
+ {
+// at_least_one_member
+ idl_global->set_parse_state (IDL_GlobalData::PS_StructBodySeen);
+ }
+ break;
+
+ case 227:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StructQsSeen);
+
+ /*
+ * Done with this struct. Pop its scope off the scopes stack.
+ */
+ tao_yyval.dcval = AST_Structure::narrow_from_scope (
+ idl_global->scopes ().top_non_null ()
+ );
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 231:
+
+ {
+// member :
+ /* is $0 to member_i */
+ tao_yyval.vival = AST_Field::vis_NA;
+ }
+ break;
+
+ case 233:
+
+ {
+// member_i : type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_MemberTypeSeen);
+ }
+ break;
+
+ case 234:
+
+ {
+// at_least_one_declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsSeen);
+ }
+ break;
+
+ case 235:
+
+ {
+// ';'
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ FE_Declarator *d = 0;
+ AST_Field *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsCompleted);
+
+ /*
+ * Check for illegal recursive use of type.
+ */
+ if (tao_yyvsp[-4].dcval != 0
+ && AST_illegal_recursive_type (tao_yyvsp[-4].dcval))
+ {
+ idl_global->err ()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
+ tao_yyvsp[-4].dcval);
+ }
+ /*
+ * Create a node representing a struct or exception member
+ * Add it to the enclosing scope.
+ */
+ else if (s != 0
+ && tao_yyvsp[-4].dcval != 0
+ && tao_yyvsp[-2].dlval != 0)
+ {
+ for (UTL_DecllistActiveIterator l (tao_yyvsp[-2].dlval);
+ !l.is_done ();
+ l.next ())
+ {
+ d = l.item ();
+
+ if (d == 0)
+ {
+ continue;
+ }
+
+ AST_Type *tp = d->compose (tao_yyvsp[-4].dcval);
+
+ if (tp == 0)
+ {
+ continue;
+ }
+
+ /* $0 denotes Visibility, must be on yacc reduction stack. */
+ f =
+ idl_global->gen ()->create_field (
+ tp,
+ d->name (),
+ tao_yyvsp[-5].vival
+ );
+ (void) s->fe_add_field (f);
+ }
+ }
+
+ tao_yyvsp[-2].dlval->destroy ();
+ delete tao_yyvsp[-2].dlval;
+ tao_yyvsp[-2].dlval = 0;
+ }
+ break;
+
+ case 236:
+
+ {
+// | error
+ idl_global->err()->syntax_error (idl_global->parse_state ());
+ }
+ break;
+
+ case 237:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ tao_yyerrok;
+ }
+ break;
+
+ case 238:
+
+ {
+// union_decl : IDL_UNION
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionSeen);
+ }
+ break;
+
+ case 239:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionIDSeen);
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 240:
+
+ {
+// union_type : union_decl IDL_SWITCH
+ idl_global->set_parse_state (IDL_GlobalData::PS_SwitchSeen);
+ }
+ break;
+
+ case 241:
+
+ {
+// '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_SwitchOpenParSeen);
+ }
+ break;
+
+ case 242:
+
+ {
+// switch_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SwitchTypeSeen);
+ }
+ break;
+
+ case 243:
+
+ {
+// ')'
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[-7].idval,
+ 0);
+ AST_Union *u = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_SwitchCloseParSeen);
+
+ /*
+ * Create a node representing a union. Add it to its enclosing
+ * scope.
+ */
+ if (tao_yyvsp[-2].dcval != 0
+ && s != 0)
+ {
+ AST_ConcreteType *tp =
+ AST_ConcreteType::narrow_from_decl (tao_yyvsp[-2].dcval);
+
+ if (tp == 0)
+ {
+ idl_global->err ()->not_a_type (tao_yyvsp[-2].dcval);
+ }
+ else
+ {
+ u = idl_global->gen ()->create_union (tp,
+ &n,
+ s->is_local (),
+ s->is_abstract ());
+ }
+
+ AST_Structure *st = AST_Structure::narrow_from_decl (u);
+ AST_Structure::fwd_redefinition_helper (st,
+ s);
+ u = AST_Union::narrow_from_decl (st);
+ (void) s->fe_add_union (u);
+ }
+
+ /*
+ * Push the scope of the union on the scopes stack
+ */
+ idl_global->scopes ().push (u);
+
+ tao_yyvsp[-7].idval->destroy ();
+ delete tao_yyvsp[-7].idval;
+ tao_yyvsp[-7].idval = 0;
+ }
+ break;
+
+ case 244:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionSqSeen);
+ }
+ break;
+
+ case 245:
+
+ {
+// at_least_one_case_branch
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionBodySeen);
+ }
+ break;
+
+ case 246:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionQsSeen);
+
+ /*
+ * Done with this union. Pop its scope from the scopes stack.
+ */
+ tao_yyval.dcval = AST_Union::narrow_from_scope (
+ idl_global->scopes ().top_non_null ()
+ );
+
+ if (tao_yyval.dcval != 0)
+ {
+ idl_global->scopes ().pop ();
+ }
+ }
+ break;
+
+ case 247:
+
+ {
+// switch_type_spec : integer_type
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 248:
+
+ {
+// | char_type
+ /* wchars are not allowed. */
+ if (tao_yyvsp[0].etval == AST_Expression::EV_wchar)
+ {
+ idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
+ }
+
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 249:
+
+ {
+// | octet_type
+ /* octets are not allowed. */
+ idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 250:
+
+ {
+// | boolean_type
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 252:
+
+ {
+// | enum_type
+// | scoped_name
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = 0;
+ AST_PredefinedType *p = 0;
+ AST_Typedef *t = 0;
+ bool found = false;
+
+ /*
+ * The discriminator is a scoped name. Try to resolve to
+ * one of the scalar types or to an enum. Thread through
+ * typedef's to arrive at the base type at the end of the
+ * chain.
+ */
+ d = s->lookup_by_name (tao_yyvsp[0].idlist,
+ true);
+
+ if (s != 0 && d != 0)
+ {
+ while (!found)
+ {
+ switch (d->node_type ())
+ {
+ case AST_Decl::NT_enum:
+ tao_yyval.dcval = d;
+ found = true;
+ break;
+ case AST_Decl::NT_pre_defined:
+ p = AST_PredefinedType::narrow_from_decl (d);
+
+ if (p != 0)
+ {
+ switch (p->pt ())
+ {
+ case AST_PredefinedType::PT_long:
+ case AST_PredefinedType::PT_ulong:
+ case AST_PredefinedType::PT_longlong:
+ case AST_PredefinedType::PT_ulonglong:
+ case AST_PredefinedType::PT_short:
+ case AST_PredefinedType::PT_ushort:
+ case AST_PredefinedType::PT_char:
+ case AST_PredefinedType::PT_boolean:
+ tao_yyval.dcval = p;
+ found = true;
+ break;
+ case AST_PredefinedType::PT_wchar:
+ case AST_PredefinedType::PT_octet:
+ /* octets and wchars are not allowed */
+ idl_global->err ()->error0 (
+ UTL_Error::EIDL_DISC_TYPE
+ );
+ tao_yyval.dcval = 0;
+ found = true;
+ break;
+ default:
+ tao_yyval.dcval = 0;
+ found = true;
+ break;
+ }
+ }
+ else
+ {
+ tao_yyval.dcval = 0;
+ found = true;
+ }
+
+ break;
+ case AST_Decl::NT_typedef:
+ t = AST_Typedef::narrow_from_decl (d);
+
+ if (t != 0)
+ {
+ d = t->base_type ();
+ }
+
+ break;
+ default:
+ tao_yyval.dcval = 0;
+ found = true;
+ break;
+ }
+ }
+ }
+ else
+ {
+ tao_yyval.dcval = 0;
+ }
+
+ if (tao_yyval.dcval == 0)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[0].idlist);
+
+ tao_yyvsp[0].idlist->destroy ();
+ delete tao_yyvsp[0].idlist;
+ tao_yyvsp[0].idlist = 0;
+
+ /* If we don't return here, we'll crash later.*/
+ return 1;
+ }
+
+ tao_yyvsp[0].idlist->destroy ();
+ delete tao_yyvsp[0].idlist;
+ tao_yyvsp[0].idlist = 0;
+ }
+ break;
+
+ case 256:
+
+ {
+// case_branch : at_least_one_case_label
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionLabelSeen);
+ }
+ break;
+
+ case 257:
+
+ {
+// element_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemSeen);
+ }
+ break;
+
+ case 258:
+
+ {
+// ';'
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_UnionBranch *b = 0;
+ AST_Field *f = tao_yyvsp[-2].ffval;
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemCompleted);
+
+ /*
+ * Create several nodes representing branches of a union.
+ * Add them to the enclosing scope (the union scope)
+ */
+ if (s != 0
+ && tao_yyvsp[-4].llval != 0
+ && tao_yyvsp[-2].ffval != 0)
+ {
+ b =
+ idl_global->gen ()->create_union_branch (
+ tao_yyvsp[-4].llval,
+ f->field_type (),
+ f->name ()
+ );
+ (void) s->fe_add_union_branch (b);
+
+ // f has passed its field type to the union branch,
+ // but the rest still needs to be cleaned up.
+ f->AST_Decl::destroy ();
+ delete f;
+ f = 0;
+ }
+ }
+ break;
+
+ case 259:
+
+ {
+// | error
+ idl_global->err()->syntax_error (idl_global->parse_state());
+ }
+ break;
+
+ case 260:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ tao_yyerrok;
+ }
+ break;
+
+ case 261:
+
+ {
+// at_least_one_case_label : case_label case_labels
+ ACE_NEW_RETURN (tao_yyval.llval,
+ UTL_LabelList (tao_yyvsp[-1].ulval,
+ tao_yyvsp[0].llval),
+ 1);
+ }
+ break;
+
+ case 262:
+
+ {
+// case_labels : case_labels case_label
+ if (tao_yyvsp[-1].llval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.llval,
+ UTL_LabelList (tao_yyvsp[0].ulval,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_LabelList *ll = 0;
+ ACE_NEW_RETURN (ll,
+ UTL_LabelList (tao_yyvsp[0].ulval,
+ 0),
+ 1);
+ tao_yyvsp[-1].llval->nconc (ll);
+ tao_yyval.llval = tao_yyvsp[-1].llval;
+ }
+ }
+ break;
+
+ case 263:
+
+ {
+/* | EMPTY */
+ tao_yyval.llval = 0;
+ }
+ break;
+
+ case 264:
+
+ {
+// case_label : IDL_DEFAULT
+ idl_global->set_parse_state (IDL_GlobalData::PS_DefaultSeen);
+ }
+ break;
+
+ case 265:
+
+ {
+// ':'
+ idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
+
+ tao_yyval.ulval = idl_global->gen ()->create_union_label (
+ AST_UnionLabel::UL_default,
+ 0
+ );
+ }
+ break;
+
+ case 266:
+
+ {
+// | IDL_CASE
+ idl_global->set_parse_state (IDL_GlobalData::PS_CaseSeen);
+ }
+ break;
+
+ case 267:
+
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_LabelExprSeen);
+ }
+ break;
+
+ case 268:
+
+ {
+// const_expr
+ idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
+
+ tao_yyval.ulval = idl_global->gen()->create_union_label (
+ AST_UnionLabel::UL_label,
+ tao_yyvsp[-2].exval
+ );
+ }
+ break;
+
+ case 269:
+
+ {
+// element_spec : type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemTypeSeen);
+ }
+ break;
+
+ case 270:
+
+ {
+// declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemDeclSeen);
+
+ /*
+ * Check for illegal recursive use of type
+ */
+ if (tao_yyvsp[-2].dcval != 0
+ && AST_illegal_recursive_type (tao_yyvsp[-2].dcval))
+ {
+ idl_global->err()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
+ tao_yyvsp[-2].dcval);
+
+ tao_yyval.ffval = 0;
+ }
+ /*
+ * Create a field in a union branch
+ */
+ else if (tao_yyvsp[-2].dcval == 0
+ || tao_yyvsp[0].deval == 0)
+ {
+ tao_yyval.ffval = 0;
+ }
+ else
+ {
+ AST_Type *tp = tao_yyvsp[0].deval->compose (tao_yyvsp[-2].dcval);
+
+ if (tp == 0)
+ {
+ tao_yyval.ffval = 0;
+ }
+ else
+ {
+ tao_yyval.ffval = idl_global->gen ()->create_field (
+ tp,
+ tao_yyvsp[0].deval->name ()
+ );
+ }
+
+ tao_yyvsp[0].deval->destroy ();
+ delete tao_yyvsp[0].deval;
+ tao_yyvsp[0].deval = 0;
+ }
+ }
+ break;
+
+ case 271:
+
+ {
+// struct_forward_type : struct_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_StructureFwd *d = 0;
+
+ /*
+ * Create a node representing a forward declaration of a struct.
+ */
+ if (s != 0)
+ {
+ d = idl_global->gen ()->create_structure_fwd (&n);
+ (void) s->fe_add_structure_fwd (d);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 272:
+
+ {
+// union_forward_type : union_decl
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_UnionFwd *u = 0;
+
+ /*
+ * Create a node representing a forward declaration of a union.
+ */
+ if (s != 0)
+ {
+ u = idl_global->gen ()->create_union_fwd (&n);
+ (void) s->fe_add_union_fwd (u);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 273:
+
+ {
+// enum_type : IDL_ENUM
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumSeen);
+ }
+ break;
+
+ case 274:
+
+ {
+// id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_Enum *e = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumIDSeen);
+
+ /*
+ * Create a node representing an enum and add it to its
+ * enclosing scope.
+ */
+ if (s != 0)
+ {
+ e = idl_global->gen ()->create_enum (&n,
+ s->is_local (),
+ s->is_abstract ());
+ /*
+ * Add it to its defining scope
+ */
+ (void) s->fe_add_enum (e);
+ }
+
+ /*
+ * Push the enum scope on the scopes stack.
+ */
+ idl_global->scopes ().push (e);
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 275:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumSqSeen);
+ }
+ break;
+
+ case 276:
+
+ {
+// at_least_one_enumerator
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumBodySeen);
+ }
+ break;
+
+ case 277:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumQsSeen);
+
+ /*
+ * Done with this enum. Pop its scope from the scopes stack.
+ */
+ if (idl_global->scopes ().top () == 0)
+ {
+ tao_yyval.dcval = 0;
+ }
+ else
+ {
+ tao_yyval.dcval = AST_Enum::narrow_from_scope (
+ idl_global->scopes ().top_non_null ()
+ );
+ idl_global->scopes ().pop ();
+ }
+ }
+ break;
+
+ case 279:
+
+ {
+// enumerators : enumerators ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_EnumCommaSeen);
+ }
+ break;
+
+ case 282:
+
+ {
+// enumerator : IDENTIFIER
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ Identifier id (tao_yyvsp[0].strval);
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+ UTL_ScopedName n (&id,
+ 0);
+ AST_EnumVal *e = 0;
+ AST_Enum *c = 0;
+
+ /*
+ * Create a node representing one enumerator in an enum
+ * Add it to the enclosing scope (the enum scope)
+ */
+ if (s != 0
+ && s->scope_node_type () == AST_Decl::NT_enum)
+ {
+ c = AST_Enum::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ e = idl_global->gen ()->create_enum_val (
+ c->next_enum_val (),
+ &n
+ );
+ }
+
+ (void) s->fe_add_enum_val (e);
+ }
+ }
+ break;
+
+ case 283:
+
+ {
+// sequence_type_spec : seq_head ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceCommaSeen);
+ }
+ break;
+
+ case 284:
+
+ {
+// positive_int_expr
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceExprSeen);
+ }
+ break;
+
+ case 285:
+
+ {
+// '>'
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+
+ /*
+ * Remove sequence marker from scopes stack.
+ */
+ if (idl_global->scopes ().top() == 0)
+ {
+ idl_global->scopes ().pop ();
+ }
+
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+
+ /*
+ * Create a node representing a sequence
+ */
+ AST_Expression::AST_ExprValue *ev = 0;
+
+ if (tao_yyvsp[-2].exval != 0)
+ {
+ ev = tao_yyvsp[-2].exval->coerce (AST_Expression::EV_ulong);
+ }
+
+ if (0 == tao_yyvsp[-2].exval || 0 == ev)
+ {
+ idl_global->err ()->coercion_error (tao_yyvsp[-2].exval,
+ AST_Expression::EV_ulong);
+ tao_yyval.dcval = 0;
+ }
+ else if (0 == tao_yyvsp[-5].dcval)
+ {
+ tao_yyval.dcval = 0;
+ }
+ else
+ {
+ AST_Type *tp = AST_Type::narrow_from_decl (tao_yyvsp[-5].dcval);
+
+ if (0 == tp)
+ {
+ ; // Error will be caught in FE_Declarator.
+ }
+ else
+ {
+ Identifier id ("sequence");
+ UTL_ScopedName sn (&id,
+ 0);
+
+ tao_yyval.dcval =
+ idl_global->gen ()->create_sequence (
+ tao_yyvsp[-2].exval,
+ tp,
+ &sn,
+ s->is_local (),
+ s->is_abstract ()
+ );
+ }
+ }
+
+ delete ev;
+ ev = 0;
+ }
+ break;
+
+ case 286:
+
+ {
+// | seq_head '>'
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+
+ /*
+ * Remove sequence marker from scopes stack.
+ */
+ if (idl_global->scopes ().top () == 0)
+ {
+ idl_global->scopes ().pop ();
+ }
+
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+
+ /*
+ * Create a node representing a sequence.
+ */
+ if (tao_yyvsp[-1].dcval == 0)
+ {
+ tao_yyval.dcval = 0;
+ }
+ else
+ {
+ AST_Type *tp = AST_Type::narrow_from_decl (tao_yyvsp[-1].dcval);
+
+ if (tp == 0)
+ {
+ ; // Error will be caught in FE_Declarator.
+ }
+ else
+ {
+ Identifier id ("sequence");
+ UTL_ScopedName sn (&id,
+ 0);
+
+ tao_yyval.dcval =
+ idl_global->gen ()->create_sequence (
+ idl_global->gen ()->create_expr (
+ (idl_uns_long) 0,
+ AST_Expression::EV_ulong
+ ),
+ tp,
+ &sn,
+ s->is_local (),
+ s->is_abstract ()
+ );
+ }
+ }
+ }
+ break;
+
+ case 287:
+
+ {
+// seq_head : IDL_SEQUENCE
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSeen);
+
+ /*
+ * Push a sequence marker on scopes stack.
+ */
+ idl_global->scopes ().push (0);
+ }
+ break;
+
+ case 288:
+
+ {
+// '<'
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSqSeen);
+ }
+ break;
+
+ case 289:
+
+ {
+// simple_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SequenceTypeSeen);
+ tao_yyval.dcval = tao_yyvsp[0].dcval;
+ }
+ break;
+
+ case 290:
+
+ {
+// string_type_spec : string_head '<'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
+ }
+ break;
+
+ case 291:
+
+ {
+// positive_int_expr
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
+ }
+ break;
+
+ case 292:
+
+ {
+// '>'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
+
+ /*
+ * Create a node representing a string.
+ */
+ AST_Expression::AST_ExprValue *ev = 0;
+
+ if (tao_yyvsp[-2].exval != 0)
+ {
+ ev = tao_yyvsp[-2].exval->coerce (AST_Expression::EV_ulong);
+ }
+
+ if (0 == tao_yyvsp[-2].exval || 0 == ev)
+ {
+ idl_global->err ()->coercion_error (tao_yyvsp[-2].exval,
+ AST_Expression::EV_ulong);
+ tao_yyval.dcval = 0;
+ }
+ else
+ {
+ tao_yyval.dcval = idl_global->gen ()->create_string (tao_yyvsp[-2].exval);
+ /*
+ * Add this AST_String to the types defined in the global scope.
+ */
+ (void) idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_yyval.dcval
+ )
+ );
+ }
+
+ delete ev;
+ ev = 0;
+ }
+ break;
+
+ case 293:
+
+ {
+// | string_head
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
+ /*
+ * Create a node representing a string.
+ */
+ tao_yyval.dcval =
+ idl_global->gen ()->create_string (
+ idl_global->gen ()->create_expr ((idl_uns_long) 0,
+ AST_Expression::EV_ulong)
+ );
+ /*
+ * Add this AST_String to the types defined in the global scope.
+ */
+ (void) idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_yyval.dcval
+ )
+ );
+ }
+ break;
+
+ case 294:
+
+ {
+// string_head : IDL_STRING
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
+ }
+ break;
+
+ case 295:
+
+ {
+// wstring_type_spec : wstring_head '<'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
+ }
+ break;
+
+ case 296:
+
+ {
+// positive_int_expr
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
+ }
+ break;
+
+ case 297:
+
+ {
+// '>'
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
+
+ /*
+ * Create a node representing a string.
+ */
+ if (tao_yyvsp[-2].exval == 0
+ || tao_yyvsp[-2].exval->coerce (AST_Expression::EV_ulong) == 0)
+ {
+ idl_global->err ()->coercion_error (tao_yyvsp[-2].exval,
+ AST_Expression::EV_ulong);
+ tao_yyval.dcval = 0;
+ }
+ else
+ {
+ tao_yyval.dcval = idl_global->gen ()->create_wstring (tao_yyvsp[-2].exval);
+ /*
+ * Add this AST_String to the types defined in the global scope.
+ */
+ (void) idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (tao_yyval.dcval)
+ );
+ }
+ }
+ break;
+
+ case 298:
+
+ {
+// | wstring_head
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
+
+ /*
+ * Create a node representing a wstring.
+ */
+ tao_yyval.dcval =
+ idl_global->gen ()->create_wstring (
+ idl_global->gen ()->create_expr ((idl_uns_long) 0,
+ AST_Expression::EV_ulong)
+ );
+ /*
+ * Add this AST_String to the types defined in the global scope.
+ */
+ (void) idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (tao_yyval.dcval)
+ );
+ }
+ break;
+
+ case 299:
+
+ {
+// wstring_head : IDL_WSTRING
+ idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
+ }
+ break;
+
+ case 300:
+
+ {
+// array_declarator : id
+ idl_global->set_parse_state (IDL_GlobalData::PS_ArrayIDSeen);
+ }
+ break;
+
+ case 301:
+
+ {
+// at_least_one_array_dim
+ idl_global->set_parse_state (IDL_GlobalData::PS_ArrayCompleted);
+
+ /*
+ * Create a node representing an array.
+ */
+ if (tao_yyvsp[0].elval != 0)
+ {
+ UTL_ScopedName sn (tao_yyvsp[-2].idval,
+ 0);
+ tao_yyval.dcval =
+ idl_global->gen ()->create_array (
+ &sn,
+ tao_yyvsp[0].elval->length (),
+ tao_yyvsp[0].elval,
+ 0,
+ 0
+ );
+
+ tao_yyvsp[0].elval->destroy ();
+ delete tao_yyvsp[0].elval;
+ tao_yyvsp[0].elval = 0;
+
+ sn.destroy ();
+ }
+ }
+ break;
+
+ case 302:
+
+ {
+// at_least_one_array_dim : array_dim array_dims
+ ACE_NEW_RETURN (tao_yyval.elval,
+ UTL_ExprList (tao_yyvsp[-1].exval,
+ tao_yyvsp[0].elval),
+ 1);
+ }
+ break;
+
+ case 303:
+
+ {
+// array_dims : array_dims array_dim
+ if (tao_yyvsp[-1].elval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.elval,
+ UTL_ExprList (tao_yyvsp[0].exval,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_ExprList *el = 0;
+ ACE_NEW_RETURN (el,
+ UTL_ExprList (tao_yyvsp[0].exval,
+ 0),
+ 1);
+ tao_yyvsp[-1].elval->nconc (el);
+ tao_yyval.elval = tao_yyvsp[-1].elval;
+ }
+ }
+ break;
+
+ case 304:
+
+ {
+/* | EMPTY */
+ tao_yyval.elval = 0;
+ }
+ break;
+
+ case 305:
+
+ {
+// array_dim : '['
+ idl_global->set_parse_state (IDL_GlobalData::PS_DimSqSeen);
+ }
+ break;
+
+ case 306:
+
+ {
+// positive_int_expr
+ idl_global->set_parse_state (IDL_GlobalData::PS_DimExprSeen);
+ }
+ break;
+
+ case 307:
+
+ {
+// ']'
+ idl_global->set_parse_state (IDL_GlobalData::PS_DimQsSeen);
+
+ /*
+ * Array dimensions are expressions which must be coerced to
+ * positive integers.
+ */
+ AST_Expression::AST_ExprValue *ev = 0;
+
+ if (tao_yyvsp[-2].exval != 0)
+ {
+ ev = tao_yyvsp[-2].exval->coerce (AST_Expression::EV_ulong);
+ }
+
+ if (0 == tao_yyvsp[-2].exval || 0 == ev)
+ {
+ idl_global->err ()->coercion_error (tao_yyvsp[-2].exval,
+ AST_Expression::EV_ulong);
+ tao_yyval.exval = 0;
+ }
+ else
+ {
+ tao_yyval.exval = tao_yyvsp[-2].exval;
+ }
+
+ delete ev;
+ ev = 0;
+ }
+ break;
+
+ case 310:
+
+ {
+// attribute_readonly : IDL_READONLY
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrROSeen);
+ }
+ break;
+
+ case 311:
+
+ {
+// IDL_ATTRIBUTE
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
+ }
+ break;
+
+ case 312:
+
+ {
+// param_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
+ }
+ break;
+
+ case 313:
+
+ {
+// at_least_one_simple_declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
+ }
+ break;
+
+ case 314:
+
+ {
+// opt_raises
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Attribute *a = 0;
+ FE_Declarator *d = 0;
+
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
+
+ /*
+ * Create nodes representing attributes and add them to the
+ * enclosing scope.
+ */
+ if (s != 0
+ && tao_yyvsp[-4].dcval != 0
+ && tao_yyvsp[-2].dlval != 0)
+ {
+ for (UTL_DecllistActiveIterator l (tao_yyvsp[-2].dlval);
+ !l.is_done ();
+ l.next ())
+ {
+ d = l.item ();
+
+ if (d == 0)
+ {
+ continue;
+ }
+
+ AST_Type *tp = d->compose (tao_yyvsp[-4].dcval);
+
+ if (tp == 0)
+ {
+ continue;
+ }
+
+ a =
+ idl_global->gen ()->create_attribute (
+ true,
+ tp,
+ d->name (),
+ s->is_local (),
+ s->is_abstract ()
+ );
+
+ if (tao_yyvsp[0].nlval != 0)
+ {
+ (void) a->fe_add_get_exceptions (tao_yyvsp[0].nlval);
+
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+
+ (void) s->fe_add_attribute (a);
+ }
+ }
+
+ tao_yyvsp[-2].dlval->destroy ();
+ delete tao_yyvsp[-2].dlval;
+ tao_yyvsp[-2].dlval = 0;
+ }
+ break;
+
+ case 315:
+
+ {
+// attribute_readonly : IDL_ATTRIBUTE
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
+ }
+ break;
+
+ case 316:
+
+ {
+// param_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
+ }
+ break;
+
+ case 317:
+
+ {
+// at_least_one_simple_declarator
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
+ }
+ break;
+
+ case 318:
+
+ {
+// opt_getraises
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseCompleted);
+ }
+ break;
+
+ case 319:
+
+ {
+// opt_setraises
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Attribute *a = 0;
+ FE_Declarator *d = 0;
+
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseCompleted);
+
+ /*
+ * Create nodes representing attributes and add them to the
+ * enclosing scope.
+ */
+ if (s != 0
+ && tao_yyvsp[-6].dcval != 0
+ && tao_yyvsp[-4].dlval != 0)
+ {
+ for (UTL_DecllistActiveIterator l (tao_yyvsp[-4].dlval);
+ !l.is_done ();
+ l.next ())
+ {
+ d = l.item ();
+
+ if (d == 0)
+ {
+ continue;
+ }
+
+ AST_Type *tp = d->compose (tao_yyvsp[-6].dcval);
+
+ if (tp == 0)
+ {
+ continue;
+ }
+
+ a =
+ idl_global->gen ()->create_attribute (
+ false,
+ tp,
+ d->name (),
+ s->is_local (),
+ s->is_abstract ()
+ );
+
+ if (tao_yyvsp[-2].nlval != 0)
+ {
+ (void) a->fe_add_get_exceptions (tao_yyvsp[-2].nlval);
+
+ tao_yyvsp[-2].nlval->destroy ();
+ delete tao_yyvsp[-2].nlval;
+ tao_yyvsp[-2].nlval = 0;
+ }
+
+ if (tao_yyvsp[0].nlval != 0)
+ {
+ (void) a->fe_add_set_exceptions (tao_yyvsp[0].nlval);
+
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+
+ (void) s->fe_add_attribute (a);
+ }
+ }
+
+ tao_yyvsp[-4].dlval->destroy ();
+ delete tao_yyvsp[-4].dlval;
+ tao_yyvsp[-4].dlval = 0;
+ }
+ break;
+
+ case 320:
+
+ {
+// exception : IDL_EXCEPTION
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSeen);
+ }
+ break;
+
+ case 321:
+
+ {
+// id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_Exception *e = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptIDSeen);
+
+ /*
+ * Create a node representing an exception and add it to
+ * the enclosing scope.
+ */
+ if (s != 0)
+ {
+ e = idl_global->gen ()->create_exception (&n,
+ s->is_local (),
+ s->is_abstract ());
+ (void) s->fe_add_exception (e);
+ }
+
+ /*
+ * Push the exception scope on the scope stack.
+ */
+ idl_global->scopes ().push (e);
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 322:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSqSeen);
+ }
+ break;
+
+ case 323:
+
+ {
+// members
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptBodySeen);
+ }
+ break;
+
+ case 324:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptQsSeen);
+ /*
+ * Done with this exception. Pop its scope from the scope stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 325:
+
+ {
+// operation : opt_op_attribute op_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
+ }
+ break;
+
+ case 326:
+
+ {
+// IDENTIFIER
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ Identifier id (tao_yyvsp[0].strval);
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+
+ UTL_ScopedName n (&id,
+ 0);
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
+
+ /*
+ * Create a node representing an operation on an interface
+ * and add it to its enclosing scope.
+ */
+ if (s != 0 && tao_yyvsp[-2].dcval != 0)
+ {
+ AST_Type *tp =
+ AST_Type::narrow_from_decl (tao_yyvsp[-2].dcval);
+
+ if (tp == 0)
+ {
+ idl_global->err ()->not_a_type (tao_yyvsp[-2].dcval);
+ }
+ else if (tp->node_type () == AST_Decl::NT_except)
+ {
+ idl_global->err ()->not_a_type (tao_yyvsp[-2].dcval);
+ }
+ else
+ {
+ AST_Decl *d = ScopeAsDecl (s);
+ AST_Decl::NodeType nt = d->node_type ();
+ bool local =
+ s->is_local ()
+ || nt == AST_Decl::NT_valuetype
+ || nt == AST_Decl::NT_eventtype;
+ o =
+ idl_global->gen ()->create_operation (tp,
+ tao_yyvsp[-3].ofval,
+ &n,
+ local,
+ s->is_abstract ());
+ (void) s->fe_add_operation (o);
+ }
+ }
+
+ /*
+ * Push the operation scope onto the scopes stack.
+ */
+ idl_global->scopes ().push (o);
+ }
+ break;
+
+ case 327:
+
+ {
+// parameter_list
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
+ }
+ break;
+
+ case 328:
+
+ {
+// opt_raises
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
+ }
+ break;
+
+ case 329:
+
+ {
+// opt_context
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpCompleted);
+
+ /*
+ * Add exceptions and context to the operation.
+ */
+ if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
+ {
+ o = AST_Operation::narrow_from_scope (s);
+
+ if (tao_yyvsp[-2].nlval != 0 && o != 0)
+ {
+ (void) o->fe_add_exceptions (tao_yyvsp[-2].nlval);
+ }
+
+ if (tao_yyvsp[0].slval != 0)
+ {
+ (void) o->fe_add_context (tao_yyvsp[0].slval);
+ }
+ }
+
+ /*
+ * Done with this operation. Pop its scope from the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 330:
+
+ {
+// opt_op_attribute : IDL_ONEWAY
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
+ tao_yyval.ofval = AST_Operation::OP_oneway;
+ }
+ break;
+
+ case 331:
+
+ {
+// | IDL_IDEMPOTENT
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
+ tao_yyval.ofval = AST_Operation::OP_idempotent;
+ }
+ break;
+
+ case 332:
+
+ {
+/* | EMPTY */
+ tao_yyval.ofval = AST_Operation::OP_noflags;
+ }
+ break;
+
+ case 334:
+
+ {
+// op_type_spec : param_type_spec | IDL_VOID
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ AST_Expression::EV_void
+ );
+ }
+ break;
+
+ case 335:
+
+ {
+// init_decl : IDL_FACTORY
+ //@@ PS_FactorySeen?
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
+ }
+ break;
+
+ case 336:
+
+ {
+// IDENTIFIER
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+
+ if (s->is_abstract ())
+ {
+ //@@ Fire error
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("error in %s line %d:\n")
+ ACE_TEXT ("Abstract valuetype can't have a ")
+ ACE_TEXT ("factory construct.\n"),
+ idl_global->filename ()->get_string (),
+ idl_global->lineno ()));
+
+ idl_global->set_err_count (idl_global->err_count () + 1);
+ }
+
+ Identifier id (tao_yyvsp[0].strval);
+ ACE::strdelete (tao_yyvsp[0].strval);
+ tao_yyvsp[0].strval = 0;
+
+ UTL_ScopedName n (&id,
+ 0);
+ AST_Factory *factory = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
+
+ /*
+ * Create a node representing an factory construct
+ * and add it to its enclosing scope
+ */
+ if (s != 0)
+ {
+ factory = idl_global->gen ()->create_factory (&n);
+ (void) s->fe_add_factory (factory);
+ }
+
+ /*
+ * Push the operation scope onto the scopes stack.
+ */
+ idl_global->scopes ().push (factory);
+ }
+ break;
+
+ case 337:
+
+ {
+// init_parameter_list
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
+ }
+ break;
+
+ case 338:
+
+ {
+// opt_raises
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
+
+ if (tao_yyvsp[0].nlval != 0)
+ {
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Factory *f = AST_Factory::narrow_from_scope (s);
+ (void) f->fe_add_exceptions (tao_yyvsp[0].nlval);
+ }
+
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 339:
+
+ {
+// init_parameter_list : '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
+ }
+ break;
+
+ case 340:
+
+ {
+// ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
+ }
+ break;
+
+ case 341:
+
+ {
+// | '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
+ }
+ break;
+
+ case 342:
+
+ {
+// at_least_one_in_parameter ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
+ }
+ break;
+
+ case 344:
+
+ {
+// in_parameters : in_parameters ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
+ }
+ break;
+
+ case 347:
+
+ {
+// in_parameter : IDL_IN
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
+ }
+ break;
+
+ case 348:
+
+ {
+// param_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
+ }
+ break;
+
+ case 349:
+
+ {
+// declarator
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Argument *a = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
+
+ /*
+ * Create a node representing an argument to an operation
+ * Add it to the enclosing scope (the operation scope).
+ */
+ if (tao_yyvsp[-2].dcval != 0
+ && tao_yyvsp[0].deval != 0 &&
+ s != 0)
+ {
+ AST_Type *tp = tao_yyvsp[0].deval->compose (tao_yyvsp[-2].dcval);
+
+ if (tp != 0)
+ {
+ a = idl_global->gen ()->create_argument (
+ AST_Argument::dir_IN,
+ tp,
+ tao_yyvsp[0].deval->name ()
+ );
+
+ (void) s->fe_add_argument (a);
+ }
+ }
+
+ tao_yyvsp[0].deval->destroy ();
+ delete tao_yyvsp[0].deval;
+ tao_yyvsp[0].deval = 0;
+ }
+ break;
+
+ case 350:
+
+ {
+// parameter_list : '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
+ }
+ break;
+
+ case 351:
+
+ {
+// ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
+ }
+ break;
+
+ case 352:
+
+ {
+// | '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
+ }
+ break;
+
+ case 353:
+
+ {
+// at_least_one_parameter ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
+ }
+ break;
+
+ case 355:
+
+ {
+// parameters : parameters ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
+ }
+ break;
+
+ case 358:
+
+ {
+// parameter : direction
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
+ }
+ break;
+
+ case 359:
+
+ {
+// param_type_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
+ }
+ break;
+
+ case 360:
+
+ {
+// declarator
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Argument *a = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
+
+ /*
+ * Create a node representing an argument to an operation
+ * Add it to the enclosing scope (the operation scope).
+ */
+ if (tao_yyvsp[-2].dcval != 0
+ && tao_yyvsp[0].deval != 0
+ && s != 0)
+ {
+ AST_Type *tp = tao_yyvsp[0].deval->compose (tao_yyvsp[-2].dcval);
+
+ if (tp != 0)
+ {
+ if (!s->is_local () && tp->is_local ())
+ {
+ idl_global->err ()->local_remote_mismatch (tp, s);
+ }
+ else
+ {
+ a =
+ idl_global->gen ()->create_argument (
+ tao_yyvsp[-4].dival,
+ tp,
+ tao_yyvsp[0].deval->name ()
+ );
+ (void) s->fe_add_argument (a);
+ }
+ }
+ }
+
+ tao_yyvsp[0].deval->destroy ();
+ delete tao_yyvsp[0].deval;
+ tao_yyvsp[0].deval = 0;
+ }
+ break;
+
+ case 361:
+
+ {
+// param_type_spec : base_type_spec
+ tao_yyval.dcval =
+ idl_global->scopes ().bottom ()->lookup_primitive_type (
+ tao_yyvsp[0].etval
+ );
+ }
+ break;
+
+ case 364:
+
+ {
+// | string_type_spec
+// | wstring_type_spec
+// | scoped_name
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = 0;
+
+ if (s != 0)
+ {
+ d = s->lookup_by_name (tao_yyvsp[0].idlist,
+ true);
+ }
+
+ if (d == 0)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[0].idlist);
+ }
+ else
+ {
+ d->last_referenced_as (tao_yyvsp[0].idlist);
+ AST_Decl::NodeType nt = d->node_type ();
+
+ if (nt == AST_Decl::NT_struct_fwd
+ || nt == AST_Decl::NT_union_fwd)
+ {
+ if (! AST_Type::narrow_from_decl (d)->is_defined ())
+ {
+ idl_global->err ()->error1 (UTL_Error::EIDL_ILLEGAL_ADD,
+ d);
+
+ /* If we don't return here, we'll crash later.*/
+ return 1;
+ }
+ }
+ }
+
+
+ tao_yyval.dcval = d;
+ }
+ break;
+
+ case 365:
+
+ {
+// direction : IDL_IN
+ tao_yyval.dival = AST_Argument::dir_IN;
+ }
+ break;
+
+ case 366:
+
+ {
+// | IDL_OUT
+ tao_yyval.dival = AST_Argument::dir_OUT;
+ }
+ break;
+
+ case 367:
+
+ {
+// | IDL_INOUT
+ tao_yyval.dival = AST_Argument::dir_INOUT;
+ }
+ break;
+
+ case 368:
+
+ {
+// opt_raises : IDL_RAISES
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSeen);
+ }
+ break;
+
+ case 369:
+
+ {
+// '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSqSeen);
+ }
+ break;
+
+ case 370:
+
+ {
+// at_least_one_scoped_name ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseQsSeen);
+ tao_yyval.nlval = tao_yyvsp[-1].nlval;
+ }
+ break;
+
+ case 371:
+
+ {
+ tao_yyval.nlval = 0;
+/* | EMPTY */
+ }
+ break;
+
+ case 372:
+
+ {
+// opt_getraises : IDL_GETRAISES
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSeen);
+ }
+ break;
+
+ case 373:
+
+ {
+// '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSqSeen);
+ }
+ break;
+
+ case 374:
+
+ {
+// at_least_one_scoped_name ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseQsSeen);
+ tao_yyval.nlval = tao_yyvsp[-1].nlval;
+ }
+ break;
+
+ case 375:
+
+ {
+ tao_yyval.nlval = 0;
+/* | EMPTY */
+ }
+ break;
+
+ case 376:
+
+ {
+// opt_setraises : IDL_SETRAISES
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSeen);
+ }
+ break;
+
+ case 377:
+
+ {
+// '('
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSqSeen);
+ }
+ break;
+
+ case 378:
+
+ {
+// at_least_one_scoped_name ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseQsSeen);
+ tao_yyval.nlval = tao_yyvsp[-1].nlval;
+ }
+ break;
+
+ case 379:
+
+ {
+ tao_yyval.nlval = 0;
+/* | EMPTY */
+ }
+ break;
+
+ case 380:
+
+ {
+// opt_context : IDL_CONTEXT
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSeen);
+ }
+ break;
+
+ case 381:
+
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSqSeen);
+// '('
+ }
+ break;
+
+ case 382:
+
+ {
+// at_least_one_string_literal ')'
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpContextQsSeen);
+ tao_yyval.slval = tao_yyvsp[-1].slval;
+ }
+ break;
+
+ case 383:
+
+ {
+/* | EMPTY */
+ tao_yyval.slval = 0;
+ }
+ break;
+
+ case 384:
+
+ {
+// at_least_one_string_literal : IDL_STRING_LITERAL string_literals
+ ACE_NEW_RETURN (tao_yyval.slval,
+ UTL_StrList (tao_yyvsp[-1].sval,
+ tao_yyvsp[0].slval),
+ 1);
+ }
+ break;
+
+ case 385:
+
+ {
+// string_literals : string_literals ','
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpContextCommaSeen);
+ }
+ break;
+
+ case 386:
+
+ {
+// IDL_STRING_LITERAL
+ if (tao_yyvsp[-3].slval == 0)
+ {
+ ACE_NEW_RETURN (tao_yyval.slval,
+ UTL_StrList (tao_yyvsp[0].sval,
+ 0),
+ 1);
+ }
+ else
+ {
+ UTL_StrList *sl = 0;
+ ACE_NEW_RETURN (sl,
+ UTL_StrList (tao_yyvsp[0].sval,
+ 0),
+ 1);
+ tao_yyvsp[-3].slval->nconc (sl);
+ tao_yyval.slval = tao_yyvsp[-3].slval;
+ }
+ }
+ break;
+
+ case 387:
+
+ {
+/* | EMPTY */
+ tao_yyval.slval = 0;
+ }
+ break;
+
+ case 388:
+
+ {
+// typeid_dcl : IDL_TYPEID scoped_name IDL_STRING_LITERAL
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+
+ if (d == 0)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+ }
+ else
+ {
+ d->set_id_with_typeid (
+ tao_yyvsp[0].sval->get_string ()
+ );
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].sval->destroy ();
+ delete tao_yyvsp[0].sval;
+ tao_yyvsp[0].sval = 0;
+ }
+ break;
+
+ case 389:
+
+ {
+// typeprefix_dcl : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = ScopeAsDecl (s);
+
+ // If we are in a module, we want to avoid a lookup unless the
+ // typeprefix is to be applied to some other scope, since we
+ // might get a previous opening of the module, and the prefix
+ // of this opening would never get checked or set.
+ if (d->name ()->compare (tao_yyvsp[-1].idlist) != 0)
+ {
+ d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+ }
+
+ if (d == 0)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+ }
+ else
+ {
+ d->set_prefix_with_typeprefix (
+ tao_yyvsp[0].sval->get_string ()
+ );
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].sval->destroy ();
+ delete tao_yyvsp[0].sval;
+ tao_yyvsp[0].sval = 0;
+ }
+ break;
+
+ case 392:
+
+ {
+// component_forward_decl : IDL_COMPONENT id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_ComponentFwd *f = 0;
+ idl_global->set_parse_state (
+ IDL_GlobalData::PS_ComponentForwardSeen
+ );
+
+ /*
+ * Create a node representing a forward declaration of a
+ * component. Store it in the enclosing scope.
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_component_fwd (&n);
+ (void) s->fe_add_component_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 393:
+
+ {
+// component_decl : component_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Component *c = 0;
+
+ /*
+ * Make a new component node and add it to the enclosing scope.
+ */
+ if (s != 0 && tao_yyvsp[0].chval != 0)
+ {
+ c =
+ idl_global->gen ()->create_component (
+ tao_yyvsp[0].chval->name (),
+ tao_yyvsp[0].chval->base_component (),
+ tao_yyvsp[0].chval->supports (),
+ tao_yyvsp[0].chval->n_supports (),
+ tao_yyvsp[0].chval->supports_flat (),
+ tao_yyvsp[0].chval->n_supports_flat ()
+ );
+ AST_Interface *i = AST_Interface::narrow_from_decl (c);
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the component to its definition scope.
+ */
+ c = AST_Component::narrow_from_decl (i);
+ (void) s->fe_add_component (c);
+
+ // This FE_ComponentHeader class isn't destroyed with the AST.
+ tao_yyvsp[0].chval->destroy ();
+ delete tao_yyvsp[0].chval;
+ tao_yyvsp[0].chval = 0;
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (c);
+ }
+ break;
+
+ case 394:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentSqSeen);
+ }
+ break;
+
+ case 395:
+
+ {
+// component_exports
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentBodySeen);
+ }
+ break;
+
+ case 396:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentQsSeen);
+
+ /*
+ * Done with this component - pop it off the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 397:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentIDSeen);
+ }
+ break;
+
+ case 398:
+
+ {
+// component_inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+ }
+ break;
+
+ case 399:
+
+ {
+// supports_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
+
+ /*
+ * Create an AST representation of the information in the header
+ * part of a component.
+ */
+ UTL_ScopedName *n = 0;
+ ACE_NEW_RETURN (n,
+ UTL_ScopedName (tao_yyvsp[-4].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.chval,
+ FE_ComponentHeader (n,
+ tao_yyvsp[-2].idlist,
+ tao_yyvsp[0].nlval,
+ false),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+
+ if (0 != tao_yyvsp[-2].idlist)
+ {
+ tao_yyvsp[-2].idlist->destroy ();
+ delete tao_yyvsp[-2].idlist;
+ tao_yyvsp[-2].idlist = 0;
+ }
+ }
+ break;
+
+ case 400:
+
+ {
+// component_inheritance_spec : ':'
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
+ }
+ break;
+
+ case 401:
+
+ {
+// scoped_name
+ tao_yyval.idlist = tao_yyvsp[0].idlist;
+ }
+ break;
+
+ case 402:
+
+ {
+/* | EMPTY */
+ tao_yyval.idlist = 0;
+ }
+ break;
+
+ case 405:
+
+ {
+// component_export : provides_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
+ }
+ break;
+
+ case 406:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 407:
+
+ {
+// | uses_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
+ }
+ break;
+
+ case 408:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 409:
+
+ {
+// | emits_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_EmitsDeclSeen);
+ }
+ break;
+
+ case 410:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 411:
+
+ {
+// | publishes_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_PublishesDeclSeen);
+ }
+ break;
+
+ case 412:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 413:
+
+ {
+// | consumes_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConsumesDeclSeen);
+ }
+ break;
+
+ case 414:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 415:
+
+ {
+// | attribute
+ idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
+ }
+ break;
+
+ case 416:
+
+ {
+// ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 417:
+
+ {
+// provides_decl : IDL_PROVIDES interface_type id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Component *c = AST_Component::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+ if (0 == d)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else if (d->node_type () != AST_Decl::NT_interface)
+ {
+ // Nothing else but CORBA::Object can have
+ // this identifier.
+ if (ACE_OS::strcmp (d->local_name ()->get_string (),
+ "Object")
+ != 0)
+ {
+ idl_global->err ()->interface_expected (d);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ }
+
+ AST_Type *interface_type =
+ AST_Type::narrow_from_decl (d);
+
+ AST_Component::port_description pd;
+ pd.id = tao_yyvsp[0].idval;
+ pd.impl = interface_type;
+ c->provides ().enqueue_tail (pd);
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+ }
+ break;
+
+ case 418:
+
+ {
+// interface_type : scoped_name
+ // Lookups and checking are done where the 'interface_type'
+ // token is used, in 'provides_decl' and 'uses_decl'.
+ tao_yyval.idlist = tao_yyvsp[0].idlist;
+ }
+ break;
+
+ case 419:
+
+ {
+// | IDL_OBJECT
+ Identifier *corba_id = 0;
+ ACE_NEW_RETURN (corba_id,
+ Identifier ("Object"),
+ 1);
+ UTL_IdList *conc_name = 0;
+ ACE_NEW_RETURN (conc_name,
+ UTL_IdList (corba_id,
+ 0),
+ 1);
+ ACE_NEW_RETURN (corba_id,
+ Identifier ("CORBA"),
+ 1);
+ UTL_IdList *corba_name = 0;
+ ACE_NEW_RETURN (corba_name,
+ UTL_IdList (corba_id,
+ conc_name),
+ 1);
+ tao_yyval.idlist = corba_name;
+ }
+ break;
+
+ case 420:
+
+ {
+// uses_decl : IDL_USES opt_multiple interface_type id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+
+ if (0 == d)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else if (d->node_type () != AST_Decl::NT_interface)
+ {
+ if (ACE_OS::strcmp (d->local_name ()->get_string (),
+ "Object")
+ != 0)
+ {
+ idl_global->err ()->interface_expected (d);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ }
+
+ AST_Type *interface_type = AST_Type::narrow_from_decl (d);
+ AST_Component *c = AST_Component::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ AST_Component::port_description ud;
+ ud.id = tao_yyvsp[0].idval;
+ ud.impl = interface_type;
+ ud.is_multiple = tao_yyvsp[-2].bval;
+ c->uses ().enqueue_tail (ud);
+
+ if (ud.is_multiple == true
+ && !idl_global->using_ifr_backend ()
+ && !idl_global->ignore_idl3 ())
+ {
+ // These datatypes must be created in the
+ // front end so they can be looked up
+ // when compiling the generated executor IDL.
+ idl_global->create_uses_multiple_stuff (c, ud);
+ }
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+ }
+ break;
+
+ case 421:
+
+ {
+// opt_multiple : IDL_MULTIPLE
+ tao_yyval.bval = true;
+ }
+ break;
+
+ case 422:
+
+ {
+/* | EMPTY */
+ tao_yyval.bval = false;
+ }
+ break;
+
+ case 423:
+
+ {
+// emits_decl : IDL_EMITS scoped_name id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+
+ if (0 == d)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else if (d->node_type () != AST_Decl::NT_eventtype)
+ {
+ idl_global->err ()->eventtype_expected (d);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else
+ {
+ AST_Type *event_type = AST_Type::narrow_from_decl (d);
+ AST_Component *c = AST_Component::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ AST_Component::port_description pd;
+ pd.id = tao_yyvsp[0].idval;
+ pd.impl = event_type;
+ c->emits ().enqueue_tail (pd);
+ }
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+ }
+ break;
+
+ case 424:
+
+ {
+// publishes_decl : IDL_PUBLISHES scoped_name id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+
+ if (0 == d)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else if (d->node_type () != AST_Decl::NT_eventtype)
+ {
+ idl_global->err ()->eventtype_expected (d);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else
+ {
+ AST_Type *event_type = AST_Type::narrow_from_decl (d);
+ AST_Component *c = AST_Component::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ AST_Component::port_description pd;
+ pd.id = tao_yyvsp[0].idval;
+ pd.impl = event_type;
+ c->publishes ().enqueue_tail (pd);
+ }
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+ }
+ break;
+
+ case 425:
+
+ {
+// consumes_decl : IDL_CONSUMES scoped_name id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Decl *d = s->lookup_by_name (tao_yyvsp[-1].idlist,
+ true);
+
+ if (0 == d)
+ {
+ idl_global->err ()->lookup_error (tao_yyvsp[-1].idlist);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else if (d->node_type () != AST_Decl::NT_eventtype)
+ {
+ idl_global->err ()->eventtype_expected (d);
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ break;
+ }
+ else
+ {
+ AST_Type *event_type = AST_Type::narrow_from_decl (d);
+ AST_Component *c = AST_Component::narrow_from_scope (s);
+
+ if (c != 0)
+ {
+ AST_Component::port_description pd;
+ pd.id = tao_yyvsp[0].idval;
+ pd.impl = event_type;
+ c->consumes ().enqueue_tail (pd);
+ }
+ }
+
+ tao_yyvsp[-1].idlist->destroy ();
+ delete tao_yyvsp[-1].idlist;
+ tao_yyvsp[-1].idlist = 0;
+ }
+ break;
+
+ case 426:
+
+ {
+// home_decl : home_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Home *h = 0;
+
+ /*
+ * Make a new home node and add it to the enclosing scope.
+ */
+ if (s != 0 && tao_yyvsp[0].hhval != 0)
+ {
+ h =
+ idl_global->gen ()->create_home (
+ tao_yyvsp[0].hhval->name (),
+ tao_yyvsp[0].hhval->base_home (),
+ tao_yyvsp[0].hhval->managed_component (),
+ tao_yyvsp[0].hhval->primary_key (),
+ tao_yyvsp[0].hhval->supports (),
+ tao_yyvsp[0].hhval->n_supports (),
+ tao_yyvsp[0].hhval->supports_flat (),
+ tao_yyvsp[0].hhval->n_supports_flat ()
+ );
+ /*
+ * Add the home to its definition scope.
+ */
+ (void) s->fe_add_home (h);
+
+ // This FE_HomeHeader class isn't destroyed with the AST.
+ tao_yyvsp[0].hhval->destroy ();
+ delete tao_yyvsp[0].hhval;
+ tao_yyvsp[0].hhval = 0;
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (h);
+ }
+ break;
+
+ case 427:
+
+ {
+// home_body
+ /*
+ * Done with this component - pop it off the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 428:
+
+ {
+// home_header : IDL_HOME
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeSeen);
+ }
+ break;
+
+ case 429:
+
+ {
+// id
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeIDSeen);
+ }
+ break;
+
+ case 430:
+
+ {
+// home_inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+ }
+ break;
+
+ case 431:
+
+ {
+// supports_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
+ }
+ break;
+
+ case 432:
+
+ {
+// IDL_MANAGES
+ idl_global->set_parse_state (IDL_GlobalData::PS_ManagesSeen);
+ }
+ break;
+
+ case 433:
+
+ {
+// scoped_name
+ idl_global->set_parse_state (IDL_GlobalData::PS_ManagesIDSeen);
+ }
+ break;
+
+ case 434:
+
+ {
+// primary_key_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_PrimaryKeySpecSeen);
+
+ /*
+ * Create an AST representation of the information in the header
+ * part of a component home.
+ */
+ UTL_ScopedName *n = 0;
+ ACE_NEW_RETURN (n,
+ UTL_ScopedName (tao_yyvsp[-10].idval, 0),
+ 1);
+ ACE_NEW_RETURN (tao_yyval.hhval,
+ FE_HomeHeader (n,
+ tao_yyvsp[-8].idlist,
+ tao_yyvsp[-6].nlval,
+ tao_yyvsp[-2].idlist,
+ tao_yyvsp[0].idlist),
+ 1);
+
+ tao_yyvsp[-2].idlist->destroy ();
+ delete tao_yyvsp[-2].idlist;
+ tao_yyvsp[-2].idlist = 0;
+
+ if (0 != tao_yyvsp[-8].idlist)
+ {
+ tao_yyvsp[-8].idlist->destroy ();
+ delete tao_yyvsp[-8].idlist;
+ tao_yyvsp[-8].idlist = 0;
+ }
+
+ if (0 != tao_yyvsp[0].idlist)
+ {
+ tao_yyvsp[0].idlist->destroy ();
+ delete tao_yyvsp[0].idlist;
+ tao_yyvsp[0].idlist = 0;
+ }
+
+ if (0 != tao_yyvsp[-6].nlval)
+ {
+ tao_yyvsp[-6].nlval->destroy ();
+ delete tao_yyvsp[-6].nlval;
+ tao_yyvsp[-6].nlval = 0;
+ }
+ }
+ break;
+
+ case 435:
+
+ {
+// home_inheritance_spec ':'
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
+ }
+ break;
+
+ case 436:
+
+ {
+// scoped_name
+ tao_yyval.idlist = tao_yyvsp[0].idlist;
+ }
+ break;
+
+ case 437:
+
+ {
+/* | EMPTY */
+ tao_yyval.idlist = 0;
+ }
+ break;
+
+ case 438:
+
+ {
+// primary_key_spec : IDL_PRIMARYKEY scoped_name
+ tao_yyval.idlist = tao_yyvsp[0].idlist;
+ }
+ break;
+
+ case 439:
+
+ {
+/* | EMPTY */
+ tao_yyval.idlist = 0;
+ }
+ break;
+
+ case 440:
+
+ {
+// home_body : '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeSqSeen);
+ }
+ break;
+
+ case 441:
+
+ {
+// home_exports
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeBodySeen);
+ }
+ break;
+
+ case 442:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeQsSeen);
+ }
+ break;
+
+ case 446:
+
+ {
+// home_export : factory_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_FactoryDeclSeen);
+ }
+ break;
+
+ case 447:
+
+ {
+// | ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 448:
+
+ {
+// | finder_decl
+ idl_global->set_parse_state (IDL_GlobalData::PS_FinderDeclSeen);
+ }
+ break;
+
+ case 449:
+
+ {
+// | ';'
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ }
+ break;
+
+ case 450:
+
+ {
+// factory_decl : IDL_FACTORY id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
+
+ /*
+ * Create a node representing a factory operation
+ * and add it to the enclosing scope.
+ */
+ if (s != 0)
+ {
+ AST_Home *home = AST_Home::narrow_from_scope (s);
+ o =
+ idl_global->gen ()->create_operation (
+ home->managed_component (),
+ AST_Operation::OP_noflags,
+ &n,
+ false,
+ false
+ );
+ home->factories ().enqueue_tail (o);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ /*
+ * Push the operation scope onto the scopes stack.
+ */
+ idl_global->scopes ().push (o);
+ }
+ break;
+
+ case 451:
+
+ {
+// init_parameter_list
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
+ }
+ break;
+
+ case 452:
+
+ {
+// opt_raises
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
+
+ /*
+ * Add exceptions and context to the operation.
+ */
+ if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
+ {
+ o = AST_Operation::narrow_from_scope (s);
+
+ if (tao_yyvsp[0].nlval != 0 && o != 0)
+ {
+ (void) o->fe_add_exceptions (tao_yyvsp[0].nlval);
+ }
+ }
+
+ /*
+ * Done with this operation. Pop its scope from the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 453:
+
+ {
+// finder_decl : IDL_FINDER id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
+
+ /*
+ * Create a node representing a finder operation
+ * and add it to the enclosing scope.
+ */
+ if (s != 0)
+ {
+ AST_Home *home = AST_Home::narrow_from_scope (s);
+ o =
+ idl_global->gen ()->create_operation (
+ home->managed_component (),
+ AST_Operation::OP_noflags,
+ &n,
+ false,
+ false
+ );
+ home->finders ().enqueue_tail (o);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+
+ /*
+ * Push the operation scope onto the scopes stack.
+ */
+ idl_global->scopes ().push (o);
+ }
+ break;
+
+ case 454:
+
+ {
+// init_parameter_list
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
+ }
+ break;
+
+ case 455:
+
+ {
+// opt_raises
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_Operation *o = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
+
+ /*
+ * Add exceptions and context to the operation.
+ */
+ if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
+ {
+ o = AST_Operation::narrow_from_scope (s);
+
+ if (tao_yyvsp[0].nlval != 0 && o != 0)
+ {
+ (void) o->fe_add_exceptions (tao_yyvsp[0].nlval);
+ }
+ }
+
+ /*
+ * Done with this operation. Pop its scope from the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 461:
+
+ {
+// event_concrete_forward_decl : IDL_EVENTTYPE id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_EventTypeFwd *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
+
+ /*
+ * Create a node representing a forward declaration of an
+ * eventtype. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_eventtype_fwd (&n,
+ false);
+ (void) s->fe_add_valuetype_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 462:
+
+ {
+// event_abs_forward_decl : IDL_ABSTRACT IDL_EVENTTYPE id
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ UTL_ScopedName n (tao_yyvsp[0].idval,
+ 0);
+ AST_EventTypeFwd *f = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
+
+ /*
+ * Create a node representing a forward declaration of an
+ * eventtype. Store it in the enclosing scope
+ */
+ if (s != 0)
+ {
+ f = idl_global->gen ()->create_eventtype_fwd (&n,
+ true);
+ (void) s->fe_add_valuetype_fwd (f);
+ }
+
+ tao_yyvsp[0].idval->destroy ();
+ delete tao_yyvsp[0].idval;
+ tao_yyvsp[0].idval = 0;
+ }
+ break;
+
+ case 463:
+
+ {
+// event_abs_decl : event_abs_header event_rest_of_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_EventType *e = 0;
+ AST_Interface *i = 0;
+
+ if (s != 0 && tao_yyvsp[-1].idval != 0)
+ {
+ UTL_ScopedName sn (tao_yyvsp[-1].idval,
+ 0);
+ e =
+ idl_global->gen ()->create_eventtype (
+ &sn,
+ tao_yyvsp[0].ehval->inherits (),
+ tao_yyvsp[0].ehval->n_inherits (),
+ tao_yyvsp[0].ehval->inherits_concrete (),
+ tao_yyvsp[0].ehval->inherits_flat (),
+ tao_yyvsp[0].ehval->n_inherits_flat (),
+ tao_yyvsp[0].ehval->supports (),
+ tao_yyvsp[0].ehval->n_supports (),
+ tao_yyvsp[0].ehval->supports_concrete (),
+ true,
+ false,
+ false
+ );
+ i = AST_Interface::narrow_from_decl (e);
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the eventetype to its definition scope
+ */
+ e = AST_EventType::narrow_from_decl (i);
+ (void) s->fe_add_eventtype (e);
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (e);
+
+ tao_yyvsp[-1].idval->destroy ();
+ delete tao_yyvsp[-1].idval;
+ tao_yyvsp[-1].idval = 0;
+ }
+ break;
+
+ case 464:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
+ }
+ break;
+
+ case 465:
+
+ {
+// exports
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
+ }
+ break;
+
+ case 466:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
+
+ /*
+ * Done with this eventtype - pop it off the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 467:
+
+ {
+// event_abs_header : IDL_ABSTRACT IDL_EVENTTYPE id
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 468:
+
+ {
+// event_custom_header : IDL_CUSTOM IDL_EVENTTYPE id
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("error in %s line %d\n"),
+ idl_global->filename ()->get_string (),
+ idl_global->lineno ()));
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
+ ACE_TEXT (" custom yet\n")));
+ tao_yyval.idval = 0;
+ }
+ break;
+
+ case 469:
+
+ {
+// event_plain_header : IDL_EVENTTYPE id
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
+
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 470:
+
+ {
+// event_rest_of_header : inheritance_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
+
+ }
+ break;
+
+ case 471:
+
+ {
+// supports_spec
+ idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
+
+ ACE_NEW_RETURN (tao_yyval.ehval,
+ FE_EventHeader (
+ 0,
+ tao_yyvsp[-2].nlval,
+ tao_yyvsp[0].nlval,
+ tao_yyvsp[-2].nlval
+ ? tao_yyvsp[-2].nlval->truncatable ()
+ : false
+ ),
+ 1);
+
+ if (0 != tao_yyvsp[0].nlval)
+ {
+ tao_yyvsp[0].nlval->destroy ();
+ delete tao_yyvsp[0].nlval;
+ tao_yyvsp[0].nlval = 0;
+ }
+
+ if (0 != tao_yyvsp[-2].nlval)
+ {
+ tao_yyvsp[-2].nlval->destroy ();
+ delete tao_yyvsp[-2].nlval;
+ tao_yyvsp[-2].nlval = 0;
+ }
+ }
+ break;
+
+ case 472:
+
+ {
+// event_decl : event_header event_rest_of_header
+ UTL_Scope *s = idl_global->scopes ().top_non_null ();
+ AST_EventType *e = 0;
+ AST_Interface *i = 0;
+
+ if (s != 0 && tao_yyvsp[-1].idval != 0)
+ {
+ // We create the scoped name here instead of with the
+ // FE_EventHeader because there is a token for it only here.
+ UTL_ScopedName sn (tao_yyvsp[-1].idval,
+ 0);
+ e =
+ idl_global->gen ()->create_eventtype (
+ &sn,
+ tao_yyvsp[0].ehval->inherits (),
+ tao_yyvsp[0].ehval->n_inherits (),
+ tao_yyvsp[0].ehval->inherits_concrete (),
+ tao_yyvsp[0].ehval->inherits_flat (),
+ tao_yyvsp[0].ehval->n_inherits_flat (),
+ tao_yyvsp[0].ehval->supports (),
+ tao_yyvsp[0].ehval->n_supports (),
+ tao_yyvsp[0].ehval->supports_concrete (),
+ false,
+ tao_yyvsp[0].ehval->truncatable (),
+ false
+ );
+ i = AST_Interface::narrow_from_decl (e);
+ AST_Interface::fwd_redefinition_helper (i,
+ s);
+ /*
+ * Add the eventetype to its definition scope
+ */
+ e = AST_EventType::narrow_from_decl (i);
+ (void) s->fe_add_eventtype (e);
+
+ // FE_EventHeader is not automatically destroyed in the AST
+ tao_yyvsp[0].ehval->destroy ();
+ delete tao_yyvsp[0].ehval;
+ tao_yyvsp[0].ehval = 0;
+
+ sn.destroy ();
+ }
+
+ /*
+ * Push it on the scope stack.
+ */
+ idl_global->scopes ().push (e);
+ }
+ break;
+
+ case 473:
+
+ {
+// '{'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
+ }
+ break;
+
+ case 474:
+
+ {
+// value_elements
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
+ }
+ break;
+
+ case 475:
+
+ {
+// '}'
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
+
+ /*
+ * Done with this eventtype - pop it off the scopes stack.
+ */
+ idl_global->scopes ().pop ();
+ }
+ break;
+
+ case 476:
+
+ {
+// event_header : event_custom_header
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+ case 477:
+
+ {
+// event_header : event_plain_header
+ tao_yyval.idval = tao_yyvsp[0].idval;
+ }
+ break;
+
+
+ }
+
+/* Line 993 of yacc.c. */
+
+
+ tao_yyvsp -= tao_yylen;
+ tao_yyssp -= tao_yylen;
+
+
+ TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
+
+ *++tao_yyvsp = tao_yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ tao_yyn = tao_yyr1[tao_yyn];
+
+ tao_yystate = tao_yypgoto[tao_yyn - TAO_YYNTOKENS] + *tao_yyssp;
+ if (0 <= tao_yystate && tao_yystate <= TAO_YYLAST && tao_yycheck[tao_yystate] == *tao_yyssp)
+ tao_yystate = tao_yytable[tao_yystate];
+ else
+ tao_yystate = tao_yydefgoto[tao_yyn - TAO_YYNTOKENS];
+
+ goto tao_yynewstate;
+
+
+/*------------------------------------.
+| tao_yyerrlab -- here on detecting error |
+`------------------------------------*/
+tao_yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!tao_yyerrstatus)
+ {
+ ++tao_yynerrs;
+#if TAO_YYERROR_VERBOSE
+ tao_yyn = tao_yypact[tao_yystate];
+
+ if (TAO_YYPACT_NINF < tao_yyn && tao_yyn < TAO_YYLAST)
+ {
+ TAO_YYSIZE_T tao_yysize = 0;
+ int tao_yytype = TAO_YYTRANSLATE (tao_yychar);
+ const char* tao_yyprefix;
+ char *tao_yymsg;
+ int tao_yyx;
+
+ /* Start TAO_YYX at -TAO_YYN if negative to avoid negative indexes in
+ TAO_YYCHECK. */
+ int tao_yyxbegin = tao_yyn < 0 ? -tao_yyn : 0;
+
+ /* Stay within bounds of both tao_yycheck and tao_yytname. */
+ int tao_yychecklim = TAO_YYLAST - tao_yyn;
+ int tao_yyxend = tao_yychecklim < TAO_YYNTOKENS ? tao_yychecklim : TAO_YYNTOKENS;
+ int tao_yycount = 0;
+
+ tao_yyprefix = ", expecting ";
+ for (tao_yyx = tao_yyxbegin; tao_yyx < tao_yyxend; ++tao_yyx)
+ if (tao_yycheck[tao_yyx + tao_yyn] == tao_yyx && tao_yyx != TAO_YYTERROR)
+ {
+ tao_yysize += tao_yystrlen (tao_yyprefix) + tao_yystrlen (tao_yytname [tao_yyx]);
+ tao_yycount += 1;
+ if (tao_yycount == 5)
+ {
+ tao_yysize = 0;
+ break;
+ }
+ }
+ tao_yysize += (sizeof ("syntax error, unexpected ")
+ + tao_yystrlen (tao_yytname[tao_yytype]));
+ tao_yymsg = (char *) TAO_YYSTACK_ALLOC (tao_yysize);
+ if (tao_yymsg != 0)
+ {
+ char *tao_yyp = tao_yystpcpy (tao_yymsg, "syntax error, unexpected ");
+ tao_yyp = tao_yystpcpy (tao_yyp, tao_yytname[tao_yytype]);
+
+ if (tao_yycount < 5)
+ {
+ tao_yyprefix = ", expecting ";
+ for (tao_yyx = tao_yyxbegin; tao_yyx < tao_yyxend; ++tao_yyx)
+ if (tao_yycheck[tao_yyx + tao_yyn] == tao_yyx && tao_yyx != TAO_YYTERROR)
+ {
+ tao_yyp = tao_yystpcpy (tao_yyp, tao_yyprefix);
+ tao_yyp = tao_yystpcpy (tao_yyp, tao_yytname[tao_yyx]);
+ tao_yyprefix = " or ";
+ }
+ }
+ tao_yyerror (tao_yymsg);
+ TAO_YYSTACK_FREE (tao_yymsg);
+ }
+ else
+ tao_yyerror ("syntax error; also virtual memory exhausted");
+ }
+ else
+#endif /* TAO_YYERROR_VERBOSE */
+ tao_yyerror ("syntax error");
+ }
+
+
+
+ if (tao_yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (tao_yychar <= TAO_YYEOF)
+ {
+ /* If at end of input, pop the error token,
+ then the rest of the stack, then return failure. */
+ if (tao_yychar == TAO_YYEOF)
+ for (;;)
+ {
+ TAO_YYPOPSTACK;
+ if (tao_yyssp == tao_yyss)
+ TAO_YYABORT;
+ TAO_YYDSYMPRINTF ("Error: popping", tao_yystos[*tao_yyssp], tao_yyvsp, tao_yylsp);
+ tao_yydestruct (tao_yystos[*tao_yyssp], tao_yyvsp);
+ }
+ }
+ else
+ {
+ TAO_YYDSYMPRINTF ("Error: discarding", tao_yytoken, &tao_yylval, &tao_yylloc);
+ tao_yydestruct (tao_yytoken, &tao_yylval);
+ tao_yychar = TAO_YYEMPTY;
+
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto tao_yyerrlab1;
+
+
+/*---------------------------------------------------.
+| tao_yyerrorlab -- error raised explicitly by TAO_YYERROR. |
+`---------------------------------------------------*/
+tao_yyerrorlab:
+
+#if defined (__GNUC__) || defined (WIN32) || defined (__HP_aCC)
+ /* Pacify GCC when the user code never invokes TAO_YYERROR and the label
+ tao_yyerrorlab therefore never appears in user code. */
+ if (0)
+ goto tao_yyerrorlab;
+#endif
+
+ tao_yyvsp -= tao_yylen;
+ tao_yyssp -= tao_yylen;
+ tao_yystate = *tao_yyssp;
+ goto tao_yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| tao_yyerrlab1 -- common code for both syntax error and TAO_YYERROR. |
+`-------------------------------------------------------------*/
+tao_yyerrlab1:
+ tao_yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ tao_yyn = tao_yypact[tao_yystate];
+ if (tao_yyn != TAO_YYPACT_NINF)
+ {
+ tao_yyn += TAO_YYTERROR;
+ if (0 <= tao_yyn && tao_yyn <= TAO_YYLAST && tao_yycheck[tao_yyn] == TAO_YYTERROR)
+ {
+ tao_yyn = tao_yytable[tao_yyn];
+ if (0 < tao_yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (tao_yyssp == tao_yyss)
+ TAO_YYABORT;
+
+ TAO_YYDSYMPRINTF ("Error: popping", tao_yystos[*tao_yyssp], tao_yyvsp, tao_yylsp);
+ tao_yydestruct (tao_yystos[tao_yystate], tao_yyvsp);
+ TAO_YYPOPSTACK;
+ tao_yystate = *tao_yyssp;
+ TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
+ }
+
+ if (tao_yyn == TAO_YYFINAL)
+ TAO_YYACCEPT;
+
+ TAO_YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++tao_yyvsp = tao_yylval;
+
+
+ tao_yystate = tao_yyn;
+ goto tao_yynewstate;
+
+
+/*-------------------------------------.
+| tao_yyacceptlab -- TAO_YYACCEPT comes here. |
+`-------------------------------------*/
+tao_yyacceptlab:
+ tao_yyresult = 0;
+ goto tao_yyreturn;
+
+/*-----------------------------------.
+| tao_yyabortlab -- TAO_YYABORT comes here. |
+`-----------------------------------*/
+tao_yyabortlab:
+ tao_yyresult = 1;
+ goto tao_yyreturn;
+
+#ifndef tao_yyoverflow
+/*----------------------------------------------.
+| tao_yyoverflowlab -- parser overflow comes here. |
+`----------------------------------------------*/
+tao_yyoverflowlab:
+ tao_yyerror ("parser stack overflow");
+ tao_yyresult = 2;
+ /* Fall through. */
+#endif
+
+tao_yyreturn:
+#ifndef tao_yyoverflow
+ if (tao_yyss != tao_yyssa)
+ TAO_YYSTACK_FREE (tao_yyss);
+#endif
+ return tao_yyresult;
+}
+
+
+
+
+/* programs */
+
+/*
+ * ???
+ */
+int
+tao_yywrap (void)
+{
+ return 1;
+}
+
+/*
+ * Report an error situation discovered in a production
+ */
+void
+tao_yyerror (const char *msg)
+{
+ ACE_ERROR ((LM_ERROR,
+ "%s\n",
+ msg));
+}