00001
00002
00003
00004
00005 #define YYBISON 1
00006
00007 #define TOK_OPTIONS 257
00008 #define TOK_TOKEN 258
00009 #define TOK_SCANNER 259
00010 #define TOK_CODE 260
00011 #define TOK_SPECIAL 261
00012 #define TOK_SKIP 262
00013 #define TOK_MORE 263
00014 #define TOK_KEYWORD 264
00015 #define TOK_PARSER 265
00016 #define TOK_LOOKAHEAD 266
00017 #define TOK_THROW 267
00018 #define TOK_CATCH 268
00019 #define TOK_LBRACE 269
00020 #define TOK_RBRACE 270
00021 #define TOK_LPAREN 271
00022 #define TOK_RPAREN 272
00023 #define TOK_LBRACKET 273
00024 #define TOK_RBRACKET 274
00025 #define TOK_EQUAL 275
00026 #define TOK_COMMA 276
00027 #define TOK_SEMICOLON 277
00028 #define TOK_TWODOTS 278
00029 #define TOK_STAR 279
00030 #define TOK_HASH 280
00031 #define TOK_OR 281
00032 #define TOK_FORCE 282
00033 #define TOK_PLUS 283
00034 #define TOK_QMARK 284
00035 #define TOK_LSQUARE 285
00036 #define TOK_RSQUARE 286
00037 #define TOK_TILDE 287
00038 #define TOK_DASH 288
00039 #define TOK_NAME 289
00040 #define TOK_STRING 290
00041 #define TOK_NUMBER 291
00042 #define TOK_BOOL 292
00043 #define TOK_CHAR 293
00044 #define TOK_DUMB 294
00045
00046 #line 1 "parser.y"
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 #line 81 "parser.y"
00126
00127 #include <stdio.h>
00128 #include <stdlib.h>
00129 #include <string.h>
00130 #include "xalloc.h"
00131 #include "cw_misc.h"
00132 #include "cw_options_recorder.h"
00133 #include "cw_itoken_spec.h"
00134 #include "cw_macro_token_expander.h"
00135 #include "cw_re_node_builder.h"
00136 #include "cw_iscanner_spec.h"
00137 #include "cw_iparser_spec.h"
00138 #include "cw_ebnf_node_builder.h"
00139
00140 void yyerror (char *s);
00141
00142
00143
00144
00145
00146 #define TKIND_SPECIAL 0
00147 #define TKIND_REG 1
00148 #define TKIND_SKIP 2
00149 #define TKIND_MORE 3
00150 #define TKIND_KEYWORD 4
00151
00152 CstringList scannerDecl_tokenStates;
00153 int scannerDecl_tokenKind;
00154 extern int yylineno;
00155
00156 #line 113 "parser.y"
00157 typedef union {
00158 char *strVal;
00159 void *objVal;
00160 int intVal;
00161 char chrVal;
00162 CstringList strListVal;
00163 CwCharClassList charClassListVal;
00164 CwCharClass* charClassVal;
00165 CwCatchClauseList catchClauseListVal;
00166 CwCatchClause* catchClauseVal;
00167 int foo;
00168 } YYSTYPE;
00169 #ifndef YYDEBUG
00170 #define YYDEBUG 1
00171 #endif
00172
00173 #include <stdio.h>
00174
00175 #ifndef __cplusplus
00176 #ifndef __STDC__
00177 #define const
00178 #endif
00179 #endif
00180
00181
00182
00183 #define YYFINAL 221
00184 #define YYFLAG -32768
00185 #define YYNTBASE 41
00186
00187 #define YYTRANSLATE(x) ((unsigned)(x) <= 294 ? yytranslate[x] : 116)
00188
00189 static const char yytranslate[] = { 0,
00190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00215 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
00216 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00217 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
00218 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
00219 37, 38, 39, 40
00220 };
00221
00222 #if YYDEBUG != 0
00223 static const short yyprhs[] = { 0,
00224 0, 1, 7, 8, 10, 15, 19, 21, 24, 26,
00225 29, 33, 37, 41, 42, 43, 44, 53, 54, 55,
00226 56, 67, 69, 72, 74, 75, 82, 83, 90, 91,
00227 98, 99, 106, 107, 113, 114, 116, 120, 124, 126,
00228 130, 132, 135, 142, 149, 151, 154, 156, 158, 162,
00229 164, 167, 169, 172, 175, 178, 180, 184, 186, 190,
00230 195, 196, 198, 200, 204, 206, 210, 211, 212, 213,
00231 224, 226, 229, 231, 233, 234, 235, 236, 237, 238,
00232 239, 256, 257, 258, 263, 264, 266, 268, 272, 274,
00233 277, 285, 286, 288, 289, 294, 296, 298, 300, 304,
00234 308, 312, 318, 320, 323, 326, 329, 330, 336, 339,
00235 340, 345, 349, 350, 354, 355, 357, 359, 362, 363,
00236 364, 371, 372, 373, 377, 378, 380, 381
00237 };
00238
00239 static const short yyrhs[] = { -1,
00240 43, 42, 48, 52, 78, 0, 0, 44, 0, 3,
00241 15, 45, 16, 0, 3, 15, 16, 0, 46, 0,
00242 45, 46, 0, 47, 0, 47, 23, 0, 35, 21,
00243 36, 0, 35, 21, 37, 0, 35, 21, 38, 0,
00244 0, 0, 0, 113, 49, 4, 35, 50, 111, 51,
00245 114, 0, 0, 0, 0, 113, 53, 5, 35, 54,
00246 111, 55, 15, 56, 16, 0, 57, 0, 56, 57,
00247 0, 114, 0, 0, 63, 8, 58, 15, 66, 16,
00248 0, 0, 63, 9, 59, 15, 66, 16, 0, 0,
00249 63, 10, 60, 15, 66, 16, 0, 0, 63, 4,
00250 61, 15, 66, 16, 0, 0, 7, 62, 15, 68,
00251 16, 0, 0, 64, 0, 19, 65, 20, 0, 19,
00252 25, 20, 0, 35, 0, 65, 22, 35, 0, 67,
00253 0, 66, 67, 0, 19, 26, 35, 24, 69, 20,
00254 0, 19, 35, 24, 69, 20, 113, 0, 35, 0,
00255 68, 35, 0, 70, 0, 71, 0, 70, 27, 71,
00256 0, 72, 0, 71, 72, 0, 73, 0, 73, 25,
00257 0, 73, 29, 0, 73, 30, 0, 36, 0, 19,
00258 35, 20, 0, 74, 0, 17, 70, 18, 0, 75,
00259 31, 76, 32, 0, 0, 33, 0, 77, 0, 76,
00260 22, 77, 0, 39, 0, 39, 34, 39, 0, 0,
00261 0, 0, 113, 79, 11, 35, 80, 111, 81, 15,
00262 82, 16, 0, 83, 0, 82, 83, 0, 114, 0,
00263 84, 0, 0, 0, 0, 0, 0, 0, 17, 85,
00264 40, 86, 35, 17, 87, 40, 88, 91, 89, 15,
00265 113, 90, 93, 16, 0, 0, 0, 13, 17, 92,
00266 40, 0, 0, 94, 0, 95, 0, 95, 27, 94,
00267 0, 96, 0, 95, 96, 0, 98, 113, 97, 100,
00268 106, 113, 97, 0, 0, 28, 0, 0, 12, 17,
00269 99, 18, 0, 37, 0, 94, 0, 114, 0, 37,
00270 22, 94, 0, 37, 22, 114, 0, 94, 22, 114,
00271 0, 37, 22, 94, 22, 114, 0, 101, 0, 101,
00272 29, 0, 101, 30, 0, 101, 25, 0, 0, 35,
00273 102, 21, 35, 104, 0, 35, 104, 0, 0, 19,
00274 35, 20, 103, 0, 17, 94, 18, 0, 0, 17,
00275 105, 40, 0, 0, 107, 0, 108, 0, 107, 108,
00276 0, 0, 0, 14, 17, 109, 40, 110, 114, 0,
00277 0, 0, 24, 112, 40, 0, 0, 114, 0, 0,
00278 15, 115, 40, 0
00279 };
00280
00281 #endif
00282
00283 #if YYDEBUG != 0
00284 static const short yyrline[] = { 0,
00285 224, 231, 235, 236, 243, 244, 247, 248, 251, 252,
00286 255, 257, 259, 267, 274, 280, 287, 297, 304, 310,
00287 316, 319, 320, 323, 328, 331, 335, 338, 342, 345,
00288 349, 352, 356, 357, 363, 367, 373, 377, 383, 387,
00289 393, 394, 397, 403, 431, 436, 443, 446, 450, 456,
00290 460, 466, 470, 474, 478, 484, 489, 493, 497, 503,
00291 510, 511, 514, 518, 525, 530, 541, 548, 554, 560,
00292 563, 564, 567, 572, 575, 576, 577, 578, 580, 581,
00293 583, 594, 595, 597, 600, 601, 604, 606, 610, 612,
00294 616, 638, 639, 642, 644, 648, 650, 652, 657, 659,
00295 664, 669, 676, 678, 680, 682, 686, 686, 694, 700,
00296 701, 705, 709, 710, 713, 714, 717, 721, 727, 728,
00297 730, 747, 748, 749, 754, 755, 758, 759
00298 };
00299 #endif
00300
00301
00302 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
00303
00304 static const char * const yytname[] = { "$","error","$undefined.","TOK_OPTIONS",
00305 "TOK_TOKEN","TOK_SCANNER","TOK_CODE","TOK_SPECIAL","TOK_SKIP","TOK_MORE","TOK_KEYWORD",
00306 "TOK_PARSER","TOK_LOOKAHEAD","TOK_THROW","TOK_CATCH","TOK_LBRACE","TOK_RBRACE",
00307 "TOK_LPAREN","TOK_RPAREN","TOK_LBRACKET","TOK_RBRACKET","TOK_EQUAL","TOK_COMMA",
00308 "TOK_SEMICOLON","TOK_TWODOTS","TOK_STAR","TOK_HASH","TOK_OR","TOK_FORCE","TOK_PLUS",
00309 "TOK_QMARK","TOK_LSQUARE","TOK_RSQUARE","TOK_TILDE","TOK_DASH","TOK_NAME","TOK_STRING",
00310 "TOK_NUMBER","TOK_BOOL","TOK_CHAR","TOK_DUMB","GRAMMAR_FILE","@1","OPTIONS_SECTION_OPTIONAL",
00311 "OPTIONS_SECTION","OPTIONS_LIST","OPTION_LINE1","OPTION_LINE","TOKEN_CUSTOMIZATION_SECTION",
00312 "@2","@3","@4","LEXICAL_SECTION","@5","@6","@7","SCANNER_DECL_LIST","SCANNER_DECL",
00313 "@8","@9","@10","@11","@12","LEXICAL_STATES_LIST_OPTIONAL","LEXICAL_STATES_LIST",
00314 "STATE_NAME_LIST","TOKEN_DECL_LIST","TOKEN_DECL","SPECIAL_TOKEN_DECL_LIST","TOKEN_REGEXP",
00315 "REGEXP_OR_LIST","REGEXP_CAT_LIST","REGEXP_TERM","REGEXP_ATOM","CHARACTER_LIST",
00316 "NEGATE_OPTIONAL","CHARACTER_DESCRIPTOR_LIST","CHARACTER_DESCRIPTOR","SYNTAX_SECTION",
00317 "@13","@14","@15","PARSER_DECL_LIST","PARSER_DECL","PRODUCTION","@16","@17",
00318 "@18","@19","@20","@21","THROW_CLAUSE_OPTIONAL","@22","OR_LIST_OPTIONAL","OR_LIST",
00319 "CAT_LIST","EXPANSION","FORCE_OPTIONAL","LOOKAHEAD_OPTIONAL","LOOKAHEAD_ARGS",
00320 "FACTOR","ATOM","@23","@24","ACTUAL_ARGS_LIST","@25","CATCH_CLAUSES_OPTIONAL",
00321 "CATCH_CLAUSES_LIST","CATCH_CLAUSE","@26","@27","C_INHERITANCE_OPTIONAL","@28",
00322 "C_BLOCK_OPTIONAL","C_BLOCK","@29", NULL
00323 };
00324 #endif
00325
00326 static const short yyr1[] = { 0,
00327 42, 41, 43, 43, 44, 44, 45, 45, 46, 46,
00328 47, 47, 47, 49, 50, 51, 48, 53, 54, 55,
00329 52, 56, 56, 57, 58, 57, 59, 57, 60, 57,
00330 61, 57, 62, 57, 63, 63, 64, 64, 65, 65,
00331 66, 66, 67, 67, 68, 68, 69, 70, 70, 71,
00332 71, 72, 72, 72, 72, 73, 73, 73, 73, 74,
00333 75, 75, 76, 76, 77, 77, 79, 80, 81, 78,
00334 82, 82, 83, 83, 85, 86, 87, 88, 89, 90,
00335 84, 91, 92, 91, 93, 93, 94, 94, 95, 95,
00336 96, 97, 97, 98, 98, 99, 99, 99, 99, 99,
00337 99, 99, 100, 100, 100, 100, 102, 101, 101, 103,
00338 101, 101, 105, 104, 106, 106, 107, 107, 109, 110,
00339 108, 111, 112, 111, 113, 113, 115, 114
00340 };
00341
00342 static const short yyr2[] = { 0,
00343 0, 5, 0, 1, 4, 3, 1, 2, 1, 2,
00344 3, 3, 3, 0, 0, 0, 8, 0, 0, 0,
00345 10, 1, 2, 1, 0, 6, 0, 6, 0, 6,
00346 0, 6, 0, 5, 0, 1, 3, 3, 1, 3,
00347 1, 2, 6, 6, 1, 2, 1, 1, 3, 1,
00348 2, 1, 2, 2, 2, 1, 3, 1, 3, 4,
00349 0, 1, 1, 3, 1, 3, 0, 0, 0, 10,
00350 1, 2, 1, 1, 0, 0, 0, 0, 0, 0,
00351 16, 0, 0, 4, 0, 1, 1, 3, 1, 2,
00352 7, 0, 1, 0, 4, 1, 1, 1, 3, 3,
00353 3, 5, 1, 2, 2, 2, 0, 5, 2, 0,
00354 4, 3, 0, 3, 0, 1, 1, 2, 0, 0,
00355 6, 0, 0, 3, 0, 1, 0, 3
00356 };
00357
00358 static const short yydefact[] = { 3,
00359 0, 1, 4, 0, 125, 6, 0, 0, 7, 9,
00360 127, 125, 14, 126, 0, 5, 8, 10, 0, 125,
00361 18, 0, 11, 12, 13, 128, 2, 67, 0, 0,
00362 0, 0, 15, 0, 19, 122, 68, 122, 123, 16,
00363 122, 20, 0, 0, 69, 0, 124, 17, 0, 35,
00364 0, 33, 0, 35, 22, 0, 36, 24, 75, 0,
00365 71, 74, 73, 0, 0, 39, 0, 21, 23, 31,
00366 25, 27, 29, 0, 70, 72, 0, 38, 37, 0,
00367 0, 0, 0, 0, 76, 45, 0, 40, 0, 0,
00368 0, 0, 0, 34, 46, 0, 0, 41, 0, 0,
00369 0, 0, 0, 0, 32, 42, 26, 28, 30, 77,
00370 0, 61, 0, 61, 61, 0, 62, 56, 0, 47,
00371 48, 50, 52, 58, 0, 78, 0, 0, 0, 125,
00372 61, 51, 53, 54, 55, 0, 82, 43, 59, 57,
00373 44, 49, 65, 0, 63, 0, 79, 0, 0, 60,
00374 83, 0, 66, 64, 0, 125, 84, 80, 94, 0,
00375 0, 86, 94, 89, 125, 94, 81, 94, 90, 92,
00376 96, 97, 0, 98, 88, 93, 0, 94, 0, 95,
00377 94, 0, 107, 115, 103, 99, 100, 101, 0, 0,
00378 113, 0, 109, 0, 125, 116, 117, 106, 104, 105,
00379 0, 112, 110, 0, 0, 119, 92, 118, 102, 111,
00380 114, 0, 0, 91, 108, 120, 0, 121, 0, 0,
00381 0
00382 };
00383
00384 static const short yydefgoto[] = { 219,
00385 5, 2, 3, 8, 9, 10, 12, 22, 36, 44,
00386 20, 29, 38, 46, 54, 55, 82, 83, 84, 81,
00387 64, 56, 57, 67, 97, 98, 87, 119, 120, 121,
00388 122, 123, 124, 125, 144, 145, 27, 31, 41, 49,
00389 60, 61, 62, 74, 93, 113, 137, 152, 159, 147,
00390 155, 161, 162, 163, 164, 177, 165, 173, 184, 185,
00391 192, 210, 193, 204, 195, 196, 197, 213, 217, 40,
00392 43, 13, 14, 19
00393 };
00394
00395 static const short yypact[] = { 9,
00396 37,-32768,-32768, -10, 48,-32768, 43, 2,-32768, 55,
00397 -32768, 48,-32768,-32768, 36,-32768,-32768,-32768, 60, 48,
00398 -32768, 97,-32768,-32768,-32768,-32768,-32768,-32768, 98, 69,
00399 91, 70,-32768, 71,-32768, 83,-32768, 83,-32768,-32768,
00400 83,-32768, 73, 48,-32768, 93,-32768,-32768, 94, 42,
00401 12,-32768, -14, 39,-32768, 58,-32768,-32768,-32768, 79,
00402 -32768,-32768,-32768, 95, 92,-32768, -15,-32768,-32768,-32768,
00403 -32768,-32768,-32768, 74,-32768,-32768, 76,-32768,-32768, 80,
00404 101, 102, 104, 105,-32768,-32768, 4,-32768, 103, 103,
00405 103, 103, 86,-32768,-32768, 24, 66,-32768, 67, 68,
00406 72, 106, 89, 107,-32768,-32768,-32768,-32768,-32768,-32768,
00407 108, -2, 87, -2, -2, 99,-32768,-32768, 109, 112,
00408 -3,-32768, 40,-32768, 110,-32768, 113, 33, 115, 48,
00409 -2,-32768,-32768,-32768,-32768, 111, 117,-32768,-32768,-32768,
00410 -32768, -3, 114, 13,-32768, 119,-32768, 116, 111,-32768,
00411 -32768, 125,-32768,-32768, 88, 48,-32768,-32768, 32, 126,
00412 129,-32768, 20,-32768, 48, -11,-32768, 130,-32768, 118,
00413 127, 132, 133,-32768,-32768,-32768, 5, 77, 48,-32768,
00414 130, 121, 135, 143, 46, 136,-32768,-32768, 141, 142,
00415 -32768, 140,-32768, 146, 48, 143,-32768,-32768,-32768,-32768,
00416 48,-32768,-32768, 124, 131,-32768, 118,-32768,-32768,-32768,
00417 -32768, 135, 128,-32768,-32768,-32768, 48,-32768, 147, 165,
00418 -32768
00419 };
00420
00421 static const short yypgoto[] = {-32768,
00422 -32768,-32768,-32768,-32768, 159,-32768,-32768,-32768,-32768,-32768,
00423 -32768,-32768,-32768,-32768,-32768, 120,-32768,-32768,-32768,-32768,
00424 -32768,-32768,-32768,-32768, 7, -20,-32768, 56, 11, 38,
00425 -119,-32768,-32768,-32768,-32768, 22,-32768,-32768,-32768,-32768,
00426 -32768, 122,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00427 -32768,-32768, -125,-32768, 10, -35,-32768,-32768,-32768,-32768,
00428 -32768,-32768, -37,-32768,-32768,-32768, -19,-32768,-32768, 52,
00429 -32768, -12, -41,-32768
00430 };
00431
00432
00433 #define YYLAST 183
00434
00435
00436 static const short yytable[] = { 21,
00437 160, 132, 48, 11, 79, 6, 80, 28, 58, 63,
00438 65, 1, 58, 115, 115, 116, 116, 16, 63, 94,
00439 66, 181, 132, 182, 7, 171, 11, -61, 59, 117,
00440 117, 160, 118, 118, 149, -87, 7, -87, 95, 183,
00441 172, -87, 175, 160, 150, 52, 168, -85, 52, 103,
00442 139, 4, 186, 11, 68, 189, 11, 53, 104, 131,
00443 53, 70, 11, 15, 133, 71, 72, 73, 134, 135,
00444 198, 23, 24, 25, 199, 200, 106, 18, 106, 106,
00445 106, 105, 107, 108, 96, 96, 96, 109, 160, 42,
00446 96, 11, 45, 11, 75, 59, 99, 100, 101, 26,
00447 30, 34, 32, 33, 35, 37, 39, 50, 51, 77,
00448 86, 78, 47, 85, 88, 89, 90, 141, 91, 92,
00449 102, 96, 110, 111, 174, 128, 126, 157, 130, 146,
00450 112, 114, 138, 129, 140, 151, 187, 188, 131, 156,
00451 136, 160, 166, 158, 167, 176, 220, 148, 178, 143,
00452 180, 191, 170, 179, 153, 190, 194, 201, 202, 209,
00453 205, 203, 206, 211, 221, 212, 17, 216, 142, 127,
00454 154, 214, 169, 69, 215, 218, 208, 0, 0, 0,
00455 0, 76, 207
00456 };
00457
00458 static const short yycheck[] = { 12,
00459 12, 121, 44, 15, 20, 16, 22, 20, 50, 51,
00460 25, 3, 54, 17, 17, 19, 19, 16, 60, 16,
00461 35, 17, 142, 19, 35, 37, 15, 31, 17, 33,
00462 33, 12, 36, 36, 22, 16, 35, 18, 35, 35,
00463 166, 22, 168, 12, 32, 7, 27, 16, 7, 26,
00464 18, 15, 178, 15, 16, 181, 15, 19, 35, 27,
00465 19, 4, 15, 21, 25, 8, 9, 10, 29, 30,
00466 25, 36, 37, 38, 29, 30, 97, 23, 99, 100,
00467 101, 16, 16, 16, 19, 19, 19, 16, 12, 38,
00468 19, 15, 41, 15, 16, 17, 90, 91, 92, 40,
00469 4, 11, 5, 35, 35, 35, 24, 15, 15, 15,
00470 35, 20, 40, 40, 35, 15, 15, 130, 15, 15,
00471 35, 19, 17, 35, 166, 115, 40, 40, 20, 13,
00472 24, 24, 20, 35, 20, 17, 178, 179, 27, 15,
00473 31, 12, 17, 156, 16, 28, 0, 34, 22, 39,
00474 18, 17, 165, 22, 39, 35, 14, 22, 18, 201,
00475 21, 20, 17, 40, 0, 35, 8, 40, 131, 114,
00476 149, 207, 163, 54, 212, 217, 196, -1, -1, -1,
00477 -1, 60, 195
00478 };
00479
00480 #line 3 "/usr/lib/bison.simple"
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511 #ifndef YYSTACK_USE_ALLOCA
00512 #ifdef alloca
00513 #define YYSTACK_USE_ALLOCA
00514 #else
00515 #ifdef __GNUC__
00516 #define YYSTACK_USE_ALLOCA
00517 #define alloca __builtin_alloca
00518 #else
00519 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
00520 #define YYSTACK_USE_ALLOCA
00521 #include <alloca.h>
00522 #else
00523
00524
00525
00526 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
00527 #if 0
00528
00529 #include <malloc.h>
00530 #endif
00531 #else
00532 #if defined(_AIX)
00533
00534
00535
00536 #pragma alloca
00537 #define YYSTACK_USE_ALLOCA
00538 #else
00539 #if 0
00540 #ifdef __hpux
00541
00542 #define YYSTACK_USE_ALLOCA
00543 #define alloca __builtin_alloca
00544 #endif
00545 #endif
00546 #endif
00547 #endif
00548 #endif
00549 #endif
00550 #endif
00551 #endif
00552
00553 #ifdef YYSTACK_USE_ALLOCA
00554 #define YYSTACK_ALLOC alloca
00555 #else
00556 #define YYSTACK_ALLOC malloc
00557 #endif
00558
00559
00560
00561
00562
00563 #define yyerrok (yyerrstatus = 0)
00564 #define yyclearin (yychar = YYEMPTY)
00565 #define YYEMPTY -2
00566 #define YYEOF 0
00567 #define YYACCEPT goto yyacceptlab
00568 #define YYABORT goto yyabortlab
00569 #define YYERROR goto yyerrlab1
00570
00571
00572
00573
00574 #define YYFAIL goto yyerrlab
00575 #define YYRECOVERING() (!!yyerrstatus)
00576 #define YYBACKUP(token, value) \
00577 do \
00578 if (yychar == YYEMPTY && yylen == 1) \
00579 { yychar = (token), yylval = (value); \
00580 yychar1 = YYTRANSLATE (yychar); \
00581 YYPOPSTACK; \
00582 goto yybackup; \
00583 } \
00584 else \
00585 { yyerror ("syntax error: cannot back up"); YYERROR; } \
00586 while (0)
00587
00588 #define YYTERROR 1
00589 #define YYERRCODE 256
00590
00591 #ifndef YYPURE
00592 #define YYLEX yylex()
00593 #endif
00594
00595 #ifdef YYPURE
00596 #ifdef YYLSP_NEEDED
00597 #ifdef YYLEX_PARAM
00598 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
00599 #else
00600 #define YYLEX yylex(&yylval, &yylloc)
00601 #endif
00602 #else
00603 #ifdef YYLEX_PARAM
00604 #define YYLEX yylex(&yylval, YYLEX_PARAM)
00605 #else
00606 #define YYLEX yylex(&yylval)
00607 #endif
00608 #endif
00609 #endif
00610
00611
00612
00613 #ifndef YYPURE
00614
00615 int yychar;
00616 YYSTYPE yylval;
00617
00618
00619 #ifdef YYLSP_NEEDED
00620 YYLTYPE yylloc;
00621
00622 #endif
00623
00624 int yynerrs;
00625 #endif
00626
00627 #if YYDEBUG != 0
00628 int yydebug;
00629
00630
00631 #endif
00632
00633
00634
00635 #ifndef YYINITDEPTH
00636 #define YYINITDEPTH 200
00637 #endif
00638
00639
00640
00641
00642 #if YYMAXDEPTH == 0
00643 #undef YYMAXDEPTH
00644 #endif
00645
00646 #ifndef YYMAXDEPTH
00647 #define YYMAXDEPTH 10000
00648 #endif
00649
00650
00651
00652
00653
00654
00655 #if __GNUC__ > 1
00656 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
00657 #else
00658 #ifndef __cplusplus
00659
00660
00661
00662 static void
00663 __yy_memcpy (to, from, count)
00664 char *to;
00665 char *from;
00666 unsigned int count;
00667 {
00668 register char *f = from;
00669 register char *t = to;
00670 register int i = count;
00671
00672 while (i-- > 0)
00673 *t++ = *f++;
00674 }
00675
00676 #else
00677
00678
00679
00680 static void
00681 __yy_memcpy (char *to, char *from, unsigned int count)
00682 {
00683 register char *t = to;
00684 register char *f = from;
00685 register int i = count;
00686
00687 while (i-- > 0)
00688 *t++ = *f++;
00689 }
00690
00691 #endif
00692 #endif
00693
00694 #line 217 "/usr/lib/bison.simple"
00695
00696
00697
00698
00699
00700
00701
00702 #ifdef YYPARSE_PARAM
00703 #ifdef __cplusplus
00704 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
00705 #define YYPARSE_PARAM_DECL
00706 #else
00707 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
00708 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
00709 #endif
00710 #else
00711 #define YYPARSE_PARAM_ARG
00712 #define YYPARSE_PARAM_DECL
00713 #endif
00714
00715
00716 #ifdef __GNUC__
00717 #ifdef YYPARSE_PARAM
00718 int yyparse (void *);
00719 #else
00720 int yyparse (void);
00721 #endif
00722 #endif
00723
00724 int
00725 yyparse(YYPARSE_PARAM_ARG)
00726 YYPARSE_PARAM_DECL
00727 {
00728 register int yystate;
00729 register int yyn;
00730 register short *yyssp;
00731 register YYSTYPE *yyvsp;
00732 int yyerrstatus;
00733 int yychar1 = 0;
00734
00735 short yyssa[YYINITDEPTH];
00736 YYSTYPE yyvsa[YYINITDEPTH];
00737
00738 short *yyss = yyssa;
00739 YYSTYPE *yyvs = yyvsa;
00740
00741 #ifdef YYLSP_NEEDED
00742 YYLTYPE yylsa[YYINITDEPTH];
00743 YYLTYPE *yyls = yylsa;
00744 YYLTYPE *yylsp;
00745
00746 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
00747 #else
00748 #define YYPOPSTACK (yyvsp--, yyssp--)
00749 #endif
00750
00751 int yystacksize = YYINITDEPTH;
00752 int yyfree_stacks = 0;
00753
00754 #ifdef YYPURE
00755 int yychar;
00756 YYSTYPE yylval;
00757 int yynerrs;
00758 #ifdef YYLSP_NEEDED
00759 YYLTYPE yylloc;
00760 #endif
00761 #endif
00762
00763 YYSTYPE yyval;
00764
00765
00766
00767 int yylen;
00768
00769 #if YYDEBUG != 0
00770 if (yydebug)
00771 fprintf(stderr, "Starting parse\n");
00772 #endif
00773
00774 yystate = 0;
00775 yyerrstatus = 0;
00776 yynerrs = 0;
00777 yychar = YYEMPTY;
00778
00779
00780
00781
00782
00783
00784 yyssp = yyss - 1;
00785 yyvsp = yyvs;
00786 #ifdef YYLSP_NEEDED
00787 yylsp = yyls;
00788 #endif
00789
00790
00791
00792
00793 yynewstate:
00794
00795 *++yyssp = yystate;
00796
00797 if (yyssp >= yyss + yystacksize - 1)
00798 {
00799
00800
00801 YYSTYPE *yyvs1 = yyvs;
00802 short *yyss1 = yyss;
00803 #ifdef YYLSP_NEEDED
00804 YYLTYPE *yyls1 = yyls;
00805 #endif
00806
00807
00808 int size = yyssp - yyss + 1;
00809
00810 #ifdef yyoverflow
00811
00812
00813 #ifdef YYLSP_NEEDED
00814
00815
00816 yyoverflow("parser stack overflow",
00817 &yyss1, size * sizeof (*yyssp),
00818 &yyvs1, size * sizeof (*yyvsp),
00819 &yyls1, size * sizeof (*yylsp),
00820 &yystacksize);
00821 #else
00822 yyoverflow("parser stack overflow",
00823 &yyss1, size * sizeof (*yyssp),
00824 &yyvs1, size * sizeof (*yyvsp),
00825 &yystacksize);
00826 #endif
00827
00828 yyss = yyss1; yyvs = yyvs1;
00829 #ifdef YYLSP_NEEDED
00830 yyls = yyls1;
00831 #endif
00832 #else
00833
00834 if (yystacksize >= YYMAXDEPTH)
00835 {
00836 yyerror("parser stack overflow");
00837 if (yyfree_stacks)
00838 {
00839 free (yyss);
00840 free (yyvs);
00841 #ifdef YYLSP_NEEDED
00842 free (yyls);
00843 #endif
00844 }
00845 return 2;
00846 }
00847 yystacksize *= 2;
00848 if (yystacksize > YYMAXDEPTH)
00849 yystacksize = YYMAXDEPTH;
00850 #ifndef YYSTACK_USE_ALLOCA
00851 yyfree_stacks = 1;
00852 #endif
00853 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
00854 __yy_memcpy ((char *)yyss, (char *)yyss1,
00855 size * (unsigned int) sizeof (*yyssp));
00856 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
00857 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
00858 size * (unsigned int) sizeof (*yyvsp));
00859 #ifdef YYLSP_NEEDED
00860 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
00861 __yy_memcpy ((char *)yyls, (char *)yyls1,
00862 size * (unsigned int) sizeof (*yylsp));
00863 #endif
00864 #endif
00865
00866 yyssp = yyss + size - 1;
00867 yyvsp = yyvs + size - 1;
00868 #ifdef YYLSP_NEEDED
00869 yylsp = yyls + size - 1;
00870 #endif
00871
00872 #if YYDEBUG != 0
00873 if (yydebug)
00874 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
00875 #endif
00876
00877 if (yyssp >= yyss + yystacksize - 1)
00878 YYABORT;
00879 }
00880
00881 #if YYDEBUG != 0
00882 if (yydebug)
00883 fprintf(stderr, "Entering state %d\n", yystate);
00884 #endif
00885
00886 goto yybackup;
00887 yybackup:
00888
00889
00890
00891
00892
00893
00894
00895 yyn = yypact[yystate];
00896 if (yyn == YYFLAG)
00897 goto yydefault;
00898
00899
00900
00901
00902
00903
00904 if (yychar == YYEMPTY)
00905 {
00906 #if YYDEBUG != 0
00907 if (yydebug)
00908 fprintf(stderr, "Reading a token: ");
00909 #endif
00910 yychar = YYLEX;
00911 }
00912
00913
00914
00915 if (yychar <= 0)
00916 {
00917 yychar1 = 0;
00918 yychar = YYEOF;
00919
00920 #if YYDEBUG != 0
00921 if (yydebug)
00922 fprintf(stderr, "Now at end of input.\n");
00923 #endif
00924 }
00925 else
00926 {
00927 yychar1 = YYTRANSLATE(yychar);
00928
00929 #if YYDEBUG != 0
00930 if (yydebug)
00931 {
00932 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
00933
00934
00935 #ifdef YYPRINT
00936 YYPRINT (stderr, yychar, yylval);
00937 #endif
00938 fprintf (stderr, ")\n");
00939 }
00940 #endif
00941 }
00942
00943 yyn += yychar1;
00944 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
00945 goto yydefault;
00946
00947 yyn = yytable[yyn];
00948
00949
00950
00951
00952
00953
00954
00955
00956 if (yyn < 0)
00957 {
00958 if (yyn == YYFLAG)
00959 goto yyerrlab;
00960 yyn = -yyn;
00961 goto yyreduce;
00962 }
00963 else if (yyn == 0)
00964 goto yyerrlab;
00965
00966 if (yyn == YYFINAL)
00967 YYACCEPT;
00968
00969
00970
00971 #if YYDEBUG != 0
00972 if (yydebug)
00973 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
00974 #endif
00975
00976
00977 if (yychar != YYEOF)
00978 yychar = YYEMPTY;
00979
00980 *++yyvsp = yylval;
00981 #ifdef YYLSP_NEEDED
00982 *++yylsp = yylloc;
00983 #endif
00984
00985
00986 if (yyerrstatus) yyerrstatus--;
00987
00988 yystate = yyn;
00989 goto yynewstate;
00990
00991
00992 yydefault:
00993
00994 yyn = yydefact[yystate];
00995 if (yyn == 0)
00996 goto yyerrlab;
00997
00998
00999 yyreduce:
01000 yylen = yyr2[yyn];
01001 if (yylen > 0)
01002 yyval = yyvsp[1-yylen];
01003
01004 #if YYDEBUG != 0
01005 if (yydebug)
01006 {
01007 int i;
01008
01009 fprintf (stderr, "Reducing via rule %d (line %d), ",
01010 yyn, yyrline[yyn]);
01011
01012
01013 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
01014 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
01015 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
01016 }
01017 #endif
01018
01019
01020 switch (yyn) {
01021
01022 case 1:
01023 #line 225 "parser.y"
01024 {
01025 #ifdef DEBUG
01026 OptionsRecorder_dumpOptions();
01027 #endif
01028 ;
01029 break;}
01030 case 3:
01031 #line 235 "parser.y"
01032 { yyval.foo = 0; ;
01033 break;}
01034 case 4:
01035 #line 236 "parser.y"
01036 { yyval.foo = 0; ;
01037 break;}
01038 case 7:
01039 #line 247 "parser.y"
01040 {yyval.foo=0;;
01041 break;}
01042 case 8:
01043 #line 248 "parser.y"
01044 {yyval.foo=0;;
01045 break;}
01046 case 9:
01047 #line 251 "parser.y"
01048 {yyval.foo=0;;
01049 break;}
01050 case 10:
01051 #line 252 "parser.y"
01052 {yyval.foo=0;;
01053 break;}
01054 case 11:
01055 #line 256 "parser.y"
01056 {yyval.foo=0; OptionsRecorder_setStringOption(yyvsp[-2].strVal, yyvsp[0].strVal); ;
01057 break;}
01058 case 12:
01059 #line 258 "parser.y"
01060 {yyval.foo=0; OptionsRecorder_setIntOption(yyvsp[-2].strVal, yyvsp[0].intVal); ;
01061 break;}
01062 case 13:
01063 #line 260 "parser.y"
01064 {yyval.foo=0; OptionsRecorder_setBoolOption(yyvsp[-2].strVal, yyvsp[0].intVal); ;
01065 break;}
01066 case 14:
01067 #line 268 "parser.y"
01068 {
01069 if (yyvsp[0].strVal != NULL) {
01070 ITokenSpec_setPreambleCode(yyvsp[0].strVal);
01071 free(yyvsp[0].strVal);
01072 }
01073 ;
01074 break;}
01075 case 15:
01076 #line 275 "parser.y"
01077 {
01078 ITokenSpec_setClassName(yyvsp[0].strVal);
01079 free(yyvsp[0].strVal);
01080 ;
01081 break;}
01082 case 16:
01083 #line 280 "parser.y"
01084 {
01085 if (yyvsp[0].strVal != NULL) {
01086 ITokenSpec_setInheritance(yyvsp[0].strVal);
01087 free(yyvsp[0].strVal);
01088 }
01089 ;
01090 break;}
01091 case 17:
01092 #line 287 "parser.y"
01093 {
01094 ITokenSpec_addCodeBlock(yyvsp[0].strVal);
01095 free(yyvsp[0].strVal);
01096 ;
01097 break;}
01098 case 18:
01099 #line 298 "parser.y"
01100 {
01101 if (yyvsp[0].strVal != NULL) {
01102 IScannerSpec_setPreambleCode(yyvsp[0].strVal);
01103 free(yyvsp[0].strVal);
01104 }
01105 ;
01106 break;}
01107 case 19:
01108 #line 305 "parser.y"
01109 {
01110 IScannerSpec_setClassName(yyvsp[0].strVal);
01111 free(yyvsp[0].strVal);
01112 ;
01113 break;}
01114 case 20:
01115 #line 310 "parser.y"
01116 {
01117 if (yyvsp[0].strVal != NULL) {
01118 IScannerSpec_setInheritance(yyvsp[0].strVal);
01119 free(yyvsp[0].strVal);
01120 }
01121 ;
01122 break;}
01123 case 22:
01124 #line 319 "parser.y"
01125 {yyval.foo=0;;
01126 break;}
01127 case 23:
01128 #line 320 "parser.y"
01129 {yyval.foo=0;;
01130 break;}
01131 case 24:
01132 #line 324 "parser.y"
01133 {
01134 IScannerSpec_addCodeBlock(yyvsp[0].strVal);
01135 free(yyvsp[0].strVal);
01136 ;
01137 break;}
01138 case 25:
01139 #line 330 "parser.y"
01140 { scannerDecl_tokenStates = yyvsp[-1].strListVal; scannerDecl_tokenKind = TKIND_SKIP; ;
01141 break;}
01142 case 26:
01143 #line 332 "parser.y"
01144 {
01145 deleteCstringList(scannerDecl_tokenStates, 1);
01146 ;
01147 break;}
01148 case 27:
01149 #line 337 "parser.y"
01150 { scannerDecl_tokenStates = yyvsp[-1].strListVal; scannerDecl_tokenKind = TKIND_MORE; ;
01151 break;}
01152 case 28:
01153 #line 339 "parser.y"
01154 {
01155 deleteCstringList(scannerDecl_tokenStates, 1);
01156 ;
01157 break;}
01158 case 29:
01159 #line 344 "parser.y"
01160 { scannerDecl_tokenStates = yyvsp[-1].strListVal; scannerDecl_tokenKind = TKIND_KEYWORD; ;
01161 break;}
01162 case 30:
01163 #line 346 "parser.y"
01164 {
01165 deleteCstringList(scannerDecl_tokenStates, 1);
01166 ;
01167 break;}
01168 case 31:
01169 #line 351 "parser.y"
01170 { scannerDecl_tokenStates = yyvsp[-1].strListVal; scannerDecl_tokenKind = TKIND_REG; ;
01171 break;}
01172 case 32:
01173 #line 353 "parser.y"
01174 {
01175 deleteCstringList(scannerDecl_tokenStates, 1);
01176 ;
01177 break;}
01178 case 33:
01179 #line 356 "parser.y"
01180 {scannerDecl_tokenKind = TKIND_SPECIAL; ;
01181 break;}
01182 case 34:
01183 #line 358 "parser.y"
01184 {
01185 yyval.foo=0;
01186 ;
01187 break;}
01188 case 35:
01189 #line 364 "parser.y"
01190 {
01191 yyval.strListVal = NULL;
01192 ;
01193 break;}
01194 case 36:
01195 #line 368 "parser.y"
01196 {
01197 yyval.strListVal = yyvsp[0].strListVal;
01198 ;
01199 break;}
01200 case 37:
01201 #line 374 "parser.y"
01202 {
01203 yyval.strListVal = yyvsp[-1].strListVal;
01204 ;
01205 break;}
01206 case 38:
01207 #line 378 "parser.y"
01208 {
01209 yyval.strListVal = appendToCstringList(NULL, xstrdup("*"));
01210 ;
01211 break;}
01212 case 39:
01213 #line 384 "parser.y"
01214 {
01215 yyval.strListVal = appendToCstringList (NULL, yyvsp[0].strVal);
01216 ;
01217 break;}
01218 case 40:
01219 #line 388 "parser.y"
01220 {
01221 yyval.strListVal = appendToCstringList(yyvsp[-2].strListVal, yyvsp[0].strVal);
01222 ;
01223 break;}
01224 case 41:
01225 #line 393 "parser.y"
01226 {yyval.foo=0;;
01227 break;}
01228 case 42:
01229 #line 394 "parser.y"
01230 {yyval.foo=0;;
01231 break;}
01232 case 43:
01233 #line 399 "parser.y"
01234 {
01235 MacroTokenExpander_addMacro(yyvsp[-3].strVal, yyvsp[-1].objVal);
01236 free(yyvsp[-3].strVal);
01237 ;
01238 break;}
01239 case 44:
01240 #line 405 "parser.y"
01241 {
01242 switch (scannerDecl_tokenKind)
01243 {
01244 case TKIND_REG:
01245 MacroTokenExpander_addMacro(yyvsp[-4].strVal, yyvsp[-2].objVal);
01246 IScannerSpec_addRegToken(scannerDecl_tokenStates, yyvsp[-4].strVal, yyvsp[-2].objVal, yyvsp[0].strVal);
01247 break;
01248 case TKIND_SKIP:
01249 MacroTokenExpander_addMacro(yyvsp[-4].strVal, yyvsp[-2].objVal);
01250 IScannerSpec_addSkipToken(scannerDecl_tokenStates, yyvsp[-4].strVal, yyvsp[-2].objVal, yyvsp[0].strVal);
01251 break;
01252 case TKIND_MORE:
01253 MacroTokenExpander_addMacro(yyvsp[-4].strVal, yyvsp[-2].objVal);
01254 IScannerSpec_addMoreToken(scannerDecl_tokenStates, yyvsp[-4].strVal, yyvsp[-2].objVal, yyvsp[0].strVal);
01255 break;
01256 case TKIND_KEYWORD:
01257 MacroTokenExpander_addMacro(yyvsp[-4].strVal, yyvsp[-2].objVal);
01258 IScannerSpec_addKeywordToken(scannerDecl_tokenStates, yyvsp[-4].strVal, yyvsp[-2].objVal, yyvsp[0].strVal);
01259 break;
01260 }
01261 free(yyvsp[-4].strVal);
01262 if (yyvsp[0].strVal != NULL)
01263 free(yyvsp[0].strVal);
01264 ;
01265 break;}
01266 case 45:
01267 #line 432 "parser.y"
01268 {
01269 IScannerSpec_addSpecialToken(yyvsp[0].strVal);
01270 free(yyvsp[0].strVal);
01271 ;
01272 break;}
01273 case 46:
01274 #line 437 "parser.y"
01275 {
01276 IScannerSpec_addSpecialToken(yyvsp[0].strVal);
01277 free(yyvsp[0].strVal);
01278 ;
01279 break;}
01280 case 47:
01281 #line 443 "parser.y"
01282 {yyval.objVal = yyvsp[0].objVal;;
01283 break;}
01284 case 48:
01285 #line 447 "parser.y"
01286 {
01287 yyval.objVal = yyvsp[0].objVal;
01288 ;
01289 break;}
01290 case 49:
01291 #line 451 "parser.y"
01292 {
01293 yyval.objVal = IReNodeBuilder_createOrNode(yyvsp[-2].objVal, yyvsp[0].objVal);
01294 ;
01295 break;}
01296 case 50:
01297 #line 457 "parser.y"
01298 {
01299 yyval.objVal = yyvsp[0].objVal;
01300 ;
01301 break;}
01302 case 51:
01303 #line 461 "parser.y"
01304 {
01305 yyval.objVal = IReNodeBuilder_createCatNode(yyvsp[-1].objVal, yyvsp[0].objVal);
01306 ;
01307 break;}
01308 case 52:
01309 #line 467 "parser.y"
01310 {
01311 yyval.objVal = yyvsp[0].objVal;
01312 ;
01313 break;}
01314 case 53:
01315 #line 471 "parser.y"
01316 {
01317 yyval.objVal = IReNodeBuilder_createStarNode(yyvsp[-1].objVal);
01318 ;
01319 break;}
01320 case 54:
01321 #line 475 "parser.y"
01322 {
01323 yyval.objVal = IReNodeBuilder_createPlusNode(yyvsp[-1].objVal);;
01324 ;
01325 break;}
01326 case 55:
01327 #line 479 "parser.y"
01328 {
01329 yyval.objVal = IReNodeBuilder_createOptionalNode(yyvsp[-1].objVal);
01330 ;
01331 break;}
01332 case 56:
01333 #line 485 "parser.y"
01334 {
01335 yyval.objVal = IReNodeBuilder_createStringLiteralNode(yyvsp[0].strVal);
01336 free(yyvsp[0].strVal);
01337 ;
01338 break;}
01339 case 57:
01340 #line 490 "parser.y"
01341 {
01342 yyval.objVal = MacroTokenExpander_getMacro(yyvsp[-1].strVal);
01343 ;
01344 break;}
01345 case 58:
01346 #line 494 "parser.y"
01347 {
01348 yyval.objVal = yyvsp[0].objVal;
01349 ;
01350 break;}
01351 case 59:
01352 #line 498 "parser.y"
01353 {
01354 yyval.objVal = yyvsp[-1].objVal;
01355 ;
01356 break;}
01357 case 60:
01358 #line 504 "parser.y"
01359 {
01360 yyval.objVal = IReNodeBuilder_createCharListNode(yyvsp[-3].intVal, yyvsp[-1].charClassListVal);
01361 deleteCwCharClassList(yyvsp[-1].charClassListVal, 1);
01362 ;
01363 break;}
01364 case 61:
01365 #line 510 "parser.y"
01366 { yyval.intVal = 0; ;
01367 break;}
01368 case 62:
01369 #line 511 "parser.y"
01370 { yyval.intVal = 1; ;
01371 break;}
01372 case 63:
01373 #line 515 "parser.y"
01374 {
01375 yyval.charClassListVal = appendToCwCharClassList(NULL, yyvsp[0].charClassVal);
01376 ;
01377 break;}
01378 case 64:
01379 #line 520 "parser.y"
01380 {
01381 yyval.charClassListVal = appendToCwCharClassList(yyvsp[-2].charClassListVal, yyvsp[0].charClassVal);;
01382 ;
01383 break;}
01384 case 65:
01385 #line 526 "parser.y"
01386 {
01387 yyval.charClassVal = (CwCharClass*) malloc(sizeof(CwCharClass));
01388 yyval.charClassVal->first = yyval.charClassVal->last = yyvsp[0].chrVal;
01389 ;
01390 break;}
01391 case 66:
01392 #line 531 "parser.y"
01393 {
01394 yyval.charClassVal = (CwCharClass*) malloc(sizeof(CwCharClass));
01395 yyval.charClassVal->first = yyvsp[-2].chrVal;
01396 yyval.charClassVal->last = yyvsp[0].chrVal;
01397 ;
01398 break;}
01399 case 67:
01400 #line 542 "parser.y"
01401 {
01402 if (yyvsp[0].strVal != NULL) {
01403 IParserSpec_setPreambleCode(yyvsp[0].strVal);
01404 free(yyvsp[0].strVal);
01405 }
01406 ;
01407 break;}
01408 case 68:
01409 #line 549 "parser.y"
01410 {
01411 IParserSpec_setClassName(yyvsp[0].strVal);
01412 free(yyvsp[0].strVal);
01413 ;
01414 break;}
01415 case 69:
01416 #line 554 "parser.y"
01417 {
01418 if (yyvsp[0].strVal != NULL) {
01419 IParserSpec_setInheritance(yyvsp[0].strVal);
01420 free(yyvsp[0].strVal);
01421 }
01422 ;
01423 break;}
01424 case 71:
01425 #line 563 "parser.y"
01426 {yyval.foo=0;;
01427 break;}
01428 case 72:
01429 #line 564 "parser.y"
01430 {yyval.foo=0;;
01431 break;}
01432 case 73:
01433 #line 568 "parser.y"
01434 {
01435 IParserSpec_addCodeBlock(yyvsp[0].strVal);
01436 free(yyvsp[0].strVal);
01437 ;
01438 break;}
01439 case 74:
01440 #line 572 "parser.y"
01441 {yyval.foo=0;;
01442 break;}
01443 case 75:
01444 #line 575 "parser.y"
01445 { enterDumbMode('(',')', 0); ;
01446 break;}
01447 case 76:
01448 #line 576 "parser.y"
01449 { yyval.intVal = yylineno; ;
01450 break;}
01451 case 77:
01452 #line 577 "parser.y"
01453 { enterDumbMode('(',')', 0); ;
01454 break;}
01455 case 78:
01456 #line 578 "parser.y"
01457 { yyval.intVal = yylineno; ;
01458 break;}
01459 case 79:
01460 #line 580 "parser.y"
01461 { yyval.intVal = yylineno; ;
01462 break;}
01463 case 80:
01464 #line 582 "parser.y"
01465 { yyval.intVal = yylineno; ;
01466 break;}
01467 case 81:
01468 #line 584 "parser.y"
01469 {
01470 IParserSpec_addProduction(yyvsp[-11].strVal, yyvsp[-13].strVal, yyvsp[-12].intVal, yyvsp[-8].strVal, yyvsp[-7].intVal,
01471 yyvsp[-6].strVal, yyvsp[-5].intVal, yyvsp[-3].strVal, yyvsp[-2].intVal, yyvsp[-1].objVal);
01472 free(yyvsp[-13].strVal);
01473 free(yyvsp[-8].strVal);
01474 if (yyvsp[-6].strVal != NULL) free(yyvsp[-6].strVal);
01475 if (yyvsp[-3].strVal != NULL) free(yyvsp[-3].strVal);
01476 ;
01477 break;}
01478 case 82:
01479 #line 594 "parser.y"
01480 { yyval.strVal = NULL; ;
01481 break;}
01482 case 83:
01483 #line 595 "parser.y"
01484 {enterDumbMode('(',')', 0); ;
01485 break;}
01486 case 84:
01487 #line 597 "parser.y"
01488 { yyval.strVal = yyvsp[0].strVal; ;
01489 break;}
01490 case 85:
01491 #line 600 "parser.y"
01492 { yyval.objVal = NULL;;
01493 break;}
01494 case 86:
01495 #line 601 "parser.y"
01496 { yyval.objVal = yyvsp[0].objVal;;
01497 break;}
01498 case 87:
01499 #line 605 "parser.y"
01500 { yyval.objVal = yyvsp[0].objVal; ;
01501 break;}
01502 case 88:
01503 #line 607 "parser.y"
01504 {yyval.objVal = IEbnfNodeBuilder_createOrNode(yyvsp[-2].objVal, yyvsp[0].objVal); ;
01505 break;}
01506 case 89:
01507 #line 611 "parser.y"
01508 { yyval.objVal = yyvsp[0].objVal; ;
01509 break;}
01510 case 90:
01511 #line 613 "parser.y"
01512 { yyval.objVal = IEbnfNodeBuilder_createCatNode(yyvsp[-1].objVal, yyvsp[0].objVal); ;
01513 break;}
01514 case 91:
01515 #line 619 "parser.y"
01516 {
01517 yyval.objVal = yyvsp[-3].objVal;
01518 if (yyvsp[-6].objVal != NULL)
01519 IEbnfNodeBuilder_setLookahead(yyval.objVal, yyvsp[-6].objVal);
01520 if (yyvsp[-5].strVal != NULL) {
01521 IEbnfNodeBuilder_setStartCode(yyval.objVal, yyvsp[-5].strVal, yyvsp[-4].intVal);
01522 free(yyvsp[-5].strVal);
01523 }
01524 if (yyvsp[-2].catchClauseListVal != NULL) {
01525 IEbnfNodeBuilder_setCatchClauses(yyval.objVal, yyvsp[-2].catchClauseListVal);
01526 deleteCwCatchClauseList(yyvsp[-2].catchClauseListVal, 1);
01527 }
01528 if (yyvsp[-1].strVal != NULL) {
01529 IEbnfNodeBuilder_setEndCode(yyval.objVal, yyvsp[-1].strVal, yyvsp[0].intVal);
01530 free(yyvsp[-1].strVal);
01531 }
01532 ;
01533 break;}
01534 case 92:
01535 #line 638 "parser.y"
01536 { yyval.intVal = 0; ;
01537 break;}
01538 case 93:
01539 #line 639 "parser.y"
01540 { yyval.intVal = 1; ;
01541 break;}
01542 case 94:
01543 #line 643 "parser.y"
01544 { yyval.objVal = NULL; ;
01545 break;}
01546 case 95:
01547 #line 645 "parser.y"
01548 { yyval.objVal = yyvsp[-1].objVal; ;
01549 break;}
01550 case 96:
01551 #line 649 "parser.y"
01552 { yyval.objVal = IEbnfNodeBuilder_createLaSpec(yyvsp[0].intVal, NULL, NULL); ;
01553 break;}
01554 case 97:
01555 #line 651 "parser.y"
01556 { yyval.objVal = IEbnfNodeBuilder_createLaSpec(0, yyvsp[0].objVal, NULL); ;
01557 break;}
01558 case 98:
01559 #line 653 "parser.y"
01560 {
01561 yyval.objVal = IEbnfNodeBuilder_createLaSpec(0, NULL, yyvsp[0].strVal);
01562 free(yyvsp[0].strVal);
01563 ;
01564 break;}
01565 case 99:
01566 #line 658 "parser.y"
01567 { yyval.objVal = IEbnfNodeBuilder_createLaSpec(yyvsp[-2].intVal, yyvsp[0].objVal, NULL); ;
01568 break;}
01569 case 100:
01570 #line 660 "parser.y"
01571 {
01572 yyval.objVal = IEbnfNodeBuilder_createLaSpec(yyvsp[-2].intVal, NULL, yyvsp[0].strVal);
01573 free(yyvsp[0].strVal);
01574 ;
01575 break;}
01576 case 101:
01577 #line 665 "parser.y"
01578 {
01579 yyval.objVal = IEbnfNodeBuilder_createLaSpec(0, yyvsp[-2].objVal, yyvsp[0].strVal);
01580 free(yyvsp[0].strVal);
01581 ;
01582 break;}
01583 case 102:
01584 #line 670 "parser.y"
01585 {
01586 yyval.objVal = IEbnfNodeBuilder_createLaSpec(yyvsp[-4].intVal, yyvsp[-2].objVal, yyvsp[0].strVal);
01587 free(yyvsp[-2].objVal);
01588 ;
01589 break;}
01590 case 103:
01591 #line 677 "parser.y"
01592 { yyval.objVal = yyvsp[0].objVal; ;
01593 break;}
01594 case 104:
01595 #line 679 "parser.y"
01596 { yyval.objVal = IEbnfNodeBuilder_createPlusNode(yyvsp[-1].objVal); ;
01597 break;}
01598 case 105:
01599 #line 681 "parser.y"
01600 { yyval.objVal = IEbnfNodeBuilder_createOptionalNode(yyvsp[-1].objVal); ;
01601 break;}
01602 case 106:
01603 #line 683 "parser.y"
01604 { yyval.objVal = IEbnfNodeBuilder_createStarNode(yyvsp[-1].objVal); ;
01605 break;}
01606 case 107:
01607 #line 686 "parser.y"
01608 {yyval.intVal = yylineno; ;
01609 break;}
01610 case 108:
01611 #line 687 "parser.y"
01612 {
01613 yyval.objVal = IEbnfNodeBuilder_createNonterminalNode(yyvsp[-4].strVal, yyvsp[-3].intVal,
01614 yyvsp[-1].strVal, yyvsp[0].strVal, yylineno);
01615 free(yyvsp[-4].strVal);
01616 free(yyvsp[-1].strVal);
01617 free(yyvsp[0].strVal);
01618 ;
01619 break;}
01620 case 109:
01621 #line 695 "parser.y"
01622 {
01623 yyval.objVal = IEbnfNodeBuilder_createNonterminalNode(NULL, 0, yyvsp[-1].strVal, yyvsp[0].strVal, yylineno);
01624 free(yyvsp[-1].strVal);
01625 free(yyvsp[0].strVal);
01626 ;
01627 break;}
01628 case 110:
01629 #line 700 "parser.y"
01630 {yyval.objVal=0;;
01631 break;}
01632 case 111:
01633 #line 701 "parser.y"
01634 {
01635 yyval.objVal = IEbnfNodeBuilder_createTerminalNode(yyvsp[-2].strVal);
01636 free(yyvsp[-2].strVal);
01637 ;
01638 break;}
01639 case 112:
01640 #line 706 "parser.y"
01641 { yyval.objVal = yyvsp[-1].objVal; ;
01642 break;}
01643 case 113:
01644 #line 709 "parser.y"
01645 { enterDumbMode('(',')', 0); ;
01646 break;}
01647 case 114:
01648 #line 710 "parser.y"
01649 { yyval.strVal = yyvsp[0].strVal; ;
01650 break;}
01651 case 115:
01652 #line 713 "parser.y"
01653 { yyval.catchClauseListVal = NULL; ;
01654 break;}
01655 case 116:
01656 #line 714 "parser.y"
01657 { yyval.catchClauseListVal = yyvsp[0].catchClauseListVal; ;
01658 break;}
01659 case 117:
01660 #line 718 "parser.y"
01661 {
01662 yyval.catchClauseListVal = appendToCwCatchClauseList (NULL, yyvsp[0].catchClauseVal);
01663 ;
01664 break;}
01665 case 118:
01666 #line 722 "parser.y"
01667 {
01668 yyval.catchClauseListVal = appendToCwCatchClauseList (yyvsp[-1].catchClauseListVal, yyvsp[0].catchClauseVal);
01669 ;
01670 break;}
01671 case 119:
01672 #line 727 "parser.y"
01673 { enterDumbMode('(',')', 0); ;
01674 break;}
01675 case 120:
01676 #line 728 "parser.y"
01677 { yyvsp[1].intVal = yylineno; ;
01678 break;}
01679 case 121:
01680 #line 730 "parser.y"
01681 {
01682 yyval.catchClauseVal = IEbnfNodeBuilder_createCatchClause(yyvsp[-2].strVal, yyvsp[-1].intVal, yyvsp[0].strVal);
01683 free(yyvsp[-2].strVal);
01684 free(yyvsp[0].strVal);
01685 ;
01686 break;}
01687 case 122:
01688 #line 747 "parser.y"
01689 { yyval.strVal = NULL; ;
01690 break;}
01691 case 123:
01692 #line 748 "parser.y"
01693 { enterDumbMode('}','{', 1); ;
01694 break;}
01695 case 124:
01696 #line 749 "parser.y"
01697 {
01698 yyval.strVal = yyvsp[0].strVal;
01699 ;
01700 break;}
01701 case 125:
01702 #line 754 "parser.y"
01703 { yyval.strVal = NULL; ;
01704 break;}
01705 case 126:
01706 #line 755 "parser.y"
01707 { yyval.strVal = yyvsp[0].strVal; ;
01708 break;}
01709 case 127:
01710 #line 758 "parser.y"
01711 { enterDumbMode('{', '}', 0); ;
01712 break;}
01713 case 128:
01714 #line 759 "parser.y"
01715 {
01716 yyval.strVal = yyvsp[0].strVal;
01717 ;
01718 break;}
01719 }
01720
01721 #line 543 "/usr/lib/bison.simple"
01722
01723 yyvsp -= yylen;
01724 yyssp -= yylen;
01725 #ifdef YYLSP_NEEDED
01726 yylsp -= yylen;
01727 #endif
01728
01729 #if YYDEBUG != 0
01730 if (yydebug)
01731 {
01732 short *ssp1 = yyss - 1;
01733 fprintf (stderr, "state stack now");
01734 while (ssp1 != yyssp)
01735 fprintf (stderr, " %d", *++ssp1);
01736 fprintf (stderr, "\n");
01737 }
01738 #endif
01739
01740 *++yyvsp = yyval;
01741
01742 #ifdef YYLSP_NEEDED
01743 yylsp++;
01744 if (yylen == 0)
01745 {
01746 yylsp->first_line = yylloc.first_line;
01747 yylsp->first_column = yylloc.first_column;
01748 yylsp->last_line = (yylsp-1)->last_line;
01749 yylsp->last_column = (yylsp-1)->last_column;
01750 yylsp->text = 0;
01751 }
01752 else
01753 {
01754 yylsp->last_line = (yylsp+yylen-1)->last_line;
01755 yylsp->last_column = (yylsp+yylen-1)->last_column;
01756 }
01757 #endif
01758
01759
01760
01761
01762
01763
01764 yyn = yyr1[yyn];
01765
01766 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
01767 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01768 yystate = yytable[yystate];
01769 else
01770 yystate = yydefgoto[yyn - YYNTBASE];
01771
01772 goto yynewstate;
01773
01774 yyerrlab:
01775
01776 if (! yyerrstatus)
01777
01778 {
01779 ++yynerrs;
01780
01781 #ifdef YYERROR_VERBOSE
01782 yyn = yypact[yystate];
01783
01784 if (yyn > YYFLAG && yyn < YYLAST)
01785 {
01786 int size = 0;
01787 char *msg;
01788 int x, count;
01789
01790 count = 0;
01791
01792 for (x = (yyn < 0 ? -yyn : 0);
01793 x < (sizeof(yytname) / sizeof(char *)); x++)
01794 if (yycheck[x + yyn] == x)
01795 size += strlen(yytname[x]) + 15, count++;
01796 msg = (char *) malloc(size + 15);
01797 if (msg != 0)
01798 {
01799 strcpy(msg, "parse error");
01800
01801 if (count < 5)
01802 {
01803 count = 0;
01804 for (x = (yyn < 0 ? -yyn : 0);
01805 x < (sizeof(yytname) / sizeof(char *)); x++)
01806 if (yycheck[x + yyn] == x)
01807 {
01808 strcat(msg, count == 0 ? ", expecting `" : " or `");
01809 strcat(msg, yytname[x]);
01810 strcat(msg, "'");
01811 count++;
01812 }
01813 }
01814 yyerror(msg);
01815 free(msg);
01816 }
01817 else
01818 yyerror ("parse error; also virtual memory exceeded");
01819 }
01820 else
01821 #endif
01822 yyerror("parse error");
01823 }
01824
01825 goto yyerrlab1;
01826 yyerrlab1:
01827
01828 if (yyerrstatus == 3)
01829 {
01830
01831
01832
01833 if (yychar == YYEOF)
01834 YYABORT;
01835
01836 #if YYDEBUG != 0
01837 if (yydebug)
01838 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
01839 #endif
01840
01841 yychar = YYEMPTY;
01842 }
01843
01844
01845
01846
01847 yyerrstatus = 3;
01848
01849 goto yyerrhandle;
01850
01851 yyerrdefault:
01852
01853 #if 0
01854
01855
01856 yyn = yydefact[yystate];
01857 if (yyn) goto yydefault;
01858 #endif
01859
01860 yyerrpop:
01861
01862 if (yyssp == yyss) YYABORT;
01863 yyvsp--;
01864 yystate = *--yyssp;
01865 #ifdef YYLSP_NEEDED
01866 yylsp--;
01867 #endif
01868
01869 #if YYDEBUG != 0
01870 if (yydebug)
01871 {
01872 short *ssp1 = yyss - 1;
01873 fprintf (stderr, "Error: state stack now");
01874 while (ssp1 != yyssp)
01875 fprintf (stderr, " %d", *++ssp1);
01876 fprintf (stderr, "\n");
01877 }
01878 #endif
01879
01880 yyerrhandle:
01881
01882 yyn = yypact[yystate];
01883 if (yyn == YYFLAG)
01884 goto yyerrdefault;
01885
01886 yyn += YYTERROR;
01887 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
01888 goto yyerrdefault;
01889
01890 yyn = yytable[yyn];
01891 if (yyn < 0)
01892 {
01893 if (yyn == YYFLAG)
01894 goto yyerrpop;
01895 yyn = -yyn;
01896 goto yyreduce;
01897 }
01898 else if (yyn == 0)
01899 goto yyerrpop;
01900
01901 if (yyn == YYFINAL)
01902 YYACCEPT;
01903
01904 #if YYDEBUG != 0
01905 if (yydebug)
01906 fprintf(stderr, "Shifting error token, ");
01907 #endif
01908
01909 *++yyvsp = yylval;
01910 #ifdef YYLSP_NEEDED
01911 *++yylsp = yylloc;
01912 #endif
01913
01914 yystate = yyn;
01915 goto yynewstate;
01916
01917 yyacceptlab:
01918
01919 if (yyfree_stacks)
01920 {
01921 free (yyss);
01922 free (yyvs);
01923 #ifdef YYLSP_NEEDED
01924 free (yyls);
01925 #endif
01926 }
01927 return 0;
01928
01929 yyabortlab:
01930
01931 if (yyfree_stacks)
01932 {
01933 free (yyss);
01934 free (yyvs);
01935 #ifdef YYLSP_NEEDED
01936 free (yyls);
01937 #endif
01938 }
01939 return 1;
01940 }
01941 #line 763 "parser.y"
01942
01943