#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:

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

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_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. | |
Variables | |
| ACE_YY_DECL | |
| Performs the lexical analysis. | |
| FILE * | ace_yyin |
| Name of input stream. | |
| ACE_TCHAR * | ace_yytext |
| Holds the lexeme for the current token. | |
| int | ace_yyleng |
| Holds the length of the lexeme for the current token. | |
Definition in file Svc_Conf.h.
|
|
Definition at line 45 of file Svc_Conf.h. |
|
||||||||||||||||||||||||
|
Factory that creates a new ACE_Service_Type_Impl.
|
|
||||||||||||||||
|
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 }
|
|
|
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 }
|
|
|
Performs the lexical analysis.
Definition at line 78 of file Svc_Conf.h. |
|
|
Name of input stream.
Definition at line 81 of file Svc_Conf.h. |
|
|
Holds the length of the lexeme for the current token.
Definition at line 90 of file Svc_Conf.h. |
|
|
Holds the lexeme for the current token.
Definition at line 87 of file Svc_Conf.h. |
1.3.6