00001
00002
00003
00004
00005
00006 #define YYBISON 1
00007
00008 #define ETCL_GT 257
00009 #define ETCL_GE 258
00010 #define ETCL_LT 259
00011 #define ETCL_LE 260
00012 #define ETCL_EQ 261
00013 #define ETCL_NE 262
00014 #define ETCL_EXIST 263
00015 #define ETCL_DEFAULT 264
00016 #define ETCL_AND 265
00017 #define ETCL_OR 266
00018 #define ETCL_NOT 267
00019 #define ETCL_IN 268
00020 #define ETCL_TWIDDLE 269
00021 #define ETCL_BOOLEAN 270
00022 #define ETCL_PLUS 271
00023 #define ETCL_MINUS 272
00024 #define ETCL_MULT 273
00025 #define ETCL_DIV 274
00026 #define ETCL_UMINUS 275
00027 #define ETCL_INTEGER 276
00028 #define ETCL_FLOAT 277
00029 #define ETCL_STRING 278
00030 #define ETCL_RPAREN 279
00031 #define ETCL_LPAREN 280
00032 #define ETCL_RBRA 281
00033 #define ETCL_LBRA 282
00034 #define ETCL_IDENT 283
00035 #define ETCL_UNSIGNED 284
00036 #define ETCL_SIGNED 285
00037 #define ETCL_DOUBLE 286
00038 #define ETCL_CONSTRAINT 287
00039 #define ETCL_COMPONENT 288
00040 #define ETCL_WITH 289
00041 #define ETCL_MAX 290
00042 #define ETCL_MIN 291
00043 #define ETCL_FIRST 292
00044 #define ETCL_RANDOM 293
00045 #define ETCL_DOLLAR 294
00046 #define ETCL_DOT 295
00047 #define ETCL_DISCRIMINANT 296
00048 #define ETCL_LENGTH 297
00049 #define ETCL_TYPE_ID 298
00050 #define ETCL_REPOS_ID 299
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 #include "ace/ETCL/ETCL_y.h"
00070 #include "ace/ETCL/ETCL_Constraint.h"
00071 #include "ace/ETCL/ETCL_Interpreter.h"
00072
00073 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00074
00075 extern int yylex (void);
00076 extern void yyflush_current_buffer (void);
00077
00078 static void yyerror (const char *)
00079 {
00080
00081
00082 }
00083
00084 ACE_END_VERSIONED_NAMESPACE_DECL
00085
00086 #include <stdio.h>
00087
00088 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00089
00090 #ifndef __cplusplus
00091 #ifndef __STDC__
00092 #define const
00093 #endif
00094 #endif
00095
00096
00097
00098 #define YYFINAL 114
00099 #define YYFLAG -32768
00100 #define YYNTBASE 46
00101
00102 #define YYTRANSLATE(x) ((unsigned)(x) <= 299 ? yytranslate[x] : 65)
00103
00104 static const char yytranslate[] = { 0,
00105 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00106 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00107 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00109 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00110 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00111 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00112 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00113 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00115 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00116 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00117 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00118 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00119 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00120 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00121 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00122 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00123 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00124 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00125 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00127 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00129 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00130 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
00131 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00132 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
00133 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
00134 37, 38, 39, 40, 41, 42, 43, 44, 45
00135 };
00136
00137 #if YYDEBUG != 0
00138 static const short yyprhs[] = { 0,
00139 0, 2, 4, 7, 10, 13, 15, 17, 21, 23,
00140 27, 29, 33, 37, 41, 45, 49, 53, 55, 59,
00141 64, 66, 70, 72, 76, 80, 82, 86, 90, 92,
00142 95, 97, 101, 103, 106, 109, 111, 114, 117, 119,
00143 121, 124, 128, 132, 135, 137, 138, 141, 144, 146,
00144 148, 149, 152, 154, 156, 159, 161, 163, 165, 167,
00145 169, 171, 176, 181, 184, 189, 190, 192, 195, 198
00146 };
00147
00148 static const short yyrhs[] = { 48,
00149 0, 47, 0, 37, 48, 0, 36, 48, 0, 35,
00150 48, 0, 38, 0, 39, 0, 48, 12, 49, 0,
00151 49, 0, 49, 11, 50, 0, 50, 0, 51, 7,
00152 51, 0, 51, 8, 51, 0, 51, 3, 51, 0,
00153 51, 4, 51, 0, 51, 5, 51, 0, 51, 6,
00154 51, 0, 51, 0, 52, 14, 57, 0, 52, 14,
00155 40, 57, 0, 52, 0, 53, 15, 53, 0, 53,
00156 0, 53, 17, 54, 0, 53, 18, 54, 0, 54,
00157 0, 54, 19, 55, 0, 54, 20, 55, 0, 55,
00158 0, 13, 56, 0, 56, 0, 26, 48, 25, 0,
00159 22, 0, 17, 22, 0, 18, 22, 0, 23, 0,
00160 17, 23, 0, 18, 23, 0, 24, 0, 16, 0,
00161 9, 29, 0, 9, 40, 57, 0, 10, 40, 57,
00162 0, 40, 57, 0, 29, 0, 0, 41, 59, 0,
00163 29, 58, 0, 60, 0, 61, 0, 0, 41, 59,
00164 0, 60, 0, 61, 0, 29, 58, 0, 43, 0,
00165 42, 0, 44, 0, 45, 0, 62, 0, 63, 0,
00166 28, 22, 27, 58, 0, 26, 29, 25, 58, 0,
00167 22, 58, 0, 26, 64, 25, 58, 0, 0, 22,
00168 0, 17, 22, 0, 18, 22, 0, 24, 0
00169 };
00170
00171 #endif
00172
00173 #if YYDEBUG != 0
00174 static const short yyrline[] = { 0,
00175 92, 93, 96, 98, 100, 102, 104, 108, 110, 113,
00176 115, 118, 120, 122, 124, 126, 128, 130, 133, 135,
00177 137, 140, 142, 145, 147, 149, 152, 154, 156, 159,
00178 161, 164, 166, 168, 170, 172, 174, 176, 178, 180,
00179 182, 184, 186, 188, 190, 194, 196, 199, 202, 203,
00180 206, 208, 211, 212, 215, 217, 219, 221, 223, 225,
00181 226, 229, 233, 237, 241, 245, 247, 249, 251, 253
00182 };
00183 #endif
00184
00185
00186 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
00187
00188 static const char * const yytname[] = { "$","error","$undefined.","ETCL_GT",
00189 "ETCL_GE","ETCL_LT","ETCL_LE","ETCL_EQ","ETCL_NE","ETCL_EXIST",
00190 "ETCL_DEFAULT","ETCL_AND","ETCL_OR","ETCL_NOT","ETCL_IN",
00191 "ETCL_TWIDDLE","ETCL_BOOLEAN","ETCL_PLUS","ETCL_MINUS","ETCL_MULT",
00192 "ETCL_DIV","ETCL_UMINUS","ETCL_INTEGER","ETCL_FLOAT","ETCL_STRING",
00193 "ETCL_RPAREN","ETCL_LPAREN","ETCL_RBRA","ETCL_LBRA","ETCL_IDENT",
00194 "ETCL_UNSIGNED","ETCL_SIGNED","ETCL_DOUBLE","ETCL_CONSTRAINT",
00195 "ETCL_COMPONENT","ETCL_WITH","ETCL_MAX","ETCL_MIN","ETCL_FIRST",
00196 "ETCL_RANDOM","ETCL_DOLLAR","ETCL_DOT","ETCL_DISCRIMINANT","ETCL_LENGTH",
00197 "ETCL_TYPE_ID","ETCL_REPOS_ID","constraint","preference","bool_or","bool_and",
00198 "bool_compare","expr_in","expr_twiddle","expr","term","factor_not","factor",
00199 "component","component_ext","component_dot","component_array","component_assoc",
00200 "component_pos","union_pos","union_val", 0
00201 };
00202 #endif
00203
00204 static const short yyr1[] = { 0,
00205 46, 46, 47, 47, 47, 47, 47, 48, 48, 49,
00206 49, 50, 50, 50, 50, 50, 50, 50, 51, 51,
00207 51, 52, 52, 53, 53, 53, 54, 54, 54, 55,
00208 55, 56, 56, 56, 56, 56, 56, 56, 56, 56,
00209 56, 56, 56, 56, 56, 57, 57, 57, 57, 57,
00210 58, 58, 58, 58, 59, 59, 59, 59, 59, 59,
00211 59, 60, 61, 62, 63, 64, 64, 64, 64, 64
00212 };
00213
00214 static const short yyr2[] = { 0,
00215 1, 1, 2, 2, 2, 1, 1, 3, 1, 3,
00216 1, 3, 3, 3, 3, 3, 3, 1, 3, 4,
00217 1, 3, 1, 3, 3, 1, 3, 3, 1, 2,
00218 1, 3, 1, 2, 2, 1, 2, 2, 1, 1,
00219 2, 3, 3, 2, 1, 0, 2, 2, 1, 1,
00220 0, 2, 1, 1, 2, 1, 1, 1, 1, 1,
00221 1, 4, 4, 2, 4, 0, 1, 2, 2, 1
00222 };
00223
00224 static const short yydefact[] = { 0,
00225 0, 0, 0, 40, 0, 0, 33, 36, 39, 0,
00226 45, 0, 0, 0, 6, 7, 46, 2, 1, 9,
00227 11, 18, 21, 23, 26, 29, 31, 41, 46, 46,
00228 30, 34, 37, 35, 38, 0, 5, 4, 3, 0,
00229 0, 51, 0, 44, 49, 50, 0, 0, 0, 0,
00230 0, 0, 0, 0, 46, 0, 0, 0, 0, 0,
00231 42, 43, 32, 0, 0, 0, 48, 53, 54, 51,
00232 66, 51, 57, 56, 58, 59, 47, 60, 61, 8,
00233 10, 14, 15, 16, 17, 12, 13, 46, 19, 22,
00234 24, 25, 27, 28, 51, 51, 52, 64, 0, 0,
00235 67, 70, 0, 55, 20, 63, 62, 68, 69, 51,
00236 65, 0, 0, 0
00237 };
00238
00239 static const short yydefgoto[] = { 112,
00240 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
00241 44, 67, 77, 68, 69, 78, 79, 103
00242 };
00243
00244 static const short yypact[] = { 41,
00245 -13, -39, 94,-32768, 38, 46,-32768,-32768,-32768, 73,
00246 -32768, 73, 73, 73,-32768,-32768, -9,-32768, -6, 7,
00247 -32768, 121, -5, 19, 55,-32768,-32768,-32768, -9, -9,
00248 -32768,-32768,-32768,-32768,-32768, 21, -6, -6, -6, 6,
00249 25, -2, -1,-32768,-32768,-32768, 73, 73, 73, 73,
00250 73, 73, 73, 73, -18, 73, 73, 73, 73, 73,
00251 -32768,-32768,-32768, 27, 29, -1,-32768,-32768,-32768, -2,
00252 31, -2,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 7,
00253 -32768,-32768,-32768,-32768,-32768,-32768,-32768, -9,-32768, 67,
00254 55, 55,-32768,-32768, -2, -2,-32768,-32768, 44, 50,
00255 -32768,-32768, 69,-32768,-32768,-32768,-32768,-32768,-32768, -2,
00256 -32768, 98, 100,-32768
00257 };
00258
00259 static const short yypgoto[] = {-32768,
00260 -32768, 95, 54, 58, 86,-32768, 59, 30, 33, 111,
00261 -26, -65, 53, -17, -15,-32768,-32768,-32768
00262 };
00263
00264
00265 #define YYLAST 140
00266
00267
00268 static const short yytable[] = { 45,
00269 30, 46, 61, 62, 98, 47, 104, 40, 55, 41,
00270 42, 45, 45, 46, 46, 28, 40, 48, 41, 42,
00271 70, 88, 43, 40, 71, 41, 29, 72, 89, 106,
00272 107, 43, 47, 56, 64, 57, 58, 45, 66, 46,
00273 73, 74, 75, 76, 111, 63, 65, 99, 100, 1,
00274 2, 95, 101, 3, 102, 96, 4, 5, 6, 32,
00275 33, 105, 7, 8, 9, 108, 10, 34, 35, 11,
00276 45, 109, 46, 59, 60, 12, 13, 14, 15, 16,
00277 17, 1, 2, 57, 58, 3, 91, 92, 4, 5,
00278 6, 93, 94, 110, 7, 8, 9, 113, 10, 114,
00279 80, 11, 1, 2, 36, 81, 37, 38, 39, 4,
00280 5, 6, 17, 31, 90, 7, 8, 9, 97, 10,
00281 0, 0, 11, 49, 50, 51, 52, 53, 54, 0,
00282 0, 0, 0, 17, 82, 83, 84, 85, 86, 87
00283 };
00284
00285 static const short yycheck[] = { 17,
00286 40, 17, 29, 30, 70, 12, 72, 26, 14, 28,
00287 29, 29, 30, 29, 30, 29, 26, 11, 28, 29,
00288 22, 40, 41, 26, 26, 28, 40, 29, 55, 95,
00289 96, 41, 12, 15, 29, 17, 18, 55, 41, 55,
00290 42, 43, 44, 45, 110, 25, 22, 17, 18, 9,
00291 10, 25, 22, 13, 24, 27, 16, 17, 18, 22,
00292 23, 88, 22, 23, 24, 22, 26, 22, 23, 29,
00293 88, 22, 88, 19, 20, 35, 36, 37, 38, 39,
00294 40, 9, 10, 17, 18, 13, 57, 58, 16, 17,
00295 18, 59, 60, 25, 22, 23, 24, 0, 26, 0,
00296 47, 29, 9, 10, 10, 48, 12, 13, 14, 16,
00297 17, 18, 40, 3, 56, 22, 23, 24, 66, 26,
00298 -1, -1, 29, 3, 4, 5, 6, 7, 8, -1,
00299 -1, -1, -1, 40, 49, 50, 51, 52, 53, 54
00300 };
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333 ACE_END_VERSIONED_NAMESPACE_DECL
00334
00335 #ifndef YYSTACK_USE_ALLOCA
00336 #ifdef alloca
00337 #define YYSTACK_USE_ALLOCA
00338 #else
00339 #ifdef __GNUC__
00340 #define YYSTACK_USE_ALLOCA
00341 #define alloca __builtin_alloca
00342 #else
00343 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
00344 #define YYSTACK_USE_ALLOCA
00345 #include <alloca.h>
00346 #else
00347
00348
00349
00350 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
00351 #if 0
00352
00353 #include <malloc.h>
00354 #endif
00355 #else
00356 #if defined(_AIX)
00357
00358
00359
00360 #pragma alloca
00361 #define YYSTACK_USE_ALLOCA
00362 #else
00363 #if 0
00364 #ifdef __hpux
00365
00366 #define YYSTACK_USE_ALLOCA
00367 #define alloca __builtin_alloca
00368 #endif
00369 #endif
00370 #endif
00371 #endif
00372 #endif
00373 #endif
00374 #endif
00375 #endif
00376
00377 #ifdef YYSTACK_USE_ALLOCA
00378 #define YYSTACK_ALLOC alloca
00379 #else
00380 #define YYSTACK_ALLOC malloc
00381 #endif
00382
00383
00384
00385
00386
00387 #define yyerrok (yyerrstatus = 0)
00388 #define yyclearin (yychar = YYEMPTY)
00389 #define YYEMPTY -2
00390 #define YYEOF 0
00391 #define YYACCEPT goto yyacceptlab
00392 #define YYABORT goto yyabortlab
00393 #define YYERROR goto yyerrlab1
00394
00395
00396
00397
00398 #define YYFAIL goto yyerrlab
00399 #define YYRECOVERING() (!!yyerrstatus)
00400 #define YYBACKUP(token, value) \
00401 do \
00402 if (yychar == YYEMPTY && yylen == 1) \
00403 { yychar = (token), yylval = (value); \
00404 yychar1 = YYTRANSLATE (yychar); \
00405 YYPOPSTACK; \
00406 goto yybackup; \
00407 } \
00408 else \
00409 { yyerror ("syntax error: cannot back up"); YYERROR; } \
00410 while (0)
00411
00412 #define YYTERROR 1
00413 #define YYERRCODE 256
00414
00415 #ifndef YYPURE
00416 #define YYLEX yylex()
00417 #endif
00418
00419 #ifdef YYPURE
00420 #ifdef YYLSP_NEEDED
00421 #ifdef YYLEX_PARAM
00422 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
00423 #else
00424 #define YYLEX yylex(&yylval, &yylloc)
00425 #endif
00426 #else
00427 #ifdef YYLEX_PARAM
00428 #define YYLEX yylex(&yylval, YYLEX_PARAM)
00429 #else
00430 #define YYLEX yylex(&yylval)
00431 #endif
00432 #endif
00433 #endif
00434
00435 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00436
00437
00438
00439 #ifndef YYPURE
00440
00441 int yychar;
00442 YYSTYPE yylval;
00443
00444 YYSTYPE yyval;
00445
00446
00447
00448
00449 #ifdef YYLSP_NEEDED
00450 YYLTYPE yylloc;
00451
00452 #endif
00453
00454 int yynerrs;
00455 #endif
00456
00457 #if YYDEBUG != 0
00458 int yydebug;
00459
00460
00461 #endif
00462
00463
00464
00465 #ifndef YYINITDEPTH
00466 #define YYINITDEPTH 200
00467 #endif
00468
00469
00470
00471
00472 #if YYMAXDEPTH == 0
00473 #undef YYMAXDEPTH
00474 #endif
00475
00476 #ifndef YYMAXDEPTH
00477 #define YYMAXDEPTH 10000
00478 #endif
00479
00480
00481
00482
00483
00484
00485 #if __GNUC__ > 1
00486 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
00487 #else
00488 #ifndef __cplusplus
00489
00490
00491
00492 static void
00493 __yy_memcpy (to, from, count)
00494 char *to;
00495 char *from;
00496 unsigned int count;
00497 {
00498 register char *f = from;
00499 register char *t = to;
00500 register int i = count;
00501
00502 while (i-- > 0)
00503 *t++ = *f++;
00504 }
00505
00506 #else
00507
00508
00509
00510 static void
00511 __yy_memcpy (char *to, char *from, unsigned int count)
00512 {
00513 register char *t = to;
00514 register char *f = from;
00515 register int i = count;
00516
00517 while (i-- > 0)
00518 *t++ = *f++;
00519 }
00520
00521 #endif
00522 #endif
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532 #ifdef YYPARSE_PARAM
00533 #ifdef __cplusplus
00534 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
00535 #define YYPARSE_PARAM_DECL
00536 #else
00537 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
00538 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
00539 #endif
00540 #else
00541 #define YYPARSE_PARAM_ARG
00542 #define YYPARSE_PARAM_DECL
00543 #endif
00544
00545
00546 #ifdef __GNUC__
00547 #ifdef YYPARSE_PARAM
00548 int yyparse (void *);
00549 #else
00550 int yyparse (void);
00551 #endif
00552 #endif
00553
00554 int
00555 yyparse(YYPARSE_PARAM_ARG)
00556 YYPARSE_PARAM_DECL
00557 {
00558 register int yystate;
00559 register int yyn;
00560 register short *yyssp;
00561 register YYSTYPE *yyvsp;
00562 int yyerrstatus;
00563 int yychar1 = 0;
00564
00565 short yyssa[YYINITDEPTH];
00566 YYSTYPE yyvsa[YYINITDEPTH];
00567
00568 short *yyss = yyssa;
00569 YYSTYPE *yyvs = yyvsa;
00570
00571 #ifdef YYLSP_NEEDED
00572 YYLTYPE yylsa[YYINITDEPTH];
00573 YYLTYPE *yyls = yylsa;
00574 YYLTYPE *yylsp;
00575
00576 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
00577 #else
00578 #define YYPOPSTACK (yyvsp--, yyssp--)
00579 #endif
00580
00581 int yystacksize = YYINITDEPTH;
00582 int yyfree_stacks = 0;
00583
00584 #ifdef YYPURE
00585 int yychar;
00586 YYSTYPE yylval;
00587 int yynerrs;
00588 #ifdef YYLSP_NEEDED
00589 YYLTYPE yylloc;
00590 #endif
00591 #endif
00592
00593 int yylen;
00594
00595 #if YYDEBUG != 0
00596 if (yydebug)
00597 ACE_OS::fprintf(stderr, "Starting parse\n");
00598 #endif
00599
00600 yystate = 0;
00601 yyerrstatus = 0;
00602 yynerrs = 0;
00603 yychar = YYEMPTY;
00604
00605
00606
00607
00608
00609
00610 yyssp = yyss - 1;
00611 yyvsp = yyvs;
00612 #ifdef YYLSP_NEEDED
00613 yylsp = yyls;
00614 #endif
00615
00616
00617
00618
00619 yynewstate:
00620
00621 *++yyssp = yystate;
00622
00623 if (yyssp >= yyss + yystacksize - 1)
00624 {
00625
00626
00627 YYSTYPE *yyvs1 = yyvs;
00628 short *yyss1 = yyss;
00629 #ifdef YYLSP_NEEDED
00630 YYLTYPE *yyls1 = yyls;
00631 #endif
00632
00633
00634 int size = yyssp - yyss + 1;
00635
00636 #ifdef yyoverflow
00637
00638
00639 #ifdef YYLSP_NEEDED
00640
00641
00642 yyoverflow("parser stack overflow",
00643 &yyss1, size * sizeof (*yyssp),
00644 &yyvs1, size * sizeof (*yyvsp),
00645 &yyls1, size * sizeof (*yylsp),
00646 &yystacksize);
00647 #else
00648 yyoverflow("parser stack overflow",
00649 &yyss1, size * sizeof (*yyssp),
00650 &yyvs1, size * sizeof (*yyvsp),
00651 &yystacksize);
00652 #endif
00653
00654 yyss = yyss1; yyvs = yyvs1;
00655 #ifdef YYLSP_NEEDED
00656 yyls = yyls1;
00657 #endif
00658 #else
00659
00660 if (yystacksize >= YYMAXDEPTH)
00661 {
00662 yyerror("parser stack overflow");
00663 if (yyfree_stacks)
00664 {
00665 ACE_OS::free (yyss);
00666 ACE_OS::free (yyvs);
00667 #ifdef YYLSP_NEEDED
00668 ACE_OS::free (yyls);
00669 #endif
00670 }
00671 return 2;
00672 }
00673 yystacksize *= 2;
00674 if (yystacksize > YYMAXDEPTH)
00675 yystacksize = YYMAXDEPTH;
00676 #ifndef YYSTACK_USE_ALLOCA
00677 yyfree_stacks = 1;
00678 #endif
00679 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
00680 __yy_memcpy ((char *)yyss, (char *)yyss1,
00681 size * (unsigned int) sizeof (*yyssp));
00682 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
00683 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
00684 size * (unsigned int) sizeof (*yyvsp));
00685 #ifdef YYLSP_NEEDED
00686 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
00687 __yy_memcpy ((char *)yyls, (char *)yyls1,
00688 size * (unsigned int) sizeof (*yylsp));
00689 #endif
00690 #endif
00691
00692 yyssp = yyss + size - 1;
00693 yyvsp = yyvs + size - 1;
00694 #ifdef YYLSP_NEEDED
00695 yylsp = yyls + size - 1;
00696 #endif
00697
00698 #if YYDEBUG != 0
00699 if (yydebug)
00700 ACE_OS::fprintf(stderr, "Stack size increased to %d\n", yystacksize);
00701 #endif
00702
00703 if (yyssp >= yyss + yystacksize - 1)
00704 YYABORT;
00705 }
00706
00707 #if YYDEBUG != 0
00708 if (yydebug)
00709 ACE_OS::fprintf(stderr, "Entering state %d\n", yystate);
00710 #endif
00711
00712 goto yybackup;
00713 yybackup:
00714
00715
00716
00717
00718
00719
00720
00721 yyn = yypact[yystate];
00722 if (yyn == YYFLAG)
00723 goto yydefault;
00724
00725
00726
00727
00728
00729
00730 if (yychar == YYEMPTY)
00731 {
00732 #if YYDEBUG != 0
00733 if (yydebug)
00734 ACE_OS::fprintf(stderr, "Reading a token: ");
00735 #endif
00736 yychar = YYLEX;
00737 }
00738
00739
00740
00741 if (yychar <= 0)
00742 {
00743 yychar1 = 0;
00744 yychar = YYEOF;
00745
00746 #if YYDEBUG != 0
00747 if (yydebug)
00748 ACE_OS::fprintf(stderr, "Now at end of input.\n");
00749 #endif
00750 }
00751 else
00752 {
00753 yychar1 = YYTRANSLATE(yychar);
00754
00755 #if YYDEBUG != 0
00756 if (yydebug)
00757 {
00758 ACE_OS::fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
00759
00760
00761 #ifdef YYPRINT
00762 YYPRINT (stderr, yychar, yylval);
00763 #endif
00764 ACE_OS::fprintf (stderr, ")\n");
00765 }
00766 #endif
00767 }
00768
00769 yyn += yychar1;
00770 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
00771 goto yydefault;
00772
00773 yyn = yytable[yyn];
00774
00775
00776
00777
00778
00779
00780
00781
00782 if (yyn < 0)
00783 {
00784 if (yyn == YYFLAG)
00785 goto yyerrlab;
00786 yyn = -yyn;
00787 goto yyreduce;
00788 }
00789 else if (yyn == 0)
00790 goto yyerrlab;
00791
00792 if (yyn == YYFINAL)
00793 YYACCEPT;
00794
00795
00796
00797 #if YYDEBUG != 0
00798 if (yydebug)
00799 ACE_OS::fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
00800 #endif
00801
00802
00803 if (yychar != YYEOF)
00804 yychar = YYEMPTY;
00805
00806 *++yyvsp = yylval;
00807 #ifdef YYLSP_NEEDED
00808 *++yylsp = yylloc;
00809 #endif
00810
00811
00812 if (yyerrstatus) yyerrstatus--;
00813
00814 yystate = yyn;
00815 goto yynewstate;
00816
00817
00818 yydefault:
00819
00820 yyn = yydefact[yystate];
00821 if (yyn == 0)
00822 goto yyerrlab;
00823
00824
00825 yyreduce:
00826 yylen = yyr2[yyn];
00827 if (yylen > 0)
00828 yyval = yyvsp[1-yylen];
00829
00830 #if YYDEBUG != 0
00831 if (yydebug)
00832 {
00833 int i;
00834
00835 ACE_OS::fprintf (stderr, "Reducing via rule %d (line %d), ",
00836 yyn, yyrline[yyn]);
00837
00838
00839 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
00840 ACE_OS::fprintf (stderr, "%s ", yytname[yyrhs[i]]);
00841 ACE_OS::fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
00842 }
00843 #endif
00844
00845
00846 switch (yyn) {
00847
00848 case 3:
00849
00850 { yyval.constraint = new ETCL_Preference (ETCL_MIN, yyvsp[0].constraint); ;
00851 break;}
00852 case 4:
00853
00854 { yyval.constraint = new ETCL_Preference (ETCL_MAX, yyvsp[0].constraint); ;
00855 break;}
00856 case 5:
00857
00858 { yyval.constraint = new ETCL_Preference (ETCL_WITH, yyvsp[0].constraint); ;
00859 break;}
00860 case 6:
00861
00862 { yyval.constraint = new ETCL_Preference (ETCL_FIRST); ;
00863 break;}
00864 case 7:
00865
00866 { yyval.constraint = new ETCL_Preference (ETCL_RANDOM); ;
00867 break;}
00868 case 8:
00869
00870 { yyval.constraint = new ETCL_Binary_Expr (ETCL_OR, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00871 break;}
00872 case 10:
00873
00874 { yyval.constraint = new ETCL_Binary_Expr (ETCL_AND, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00875 break;}
00876 case 12:
00877
00878 { yyval.constraint = new ETCL_Binary_Expr (ETCL_EQ, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00879 break;}
00880 case 13:
00881
00882 { yyval.constraint = new ETCL_Binary_Expr (ETCL_NE, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00883 break;}
00884 case 14:
00885
00886 { yyval.constraint = new ETCL_Binary_Expr (ETCL_GT, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00887 break;}
00888 case 15:
00889
00890 { yyval.constraint = new ETCL_Binary_Expr (ETCL_GE, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00891 break;}
00892 case 16:
00893
00894 { yyval.constraint = new ETCL_Binary_Expr (ETCL_LT, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00895 break;}
00896 case 17:
00897
00898 { yyval.constraint = new ETCL_Binary_Expr (ETCL_LE, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00899 break;}
00900 case 19:
00901
00902 { yyval.constraint = new ETCL_Binary_Expr (ETCL_IN, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00903 break;}
00904 case 20:
00905
00906 { yyval.constraint = new ETCL_Binary_Expr (ETCL_IN, yyvsp[-3].constraint, yyvsp[0].constraint); ;
00907 break;}
00908 case 22:
00909
00910 { yyval.constraint = new ETCL_Binary_Expr (ETCL_TWIDDLE, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00911 break;}
00912 case 24:
00913
00914 { yyval.constraint = new ETCL_Binary_Expr (ETCL_PLUS, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00915 break;}
00916 case 25:
00917
00918 { yyval.constraint = new ETCL_Binary_Expr (ETCL_MINUS, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00919 break;}
00920 case 27:
00921
00922 { yyval.constraint = new ETCL_Binary_Expr (ETCL_MULT, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00923 break;}
00924 case 28:
00925
00926 { yyval.constraint = new ETCL_Binary_Expr (ETCL_DIV, yyvsp[-2].constraint, yyvsp[0].constraint); ;
00927 break;}
00928 case 30:
00929
00930 { yyval.constraint = new ETCL_Unary_Expr (ETCL_NOT, yyvsp[0].constraint); ;
00931 break;}
00932 case 32:
00933
00934 { yyval.constraint = yyvsp[-1].constraint; ;
00935 break;}
00936 case 33:
00937
00938 { yyval.constraint = yyvsp[0].constraint; ;
00939 break;}
00940 case 34:
00941
00942 { yyval.constraint = new ETCL_Unary_Expr (ETCL_PLUS, yyvsp[0].constraint); ;
00943 break;}
00944 case 35:
00945
00946 { yyval.constraint = new ETCL_Unary_Expr (ETCL_MINUS, yyvsp[0].constraint); ;
00947 break;}
00948 case 36:
00949
00950 { yyval.constraint = yyvsp[0].constraint; ;
00951 break;}
00952 case 37:
00953
00954 { yyval.constraint = new ETCL_Unary_Expr (ETCL_PLUS, yyvsp[0].constraint); ;
00955 break;}
00956 case 38:
00957
00958 { yyval.constraint = new ETCL_Unary_Expr (ETCL_MINUS, yyvsp[0].constraint); ;
00959 break;}
00960 case 39:
00961
00962 { yyval.constraint = yyvsp[0].constraint; ;
00963 break;}
00964 case 40:
00965
00966 { yyval.constraint = yyvsp[0].constraint; ;
00967 break;}
00968 case 41:
00969
00970 { yyval.constraint = new ETCL_Exist (yyvsp[0].constraint); ;
00971 break;}
00972 case 42:
00973
00974 { yyval.constraint = new ETCL_Exist (yyvsp[0].constraint); ;
00975 break;}
00976 case 43:
00977
00978 { yyval.constraint = new ETCL_Default (yyvsp[0].constraint); ;
00979 break;}
00980 case 44:
00981
00982 { yyval.constraint = new ETCL_Eval (yyvsp[0].constraint); ;
00983 break;}
00984 case 45:
00985
00986 { yyval.constraint = yyvsp[0].constraint; ;
00987 break;}
00988 case 46:
00989
00990 { yyval.constraint = 0; ;
00991 break;}
00992 case 47:
00993
00994 { yyval.constraint = new ETCL_Dot (yyvsp[0].constraint); ;
00995 break;}
00996 case 48:
00997
00998 { yyval.constraint = new ETCL_Component (yyvsp[-1].constraint, yyvsp[0].constraint); ;
00999 break;}
01000 case 51:
01001
01002 { yyval.constraint = 0; ;
01003 break;}
01004 case 52:
01005
01006 { yyval.constraint = new ETCL_Dot (yyvsp[0].constraint); ;
01007 break;}
01008 case 55:
01009
01010 { yyval.constraint = new ETCL_Component (yyvsp[-1].constraint, yyvsp[0].constraint); ;
01011 break;}
01012 case 56:
01013
01014 { yyval.constraint = new ETCL_Special (ETCL_LENGTH); ;
01015 break;}
01016 case 57:
01017
01018 { yyval.constraint = new ETCL_Special (ETCL_DISCRIMINANT); ;
01019 break;}
01020 case 58:
01021
01022 { yyval.constraint = new ETCL_Special (ETCL_TYPE_ID); ;
01023 break;}
01024 case 59:
01025
01026 { yyval.constraint = new ETCL_Special (ETCL_REPOS_ID); ;
01027 break;}
01028 case 62:
01029
01030 { yyval.constraint = new ETCL_Component_Array (yyvsp[-2].constraint, yyvsp[0].constraint); ;
01031 break;}
01032 case 63:
01033
01034 { yyval.constraint = new ETCL_Component_Assoc (yyvsp[-2].constraint, yyvsp[0].constraint); ;
01035 break;}
01036 case 64:
01037
01038 { yyval.constraint = new ETCL_Component_Pos (yyvsp[-1].constraint, yyvsp[0].constraint); ;
01039 break;}
01040 case 65:
01041
01042 { yyval.constraint = new ETCL_Union_Pos (yyvsp[-2].constraint, yyvsp[0].constraint); ;
01043 break;}
01044 case 66:
01045
01046 { yyval.constraint = 0; ;
01047 break;}
01048 case 67:
01049
01050 { yyval.constraint = new ETCL_Union_Value (+1, yyvsp[0].constraint); ;
01051 break;}
01052 case 68:
01053
01054 { yyval.constraint = new ETCL_Union_Value (+1, yyvsp[0].constraint); ;
01055 break;}
01056 case 69:
01057
01058 { yyval.constraint = new ETCL_Union_Value (-1, yyvsp[0].constraint); ;
01059 break;}
01060 case 70:
01061
01062 { yyval.constraint = new ETCL_Union_Value (yyvsp[0].constraint); ;
01063 break;}
01064 }
01065
01066
01067
01068 yyvsp -= yylen;
01069 yyssp -= yylen;
01070 #ifdef YYLSP_NEEDED
01071 yylsp -= yylen;
01072 #endif
01073
01074 #if YYDEBUG != 0
01075 if (yydebug)
01076 {
01077 short *ssp1 = yyss - 1;
01078 ACE_OS::fprintf (stderr, "state stack now");
01079 while (ssp1 != yyssp)
01080 ACE_OS::fprintf (stderr, " %d", *++ssp1);
01081 ACE_OS::fprintf (stderr, "\n");
01082 }
01083 #endif
01084
01085 *++yyvsp = yyval;
01086
01087 #ifdef YYLSP_NEEDED
01088 yylsp++;
01089 if (yylen == 0)
01090 {
01091 yylsp->first_line = yylloc.first_line;
01092 yylsp->first_column = yylloc.first_column;
01093 yylsp->last_line = (yylsp-1)->last_line;
01094 yylsp->last_column = (yylsp-1)->last_column;
01095 yylsp->text = 0;
01096 }
01097 else
01098 {
01099 yylsp->last_line = (yylsp+yylen-1)->last_line;
01100 yylsp->last_column = (yylsp+yylen-1)->last_column;
01101 }
01102 #endif
01103
01104
01105
01106
01107
01108
01109 yyn = yyr1[yyn];
01110
01111 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
01112 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01113 yystate = yytable[yystate];
01114 else
01115 yystate = yydefgoto[yyn - YYNTBASE];
01116
01117 goto yynewstate;
01118
01119 yyerrlab:
01120
01121 if (! yyerrstatus)
01122
01123 {
01124 ++yynerrs;
01125
01126 #ifdef YYERROR_VERBOSE
01127 yyn = yypact[yystate];
01128
01129 if (yyn > YYFLAG && yyn < YYLAST)
01130 {
01131 int size = 0;
01132 char *msg;
01133 int x, count;
01134
01135 count = 0;
01136
01137 for (x = (yyn < 0 ? -yyn : 0);
01138 x < (sizeof(yytname) / sizeof(char *)); x++)
01139 if (yycheck[x + yyn] == x)
01140 size += ACE_OS::strlen(yytname[x]) + 15, count++;
01141 msg = (char *) ACE_OS::malloc(size + 15);
01142 if (msg != 0)
01143 {
01144 ACE_OS::strcpy(msg, "parse error");
01145
01146 if (count < 5)
01147 {
01148 count = 0;
01149 for (x = (yyn < 0 ? -yyn : 0);
01150 x < (sizeof(yytname) / sizeof(char *)); x++)
01151 if (yycheck[x + yyn] == x)
01152 {
01153 ACE_OS::strcat(msg, count == 0 ? ", expecting `" : " or `");
01154 ACE_OS::strcat(msg, yytname[x]);
01155 ACE_OS::strcat(msg, "'");
01156 count++;
01157 }
01158 }
01159 yyerror(msg);
01160 ACE_OS::free(msg);
01161 }
01162 else
01163 yyerror ("parse error; also virtual memory exceeded");
01164 }
01165 else
01166 #endif
01167 yyerror("parse error");
01168 }
01169
01170 goto yyerrlab1;
01171 yyerrlab1:
01172
01173 if (yyerrstatus == 3)
01174 {
01175
01176
01177
01178 if (yychar == YYEOF)
01179 YYABORT;
01180
01181 #if YYDEBUG != 0
01182 if (yydebug)
01183 ACE_OS::fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
01184 #endif
01185
01186 yychar = YYEMPTY;
01187 }
01188
01189
01190
01191
01192 yyerrstatus = 3;
01193
01194 goto yyerrhandle;
01195
01196 yyerrdefault:
01197
01198 #if 0
01199
01200
01201 yyn = yydefact[yystate];
01202 if (yyn) goto yydefault;
01203 #endif
01204
01205 yyerrpop:
01206
01207 if (yyssp == yyss) YYABORT;
01208 yyvsp--;
01209 yystate = *--yyssp;
01210 #ifdef YYLSP_NEEDED
01211 yylsp--;
01212 #endif
01213
01214 #if YYDEBUG != 0
01215 if (yydebug)
01216 {
01217 short *ssp1 = yyss - 1;
01218 ACE_OS::fprintf (stderr, "Error: state stack now");
01219 while (ssp1 != yyssp)
01220 ACE_OS::fprintf (stderr, " %d", *++ssp1);
01221 ACE_OS::fprintf (stderr, "\n");
01222 }
01223 #endif
01224
01225 yyerrhandle:
01226
01227 yyn = yypact[yystate];
01228 if (yyn == YYFLAG)
01229 goto yyerrdefault;
01230
01231 yyn += YYTERROR;
01232 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
01233 goto yyerrdefault;
01234
01235 yyn = yytable[yyn];
01236 if (yyn < 0)
01237 {
01238 if (yyn == YYFLAG)
01239 goto yyerrpop;
01240 yyn = -yyn;
01241 goto yyreduce;
01242 }
01243 else if (yyn == 0)
01244 goto yyerrpop;
01245
01246 if (yyn == YYFINAL)
01247 YYACCEPT;
01248
01249 #if YYDEBUG != 0
01250 if (yydebug)
01251 ACE_OS::fprintf(stderr, "Shifting error token, ");
01252 #endif
01253
01254 *++yyvsp = yylval;
01255 #ifdef YYLSP_NEEDED
01256 *++yylsp = yylloc;
01257 #endif
01258
01259 yystate = yyn;
01260 goto yynewstate;
01261
01262 yyacceptlab:
01263
01264 if (yyfree_stacks)
01265 {
01266 ACE_OS::free (yyss);
01267 ACE_OS::free (yyvs);
01268 #ifdef YYLSP_NEEDED
01269 ACE_OS::free (yyls);
01270 #endif
01271 }
01272 return 0;
01273
01274 yyabortlab:
01275
01276
01277
01278
01279
01280 yyflush_current_buffer();
01281
01282 if (yyfree_stacks)
01283 {
01284 ACE_OS::free (yyss);
01285 ACE_OS::free (yyvs);
01286 #ifdef YYLSP_NEEDED
01287 ACE_OS::free (yyls);
01288 #endif
01289 }
01290 return 1;
01291 }
01292
01293
01294 ACE_END_VERSIONED_NAMESPACE_DECL