Svc_Conf.h File Reference

#include "ace/Obstack.h"
#include "ace/Service_Config.h"
#include "ace/Parse_Node.h"
#include "ace/Svc_Conf_Param.h"

Include dependency graph for Svc_Conf.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

union  ACE_YYSTYPE

Defines

#define ACE_YY_DECL   extern "C" int ace_yylex (ACE_YYSTYPE *ace_yylval, void *ACE_YYLEX_PARAM)

Functions

int ace_yyparse (void *)
 Performs the parsing.

void ace_yyerror (int yyerrno, int yylineno, const char *)
 Error handling routine required by YACC or BISON.

ACE_Service_Type_Implace_create_service_type (const ACE_TCHAR *, int, void *, unsigned int, ACE_Service_Object_Exterminator=0)
 Factory that creates a new ACE_Service_Type_Impl.


Variables

 ACE_YY_DECL
 Performs the lexical analysis.

FILE * ace_yyin
 Name of input stream.

ACE_TCHARace_yytext
 Holds the lexeme for the current token.

int ace_yyleng
 Holds the length of the lexeme for the current token.


Detailed Description

Svc_Conf.h,v 4.40 2006/04/26 21:19:42 jeliazkov_i Exp

Author:
Doug Schmidt

Definition in file Svc_Conf.h.


Define Documentation

#define ACE_YY_DECL   extern "C" int ace_yylex (ACE_YYSTYPE *ace_yylval, void *ACE_YYLEX_PARAM)
 

Definition at line 45 of file Svc_Conf.h.


Function Documentation

ACE_Service_Type_Impl* ace_create_service_type const ACE_TCHAR ,
int  ,
void *  ,
unsigned  int,
ACE_Service_Object_Exterminator  = 0
 

Factory that creates a new ACE_Service_Type_Impl.

void ace_yyerror int  yyerrno,
int  yylineno,
const char * 
 

Error handling routine required by YACC or BISON.

Definition at line 1643 of file Svc_Conf_y.cpp.

References ACE_ERROR, ACE_LIB_TEXT, and LM_ERROR.

Referenced by ace_yyparse(), ACE_Svc_Conf_Lexer::input(), ACE_Svc_Conf_Lexer::scan(), and ACE_Svc_Conf_Lexer::yylex().

01644 {
01645 #if defined (ACE_NLOGGING)
01646   ACE_UNUSED_ARG (ace_yyerrno);
01647   ACE_UNUSED_ARG (ace_yylineno);
01648   ACE_UNUSED_ARG (s);
01649 #endif /* ACE_NLOGGING */
01650 
01651   ACE_ERROR ((LM_ERROR,
01652               ACE_LIB_TEXT ("[error %d] on line %d: %s\n"),
01653               ace_yyerrno,
01654               ace_yylineno,
01655               s));
01656 }

int ace_yyparse void *   ) 
 

Performs the parsing.

Definition at line 843 of file Svc_Conf_y.cpp.

References ACE_ARGV, ACE_ERROR, ace_get_module(), ACE_LIB_TEXT, ACE_MODULE_T, ACE_Service_Type_Factory, ACE_STREAM_T, ACE_SVC_CONF_PARAM, ACE_SVC_OBJ_T, ACE_TCHAR, ACE_YY_REDUCE_PRINT, ACE_YY_STACK_PRINT, ACE_YY_SYMBOL_PRINT, ACE_YYABORT, ACE_YYACCEPT, ace_yycheck, ace_yydefact, ace_yydefgoto, ace_yydestruct(), ACE_YYDPRINTF, ACE_YYEMPTY, ACE_YYEOF, ace_yyerror(), ACE_YYFINAL, ACE_YYINITDEPTH, ACE_YYLAST, ACE_YYLEX, ACE_YYMAXDEPTH, ACE_YYNTOKENS, ace_yypact, ACE_YYPACT_NINF, ACE_YYPARSE_PARAM, ace_yypgoto, ACE_YYPOPSTACK, ace_yyr1, ace_yyr2, ACE_YYSIZE_T, ACE_YYSTACK_ALLOC, ACE_YYSTACK_FREE, ace_yystos, ace_yytable, ACE_YYTABLE_NINF, ACE_YYTERROR, ACE_YYTRANSLATE, ACE_ARGV_T< CHAR_TYPE >::argc(), ACE_ARGV_T< CHAR_TYPE >::argv(), ACE_YYSTYPE::ident_, ACE_Module_Type::init(), LM_ERROR, ACE_YYSTYPE::location_node_, ACE_Service_Type::name(), ACE_Parse_Node::name(), ACE_Static_Node::parameters(), ACE_YYSTYPE::parse_node_, ACE_Stream_Type::push(), ACE_Static_Node::record(), ACE_Stream_Type::remove(), ACE_Module_Type::resume(), ACE_YYSTYPE::static_node_, ACE_Module_Type::suspend(), ACE_YYSTYPE::svc_record_, ACE_Service_Type::type(), and ACE_YYSTYPE::type_.

00858 {
00859   /* The look-ahead symbol.  */
00860 int ace_yychar;
00861 
00862 /* The semantic value of the look-ahead symbol.  */
00863 ACE_YYSTYPE ace_yylval;
00864 
00865 #if defined (ACE_YYSTYPE_IS_TRIVIAL)
00866   ace_yylval = 0;
00867 #else
00868   ace_yylval.type_ = 0;
00869 #endif /* ACE_YYSTYPE_IS_TRIVIAL */
00870 
00871 /* Number of syntax errors so far.  */
00872 int ace_yynerrs;
00873 
00874   register int ace_yystate;
00875   register int ace_yyn;
00876   int ace_yyresult;
00877   /* Number of tokens to shift before error messages enabled.  */
00878   int ace_yyerrstatus;
00879   /* Look-ahead token as an internal (translated) token number.  */
00880   int ace_yytoken = 0;
00881 
00882   /* Three stacks and their tools:
00883      `ace_yyss': related to states,
00884      `ace_yyvs': related to semantic values,
00885      `ace_yyls': related to locations.
00886 
00887      Refer to the stacks thru separate pointers, to allow ace_yyoverflow
00888      to reallocate them elsewhere.  */
00889 
00890   /* The state stack.  */
00891   short int ace_yyssa[ACE_YYINITDEPTH];
00892   short int *ace_yyss = ace_yyssa;
00893   register short int *ace_yyssp;
00894 
00895   /* The semantic value stack.  */
00896   ACE_YYSTYPE ace_yyvsa[ACE_YYINITDEPTH];
00897   ACE_YYSTYPE *ace_yyvs = ace_yyvsa;
00898   register ACE_YYSTYPE *ace_yyvsp;
00899 
00900 
00901 
00902 #define ACE_YYPOPSTACK   (ace_yyvsp--, ace_yyssp--)
00903 
00904   ACE_YYSIZE_T ace_yystacksize = ACE_YYINITDEPTH;
00905 
00906   /* The variables used to return semantic value and location from the
00907      action routines.  */
00908   ACE_YYSTYPE ace_yyval;
00909 
00910 
00911   /* When reducing, the number of symbols on the RHS of the reduced
00912      rule.  */
00913   int ace_yylen;
00914 
00915   ACE_YYDPRINTF ((stderr, "Starting parse\n"));
00916 
00917   ace_yystate = 0;
00918   ace_yyerrstatus = 0;
00919   ace_yynerrs = 0;
00920   ace_yychar = ACE_YYEMPTY;             /* Cause a token to be read.  */
00921 
00922   /* Initialize stack pointers.
00923      Waste one element of value and location stack
00924      so that they stay on the same level as the state stack.
00925      The wasted elements are never initialized.  */
00926 
00927   ace_yyssp = ace_yyss;
00928   ace_yyvsp = ace_yyvs;
00929 
00930 
00931   ace_yyvsp[0] = ace_yylval;
00932 
00933   goto ace_yysetstate;
00934 
00935 /*------------------------------------------------------------.
00936 | ace_yynewstate -- Push a new state, which is found in ace_yystate.  |
00937 `------------------------------------------------------------*/
00938  ace_yynewstate:
00939   /* In all cases, when you get here, the value and location stacks
00940      have just been pushed. so pushing a state here evens the stacks.
00941      */
00942   ace_yyssp++;
00943 
00944  ace_yysetstate:
00945   *ace_yyssp = ace_yystate;
00946 
00947   if (ace_yyss + ace_yystacksize - 1 <= ace_yyssp)
00948     {
00949       /* Get the current used size of the three stacks, in elements.  */
00950       ACE_YYSIZE_T ace_yysize = ace_yyssp - ace_yyss + 1;
00951 
00952 #ifdef ace_yyoverflow
00953       {
00954   /* Give user a chance to reallocate the stack. Use copies of
00955      these so that the &'s don't force the real ones into
00956      memory.  */
00957   ACE_YYSTYPE *ace_yyvs1 = ace_yyvs;
00958   short int *ace_yyss1 = ace_yyss;
00959 
00960 
00961   /* Each stack pointer address is followed by the size of the
00962      data in use in that stack, in bytes.  This used to be a
00963      conditional around just the two extra args, but that might
00964      be undefined if ace_yyoverflow is a macro.  */
00965   ace_yyoverflow ("parser stack overflow",
00966         &ace_yyss1, ace_yysize * sizeof (*ace_yyssp),
00967         &ace_yyvs1, ace_yysize * sizeof (*ace_yyvsp),
00968 
00969         &ace_yystacksize);
00970 
00971   ace_yyss = ace_yyss1;
00972   ace_yyvs = ace_yyvs1;
00973       }
00974 #else /* no ace_yyoverflow */
00975 # ifndef ACE_YYSTACK_RELOCATE
00976       goto ace_yyoverflowlab;
00977 # else
00978       /* Extend the stack our own way.  */
00979       if (ACE_YYMAXDEPTH <= ace_yystacksize)
00980   goto ace_yyoverflowlab;
00981       ace_yystacksize *= 2;
00982       if (ACE_YYMAXDEPTH < ace_yystacksize)
00983   ace_yystacksize = ACE_YYMAXDEPTH;
00984 
00985       {
00986   short int *ace_yyss1 = ace_yyss;
00987   union ace_yyalloc *ace_yyptr =
00988     (union ace_yyalloc *) ACE_YYSTACK_ALLOC (ACE_YYSTACK_BYTES (ace_yystacksize));
00989   if (! ace_yyptr)
00990     goto ace_yyoverflowlab;
00991   ACE_YYSTACK_RELOCATE (ace_yyss);
00992   ACE_YYSTACK_RELOCATE (ace_yyvs);
00993 
00994 #  undef ACE_YYSTACK_RELOCATE
00995   if (ace_yyss1 != ace_yyssa)
00996     ACE_YYSTACK_FREE (ace_yyss1);
00997       }
00998 # endif
00999 #endif /* no ace_yyoverflow */
01000 
01001       ace_yyssp = ace_yyss + ace_yysize - 1;
01002       ace_yyvsp = ace_yyvs + ace_yysize - 1;
01003 
01004 
01005       ACE_YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01006       (unsigned long int) ace_yystacksize));
01007 
01008       if (ace_yyss + ace_yystacksize - 1 <= ace_yyssp)
01009   ACE_YYABORT;
01010     }
01011 
01012   ACE_YYDPRINTF ((stderr, "Entering state %d\n", ace_yystate));
01013 
01014   goto ace_yybackup;
01015 
01016 /*-----------.
01017 | ace_yybackup.  |
01018 `-----------*/
01019 ace_yybackup:
01020 
01021 /* Do appropriate processing given the current state.  */
01022 /* Read a look-ahead token if we need one and don't already have one.  */
01023 /* ace_yyresume: */
01024 
01025   /* First try to decide what to do without reference to look-ahead token.  */
01026 
01027   ace_yyn = ace_yypact[ace_yystate];
01028   if (ace_yyn == ACE_YYPACT_NINF)
01029     goto ace_yydefault;
01030 
01031   /* Not known => get a look-ahead token if don't already have one.  */
01032 
01033   /* ACE_YYCHAR is either ACE_YYEMPTY or ACE_YYEOF or a valid look-ahead symbol.  */
01034   if (ace_yychar == ACE_YYEMPTY)
01035     {
01036       ACE_YYDPRINTF ((stderr, "Reading a token: "));
01037       ace_yychar = ACE_YYLEX;
01038     }
01039 
01040   if (ace_yychar <= ACE_YYEOF)
01041     {
01042       ace_yychar = ace_yytoken = ACE_YYEOF;
01043       ACE_YYDPRINTF ((stderr, "Now at end of input.\n"));
01044     }
01045   else
01046     {
01047       ace_yytoken = ACE_YYTRANSLATE (ace_yychar);
01048       ACE_YY_SYMBOL_PRINT ("Next token is", ace_yytoken, &ace_yylval, &ace_yylloc);
01049     }
01050 
01051   /* If the proper action on seeing token ACE_YYTOKEN is to reduce or to
01052      detect an error, take that action.  */
01053   ace_yyn += ace_yytoken;
01054   if (ace_yyn < 0 || ACE_YYLAST < ace_yyn || ace_yycheck[ace_yyn] != ace_yytoken)
01055     goto ace_yydefault;
01056   ace_yyn = ace_yytable[ace_yyn];
01057   if (ace_yyn <= 0)
01058     {
01059       if (ace_yyn == 0 || ace_yyn == ACE_YYTABLE_NINF)
01060   goto ace_yyerrlab;
01061       ace_yyn = -ace_yyn;
01062       goto ace_yyreduce;
01063     }
01064 
01065   if (ace_yyn == ACE_YYFINAL)
01066     ACE_YYACCEPT;
01067 
01068   /* Shift the look-ahead token.  */
01069   ACE_YY_SYMBOL_PRINT ("Shifting", ace_yytoken, &ace_yylval, &ace_yylloc);
01070 
01071   /* Discard the token being shifted unless it is eof.  */
01072   if (ace_yychar != ACE_YYEOF)
01073     ace_yychar = ACE_YYEMPTY;
01074 
01075   *++ace_yyvsp = ace_yylval;
01076 
01077 
01078   /* Count tokens shifted since error; after three, turn off error
01079      status.  */
01080   if (ace_yyerrstatus)
01081     ace_yyerrstatus--;
01082 
01083   ace_yystate = ace_yyn;
01084   goto ace_yynewstate;
01085 
01086 
01087 /*-----------------------------------------------------------.
01088 | ace_yydefault -- do the default action for the current state.  |
01089 `-----------------------------------------------------------*/
01090 ace_yydefault:
01091   ace_yyn = ace_yydefact[ace_yystate];
01092   if (ace_yyn == 0)
01093     goto ace_yyerrlab;
01094   goto ace_yyreduce;
01095 
01096 
01097 /*-----------------------------.
01098 | ace_yyreduce -- Do a reduction.  |
01099 `-----------------------------*/
01100 ace_yyreduce:
01101   /* ace_yyn is the number of a rule to reduce with.  */
01102   ace_yylen = ace_yyr2[ace_yyn];
01103 
01104   /* If ACE_YYLEN is nonzero, implement the default value of the action:
01105      `$$ = $1'.
01106 
01107      Otherwise, the following line sets ACE_YYVAL to garbage.
01108      This behavior is undocumented and Bison
01109      users should not rely upon it.  Assigning to ACE_YYVAL
01110      unconditionally makes the parser a bit smaller, and it avoids a
01111      GCC warning that ACE_YYVAL may be used uninitialized.  */
01112   ace_yyval = ace_yyvsp[1-ace_yylen];
01113 
01114 
01115   ACE_YY_REDUCE_PRINT (ace_yyn);
01116   switch (ace_yyn)
01117     {
01118         case 2:
01119 
01120     {
01121       if ((ace_yyvsp[0].parse_node_) != 0)
01122       {
01123         (ace_yyvsp[0].parse_node_)->apply (ACE_SVC_CONF_PARAM->config, ACE_SVC_CONF_PARAM->yyerrno);
01124         delete (ace_yyvsp[0].parse_node_);
01125       }
01126       ACE_SVC_CONF_PARAM->obstack.release ();
01127     ;}
01128     break;
01129 
01130   case 3:
01131 
01132     {
01133       ACE_SVC_CONF_PARAM->obstack.release ();
01134     ;}
01135     break;
01136 
01137   case 11:
01138 
01139     {
01140       if ((ace_yyvsp[-1].svc_record_) != 0)
01141         (ace_yyval.parse_node_) = new ACE_Dynamic_Node ((ace_yyvsp[-1].svc_record_), (ace_yyvsp[0].ident_));
01142       else
01143         (ace_yyval.parse_node_) = 0;
01144     ;}
01145     break;
01146 
01147   case 12:
01148 
01149     {
01150       (ace_yyval.parse_node_) = new ACE_Static_Node ((ace_yyvsp[-1].ident_), (ace_yyvsp[0].ident_));
01151     ;}
01152     break;
01153 
01154   case 13:
01155 
01156     {
01157       (ace_yyval.parse_node_) = new ACE_Suspend_Node ((ace_yyvsp[0].ident_));
01158     ;}
01159     break;
01160 
01161   case 14:
01162 
01163     {
01164       (ace_yyval.parse_node_) = new ACE_Resume_Node ((ace_yyvsp[0].ident_));
01165     ;}
01166     break;
01167 
01168   case 15:
01169 
01170     {
01171       (ace_yyval.parse_node_) = new ACE_Remove_Node ((ace_yyvsp[0].ident_));
01172     ;}
01173     break;
01174 
01175   case 16:
01176 
01177     {
01178       (ace_yyval.parse_node_) = new ACE_Stream_Node ((ace_yyvsp[-1].static_node_), (ace_yyvsp[0].parse_node_));
01179     ;}
01180     break;
01181 
01182   case 17:
01183 
01184     { (ace_yyval.static_node_) = new ACE_Static_Node ((ace_yyvsp[0].ident_)); ;}
01185     break;
01186 
01187   case 18:
01188 
01189     {
01190       (ace_yyval.parse_node_) = new ACE_Dummy_Node ((ace_yyvsp[-1].static_node_), (ace_yyvsp[0].parse_node_));
01191     ;}
01192     break;
01193 
01194   case 19:
01195 
01196     {
01197     ;}
01198     break;
01199 
01200   case 20:
01201 
01202     {
01203     ;}
01204     break;
01205 
01206   case 21:
01207 
01208     {
01209       // Initialize left context...
01210       (ace_yyval.static_node_) = (ace_yyvsp[-1].static_node_);
01211     ;}
01212     break;
01213 
01214   case 22:
01215 
01216     {
01217       (ace_yyval.parse_node_) = (ace_yyvsp[-1].parse_node_);
01218     ;}
01219     break;
01220 
01221   case 23:
01222 
01223     { (ace_yyval.parse_node_) = 0; ;}
01224     break;
01225 
01226   case 24:
01227 
01228     {
01229       if ((ace_yyvsp[0].parse_node_) != 0)
01230         {
01231           (ace_yyvsp[0].parse_node_)->link ((ace_yyvsp[-1].parse_node_));
01232           (ace_yyval.parse_node_) = (ace_yyvsp[0].parse_node_);
01233         }
01234     ;}
01235     break;
01236 
01237   case 25:
01238 
01239     { (ace_yyval.parse_node_) = 0; ;}
01240     break;
01241 
01242   case 26:
01243 
01244     {
01245       ACE_Static_Node *svc_type = (ace_yyvsp[0].static_node_);
01246 
01247       if (svc_type != 0)
01248         {
01249           ACE_Static_Node *module = (ace_yyvsp[-2].static_node_);
01250 
01251           ACE_ARGV args (svc_type->parameters ());
01252           ACE_Module_Type *mt = ace_get_module (module->record (ACE_SVC_CONF_PARAM->config),
01253                                                 svc_type->record (ACE_SVC_CONF_PARAM->config),
01254                                                 ACE_SVC_CONF_PARAM->yyerrno);
01255           ACE_Stream_Type *st =
01256             dynamic_cast<ACE_Stream_Type *> (const_cast<ACE_Service_Type_Impl *> (module->record (ACE_SVC_CONF_PARAM->config)->type ()));
01257 
01258           if (mt->init (args.argc (), args.argv ()) == -1
01259               || st->push (mt) == -1)
01260             {
01261               ACE_ERROR ((LM_ERROR,
01262                           ACE_LIB_TEXT ("dynamic initialization failed for Module %s\n"),
01263                           svc_type->name ()));
01264               ACE_SVC_CONF_PARAM->yyerrno++;
01265             }
01266         }
01267     ;}
01268     break;
01269 
01270   case 27:
01271 
01272     {
01273       ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_);
01274       ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config),
01275                                             (ace_yyvsp[0].static_node_)->name (),
01276                                             ACE_SVC_CONF_PARAM->yyerrno);
01277 
01278       if (((ACE_Stream_Type *) sn->record (ACE_SVC_CONF_PARAM->config)->type ())->push (mt) == -1)
01279         {
01280           ACE_ERROR ((LM_ERROR,
01281                       ACE_LIB_TEXT ("Problem with static\n")));
01282           ACE_SVC_CONF_PARAM->yyerrno++;
01283         }
01284     ;}
01285     break;
01286 
01287   case 28:
01288 
01289     {
01290       ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_);
01291       ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config),
01292                                             sn->name (),
01293                                             ACE_SVC_CONF_PARAM->yyerrno);
01294       if (mt != 0)
01295         mt->suspend ();
01296     ;}
01297     break;
01298 
01299   case 29:
01300 
01301     {
01302       ACE_Static_Node *sn = (ace_yyvsp[-2].static_node_);
01303       ACE_Module_Type *mt = ace_get_module (sn->record (ACE_SVC_CONF_PARAM->config),
01304                                             (ace_yyvsp[0].static_node_)->name (),
01305                                             ACE_SVC_CONF_PARAM->yyerrno);
01306       if (mt != 0)
01307         mt->resume ();
01308     ;}
01309     break;
01310 
01311   case 30:
01312 
01313     {
01314       ACE_Static_Node *stream = (ace_yyvsp[-2].static_node_);
01315       ACE_Static_Node *module = (ace_yyvsp[0].static_node_);
01316       ACE_Module_Type *mt = ace_get_module (stream->record (ACE_SVC_CONF_PARAM->config),
01317                                             module->name (),
01318                                             ACE_SVC_CONF_PARAM->yyerrno);
01319 
01320       ACE_Stream_Type *st =
01321         dynamic_cast<ACE_Stream_Type *> (const_cast<ACE_Service_Type_Impl *> (stream->record (ACE_SVC_CONF_PARAM->config)->type ()));
01322       if (mt != 0 && st->remove (mt) == -1)
01323         {
01324           ACE_ERROR ((LM_ERROR,
01325                       ACE_LIB_TEXT ("cannot remove Module_Type %s from STREAM_Type %s\n"),
01326                       module->name (),
01327                       stream->name ()));
01328           ACE_SVC_CONF_PARAM->yyerrno++;
01329         }
01330     ;}
01331     break;
01332 
01333   case 31:
01334 
01335     {
01336       (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_));
01337     ;}
01338     break;
01339 
01340   case 32:
01341 
01342     {
01343       (ace_yyval.type_) = 1;
01344     ;}
01345     break;
01346 
01347   case 33:
01348 
01349     {
01350       (ace_yyval.type_) = 0;
01351     ;}
01352     break;
01353 
01354   case 34:
01355 
01356     {
01357       (ace_yyval.type_) = 1;
01358     ;}
01359     break;
01360 
01361   case 35:
01362 
01363     {
01364       (ace_yyval.location_node_) = new ACE_Object_Node ((ace_yyvsp[-2].ident_), (ace_yyvsp[0].ident_));
01365     ;}
01366     break;
01367 
01368   case 36:
01369 
01370     {
01371       (ace_yyval.location_node_) = new ACE_Function_Node ((ace_yyvsp[-4].ident_), (ace_yyvsp[-2].ident_));
01372     ;}
01373     break;
01374 
01375   case 37:
01376 
01377     {
01378       (ace_yyval.location_node_) = new ACE_Static_Function_Node ((ace_yyvsp[-2].ident_));
01379     ;}
01380     break;
01381 
01382   case 38:
01383 
01384     {
01385       (ace_yyval.type_) = ACE_MODULE_T;
01386     ;}
01387     break;
01388 
01389   case 39:
01390 
01391     {
01392       (ace_yyval.type_) = ACE_SVC_OBJ_T;
01393     ;}
01394     break;
01395 
01396   case 40:
01397 
01398     {
01399       (ace_yyval.type_) = ACE_STREAM_T;
01400     ;}
01401     break;
01402 
01403   case 42:
01404 
01405     { (ace_yyval.ident_) = 0; ;}
01406     break;
01407 
01408 
01409     }
01410 
01411 /* Line 1037 of yacc.c.  */
01412 
01413 
01414   ace_yyvsp -= ace_yylen;
01415   ace_yyssp -= ace_yylen;
01416 
01417 
01418   ACE_YY_STACK_PRINT (ace_yyss, ace_yyssp);
01419 
01420   *++ace_yyvsp = ace_yyval;
01421 
01422 
01423   /* Now `shift' the result of the reduction.  Determine what state
01424      that goes to, based on the state we popped back to and the rule
01425      number reduced by.  */
01426 
01427   ace_yyn = ace_yyr1[ace_yyn];
01428 
01429   ace_yystate = ace_yypgoto[ace_yyn - ACE_YYNTOKENS] + *ace_yyssp;
01430   if (0 <= ace_yystate && ace_yystate <= ACE_YYLAST && ace_yycheck[ace_yystate] == *ace_yyssp)
01431     ace_yystate = ace_yytable[ace_yystate];
01432   else
01433     ace_yystate = ace_yydefgoto[ace_yyn - ACE_YYNTOKENS];
01434 
01435   goto ace_yynewstate;
01436 
01437 
01438 /*------------------------------------.
01439 | ace_yyerrlab -- here on detecting error |
01440 `------------------------------------*/
01441 ace_yyerrlab:
01442   /* If not already recovering from an error, report this error.  */
01443   if (!ace_yyerrstatus)
01444     {
01445       ++ace_yynerrs;
01446 #if ACE_YYERROR_VERBOSE
01447       ace_yyn = ace_yypact[ace_yystate];
01448 
01449       if (ACE_YYPACT_NINF < ace_yyn && ace_yyn < ACE_YYLAST)
01450   {
01451     ACE_YYSIZE_T ace_yysize = 0;
01452     int ace_yytype = ACE_YYTRANSLATE (ace_yychar);
01453     const char* ace_yyprefix;
01454     char *ace_yymsg;
01455     int ace_yyx;
01456 
01457     /* Start ACE_YYX at -ACE_YYN if negative to avoid negative indexes in
01458        ACE_YYCHECK.  */
01459     int ace_yyxbegin = ace_yyn < 0 ? -ace_yyn : 0;
01460 
01461     /* Stay within bounds of both ace_yycheck and ace_yytname.  */
01462     int ace_yychecklim = ACE_YYLAST - ace_yyn;
01463     int ace_yyxend = ace_yychecklim < ACE_YYNTOKENS ? ace_yychecklim : ACE_YYNTOKENS;
01464     int ace_yycount = 0;
01465 
01466     ace_yyprefix = ", expecting ";
01467     for (ace_yyx = ace_yyxbegin; ace_yyx < ace_yyxend; ++ace_yyx)
01468       if (ace_yycheck[ace_yyx + ace_yyn] == ace_yyx && ace_yyx != ACE_YYTERROR)
01469         {
01470     ace_yysize += ace_yystrlen (ace_yyprefix) + ace_yystrlen (ace_yytname [ace_yyx]);
01471     ace_yycount += 1;
01472     if (ace_yycount == 5)
01473       {
01474         ace_yysize = 0;
01475         break;
01476       }
01477         }
01478     ace_yysize += (sizeof ("syntax error, unexpected ")
01479          + ace_yystrlen (ace_yytname[ace_yytype]));
01480     ace_yymsg = (ACE_TCHAR *) ACE_YYSTACK_ALLOC (ace_yysize);
01481     if (ace_yymsg != 0)
01482       {
01483         char *ace_yyp = ace_yystpcpy (ace_yymsg, "syntax error, unexpected ");
01484         ace_yyp = ace_yystpcpy (ace_yyp, ace_yytname[ace_yytype]);
01485 
01486         if (ace_yycount < 5)
01487     {
01488       ace_yyprefix = ", expecting ";
01489       for (ace_yyx = ace_yyxbegin; ace_yyx < ace_yyxend; ++ace_yyx)
01490         if (ace_yycheck[ace_yyx + ace_yyn] == ace_yyx && ace_yyx != ACE_YYTERROR)
01491           {
01492       ace_yyp = ace_yystpcpy (ace_yyp, ace_yyprefix);
01493       ace_yyp = ace_yystpcpy (ace_yyp, ace_yytname[ace_yyx]);
01494       ace_yyprefix = " or ";
01495           }
01496     }
01497         ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, ace_yymsg);
01498         ACE_YYSTACK_FREE (ace_yymsg);
01499       }
01500     else
01501       ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "syntax error; also virtual memory exhausted");
01502   }
01503       else
01504 #endif /* ACE_YYERROR_VERBOSE */
01505   ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "syntax error");
01506     }
01507 
01508 
01509 
01510   if (ace_yyerrstatus == 3)
01511     {
01512       /* If just tried and failed to reuse look-ahead token after an
01513    error, discard it.  */
01514 
01515       if (ace_yychar <= ACE_YYEOF)
01516         {
01517           /* If at end of input, pop the error token,
01518        then the rest of the stack, then return failure.  */
01519     if (ace_yychar == ACE_YYEOF)
01520        for (;;)
01521          {
01522 
01523      ACE_YYPOPSTACK;
01524      if (ace_yyssp == ace_yyss)
01525        ACE_YYABORT;
01526      ace_yydestruct ("Error: popping",
01527                              ace_yystos[*ace_yyssp], ace_yyvsp);
01528          }
01529         }
01530       else
01531   {
01532     ace_yydestruct ("Error: discarding", ace_yytoken, &ace_yylval);
01533     ace_yychar = ACE_YYEMPTY;
01534   }
01535     }
01536 
01537   /* Else will try to reuse look-ahead token after shifting the error
01538      token.  */
01539   goto ace_yyerrlab1;
01540 
01541 
01542 /*---------------------------------------------------.
01543 | ace_yyerrorlab -- error raised explicitly by ACE_YYERROR.  |
01544 `---------------------------------------------------*/
01545 ace_yyerrorlab:
01546 
01547 #if defined (__GNUC__)  || defined (ACE_WIN32)
01548   /* Pacify GCC when the user code never invokes ACE_YYERROR and the label
01549      ace_yyerrorlab therefore never appears in user code.  */
01550   if (0)
01551      goto ace_yyerrorlab;
01552 #endif
01553 
01554 ace_yyvsp -= ace_yylen;
01555   ace_yyssp -= ace_yylen;
01556   ace_yystate = *ace_yyssp;
01557   goto ace_yyerrlab1;
01558 
01559 
01560 /*-------------------------------------------------------------.
01561 | ace_yyerrlab1 -- common code for both syntax error and ACE_YYERROR.  |
01562 `-------------------------------------------------------------*/
01563 ace_yyerrlab1:
01564   ace_yyerrstatus = 3;  /* Each real token shifted decrements this.  */
01565 
01566   for (;;)
01567     {
01568       ace_yyn = ace_yypact[ace_yystate];
01569       if (ace_yyn != ACE_YYPACT_NINF)
01570   {
01571     ace_yyn += ACE_YYTERROR;
01572     if (0 <= ace_yyn && ace_yyn <= ACE_YYLAST && ace_yycheck[ace_yyn] == ACE_YYTERROR)
01573       {
01574         ace_yyn = ace_yytable[ace_yyn];
01575         if (0 < ace_yyn)
01576     break;
01577       }
01578   }
01579 
01580       /* Pop the current state because it cannot handle the error token.  */
01581       if (ace_yyssp == ace_yyss)
01582   ACE_YYABORT;
01583 
01584 
01585       ace_yydestruct ("Error: popping", ace_yystos[ace_yystate], ace_yyvsp);
01586       ACE_YYPOPSTACK;
01587       ace_yystate = *ace_yyssp;
01588       ACE_YY_STACK_PRINT (ace_yyss, ace_yyssp);
01589     }
01590 
01591   if (ace_yyn == ACE_YYFINAL)
01592     ACE_YYACCEPT;
01593 
01594   *++ace_yyvsp = ace_yylval;
01595 
01596 
01597   /* Shift the error token. */
01598   ACE_YY_SYMBOL_PRINT ("Shifting", ace_yystos[ace_yyn], ace_yyvsp, ace_yylsp);
01599 
01600   ace_yystate = ace_yyn;
01601   goto ace_yynewstate;
01602 
01603 
01604 /*-------------------------------------.
01605 | ace_yyacceptlab -- ACE_YYACCEPT comes here.  |
01606 `-------------------------------------*/
01607 ace_yyacceptlab:
01608   ace_yyresult = 0;
01609   goto ace_yyreturn;
01610 
01611 /*-----------------------------------.
01612 | ace_yyabortlab -- ACE_YYABORT comes here.  |
01613 `-----------------------------------*/
01614 ace_yyabortlab:
01615   ace_yydestruct ("Error: discarding lookahead",
01616               ace_yytoken, &ace_yylval);
01617   ace_yychar = ACE_YYEMPTY;
01618   ace_yyresult = 1;
01619   goto ace_yyreturn;
01620 
01621 #ifndef ace_yyoverflow
01622 /*----------------------------------------------.
01623 | ace_yyoverflowlab -- parser overflow comes here.  |
01624 `----------------------------------------------*/
01625 ace_yyoverflowlab:
01626   ace_yyerror (ACE_SVC_CONF_PARAM->yyerrno, ACE_SVC_CONF_PARAM->yylineno, "parser stack overflow");
01627   ace_yyresult = 2;
01628   /* Fall through.  */
01629 #endif
01630 
01631 ace_yyreturn:
01632 #ifndef ace_yyoverflow
01633   if (ace_yyss != ace_yyssa)
01634     ACE_YYSTACK_FREE (ace_yyss);
01635 #endif
01636   return ace_yyresult;
01637 }


Variable Documentation

ACE_YY_DECL
 

Performs the lexical analysis.

Definition at line 78 of file Svc_Conf.h.

FILE* ace_yyin
 

Name of input stream.

Definition at line 81 of file Svc_Conf.h.

int ace_yyleng
 

Holds the length of the lexeme for the current token.

Definition at line 90 of file Svc_Conf.h.

ACE_TCHAR* ace_yytext
 

Holds the lexeme for the current token.

Definition at line 87 of file Svc_Conf.h.


Generated on Thu Nov 9 11:11:16 2006 for ACE by doxygen 1.3.6