diff options
Diffstat (limited to 'ACE/ace/Svc_Conf_y.cpp')
-rw-r--r-- | ACE/ace/Svc_Conf_y.cpp | 1739 |
1 files changed, 1739 insertions, 0 deletions
diff --git a/ACE/ace/Svc_Conf_y.cpp b/ACE/ace/Svc_Conf_y.cpp new file mode 100644 index 00000000000..360cbecaed2 --- /dev/null +++ b/ACE/ace/Svc_Conf_y.cpp @@ -0,0 +1,1739 @@ +/* A Bison parser, made by GNU Bison 2.0. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 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 ace_yy or ACE_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 ACE_YYBISON 1 + +/* Skeleton name. */ +#define ACE_YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define ACE_YYPURE 1 + +/* Using locations. */ +#define ACE_YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef ACE_YYTOKENTYPE +# define ACE_YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum ace_yytokentype { + ACE_DYNAMIC = 258, + ACE_STATIC = 259, + ACE_SUSPEND = 260, + ACE_RESUME = 261, + ACE_REMOVE = 262, + ACE_USTREAM = 263, + ACE_MODULE_T = 264, + ACE_STREAM_T = 265, + ACE_SVC_OBJ_T = 266, + ACE_ACTIVE = 267, + ACE_INACTIVE = 268, + ACE_PATHNAME = 269, + ACE_IDENT = 270, + ACE_STRING = 271 + }; +#endif +#define ACE_DYNAMIC 258 +#define ACE_STATIC 259 +#define ACE_SUSPEND 260 +#define ACE_RESUME 261 +#define ACE_REMOVE 262 +#define ACE_USTREAM 263 +#define ACE_MODULE_T 264 +#define ACE_STREAM_T 265 +#define ACE_SVC_OBJ_T 266 +#define ACE_ACTIVE 267 +#define ACE_INACTIVE 268 +#define ACE_PATHNAME 269 +#define ACE_IDENT 270 +#define ACE_STRING 271 + + + + +/* Copy the first part of user declarations. */ + + +// $Id$ + +#include "ace/Svc_Conf.h" + +#if (ACE_USES_CLASSIC_SVC_CONF == 1) + +#include "ace/ARGV.h" +#include "ace/Module.h" +#include "ace/Stream.h" +#include "ace/Service_Types.h" +#include "ace/OS_NS_string.h" + + +#include "ace/ace_wchar.h" + +ACE_RCSID (ace, + Svc_Conf_y, + "$Id$") + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +// Prototypes. + +static ACE_Module_Type *ace_get_module (const ACE_Service_Type *sr, + const ACE_Service_Type *sv, + int & ace_ace_yyerrno); + +static ACE_Module_Type *ace_get_module (const ACE_Service_Type *sr, + const ACE_TCHAR *svc_name, + int & ace_ace_yyerrno); + +#define ACE_YYDEBUG_LEXER_TEXT (ace_yytext[ace_yyleng] = '\0', ace_yytext) + +// Force the pretty debugging code to compile. +// #define ACE_YYDEBUG 1 + +ACE_END_VERSIONED_NAMESPACE_DECL + + +/* Enabling traces. */ +#ifndef ACE_YYDEBUG +# define ACE_YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef ACE_YYERROR_VERBOSE +# undef ACE_YYERROR_VERBOSE +# define ACE_YYERROR_VERBOSE 1 +#else +# define ACE_YYERROR_VERBOSE 0 +#endif + +#if ! defined (ACE_YYSTYPE) && ! defined (ACE_YYSTYPE_IS_DECLARED) +typedef int ACE_YYSTYPE; +# define ace_yystype ACE_YYSTYPE /* obsolescent; will be withdrawn */ +# define ACE_YYSTYPE_IS_DECLARED 1 +# define ACE_YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 213 of yacc.c. */ + + +#if ! defined (ace_yyoverflow) || ACE_YYERROR_VERBOSE + +# ifndef ACE_YYFREE +# define ACE_YYFREE free +# endif +# ifndef ACE_YYMALLOC +# define ACE_YYMALLOC malloc +# endif + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef ACE_YYSTACK_USE_ALLOCA +# if ACE_YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define ACE_YYSTACK_ALLOC __builtin_alloca +# else +# define ACE_YYSTACK_ALLOC alloca +# endif +# endif +# endif + +# ifdef ACE_YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define ACE_YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +# define ACE_YYSIZE_T size_t +# endif +# define ACE_YYSTACK_ALLOC ACE_YYMALLOC +# define ACE_YYSTACK_FREE ACE_YYFREE +# endif +#endif /* ! defined (ace_yyoverflow) || ACE_YYERROR_VERBOSE */ + + +#if (! defined (ace_yyoverflow) \ + && (! defined (__cplusplus) \ + || (defined (ACE_YYSTYPE_IS_TRIVIAL) && ACE_YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union ace_yyalloc +{ + short int ace_yyss; + ACE_YYSTYPE ace_yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define ACE_YYSTACK_GAP_MAXIMUM (sizeof (union ace_yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define ACE_YYSTACK_BYTES(N) \ + ((N) * (sizeof (short int) + sizeof (ACE_YYSTYPE)) \ + + ACE_YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef ACE_YYCOPY +# if defined (__GNUC__) && 1 < __GNUC__ +# define ACE_YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define ACE_YYCOPY(To, From, Count) \ + do \ + { \ + register ACE_YYSIZE_T ace_yyi; \ + for (ace_yyi = 0; ace_yyi < (Count); ace_yyi++) \ + (To)[ace_yyi] = (From)[ace_yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables ACE_YYSIZE and ACE_YYSTACKSIZE give the old and new number of + elements in the stack, and ACE_YYPTR gives the new location of the + stack. Advance ACE_YYPTR to a properly aligned location for the next + stack. */ +# define ACE_YYSTACK_RELOCATE(Stack) \ + do \ + { \ + ACE_YYSIZE_T ace_yynewbytes; \ + ACE_YYCOPY (&ace_yyptr->Stack, Stack, ace_yysize); \ + Stack = &ace_yyptr->Stack; \ + ace_yynewbytes = ace_yystacksize * sizeof (*Stack) + ACE_YYSTACK_GAP_MAXIMUM; \ + ace_yyptr += ace_yynewbytes / sizeof (*ace_yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char ace_yysigned_char; +#else + typedef short int ace_yysigned_char; +#endif + +/* ACE_YYFINAL -- State number of the termination state. */ +#define ACE_YYFINAL 2 +/* ACE_YYLAST -- Last index in ACE_YYTABLE. */ +#define ACE_YYLAST 62 + +/* ACE_YYNTOKENS -- Number of terminals. */ +#define ACE_YYNTOKENS 23 +/* ACE_YYNNTS -- Number of nonterminals. */ +#define ACE_YYNNTS 21 +/* ACE_YYNRULES -- Number of rules. */ +#define ACE_YYNRULES 45 +/* ACE_YYNRULES -- Number of states. */ +#define ACE_YYNSTATES 66 + +/* ACE_YYTRANSLATE(ACE_YYLEX) -- Bison symbol number corresponding to ACE_YYLEX. */ +#define ACE_YYUNDEFTOK 2 +#define ACE_YYMAXUTOK 271 + +#define ACE_YYTRANSLATE(ACE_YYX) \ + ((unsigned int) (ACE_YYX) <= ACE_YYMAXUTOK ? ace_yytranslate[ACE_YYX] : ACE_YYUNDEFTOK) + +/* ACE_YYTRANSLATE[ACE_YYLEX] -- Bison symbol number corresponding to ACE_YYLEX. */ +static const unsigned char ace_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, 2, 2, 2, + 20, 21, 22, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 19, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 17, 2, 18, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 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 +}; + +#if ACE_YYDEBUG +/* ACE_YYPRHS[ACE_YYN] -- Index of the first RHS symbol of rule number ACE_YYN in + ACE_YYRHS. */ +static const unsigned char ace_yyprhs[] = +{ + 0, 0, 3, 6, 9, 10, 12, 14, 16, 18, + 20, 22, 26, 30, 33, 36, 39, 43, 44, 49, + 51, 53, 54, 59, 60, 63, 64, 66, 68, 70, + 72, 74, 79, 81, 83, 84, 88, 94, 99, 102, + 105, 108, 110, 111, 113, 115 +}; + +/* ACE_YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const ace_yysigned_char ace_yyrhs[] = +{ + 24, 0, -1, 24, 25, -1, 24, 1, -1, -1, + 26, -1, 27, -1, 28, -1, 29, -1, 30, -1, + 31, -1, 3, 38, 42, -1, 4, 15, 42, -1, + 5, 15, -1, 6, 15, -1, 7, 15, -1, 8, + 33, 34, -1, -1, 8, 15, 32, 34, -1, 26, + -1, 27, -1, -1, 17, 35, 36, 18, -1, -1, + 36, 37, -1, -1, 26, -1, 27, -1, 28, -1, + 29, -1, 30, -1, 15, 41, 40, 39, -1, 12, + -1, 13, -1, -1, 43, 19, 15, -1, 43, 19, + 15, 20, 21, -1, 19, 15, 20, 21, -1, 9, + 22, -1, 11, 22, -1, 10, 22, -1, 16, -1, + -1, 14, -1, 15, -1, 16, -1 +}; + +/* ACE_YYRLINE[ACE_YYN] -- source line where rule number ACE_YYN was defined. */ +static const unsigned short int ace_yyrline[] = +{ + 0, 62, 62, 71, 75, 79, 80, 81, 82, 83, + 84, 88, 98, 105, 112, 119, 126, 130, 130, 137, + 140, 147, 146, 155, 159, 167, 171, 196, 210, 219, + 228, 250, 257, 261, 266, 272, 276, 280, 287, 291, + 295, 302, 303, 307, 308, 309 +}; +#endif + +#if ACE_YYDEBUG || ACE_YYERROR_VERBOSE +/* ACE_YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at ACE_YYNTOKENS, nonterminals. */ +static const char *const ace_yytname[] = +{ + "$end", "error", "$undefined", "ACE_DYNAMIC", "ACE_STATIC", + "ACE_SUSPEND", "ACE_RESUME", "ACE_REMOVE", "ACE_USTREAM", "ACE_MODULE_T", + "ACE_STREAM_T", "ACE_SVC_OBJ_T", "ACE_ACTIVE", "ACE_INACTIVE", + "ACE_PATHNAME", "ACE_IDENT", "ACE_STRING", "'{'", "'}'", "':'", "'('", + "')'", "'*'", "$accept", "svc_config_entries", "svc_config_entry", + "dynamic", "static", "suspend", "resume", "remove", "stream", "@1", + "stream_ops", "stream_modules", "@2", "module_list", "module", + "svc_location", "status", "svc_initializer", "type", "parameters_opt", + "pathname", 0 +}; +#endif + +# ifdef ACE_YYPRINT +/* ACE_YYTOKNUM[ACE_YYLEX-NUM] -- Internal token number corresponding to + token ACE_YYLEX-NUM. */ +static const unsigned short int ace_yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 123, 125, 58, + 40, 41, 42 +}; +# endif + +/* ACE_YYR1[ACE_YYN] -- Symbol number of symbol that rule ACE_YYN derives. */ +static const unsigned char ace_yyr1[] = +{ + 0, 23, 24, 24, 24, 25, 25, 25, 25, 25, + 25, 26, 27, 28, 29, 30, 31, 32, 31, 33, + 33, 35, 34, 34, 36, 36, 37, 37, 37, 37, + 37, 38, 39, 39, 39, 40, 40, 40, 41, 41, + 41, 42, 42, 43, 43, 43 +}; + +/* ACE_YYR2[ACE_YYN] -- Number of symbols composing right hand side of rule ACE_YYN. */ +static const unsigned char ace_yyr2[] = +{ + 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, + 1, 3, 3, 2, 2, 2, 3, 0, 4, 1, + 1, 0, 4, 0, 2, 0, 1, 1, 1, 1, + 1, 4, 1, 1, 0, 3, 5, 4, 2, 2, + 2, 1, 0, 1, 1, 1 +}; + +/* ACE_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when ACE_YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned char ace_yydefact[] = +{ + 4, 0, 1, 3, 0, 0, 0, 0, 0, 0, + 2, 5, 6, 7, 8, 9, 10, 0, 42, 42, + 13, 14, 15, 17, 19, 20, 23, 0, 0, 0, + 0, 41, 11, 12, 23, 21, 16, 38, 40, 39, + 43, 44, 45, 0, 34, 0, 18, 25, 0, 32, + 33, 31, 0, 0, 0, 35, 22, 26, 27, 28, + 29, 30, 24, 37, 0, 36 +}; + +/* ACE_YYDEFGOTO[NTERM-NUM]. */ +static const ace_yysigned_char ace_yydefgoto[] = +{ + -1, 1, 10, 11, 12, 13, 14, 15, 16, 34, + 26, 36, 47, 53, 62, 18, 51, 44, 30, 32, + 45 +}; + +/* ACE_YYPACT[STATE-NUM] -- Index in ACE_YYTABLE of the portion describing + STATE-NUM. */ +#define ACE_YYPACT_NINF -13 +static const ace_yysigned_char ace_yypact[] = +{ + -13, 20, -13, -13, 1, 3, 7, 14, 18, 4, + -13, -13, -13, -13, -13, -13, -13, 21, 19, 19, + -13, -13, -13, -13, -13, -13, -2, 12, 15, 16, + -5, -13, -13, -13, -2, -13, -13, -13, -13, -13, + -13, -13, -13, 24, 0, 17, -13, -13, 22, -13, + -13, -13, 25, -1, 26, 23, -13, -13, -13, -13, + -13, -13, -13, -13, 27, -13 +}; + +/* ACE_YYPGOTO[NTERM-NUM]. */ +static const ace_yysigned_char ace_yypgoto[] = +{ + -13, -13, -13, -9, -8, -12, -7, -4, -13, -13, + -13, 28, -13, -13, -13, -13, -13, -13, -13, 31, + -13 +}; + +/* ACE_YYTABLE[ACE_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 ACE_YYDEFACT says. + If ACE_YYTABLE_NINF, syntax error. */ +#define ACE_YYTABLE_NINF -1 +static const unsigned char ace_yytable[] = +{ + 24, 25, 4, 5, 6, 7, 8, 4, 5, 40, + 41, 42, 49, 50, 43, 35, 17, 56, 19, 23, + 2, 3, 20, 4, 5, 6, 7, 8, 9, 21, + 27, 28, 29, 22, 37, 31, 52, 38, 39, 48, + 55, 59, 54, 64, 57, 58, 60, 63, 65, 61, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46 +}; + +static const ace_yysigned_char ace_yycheck[] = +{ + 9, 9, 3, 4, 5, 6, 7, 3, 4, 14, + 15, 16, 12, 13, 19, 17, 15, 18, 15, 15, + 0, 1, 15, 3, 4, 5, 6, 7, 8, 15, + 9, 10, 11, 15, 22, 16, 19, 22, 22, 15, + 15, 53, 20, 20, 53, 53, 53, 21, 21, 53, + 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 34 +}; + +/* ACE_YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char ace_yystos[] = +{ + 0, 24, 0, 1, 3, 4, 5, 6, 7, 8, + 25, 26, 27, 28, 29, 30, 31, 15, 38, 15, + 15, 15, 15, 15, 26, 27, 33, 9, 10, 11, + 41, 16, 42, 42, 32, 17, 34, 22, 22, 22, + 14, 15, 16, 19, 40, 43, 34, 35, 15, 12, + 13, 39, 19, 36, 20, 15, 18, 26, 27, 28, + 29, 30, 37, 21, 20, 21 +}; + +#if ! defined (ACE_YYSIZE_T) && defined (__SIZE_TYPE__) +# define ACE_YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (ACE_YYSIZE_T) && defined (size_t) +# define ACE_YYSIZE_T size_t +#endif +#if ! defined (ACE_YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# define ACE_YYSIZE_T size_t +# endif +#endif +#if ! defined (ACE_YYSIZE_T) +# define ACE_YYSIZE_T unsigned int +#endif + +#define ace_yyerrok (ace_yyerrstatus = 0) +#define ace_yyclearin (ace_yychar = ACE_YYEMPTY) +#define ACE_YYEMPTY (-2) +#define ACE_YYEOF 0 + +#define ACE_YYACCEPT goto ace_yyacceptlab +#define ACE_YYABORT goto ace_yyabortlab +#define ACE_YYERROR goto ace_yyerrorlab + + +/* Like ACE_YYERROR except do call ace_yyerror. This remains here temporarily + to ease the transition to the new meaning of ACE_YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define ACE_YYFAIL goto ace_yyerrlab + +#define ACE_YYRECOVERING() (!!ace_yyerrstatus) + +#define ACE_YYBACKUP(Token, Value) \ +do \ + if (ace_yychar == ACE_YYEMPTY && ace_yylen == 1) \ + { \ + ace_yychar = (Token); \ + ace_yylval = (Value); \ + ace_yytoken = ACE_YYTRANSLATE (ace_yychar); \ + ACE_YYPOPSTACK; \ + goto ace_yybackup; \ + } \ + else \ + { \ + ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "syntax error: cannot back up");\ + ACE_YYERROR; \ + } \ +while (0) + + +#define ACE_YYTERROR 1 +#define ACE_YYERRCODE 256 + + +/* ACE_YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define ACE_YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef ACE_YYLLOC_DEFAULT +# define ACE_YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = ACE_YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = ACE_YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = ACE_YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = ACE_YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + ACE_YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + ACE_YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (0) +#endif + + +/* ACE_YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef ACE_YY_LOCATION_PRINT +# if ACE_YYLTYPE_IS_TRIVIAL +# define ACE_YY_LOCATION_PRINT(File, Loc) \ + ACE_OS::fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define ACE_YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* ACE_YYLEX -- calling `ace_yylex' with the right arguments. */ + +#ifdef ACE_YYLEX_PARAM +# define ACE_YYLEX ace_yylex (&ace_yylval, ACE_YYLEX_PARAM) +#else +# define ACE_YYLEX ace_yylex (&ace_yylval) +#endif + +/* Enable debugging if requested. */ +#if ACE_YYDEBUG + +# ifndef ACE_YYFPRINTF +# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ +# define ACE_YYFPRINTF ACE_OS::fprintf +# endif + +# define ACE_YYDPRINTF(Args) \ +do { \ + if (ace_yydebug) \ + ACE_YYFPRINTF Args; \ +} while (0) + +# define ACE_YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (ace_yydebug) \ + { \ + ACE_YYFPRINTF (stderr, "%s ", Title); \ + ace_yysymprint (stderr, \ + Type, Value); \ + ACE_YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + +/*------------------------------------------------------------------. +| ace_yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +ace_yy_stack_print (short int *bottom, short int *top) +#else +static void +ace_yy_stack_print (bottom, top) + short int *bottom; + short int *top; +#endif +{ + ACE_YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + ACE_YYFPRINTF (stderr, " %d", *bottom); + ACE_YYFPRINTF (stderr, "\n"); +} + +# define ACE_YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (ace_yydebug) \ + ace_yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the ACE_YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +ace_yy_reduce_print (int ace_yyrule) +#else +static void +ace_yy_reduce_print (ace_yyrule) + int ace_yyrule; +#endif +{ + int ace_yyi; + unsigned int ace_yylno = ace_yyrline[ace_yyrule]; + ACE_YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", + ace_yyrule - 1, ace_yylno); + /* Print the symbols being reduced, and their result. */ + for (ace_yyi = ace_yyprhs[ace_yyrule]; 0 <= ace_yyrhs[ace_yyi]; ace_yyi++) + ACE_YYFPRINTF (stderr, "%s ", ace_yytname [ace_yyrhs[ace_yyi]]); + ACE_YYFPRINTF (stderr, "-> %s\n", ace_yytname [ace_yyr1[ace_yyrule]]); +} + +# define ACE_YY_REDUCE_PRINT(Rule) \ +do { \ + if (ace_yydebug) \ + ace_yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int ace_yydebug; +#else /* !ACE_YYDEBUG */ +# define ACE_YYDPRINTF(Args) +# define ACE_YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define ACE_YY_STACK_PRINT(Bottom, Top) +# define ACE_YY_REDUCE_PRINT(Rule) +#endif /* !ACE_YYDEBUG */ + + +/* ACE_YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef ACE_YYINITDEPTH +# define ACE_YYINITDEPTH 200 +#endif + +/* ACE_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 < ACE_YYSTACK_BYTES (ACE_YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef ACE_YYMAXDEPTH +# define ACE_YYMAXDEPTH 10000 +#endif + + + +#if ACE_YYERROR_VERBOSE + +# ifndef ace_yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define ace_yystrlen strlen +# else +/* Return the length of ACE_YYSTR. */ +static ACE_YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +ace_yystrlen (const char *ace_yystr) +# else +ace_yystrlen (ace_yystr) + const char *ace_yystr; +# endif +{ + register const char *ace_yys = ace_yystr; + + while (*ace_yys++ != '\0') + continue; + + return ace_yys - ace_yystr - 1; +} +# endif +# endif + +# ifndef ace_yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define ace_yystpcpy stpcpy +# else +/* Copy ACE_YYSRC to ACE_YYDEST, returning the address of the terminating '\0' in + ACE_YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +ace_yystpcpy (ACE_TCHAR *ace_yydest, const char *ace_yysrc) +# else +ace_yystpcpy (ace_yydest, ace_yysrc) + char *ace_yydest; + const char *ace_yysrc; +# endif +{ + register char *ace_yyd = ace_yydest; + register const char *ace_yys = ace_yysrc; + + while ((*ace_yyd++ = *ace_yys++) != '\0') + continue; + + return ace_yyd - 1; +} +# endif +# endif + +#endif /* !ACE_YYERROR_VERBOSE */ + + + +#if ACE_YYDEBUG +/*--------------------------------. +| Print this symbol on ACE_YYOUTPUT. | +`--------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +ace_yysymprint (FILE *ace_yyoutput, int ace_yytype, ACE_YYSTYPE *ace_yyvaluep) +#else +static void +ace_yysymprint (ace_yyoutput, ace_yytype, ace_yyvaluep) + FILE *ace_yyoutput; + int ace_yytype; + ACE_YYSTYPE *ace_yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) ace_yyvaluep; + + if (ace_yytype < ACE_YYNTOKENS) + ACE_YYFPRINTF (ace_yyoutput, "token %s (", ace_yytname[ace_yytype]); + else + ACE_YYFPRINTF (ace_yyoutput, "nterm %s (", ace_yytname[ace_yytype]); + + +# ifdef ACE_YYPRINT + if (ace_yytype < ACE_YYNTOKENS) + ACE_YYPRINT (ace_yyoutput, ace_yytoknum[ace_yytype], *ace_yyvaluep); +# endif + switch (ace_yytype) + { + default: + break; + } + ACE_YYFPRINTF (ace_yyoutput, ")"); +} + +#endif /* ! ACE_YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +ace_yydestruct (const char *ace_yymsg, int ace_yytype, ACE_YYSTYPE *ace_yyvaluep) +#else +static void +ace_yydestruct (ace_yymsg, ace_yytype, ace_yyvaluep) + const char *ace_yymsg; + int ace_yytype; + ACE_YYSTYPE *ace_yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) ace_yyvaluep; + (void) ace_yytype; + + if (!ace_yymsg) + ace_yymsg = "Deleting"; + ACE_YY_SYMBOL_PRINT (ace_yymsg, ace_yytype, ace_yyvaluep, ace_yylocationp); +} + + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef ACE_YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int ace_yyparse (void *ACE_YYPARSE_PARAM); +# else +int ace_yyparse (); +# endif +#else /* ! ACE_YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int ace_yyparse (void); +#else +int ace_yyparse (); +#endif +#endif /* ! ACE_YYPARSE_PARAM */ + + +/*----------. +| ace_yyparse. | +`----------*/ + +#ifdef ACE_YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int ace_yyparse (void *ACE_YYPARSE_PARAM) +# else +int ace_yyparse (ACE_YYPARSE_PARAM) + void *ACE_YYPARSE_PARAM; +# endif +#else /* ! ACE_YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +ace_yyparse (void) +#else +int +ace_yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int ace_yychar; + +/* The semantic value of the look-ahead symbol. */ +ACE_YYSTYPE ace_yylval; + +#if defined (ACE_YYSTYPE_IS_TRIVIAL) + ace_yylval = 0; +#else + ace_yylval.type_ = 0; +#endif /* ACE_YYSTYPE_IS_TRIVIAL */ + +/* Number of syntax errors so far. */ +int ace_yynerrs; + + register int ace_yystate; + register int ace_yyn; + int ace_yyresult; + /* Number of tokens to shift before error messages enabled. */ + int ace_yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int ace_yytoken = 0; + + /* Three stacks and their tools: + `ace_yyss': related to states, + `ace_yyvs': related to semantic values, + `ace_yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow ace_yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short int ace_yyssa[ACE_YYINITDEPTH]; + short int *ace_yyss = ace_yyssa; + register short int *ace_yyssp; + + /* The semantic value stack. */ + ACE_YYSTYPE ace_yyvsa[ACE_YYINITDEPTH]; + ACE_YYSTYPE *ace_yyvs = ace_yyvsa; + register ACE_YYSTYPE *ace_yyvsp; + + + +#define ACE_YYPOPSTACK (ace_yyvsp--, ace_yyssp--) + + ACE_YYSIZE_T ace_yystacksize = ACE_YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + ACE_YYSTYPE ace_yyval; + + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int ace_yylen; + + ACE_YYDPRINTF ((stderr, "Starting parse\n")); + + ace_yystate = 0; + ace_yyerrstatus = 0; + ace_yynerrs = 0; + ace_yychar = ACE_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. */ + + ace_yyssp = ace_yyss; + ace_yyvsp = ace_yyvs; + + + ace_yyvsp[0] = ace_yylval; + + goto ace_yysetstate; + +/*------------------------------------------------------------. +| ace_yynewstate -- Push a new state, which is found in ace_yystate. | +`------------------------------------------------------------*/ + ace_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. + */ + ace_yyssp++; + + ace_yysetstate: + *ace_yyssp = ace_yystate; + + if (ace_yyss + ace_yystacksize - 1 <= ace_yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + ACE_YYSIZE_T ace_yysize = ace_yyssp - ace_yyss + 1; + +#ifdef ace_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. */ + ACE_YYSTYPE *ace_yyvs1 = ace_yyvs; + short int *ace_yyss1 = ace_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 ace_yyoverflow is a macro. */ + ace_yyoverflow ("parser stack overflow", + &ace_yyss1, ace_yysize * sizeof (*ace_yyssp), + &ace_yyvs1, ace_yysize * sizeof (*ace_yyvsp), + + &ace_yystacksize); + + ace_yyss = ace_yyss1; + ace_yyvs = ace_yyvs1; + } +#else /* no ace_yyoverflow */ +# ifndef ACE_YYSTACK_RELOCATE + goto ace_yyoverflowlab; +# else + /* Extend the stack our own way. */ + if (ACE_YYMAXDEPTH <= ace_yystacksize) + goto ace_yyoverflowlab; + ace_yystacksize *= 2; + if (ACE_YYMAXDEPTH < ace_yystacksize) + ace_yystacksize = ACE_YYMAXDEPTH; + + { + short int *ace_yyss1 = ace_yyss; + union ace_yyalloc *ace_yyptr = + (union ace_yyalloc *) ACE_YYSTACK_ALLOC (ACE_YYSTACK_BYTES (ace_yystacksize)); + if (! ace_yyptr) + goto ace_yyoverflowlab; + ACE_YYSTACK_RELOCATE (ace_yyss); + ACE_YYSTACK_RELOCATE (ace_yyvs); + +# undef ACE_YYSTACK_RELOCATE + if (ace_yyss1 != ace_yyssa) + ACE_YYSTACK_FREE (ace_yyss1); + } +# endif +#endif /* no ace_yyoverflow */ + + ace_yyssp = ace_yyss + ace_yysize - 1; + ace_yyvsp = ace_yyvs + ace_yysize - 1; + + + ACE_YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) ace_yystacksize)); + + if (ace_yyss + ace_yystacksize - 1 <= ace_yyssp) + ACE_YYABORT; + } + + ACE_YYDPRINTF ((stderr, "Entering state %d\n", ace_yystate)); + + goto ace_yybackup; + +/*-----------. +| ace_yybackup. | +`-----------*/ +ace_yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a look-ahead token if we need one and don't already have one. */ +/* ace_yyresume: */ + + /* First try to decide what to do without reference to look-ahead token. */ + + ace_yyn = ace_yypact[ace_yystate]; + if (ace_yyn == ACE_YYPACT_NINF) + goto ace_yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* ACE_YYCHAR is either ACE_YYEMPTY or ACE_YYEOF or a valid look-ahead symbol. */ + if (ace_yychar == ACE_YYEMPTY) + { + ACE_YYDPRINTF ((stderr, "Reading a token: ")); + ace_yychar = ACE_YYLEX; + } + + if (ace_yychar <= ACE_YYEOF) + { + ace_yychar = ace_yytoken = ACE_YYEOF; + ACE_YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + ace_yytoken = ACE_YYTRANSLATE (ace_yychar); + ACE_YY_SYMBOL_PRINT ("Next token is", ace_yytoken, &ace_yylval, &ace_yylloc); + } + + /* If the proper action on seeing token ACE_YYTOKEN is to reduce or to + detect an error, take that action. */ + ace_yyn += ace_yytoken; + if (ace_yyn < 0 || ACE_YYLAST < ace_yyn || ace_yycheck[ace_yyn] != ace_yytoken) + goto ace_yydefault; + ace_yyn = ace_yytable[ace_yyn]; + if (ace_yyn <= 0) + { + if (ace_yyn == 0 || ace_yyn == ACE_YYTABLE_NINF) + goto ace_yyerrlab; + ace_yyn = -ace_yyn; + goto ace_yyreduce; + } + + if (ace_yyn == ACE_YYFINAL) + ACE_YYACCEPT; + + /* Shift the look-ahead token. */ + ACE_YY_SYMBOL_PRINT ("Shifting", ace_yytoken, &ace_yylval, &ace_yylloc); + + /* Discard the token being shifted unless it is eof. */ + if (ace_yychar != ACE_YYEOF) + ace_yychar = ACE_YYEMPTY; + + *++ace_yyvsp = ace_yylval; + + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (ace_yyerrstatus) + ace_yyerrstatus--; + + ace_yystate = ace_yyn; + goto ace_yynewstate; + + +/*-----------------------------------------------------------. +| ace_yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +ace_yydefault: + ace_yyn = ace_yydefact[ace_yystate]; + if (ace_yyn == 0) + goto ace_yyerrlab; + goto ace_yyreduce; + + +/*-----------------------------. +| ace_yyreduce -- Do a reduction. | +`-----------------------------*/ +ace_yyreduce: + /* ace_yyn is the number of a rule to reduce with. */ + ace_yylen = ace_yyr2[ace_yyn]; + + /* If ACE_YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets ACE_YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to ACE_YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that ACE_YYVAL may be used uninitialized. */ + ace_yyval = ace_yyvsp[1-ace_yylen]; + + + ACE_YY_REDUCE_PRINT (ace_yyn); + switch (ace_yyn) + { + case 2: + + { + if ((ace_yyvsp[0].parse_node_) != 0) + { + (ace_yyvsp[0].parse_node_)->apply (ACE_SVC_CONF_PARAM->config, ACE_SVC_CONF_PARAM->yyerrno); + delete (ace_yyvsp[0].parse_node_); + } + ACE_SVC_CONF_PARAM->obstack.release (); + ;} + break; + + case 3: + + { + ACE_SVC_CONF_PARAM->obstack.release (); + ;} + break; + + case 11: + + { + if ((ace_yyvsp[-1].svc_record_) != 0) + (ace_yyval.parse_node_) = new ACE_Dynamic_Node ((ace_yyvsp[-1].svc_record_), (ace_yyvsp[0].ident_)); + else + (ace_yyval.parse_node_) = 0; + ;} + break; + + case 12: + + { + (ace_yyval.parse_node_) = new ACE_Static_Node ((ace_yyvsp[-1].ident_), (ace_yyvsp[0].ident_)); + ;} + break; + + case 13: + + { + (ace_yyval.parse_node_) = new ACE_Suspend_Node ((ace_yyvsp[0].ident_)); + ;} + break; + + case 14: + + { + (ace_yyval.parse_node_) = new ACE_Resume_Node ((ace_yyvsp[0].ident_)); + ;} + break; + + case 15: + + { + (ace_yyval.parse_node_) = new ACE_Remove_Node ((ace_yyvsp[0].ident_)); + ;} + break; + + case 16: + + { + (ace_yyval.parse_node_) = new ACE_Stream_Node ((ace_yyvsp[-1].static_node_), (ace_yyvsp[0].parse_node_)); + ;} + break; + + case 17: + + { (ace_yyval.static_node_) = new ACE_Static_Node ((ace_yyvsp[0].ident_)); ;} + break; + + case 18: + + { + (ace_yyval.parse_node_) = new ACE_Dummy_Node ((ace_yyvsp[-1].static_node_), (ace_yyvsp[0].parse_node_)); + ;} + break; + + case 19: + + { + ;} + break; + + case 20: + + { + ;} + break; + + case 21: + + { + // Initialize left context... + (ace_yyval.static_node_) = (ace_yyvsp[-1].static_node_); + ;} + break; + + case 22: + + { + (ace_yyval.parse_node_) = (ace_yyvsp[-1].parse_node_); + ;} + break; + + case 23: + + { (ace_yyval.parse_node_) = 0; ;} + break; + + case 24: + + { + if ((ace_yyvsp[0].parse_node_) != 0) + { + (ace_yyvsp[0].parse_node_)->link ((ace_yyvsp[-1].parse_node_)); + (ace_yyval.parse_node_) = (ace_yyvsp[0].parse_node_); + } + ;} + break; + + case 25: + + { (ace_yyval.parse_node_) = 0; ;} + break; + + case 26: + + { + ACE_Static_Node *svc_type = (ace_yyvsp[0].static_node_); + + if (svc_type != 0) + { + ACE_Static_Node *module = (ace_yyvsp[-2].static_node_); + + ACE_ARGV args (svc_type->parameters ()); + ACE_Module_Type *mt = ace_get_module (module->record (ACE_SVC_CONF_PARAM->config), + svc_type->record (ACE_SVC_CONF_PARAM->config), + ACE_SVC_CONF_PARAM->yyerrno); + ACE_Stream_Type *st = + dynamic_cast<ACE_Stream_Type *> (const_cast<ACE_Service_Type_Impl *> (module->record (ACE_SVC_CONF_PARAM->config)->type ())); + + if (mt->init (args.argc (), args.argv ()) == -1 + || st->push (mt) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("dynamic initialization failed for Module %s\n"), + svc_type->name ())); + ACE_SVC_CONF_PARAM->yyerrno++; + } + } + ;} + break; + + case 27: + + { + ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_); + ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config), + (ace_yyvsp[0].static_node_)->name (), + ACE_SVC_CONF_PARAM->yyerrno); + + if (((ACE_Stream_Type *) sn->record (ACE_SVC_CONF_PARAM->config)->type ())->push (mt) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("Problem with static\n"))); + ACE_SVC_CONF_PARAM->yyerrno++; + } + ;} + break; + + case 28: + + { + ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_); + ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config), + sn->name (), + ACE_SVC_CONF_PARAM->yyerrno); + if (mt != 0) + mt->suspend (); + ;} + break; + + case 29: + + { + ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_); + ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config), + (ace_yyvsp[0].static_node_)->name (), + ACE_SVC_CONF_PARAM->yyerrno); + if (mt != 0) + mt->resume (); + ;} + break; + + case 30: + + { + ACE_Static_Node *stream = (ace_yyvsp[-2].static_node_); + ACE_Static_Node *module = (ace_yyvsp[0].static_node_); + ACE_Module_Type *mt = ace_get_module (stream->record (ACE_SVC_CONF_PARAM->config), + module->name (), + ACE_SVC_CONF_PARAM->yyerrno); + + ACE_Stream_Type *st = + dynamic_cast<ACE_Stream_Type *> (const_cast<ACE_Service_Type_Impl *> (stream->record (ACE_SVC_CONF_PARAM->config)->type ())); + if (mt != 0 && st->remove (mt) == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("cannot remove Module_Type %s from STREAM_Type %s\n"), + module->name (), + stream->name ())); + ACE_SVC_CONF_PARAM->yyerrno++; + } + ;} + break; + + case 31: + + { + (ace_yyval.svc_record_) = new ACE_Service_Type_Factory ((ace_yyvsp[-3].ident_), (ace_yyvsp[-2].type_), (ace_yyvsp[-1].location_node_), (ace_yyvsp[0].type_)); + ;} + break; + + case 32: + + { + (ace_yyval.type_) = 1; + ;} + break; + + case 33: + + { + (ace_yyval.type_) = 0; + ;} + break; + + case 34: + + { + (ace_yyval.type_) = 1; + ;} + break; + + case 35: + + { + (ace_yyval.location_node_) = new ACE_Object_Node ((ace_yyvsp[-2].ident_), (ace_yyvsp[0].ident_)); + ;} + break; + + case 36: + + { + (ace_yyval.location_node_) = new ACE_Function_Node ((ace_yyvsp[-4].ident_), (ace_yyvsp[-2].ident_)); + ;} + break; + + case 37: + + { + (ace_yyval.location_node_) = new ACE_Static_Function_Node ((ace_yyvsp[-2].ident_)); + ;} + break; + + case 38: + + { + (ace_yyval.type_) = ACE_MODULE_T; + ;} + break; + + case 39: + + { + (ace_yyval.type_) = ACE_SVC_OBJ_T; + ;} + break; + + case 40: + + { + (ace_yyval.type_) = ACE_STREAM_T; + ;} + break; + + case 42: + + { (ace_yyval.ident_) = 0; ;} + break; + + + } + +/* Line 1037 of yacc.c. */ + + + ace_yyvsp -= ace_yylen; + ace_yyssp -= ace_yylen; + + + ACE_YY_STACK_PRINT (ace_yyss, ace_yyssp); + + *++ace_yyvsp = ace_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. */ + + ace_yyn = ace_yyr1[ace_yyn]; + + ace_yystate = ace_yypgoto[ace_yyn - ACE_YYNTOKENS] + *ace_yyssp; + if (0 <= ace_yystate && ace_yystate <= ACE_YYLAST && ace_yycheck[ace_yystate] == *ace_yyssp) + ace_yystate = ace_yytable[ace_yystate]; + else + ace_yystate = ace_yydefgoto[ace_yyn - ACE_YYNTOKENS]; + + goto ace_yynewstate; + + +/*------------------------------------. +| ace_yyerrlab -- here on detecting error | +`------------------------------------*/ +ace_yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!ace_yyerrstatus) + { + ++ace_yynerrs; +#if ACE_YYERROR_VERBOSE + ace_yyn = ace_yypact[ace_yystate]; + + if (ACE_YYPACT_NINF < ace_yyn && ace_yyn < ACE_YYLAST) + { + ACE_YYSIZE_T ace_yysize = 0; + int ace_yytype = ACE_YYTRANSLATE (ace_yychar); + const char* ace_yyprefix; + char *ace_yymsg; + int ace_yyx; + + /* Start ACE_YYX at -ACE_YYN if negative to avoid negative indexes in + ACE_YYCHECK. */ + int ace_yyxbegin = ace_yyn < 0 ? -ace_yyn : 0; + + /* Stay within bounds of both ace_yycheck and ace_yytname. */ + int ace_yychecklim = ACE_YYLAST - ace_yyn; + int ace_yyxend = ace_yychecklim < ACE_YYNTOKENS ? ace_yychecklim : ACE_YYNTOKENS; + int ace_yycount = 0; + + ace_yyprefix = ", expecting "; + for (ace_yyx = ace_yyxbegin; ace_yyx < ace_yyxend; ++ace_yyx) + if (ace_yycheck[ace_yyx + ace_yyn] == ace_yyx && ace_yyx != ACE_YYTERROR) + { + ace_yysize += ace_yystrlen (ace_yyprefix) + ace_yystrlen (ace_yytname [ace_yyx]); + ace_yycount += 1; + if (ace_yycount == 5) + { + ace_yysize = 0; + break; + } + } + ace_yysize += (sizeof ("syntax error, unexpected ") + + ace_yystrlen (ace_yytname[ace_yytype])); + ace_yymsg = (ACE_TCHAR *) ACE_YYSTACK_ALLOC (ace_yysize); + if (ace_yymsg != 0) + { + char *ace_yyp = ace_yystpcpy (ace_yymsg, "syntax error, unexpected "); + ace_yyp = ace_yystpcpy (ace_yyp, ace_yytname[ace_yytype]); + + if (ace_yycount < 5) + { + ace_yyprefix = ", expecting "; + for (ace_yyx = ace_yyxbegin; ace_yyx < ace_yyxend; ++ace_yyx) + if (ace_yycheck[ace_yyx + ace_yyn] == ace_yyx && ace_yyx != ACE_YYTERROR) + { + ace_yyp = ace_yystpcpy (ace_yyp, ace_yyprefix); + ace_yyp = ace_yystpcpy (ace_yyp, ace_yytname[ace_yyx]); + ace_yyprefix = " or "; + } + } + ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, ace_yymsg); + ACE_YYSTACK_FREE (ace_yymsg); + } + else + ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "syntax error; also virtual memory exhausted"); + } + else +#endif /* ACE_YYERROR_VERBOSE */ + ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "syntax error"); + } + + + + if (ace_yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (ace_yychar <= ACE_YYEOF) + { + /* If at end of input, pop the error token, + then the rest of the stack, then return failure. */ + if (ace_yychar == ACE_YYEOF) + for (;;) + { + + ACE_YYPOPSTACK; + if (ace_yyssp == ace_yyss) + ACE_YYABORT; + ace_yydestruct ("Error: popping", + ace_yystos[*ace_yyssp], ace_yyvsp); + } + } + else + { + ace_yydestruct ("Error: discarding", ace_yytoken, &ace_yylval); + ace_yychar = ACE_YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto ace_yyerrlab1; + + +/*---------------------------------------------------. +| ace_yyerrorlab -- error raised explicitly by ACE_YYERROR. | +`---------------------------------------------------*/ +ace_yyerrorlab: + +#if defined (__GNUC__) || defined (ACE_WIN32) + /* Pacify GCC when the user code never invokes ACE_YYERROR and the label + ace_yyerrorlab therefore never appears in user code. */ + if (0) + goto ace_yyerrorlab; +#endif + +ace_yyvsp -= ace_yylen; + ace_yyssp -= ace_yylen; + ace_yystate = *ace_yyssp; + goto ace_yyerrlab1; + + +/*-------------------------------------------------------------. +| ace_yyerrlab1 -- common code for both syntax error and ACE_YYERROR. | +`-------------------------------------------------------------*/ +ace_yyerrlab1: + ace_yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + ace_yyn = ace_yypact[ace_yystate]; + if (ace_yyn != ACE_YYPACT_NINF) + { + ace_yyn += ACE_YYTERROR; + if (0 <= ace_yyn && ace_yyn <= ACE_YYLAST && ace_yycheck[ace_yyn] == ACE_YYTERROR) + { + ace_yyn = ace_yytable[ace_yyn]; + if (0 < ace_yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (ace_yyssp == ace_yyss) + ACE_YYABORT; + + + ace_yydestruct ("Error: popping", ace_yystos[ace_yystate], ace_yyvsp); + ACE_YYPOPSTACK; + ace_yystate = *ace_yyssp; + ACE_YY_STACK_PRINT (ace_yyss, ace_yyssp); + } + + if (ace_yyn == ACE_YYFINAL) + ACE_YYACCEPT; + + *++ace_yyvsp = ace_yylval; + + + /* Shift the error token. */ + ACE_YY_SYMBOL_PRINT ("Shifting", ace_yystos[ace_yyn], ace_yyvsp, ace_yylsp); + + ace_yystate = ace_yyn; + goto ace_yynewstate; + + +/*-------------------------------------. +| ace_yyacceptlab -- ACE_YYACCEPT comes here. | +`-------------------------------------*/ +ace_yyacceptlab: + ace_yyresult = 0; + goto ace_yyreturn; + +/*-----------------------------------. +| ace_yyabortlab -- ACE_YYABORT comes here. | +`-----------------------------------*/ +ace_yyabortlab: + ace_yydestruct ("Error: discarding lookahead", + ace_yytoken, &ace_yylval); + ace_yychar = ACE_YYEMPTY; + ace_yyresult = 1; + goto ace_yyreturn; + +#ifndef ace_yyoverflow +/*----------------------------------------------. +| ace_yyoverflowlab -- parser overflow comes here. | +`----------------------------------------------*/ +ace_yyoverflowlab: + ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "parser stack overflow"); + ace_yyresult = 2; + /* Fall through. */ +#endif + +ace_yyreturn: +#ifndef ace_yyoverflow + if (ace_yyss != ace_yyssa) + ACE_YYSTACK_FREE (ace_yyss); +#endif + return ace_yyresult; +} + +// Prints the error string to standard output. Cleans up the error +// messages. + +void +ace_yyerror (int ace_yyerrno, int ace_yylineno, const char *s) +{ +#if defined (ACE_NLOGGING) + ACE_UNUSED_ARG (ace_yyerrno); + ACE_UNUSED_ARG (ace_yylineno); + ACE_UNUSED_ARG (s); +#endif /* ACE_NLOGGING */ + + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("[error %d] on line %d: %s\n"), + ace_yyerrno, + ace_yylineno, + s)); +} + +// Note that SRC_REC represents left context, which is the STREAM * +// record. + +static ACE_Module_Type * +ace_get_module (const ACE_Service_Type *sr, + const ACE_TCHAR *svc_name, + int & ace_yyerrno) +{ + const ACE_Service_Type_Impl *type = sr->type (); + ACE_Stream_Type *st = sr == 0 + ? 0 + : dynamic_cast<ACE_Stream_Type *> (const_cast<ACE_Service_Type_Impl *> (type)); + ACE_Module_Type *mt = st == 0 ? 0 : st->find (svc_name); + + if (sr == 0 || st == 0 || mt == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("cannot locate Module_Type %s in STREAM_Type %s\n"), + svc_name, + sr->name ())); + ace_yyerrno++; + } + + return mt; +} + +static ACE_Module_Type * +ace_get_module (const ACE_Service_Type *sr, + const ACE_Service_Type *sv, + int & ace_yyerrno) +{ + const ACE_Service_Type_Impl *type = sr->type (); + ACE_Stream_Type *st = sr == 0 ? 0 : (ACE_Stream_Type *) type; + + type = sv->type (); + ACE_Module_Type *mt = (ACE_Module_Type *) type; + const ACE_TCHAR *module_type_name = sr->name (); + + if (sr == 0 || st == 0 || mt == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_LIB_TEXT ("cannot locate Module_Type %s or STREAM_Type %s\n"), + module_type_name, + sr->name ())); + ace_yyerrno++; + } + + // Make sure that the Module has the same name as the + // Module_Type object from the svc.conf file. + ACE_Module<ACE_SYNCH> *mp = (ACE_Module<ACE_SYNCH> *) mt->object (); + + if (ACE_OS::strcmp (mp->name (), module_type_name) != 0) + { + ACE_DEBUG ((LM_DEBUG, + ACE_LIB_TEXT ("warning: assigning Module_Type name %s to Module %s since names differ\n"), + module_type_name, + mp->name ())); + mp->name (module_type_name); + } + + return mt; +} + +#if defined (DEBUGGING) +// Main driver program. + +int +main (int argc, char *argv[]) +{ + ACE_Svc_Conf_Param param (stdin); + + // Try to reopen any filename argument to use ACE_YYIN. + if (argc > 1 && (ace_yyin = freopen (argv[1], "r", stdin)) == 0) + (void) ACE_OS::ACE_OS::fprintf (stderr, ACE_LIB_TEXT ("usage: %s [file]\n"), argv[0]), ACE_OS::exit (1); + + return ::ace_yyparse (¶m); +} +#endif /* DEBUGGING */ + +ACE_END_VERSIONED_NAMESPACE_DECL + +#endif /* ACE_USES_CLASSIC_SVC_CONF == 1 */ |