Changeset 5523 for trunk/tools/wrc/y.tab.c
- Timestamp:
- Apr 16, 2001, 7:12:53 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/wrc/y.tab.c
r4617 r5523 1 1 2 2 /* A Bison parser, made from parser.y 3 by GNU Bison version 1.28 */ 3 by GNU Bison version 1.25 4 */ 4 5 5 6 #define YYBISON 1 /* Identify Bison output. */ 6 7 7 #define tIF 257 8 #define tIFDEF 258 9 #define tIFNDEF 259 10 #define tELSE 260 11 #define tELIF 261 12 #define tENDIF 262 13 #define tDEFINED 263 14 #define tNL 264 15 #define tTYPEDEF 265 16 #define tEXTERN 266 17 #define NUMBER 267 18 #define LNUMBER 268 19 #define tSTRING 269 20 #define IDENT 270 21 #define FILENAME 271 22 #define RAWDATA 272 23 #define ACCELERATORS 273 24 #define tBITMAP 274 25 #define CURSOR 275 26 #define DIALOG 276 27 #define DIALOGEX 277 28 #define MENU 278 29 #define MENUEX 279 30 #define MESSAGETABLE 280 31 #define RCDATA 281 32 #define VERSIONINFO 282 33 #define STRINGTABLE 283 34 #define FONT 284 35 #define ICON 285 36 #define AUTO3STATE 286 37 #define AUTOCHECKBOX 287 38 #define AUTORADIOBUTTON 288 39 #define CHECKBOX 289 40 #define DEFPUSHBUTTON 290 41 #define PUSHBUTTON 291 42 #define RADIOBUTTON 292 43 #define STATE3 293 44 #define GROUPBOX 294 45 #define COMBOBOX 295 46 #define LISTBOX 296 47 #define SCROLLBAR 297 48 #define CONTROL 298 49 #define EDITTEXT 299 50 #define RTEXT 300 51 #define CTEXT 301 52 #define LTEXT 302 53 #define BLOCK 303 54 #define VALUE 304 55 #define SHIFT 305 56 #define ALT 306 57 #define ASCII 307 58 #define VIRTKEY 308 59 #define GRAYED 309 60 #define CHECKED 310 61 #define INACTIVE 311 62 #define NOINVERT 312 8 #define tTYPEDEF 258 9 #define tEXTERN 259 10 #define tSTRUCT 260 11 #define tENUM 261 12 #define tCPPCLASS 262 13 #define tINLINE 263 14 #define tSTATIC 264 15 #define tNL 265 16 #define tNUMBER 266 17 #define tLNUMBER 267 18 #define tSTRING 268 19 #define tIDENT 269 20 #define tFILENAME 270 21 #define tRAWDATA 271 22 #define tACCELERATORS 272 23 #define tBITMAP 273 24 #define tCURSOR 274 25 #define tDIALOG 275 26 #define tDIALOGEX 276 27 #define tMENU 277 28 #define tMENUEX 278 29 #define tMESSAGETABLE 279 30 #define tRCDATA 280 31 #define tVERSIONINFO 281 32 #define tSTRINGTABLE 282 33 #define tFONT 283 34 #define tFONTDIR 284 35 #define tICON 285 36 #define tAUTO3STATE 286 37 #define tAUTOCHECKBOX 287 38 #define tAUTORADIOBUTTON 288 39 #define tCHECKBOX 289 40 #define tDEFPUSHBUTTON 290 41 #define tPUSHBUTTON 291 42 #define tRADIOBUTTON 292 43 #define tSTATE3 293 44 #define tGROUPBOX 294 45 #define tCOMBOBOX 295 46 #define tLISTBOX 296 47 #define tSCROLLBAR 297 48 #define tCONTROL 298 49 #define tEDITTEXT 299 50 #define tRTEXT 300 51 #define tCTEXT 301 52 #define tLTEXT 302 53 #define tBLOCK 303 54 #define tVALUE 304 55 #define tSHIFT 305 56 #define tALT 306 57 #define tASCII 307 58 #define tVIRTKEY 308 59 #define tGRAYED 309 60 #define tCHECKED 310 61 #define tINACTIVE 311 62 #define tNOINVERT 312 63 63 #define tPURE 313 64 #define IMPURE 31465 #define DISCARDABLE 31566 #define LOADONCALL 31667 #define PRELOAD 31764 #define tIMPURE 314 65 #define tDISCARDABLE 315 66 #define tLOADONCALL 316 67 #define tPRELOAD 317 68 68 #define tFIXED 318 69 #define MOVEABLE 31970 #define CLASS 32071 #define CAPTION 32172 #define CHARACTERISTICS 32273 #define EXSTYLE 32374 #define STYLE 32475 #define VERSION 32576 #define LANGUAGE 32677 #define FILEVERSION 32778 #define PRODUCTVERSION 32879 #define FILEFLAGSMASK 32980 #define FILEOS 33081 #define FILETYPE 33182 #define FILEFLAGS 33283 #define FILESUBTYPE 33384 #define MENUBARBREAK 33485 #define MENUBREAK 33586 #define MENUITEM 33687 #define POPUP 33788 #define SEPARATOR 33889 #define HELP 33990 #define TOOLBAR 34091 #define BUTTON 34169 #define tMOVEABLE 319 70 #define tCLASS 320 71 #define tCAPTION 321 72 #define tCHARACTERISTICS 322 73 #define tEXSTYLE 323 74 #define tSTYLE 324 75 #define tVERSION 325 76 #define tLANGUAGE 326 77 #define tFILEVERSION 327 78 #define tPRODUCTVERSION 328 79 #define tFILEFLAGSMASK 329 80 #define tFILEOS 330 81 #define tFILETYPE 331 82 #define tFILEFLAGS 332 83 #define tFILESUBTYPE 333 84 #define tMENUBARBREAK 334 85 #define tMENUBREAK 335 86 #define tMENUITEM 336 87 #define tPOPUP 337 88 #define tSEPARATOR 338 89 #define tHELP 339 90 #define tTOOLBAR 340 91 #define tBUTTON 341 92 92 #define tBEGIN 342 93 93 #define tEND 343 94 #define DLGINIT 344 95 #define LOGOR 345 96 #define LOGAND 346 97 #define EQ 347 98 #define NE 348 99 #define LTE 349 100 #define GTE 350 101 #define NOT 351 94 #define tDLGINIT 344 95 #define tNOT 345 96 #define pUPM 346 102 97 103 98 #line 1 "parser.y" 104 99 105 100 /* 106 * Copyright Martin von Loewis, 1994107 * Copyright 1998 108 * 1999 101 * Copyright 1994 Martin von Loewis 102 * Copyright 1998-2000 Bertho A. Stultiens (BS) 103 * 1999 Juergen Schmied (JS) 109 104 * 110 * 6-Nov-1999 JS - see CHANGES 105 * 24-Jul-2000 BS - Made a fix for broken Berkeley yacc on 106 * non-terminals (see cjunk rule). 107 * 21-May-2000 BS - Partial implementation of font resources. 108 * - Corrected language propagation for binary 109 * resources such as bitmaps, isons, cursors, 110 * userres and rcdata. The language is now 111 * correct in .res files. 112 * - Fixed reading the resource name as ident, 113 * so that it may overlap keywords. 114 * 20-May-2000 BS - Implemented animated cursors and icons 115 * resource types. 116 * 30-Apr-2000 BS - Reintegration into the wine-tree 117 * 14-Jan-2000 BS - Redid the usertype resources so that they 118 * are compatible. 119 * 02-Jan-2000 BS - Removed the preprocessor from the grammar 120 * expect for the # command (line numbers). 111 121 * 122 * 06-Nov-1999 JS - see CHANGES 123 * 112 124 * 29-Dec-1998 AdH - Grammar and function extensions. 113 * grammar: TOOLBAR resources, Named ICONs in 125 * grammar: TOOLBAR resources, Named ICONs in 114 126 * DIALOGS 115 * functions: semantic actions for the grammar 127 * functions: semantic actions for the grammar 116 128 * changes, resource files can now be anywhere 117 129 * on the include path instead of just in the … … 211 223 #include "parser.h" 212 224 #include "windef.h" 225 #include "winbase.h" 213 226 #include "wingdi.h" 214 227 #include "winuser.h" 215 /* kso Sun 19.11.2000 */ 216 #undef strcasecmp 217 #define strcasecmp stricmp 218 219 #ifdef __BORLANDC__ 220 #pragma warn -sig 221 #endif 222 223 int indialog = 0; /* Signal flex that we're parsing a dialog */ 224 int want_rscname = 0; /* Set when a resource's name is required */ 228 229 #if defined(YYBYACC) 230 /* Berkeley yacc (byacc) doesn't seem to know about these */ 231 /* Some *BSD supplied versions do define these though */ 232 # ifndef YYEMPTY 233 # define YYEMPTY (-1) /* Empty lookahead value of yychar */ 234 # endif 235 # ifndef YYLEX 236 # define YYLEX yylex() 237 # endif 238 239 #elif defined(YYBISON) 240 /* Bison was used for original development */ 241 /* #define YYEMPTY -2 */ 242 /* #define YYLEX yylex() */ 243 244 #else 245 /* No yacc we know yet */ 246 # if !defined(YYEMPTY) || !defined(YYLEX) 247 # error Yacc version/type unknown. This version needs to be verified for settings of YYEMPTY and YYLEX. 248 # elif defined(__GNUC__) /* gcc defines the #warning directive */ 249 # warning Yacc version/type unknown. It defines YYEMPTY and YYLEX, but is not tested 250 /* #else we just take a chance that it works... */ 251 # endif 252 #endif 253 254 int want_nl = 0; /* Signal flex that we need the next newline */ 255 int want_id = 0; /* Signal flex that we need the next identifier */ 225 256 stringtable_t *tagstt; /* Stringtable tag. 226 257 * It is set while parsing a stringtable to one of … … 231 262 * stringtables with different lanuages 232 263 */ 264 static int dont_want_id = 0; /* See language parsing for details */ 265 233 266 /* Set to the current options of the currently scanning stringtable */ 234 267 static int *tagstt_memopt; … … 236 269 static version_t *tagstt_version; 237 270 271 static const char riff[4] = "RIFF"; /* RIFF file magic for animated cursor/icon */ 272 238 273 /* Prototypes of here defined functions */ 239 void split_cursors(raw_data_t *rd, cursor_group_t *curg, int *ncur); 240 void split_icons(raw_data_t *rd, icon_group_t *icog, int *nico); 241 int alloc_cursor_id(language_t *); 242 int alloc_icon_id(language_t *); 243 void ins_stt_entry(stt_entry_t *ste); 244 int check_stt_entry(stringtable_t *tabs, stt_entry_t *ste); 245 event_t *get_event_head(event_t *p); 246 control_t *get_control_head(control_t *p); 247 ver_value_t *get_ver_value_head(ver_value_t *p); 248 ver_block_t *get_ver_block_head(ver_block_t *p); 249 resource_t *get_resource_head(resource_t *p); 250 menuex_item_t *get_itemex_head(menuex_item_t *p); 251 menu_item_t *get_item_head(menu_item_t *p); 252 raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str); 253 raw_data_t *merge_raw_data_int(raw_data_t *r1, int i); 254 raw_data_t *merge_raw_data_long(raw_data_t *r1, int i); 255 raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2); 256 raw_data_t *str2raw_data(string_t *str); 257 raw_data_t *int2raw_data(int i); 258 raw_data_t *long2raw_data(int i); 259 raw_data_t *load_file(string_t *name); 260 itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid); 261 event_t *add_string_event(string_t *key, int id, int flags, event_t *prev); 262 event_t *add_event(int key, int id, int flags, event_t *prev); 263 dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg); 264 dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg); 265 dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg); 266 dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg); 267 dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg); 268 dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg); 269 dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg); 270 dialogex_t *dialogex_exstyle(style_t *st, dialogex_t *dlg); 271 dialogex_t *dialogex_style(style_t *st, dialogex_t *dlg); 272 name_id_t *convert_ctlclass(name_id_t *cls); 273 control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev); 274 dialog_t *dialog_version(version_t *v, dialog_t *dlg); 275 dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg); 276 dialog_t *dialog_language(language_t *l, dialog_t *dlg); 277 dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg); 278 dialog_t *dialog_class(name_id_t *n, dialog_t *dlg); 279 dialog_t *dialog_font(font_id_t *f, dialog_t *dlg); 280 dialog_t *dialog_caption(string_t *s, dialog_t *dlg); 281 dialog_t *dialog_exstyle(style_t * st, dialog_t *dlg); 282 dialog_t *dialog_style(style_t * st, dialog_t *dlg); 283 resource_t *build_stt_resources(stringtable_t *stthead); 284 stringtable_t *find_stringtable(lvc_t *lvc); 285 toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec); 286 toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems); 287 288 289 #line 183 "parser.y" 274 static event_t *get_event_head(event_t *p); 275 static control_t *get_control_head(control_t *p); 276 static ver_value_t *get_ver_value_head(ver_value_t *p); 277 static ver_block_t *get_ver_block_head(ver_block_t *p); 278 static resource_t *get_resource_head(resource_t *p); 279 static menuex_item_t *get_itemex_head(menuex_item_t *p); 280 static menu_item_t *get_item_head(menu_item_t *p); 281 static raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str); 282 static raw_data_t *merge_raw_data_int(raw_data_t *r1, int i); 283 static raw_data_t *merge_raw_data_long(raw_data_t *r1, int i); 284 static raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2); 285 static raw_data_t *str2raw_data(string_t *str); 286 static raw_data_t *int2raw_data(int i); 287 static raw_data_t *long2raw_data(int i); 288 static raw_data_t *load_file(string_t *name); 289 static itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid); 290 static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev); 291 static event_t *add_event(int key, int id, int flags, event_t *prev); 292 static dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg); 293 static dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg); 294 static dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg); 295 static dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg); 296 static dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg); 297 static dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg); 298 static dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg); 299 static dialogex_t *dialogex_exstyle(style_t *st, dialogex_t *dlg); 300 static dialogex_t *dialogex_style(style_t *st, dialogex_t *dlg); 301 static name_id_t *convert_ctlclass(name_id_t *cls); 302 static control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev); 303 static dialog_t *dialog_version(version_t *v, dialog_t *dlg); 304 static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg); 305 static dialog_t *dialog_language(language_t *l, dialog_t *dlg); 306 static dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg); 307 static dialog_t *dialog_class(name_id_t *n, dialog_t *dlg); 308 static dialog_t *dialog_font(font_id_t *f, dialog_t *dlg); 309 static dialog_t *dialog_caption(string_t *s, dialog_t *dlg); 310 static dialog_t *dialog_exstyle(style_t * st, dialog_t *dlg); 311 static dialog_t *dialog_style(style_t * st, dialog_t *dlg); 312 static resource_t *build_stt_resources(stringtable_t *stthead); 313 static stringtable_t *find_stringtable(lvc_t *lvc); 314 static toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec); 315 static toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems); 316 static string_t *make_filename(string_t *s); 317 static resource_t *build_fontdirs(resource_t *tail); 318 static resource_t *build_fontdir(resource_t **fnt, int nfnt); 319 static int rsrcid_to_token(int lookahead); 320 321 322 #line 224 "parser.y" 290 323 typedef union{ 291 324 string_t *str; 292 325 int num; 293 326 int *iptr; 327 char *cptr; 294 328 resource_t *res; 295 329 accelerator_t *acc; 296 330 bitmap_t *bmp; 297 cursor_t *cur;298 cursor_group_t *curg;299 331 dialog_t *dlg; 300 332 dialogex_t *dlgex; 301 333 font_t *fnt; 302 icon_t *ico; 303 icon_group_t *icog; 334 fontdir_t *fnd; 304 335 menu_t *men; 305 336 menuex_t *menex; … … 330 361 style_pair_t *styles; 331 362 style_t *style; 363 ani_any_t *ani; 332 364 } YYSTYPE; 333 365 #ifndef YYDEBUG … … 345 377 346 378 347 #define YYFINAL 604379 #define YYFINAL 577 348 380 #define YYFLAG -32768 349 #define YYNTBASE 1 12350 351 #define YYTRANSLATE(x) ((unsigned)(x) <= 3 51 ? yytranslate[x] : 191)381 #define YYNTBASE 103 382 383 #define YYTRANSLATE(x) ((unsigned)(x) <= 346 ? yytranslate[x] : 186) 352 384 353 385 static const char yytranslate[] = { 0, … … 355 387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 356 388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 357 2, 2, 107, 2, 2, 2, 2, 95, 2, 109, 358 110, 104, 102, 111, 103, 2, 105, 2, 2, 2, 359 2, 2, 2, 2, 2, 2, 2, 2, 2, 98, 360 2, 100, 2, 2, 2, 2, 2, 2, 2, 2, 389 2, 2, 2, 2, 2, 2, 2, 92, 2, 100, 390 102, 95, 93, 101, 94, 2, 96, 2, 2, 2, 361 391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 362 392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 363 2, 2, 2, 94, 2, 2, 2, 2, 2, 2,364 393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 365 394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 366 2, 2, 2, 93, 2, 106, 2, 2, 2, 2, 395 2, 2, 2, 91, 2, 2, 2, 2, 2, 2, 396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 398 2, 2, 2, 90, 2, 97, 2, 2, 2, 2, 367 399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 368 400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 377 409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 378 410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 379 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, 380 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 381 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 382 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 383 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 384 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 385 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 386 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 387 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 388 87, 88, 89, 90, 91, 92, 96, 97, 99, 101, 389 108 411 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 412 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 413 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 414 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 415 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 416 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 417 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 418 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 419 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 420 86, 87, 88, 89, 98, 99 390 421 }; 391 422 392 423 #if YYDEBUG != 0 393 424 static const short yyprhs[] = { 0, 394 0, 2, 3, 6, 9, 12, 16, 20, 24, 28, 395 31, 34, 36, 40, 44, 48, 52, 56, 60, 64, 396 68, 72, 76, 80, 83, 86, 89, 92, 96, 98, 397 100, 103, 108, 110, 112, 115, 118, 121, 124, 126, 398 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 399 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 400 170, 174, 178, 182, 186, 190, 194, 197, 202, 207, 401 211, 215, 217, 219, 226, 227, 233, 239, 240, 244, 402 248, 252, 256, 260, 264, 278, 279, 283, 287, 291, 403 294, 298, 302, 305, 308, 311, 312, 316, 320, 324, 404 328, 332, 336, 340, 344, 348, 352, 356, 360, 364, 405 368, 372, 376, 380, 391, 404, 415, 416, 421, 428, 406 437, 455, 471, 476, 477, 480, 481, 484, 489, 493, 407 497, 499, 502, 504, 506, 521, 522, 526, 530, 534, 408 537, 540, 544, 548, 551, 554, 557, 558, 562, 566, 409 570, 574, 578, 582, 586, 590, 594, 598, 602, 606, 410 610, 614, 618, 622, 626, 637, 657, 674, 688, 700, 411 701, 703, 704, 707, 717, 718, 721, 726, 730, 731, 412 738, 742, 748, 749, 753, 757, 761, 765, 769, 773, 413 778, 782, 783, 788, 792, 798, 799, 802, 808, 815, 414 816, 819, 824, 831, 840, 845, 849, 850, 855, 856, 415 858, 864, 865, 875, 885, 889, 893, 897, 901, 905, 416 906, 909, 915, 916, 919, 921, 926, 931, 933, 937, 417 947, 948, 952, 955, 956, 959, 962, 964, 966, 968, 418 970, 972, 974, 976, 977, 980, 983, 986, 991, 994, 419 997, 1001, 1003, 1005, 1007, 1009, 1013, 1017, 1021, 1025, 420 1026, 1028, 1030, 1034, 1038, 1042, 1046, 1050, 1054, 1057, 421 1060, 1064, 1066, 1069, 1071 425 0, 2, 3, 6, 9, 11, 13, 15, 17, 19, 426 21, 23, 26, 28, 32, 36, 41, 43, 44, 50, 427 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 428 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 429 91, 93, 95, 97, 101, 105, 109, 113, 117, 121, 430 125, 129, 133, 135, 137, 144, 145, 151, 157, 158, 431 161, 163, 167, 169, 171, 173, 175, 177, 179, 193, 432 194, 198, 202, 206, 209, 213, 217, 221, 224, 227, 433 230, 231, 235, 239, 243, 247, 251, 255, 259, 263, 434 267, 271, 275, 279, 283, 287, 291, 295, 299, 310, 435 323, 334, 335, 340, 347, 356, 374, 390, 395, 396, 436 399, 400, 403, 408, 412, 416, 418, 421, 423, 425, 437 440, 441, 445, 449, 453, 456, 459, 463, 467, 471, 438 474, 477, 480, 481, 485, 489, 493, 497, 501, 505, 439 509, 513, 517, 521, 525, 529, 533, 537, 541, 545, 440 549, 560, 580, 597, 611, 623, 624, 626, 627, 630, 441 640, 641, 644, 649, 653, 654, 661, 665, 671, 672, 442 676, 680, 684, 688, 692, 696, 701, 705, 706, 711, 443 715, 721, 722, 725, 731, 738, 739, 742, 747, 754, 444 763, 768, 772, 773, 778, 779, 781, 788, 789, 799, 445 809, 813, 817, 821, 825, 829, 830, 833, 839, 840, 446 843, 845, 850, 855, 857, 861, 871, 872, 876, 879, 447 880, 883, 886, 888, 890, 892, 894, 896, 898, 900, 448 901, 904, 907, 910, 915, 918, 921, 926, 928, 930, 449 932, 934, 938, 942, 946, 950, 952, 954, 955, 957, 450 959, 963, 967, 971, 975, 979, 983, 987, 990, 993, 451 996, 1000, 1002, 1005, 1007 422 452 }; 423 453 424 static const short yyrhs[] = { 113, 425 0, 0, 113, 118, 0, 113, 114, 0, 113, 117, 426 0, 3, 115, 10, 0, 4, 16, 10, 0, 5, 427 16, 10, 0, 7, 115, 10, 0, 6, 10, 0, 428 8, 10, 0, 116, 0, 115, 91, 115, 0, 115, 429 92, 115, 0, 115, 102, 115, 0, 115, 103, 115, 430 0, 115, 94, 115, 0, 115, 96, 115, 0, 115, 431 97, 115, 0, 115, 98, 115, 0, 115, 100, 115, 432 0, 115, 99, 115, 0, 115, 101, 115, 0, 106, 433 115, 0, 102, 115, 0, 103, 115, 0, 107, 115, 434 0, 109, 115, 110, 0, 190, 0, 16, 0, 9, 435 16, 0, 9, 109, 16, 110, 0, 11, 0, 12, 436 0, 16, 16, 0, 16, 109, 0, 16, 104, 0, 437 119, 121, 0, 165, 0, 182, 0, 188, 0, 16, 438 0, 119, 0, 15, 0, 131, 0, 122, 0, 123, 439 0, 134, 0, 146, 0, 128, 0, 124, 0, 125, 440 0, 156, 0, 160, 0, 126, 0, 127, 0, 176, 441 0, 129, 0, 169, 0, 20, 178, 17, 0, 20, 442 178, 185, 0, 21, 178, 17, 0, 21, 178, 185, 443 0, 30, 178, 17, 0, 31, 178, 17, 0, 31, 444 178, 185, 0, 26, 17, 0, 27, 178, 181, 185, 445 0, 90, 178, 181, 185, 0, 130, 178, 17, 0, 446 130, 178, 185, 0, 13, 0, 15, 0, 19, 178, 447 181, 88, 132, 89, 0, 0, 132, 15, 111, 188, 448 133, 0, 132, 188, 111, 188, 133, 0, 0, 133, 449 111, 58, 0, 133, 111, 51, 0, 133, 111, 44, 450 0, 133, 111, 52, 0, 133, 111, 53, 0, 133, 451 111, 54, 0, 22, 178, 188, 111, 188, 111, 188, 452 111, 188, 135, 88, 136, 89, 0, 0, 135, 70, 453 144, 0, 135, 69, 144, 0, 135, 67, 15, 0, 454 135, 141, 0, 135, 66, 120, 0, 135, 24, 119, 455 0, 135, 182, 0, 135, 183, 0, 135, 184, 0, 456 0, 136, 44, 140, 0, 136, 45, 138, 0, 136, 457 42, 138, 0, 136, 41, 138, 0, 136, 43, 138, 458 0, 136, 35, 137, 0, 136, 36, 137, 0, 136, 459 40, 137, 0, 136, 37, 137, 0, 136, 38, 137, 460 0, 136, 32, 137, 0, 136, 39, 137, 0, 136, 461 33, 137, 0, 136, 34, 137, 0, 136, 48, 137, 462 0, 136, 47, 137, 0, 136, 46, 137, 0, 136, 463 31, 120, 168, 188, 111, 188, 111, 188, 139, 0, 464 15, 168, 188, 111, 188, 111, 188, 111, 188, 111, 465 188, 142, 0, 188, 111, 188, 111, 188, 111, 188, 466 111, 188, 142, 0, 0, 111, 188, 111, 188, 0, 467 111, 188, 111, 188, 111, 144, 0, 111, 188, 111, 468 188, 111, 144, 111, 144, 0, 120, 168, 188, 111, 469 145, 111, 144, 111, 188, 111, 188, 111, 188, 111, 470 188, 111, 144, 0, 120, 168, 188, 111, 145, 111, 471 144, 111, 188, 111, 188, 111, 188, 111, 188, 0, 472 30, 188, 111, 15, 0, 0, 111, 144, 0, 0, 473 111, 144, 0, 111, 144, 111, 144, 0, 144, 93, 474 144, 0, 109, 144, 110, 0, 190, 0, 108, 190, 475 0, 188, 0, 15, 0, 23, 178, 188, 111, 188, 476 111, 188, 111, 188, 153, 147, 88, 148, 89, 0, 477 0, 147, 70, 144, 0, 147, 69, 144, 0, 147, 478 67, 15, 0, 147, 141, 0, 147, 154, 0, 147, 479 66, 120, 0, 147, 24, 119, 0, 147, 182, 0, 480 147, 183, 0, 147, 184, 0, 0, 148, 44, 149, 481 0, 148, 45, 151, 0, 148, 42, 151, 0, 148, 482 41, 151, 0, 148, 43, 151, 0, 148, 35, 150, 483 0, 148, 36, 150, 0, 148, 40, 150, 0, 148, 484 37, 150, 0, 148, 38, 150, 0, 148, 32, 150, 485 0, 148, 39, 150, 0, 148, 33, 150, 0, 148, 486 34, 150, 0, 148, 48, 150, 0, 148, 47, 150, 487 0, 148, 46, 150, 0, 148, 31, 120, 168, 188, 488 111, 188, 111, 188, 139, 0, 120, 168, 188, 111, 489 145, 111, 144, 111, 188, 111, 188, 111, 188, 111, 490 188, 111, 144, 153, 152, 0, 120, 168, 188, 111, 491 145, 111, 144, 111, 188, 111, 188, 111, 188, 111, 492 188, 152, 0, 15, 168, 188, 111, 188, 111, 188, 493 111, 188, 111, 188, 143, 152, 0, 188, 111, 188, 494 111, 188, 111, 188, 111, 188, 143, 152, 0, 0, 495 185, 0, 0, 111, 188, 0, 30, 188, 111, 15, 496 111, 188, 111, 188, 155, 0, 0, 111, 188, 0, 497 24, 178, 181, 157, 0, 88, 158, 89, 0, 0, 498 158, 82, 15, 168, 188, 159, 0, 158, 82, 84, 499 0, 158, 83, 15, 159, 157, 0, 0, 111, 56, 500 159, 0, 111, 55, 159, 0, 111, 85, 159, 0, 501 111, 57, 159, 0, 111, 80, 159, 0, 111, 81, 502 159, 0, 25, 178, 181, 161, 0, 88, 162, 89, 503 0, 0, 162, 82, 15, 163, 0, 162, 82, 84, 504 0, 162, 83, 15, 164, 161, 0, 0, 111, 188, 505 0, 111, 187, 111, 187, 159, 0, 111, 187, 111, 506 187, 111, 188, 0, 0, 111, 188, 0, 111, 187, 507 111, 188, 0, 111, 187, 111, 187, 111, 188, 0, 508 111, 187, 111, 187, 111, 187, 111, 188, 0, 166, 509 88, 167, 89, 0, 29, 178, 181, 0, 0, 167, 510 188, 168, 15, 0, 0, 111, 0, 28, 170, 88, 511 171, 89, 0, 0, 170, 73, 188, 111, 188, 111, 512 188, 111, 188, 0, 170, 74, 188, 111, 188, 111, 513 188, 111, 188, 0, 170, 78, 188, 0, 170, 75, 514 188, 0, 170, 76, 188, 0, 170, 77, 188, 0, 515 170, 79, 188, 0, 0, 171, 172, 0, 49, 15, 516 88, 173, 89, 0, 0, 173, 174, 0, 172, 0, 517 50, 15, 111, 15, 0, 50, 15, 111, 175, 0, 518 188, 0, 175, 111, 188, 0, 86, 178, 188, 111, 519 188, 181, 88, 177, 89, 0, 0, 177, 87, 188, 520 0, 177, 84, 0, 0, 178, 179, 0, 178, 180, 521 0, 63, 0, 65, 0, 61, 0, 59, 0, 62, 522 0, 64, 0, 60, 0, 0, 181, 182, 0, 181, 523 183, 0, 181, 184, 0, 72, 188, 111, 188, 0, 524 68, 188, 0, 71, 188, 0, 88, 186, 89, 0, 525 18, 0, 13, 0, 14, 0, 15, 0, 186, 168, 526 18, 0, 186, 168, 13, 0, 186, 168, 14, 0, 527 186, 168, 15, 0, 0, 188, 0, 189, 0, 189, 528 102, 189, 0, 189, 103, 189, 0, 189, 93, 189, 529 0, 189, 95, 189, 0, 189, 104, 189, 0, 189, 530 105, 189, 0, 106, 189, 0, 103, 189, 0, 109, 531 189, 110, 0, 190, 0, 108, 190, 0, 13, 0, 532 14, 0 454 static const short yyrhs[] = { 104, 455 0, 0, 104, 106, 0, 104, 105, 0, 3, 0, 456 5, 0, 4, 0, 6, 0, 7, 0, 9, 0, 457 8, 0, 14, 95, 0, 10, 0, 183, 108, 111, 458 0, 14, 108, 111, 0, 14, 108, 14, 100, 0, 459 159, 0, 0, 71, 107, 183, 101, 183, 0, 0, 460 183, 0, 14, 0, 109, 0, 13, 0, 123, 0, 461 113, 0, 114, 0, 128, 0, 140, 0, 120, 0, 462 116, 0, 117, 0, 115, 0, 150, 0, 154, 0, 463 118, 0, 119, 0, 170, 0, 121, 0, 163, 0, 464 15, 0, 14, 0, 13, 0, 18, 172, 181, 0, 465 19, 172, 181, 0, 30, 172, 181, 0, 28, 172, 466 181, 0, 29, 172, 181, 0, 24, 172, 181, 0, 467 25, 172, 181, 0, 89, 172, 181, 0, 122, 172, 468 181, 0, 11, 0, 14, 0, 17, 172, 175, 87, 469 124, 88, 0, 0, 124, 13, 101, 183, 125, 0, 470 124, 183, 101, 183, 125, 0, 0, 101, 126, 0, 471 127, 0, 126, 101, 127, 0, 57, 0, 50, 0, 472 43, 0, 51, 0, 52, 0, 53, 0, 20, 172, 473 183, 101, 183, 101, 183, 101, 183, 129, 87, 130, 474 88, 0, 0, 129, 69, 138, 0, 129, 68, 138, 475 0, 129, 66, 13, 0, 129, 135, 0, 129, 65, 476 110, 0, 129, 7, 110, 0, 129, 22, 109, 0, 477 129, 176, 0, 129, 177, 0, 129, 178, 0, 0, 478 130, 43, 134, 0, 130, 44, 132, 0, 130, 41, 479 132, 0, 130, 40, 132, 0, 130, 42, 132, 0, 480 130, 34, 131, 0, 130, 35, 131, 0, 130, 39, 481 131, 0, 130, 36, 131, 0, 130, 37, 131, 0, 482 130, 31, 131, 0, 130, 38, 131, 0, 130, 32, 483 131, 0, 130, 33, 131, 0, 130, 47, 131, 0, 484 130, 46, 131, 0, 130, 45, 131, 0, 130, 30, 485 110, 162, 183, 101, 183, 101, 183, 133, 0, 13, 486 162, 183, 101, 183, 101, 183, 101, 183, 101, 183, 487 136, 0, 183, 101, 183, 101, 183, 101, 183, 101, 488 183, 136, 0, 0, 101, 183, 101, 183, 0, 101, 489 183, 101, 183, 101, 138, 0, 101, 183, 101, 183, 490 101, 138, 101, 138, 0, 110, 162, 183, 101, 139, 491 101, 138, 101, 183, 101, 183, 101, 183, 101, 183, 492 101, 138, 0, 110, 162, 183, 101, 139, 101, 138, 493 101, 183, 101, 183, 101, 183, 101, 183, 0, 28, 494 183, 101, 13, 0, 0, 101, 138, 0, 0, 101, 495 138, 0, 101, 138, 101, 138, 0, 138, 90, 138, 496 0, 100, 138, 102, 0, 185, 0, 98, 185, 0, 497 183, 0, 13, 0, 21, 172, 183, 101, 183, 101, 498 183, 101, 183, 147, 141, 87, 142, 88, 0, 0, 499 141, 69, 138, 0, 141, 68, 138, 0, 141, 66, 500 13, 0, 141, 135, 0, 141, 148, 0, 141, 65, 501 110, 0, 141, 7, 110, 0, 141, 22, 109, 0, 502 141, 176, 0, 141, 177, 0, 141, 178, 0, 0, 503 142, 43, 143, 0, 142, 44, 145, 0, 142, 41, 504 145, 0, 142, 40, 145, 0, 142, 42, 145, 0, 505 142, 34, 144, 0, 142, 35, 144, 0, 142, 39, 506 144, 0, 142, 36, 144, 0, 142, 37, 144, 0, 507 142, 31, 144, 0, 142, 38, 144, 0, 142, 32, 508 144, 0, 142, 33, 144, 0, 142, 47, 144, 0, 509 142, 46, 144, 0, 142, 45, 144, 0, 142, 30, 510 110, 162, 183, 101, 183, 101, 183, 133, 0, 110, 511 162, 183, 101, 139, 101, 138, 101, 183, 101, 183, 512 101, 183, 101, 183, 101, 138, 147, 146, 0, 110, 513 162, 183, 101, 139, 101, 138, 101, 183, 101, 183, 514 101, 183, 101, 183, 146, 0, 13, 162, 183, 101, 515 183, 101, 183, 101, 183, 101, 183, 137, 146, 0, 516 183, 101, 183, 101, 183, 101, 183, 101, 183, 137, 517 146, 0, 0, 179, 0, 0, 101, 183, 0, 28, 518 183, 101, 13, 101, 183, 101, 183, 149, 0, 0, 519 101, 183, 0, 22, 172, 175, 151, 0, 87, 152, 520 88, 0, 0, 152, 81, 13, 162, 183, 153, 0, 521 152, 81, 83, 0, 152, 82, 13, 153, 151, 0, 522 0, 101, 55, 153, 0, 101, 54, 153, 0, 101, 523 84, 153, 0, 101, 56, 153, 0, 101, 79, 153, 524 0, 101, 80, 153, 0, 23, 172, 175, 155, 0, 525 87, 156, 88, 0, 0, 156, 81, 13, 157, 0, 526 156, 81, 83, 0, 156, 82, 13, 158, 155, 0, 527 0, 101, 183, 0, 101, 182, 101, 182, 153, 0, 528 101, 182, 101, 182, 101, 183, 0, 0, 101, 183, 529 0, 101, 182, 101, 183, 0, 101, 182, 101, 182, 530 101, 183, 0, 101, 182, 101, 182, 101, 182, 101, 531 183, 0, 160, 87, 161, 88, 0, 27, 172, 175, 532 0, 0, 161, 183, 162, 13, 0, 0, 101, 0, 533 26, 172, 164, 87, 165, 88, 0, 0, 164, 72, 534 183, 101, 183, 101, 183, 101, 183, 0, 164, 73, 535 183, 101, 183, 101, 183, 101, 183, 0, 164, 77, 536 183, 0, 164, 74, 183, 0, 164, 75, 183, 0, 537 164, 76, 183, 0, 164, 78, 183, 0, 0, 165, 538 166, 0, 48, 13, 87, 167, 88, 0, 0, 167, 539 168, 0, 166, 0, 49, 13, 101, 13, 0, 49, 540 13, 101, 169, 0, 183, 0, 169, 101, 183, 0, 541 85, 172, 183, 101, 183, 175, 87, 171, 88, 0, 542 0, 171, 86, 183, 0, 171, 83, 0, 0, 172, 543 173, 0, 172, 174, 0, 62, 0, 64, 0, 60, 544 0, 58, 0, 61, 0, 63, 0, 59, 0, 0, 545 175, 176, 0, 175, 177, 0, 175, 178, 0, 71, 546 183, 101, 183, 0, 67, 183, 0, 70, 183, 0, 547 175, 87, 180, 88, 0, 16, 0, 11, 0, 12, 548 0, 13, 0, 180, 162, 16, 0, 180, 162, 11, 549 0, 180, 162, 12, 0, 180, 162, 13, 0, 112, 550 0, 179, 0, 0, 183, 0, 184, 0, 184, 93, 551 184, 0, 184, 94, 184, 0, 184, 90, 184, 0, 552 184, 92, 184, 0, 184, 95, 184, 0, 184, 96, 553 184, 0, 184, 91, 184, 0, 97, 184, 0, 94, 554 184, 0, 93, 184, 0, 100, 184, 102, 0, 185, 555 0, 98, 185, 0, 11, 0, 12, 0 533 556 }; 534 557 … … 537 560 #if YYDEBUG != 0 538 561 static const short yyrline[] = { 0, 539 310, 330, 331, 356, 357, 362, 363, 364, 365, 366, 540 367, 370, 371, 372, 373, 374, 375, 376, 377, 378, 541 379, 380, 381, 382, 383, 384, 385, 386, 390, 391, 542 392, 393, 397, 398, 399, 400, 401, 406, 421, 429, 543 442, 450, 461, 462, 472, 473, 474, 488, 489, 495, 544 496, 497, 511, 512, 518, 519, 520, 521, 522, 526, 545 527, 531, 532, 537, 541, 542, 550, 558, 571, 584, 546 585, 604, 616, 626, 650, 651, 652, 655, 656, 657, 547 658, 659, 660, 661, 666, 701, 702, 703, 704, 705, 548 706, 707, 708, 709, 710, 713, 714, 715, 716, 717, 549 718, 719, 720, 721, 722, 724, 725, 726, 727, 728, 550 729, 730, 731, 733, 743, 762, 777, 780, 785, 792, 551 803, 817, 832, 837, 838, 842, 843, 844, 848, 849, 552 850, 851, 855, 860, 868, 913, 914, 915, 916, 917, 553 918, 919, 920, 921, 922, 923, 926, 927, 928, 929, 554 930, 931, 932, 933, 934, 935, 937, 938, 939, 940, 555 941, 942, 943, 944, 946, 956, 981, 997, 1025, 1048, 556 1049, 1052, 1053, 1057, 1064, 1065, 1069, 1092, 1096, 1097, 557 1106, 1112, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1141, 558 1166, 1170, 1171, 1187, 1193, 1213, 1214, 1218, 1226, 1237, 559 1238, 1242, 1248, 1256, 1276, 1317, 1328, 1329, 1361, 1362, 560 1367, 1374, 1375, 1385, 1395, 1402, 1409, 1416, 1423, 1433, 561 1434, 1443, 1451, 1452, 1461, 1466, 1472, 1481, 1482, 1486, 562 1512, 1513, 1518, 1527, 1528, 1538, 1553, 1554, 1555, 1556, 563 1559, 1560, 1561, 1565, 1566, 1574, 1582, 1593, 1597, 1601, 564 1605, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1623, 565 1624, 1626, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 566 1638, 1639, 1640, 1643, 1644 562 346, 380, 381, 426, 431, 432, 433, 434, 435, 436, 563 437, 441, 442, 471, 483, 493, 514, 522, 522, 564, 564 570, 577, 587, 588, 597, 598, 599, 623, 624, 630, 565 631, 632, 633, 657, 658, 664, 665, 666, 667, 668, 566 672, 673, 674, 678, 682, 698, 720, 730, 738, 746, 567 750, 754, 765, 770, 779, 803, 804, 805, 814, 815, 568 818, 819, 822, 823, 824, 825, 826, 827, 832, 866, 569 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 570 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 571 890, 891, 892, 893, 894, 895, 896, 897, 899, 909, 572 928, 943, 946, 951, 958, 969, 983, 998, 1003, 1004, 573 1008, 1009, 1010, 1014, 1015, 1016, 1017, 1021, 1026, 1034, 574 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 575 1088, 1089, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 576 1100, 1101, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 577 1112, 1122, 1147, 1163, 1191, 1214, 1215, 1218, 1219, 1223, 578 1230, 1231, 1235, 1258, 1262, 1263, 1272, 1278, 1297, 1298, 579 1299, 1300, 1301, 1302, 1303, 1307, 1332, 1336, 1337, 1353, 580 1359, 1379, 1380, 1384, 1392, 1403, 1404, 1408, 1414, 1422, 581 1442, 1483, 1494, 1495, 1529, 1530, 1535, 1551, 1552, 1562, 582 1572, 1579, 1586, 1593, 1600, 1610, 1611, 1620, 1628, 1629, 583 1638, 1643, 1649, 1658, 1659, 1663, 1689, 1690, 1695, 1704, 584 1705, 1715, 1730, 1731, 1732, 1733, 1736, 1737, 1738, 1742, 585 1743, 1751, 1759, 1777, 1781, 1785, 1789, 1804, 1805, 1806, 586 1807, 1808, 1809, 1810, 1811, 1815, 1819, 1826, 1827, 1831, 587 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 588 1844, 1845, 1846, 1849, 1850 567 589 }; 568 590 #endif … … 571 593 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) 572 594 573 static const char * const yytname[] = { "$","error","$undefined.","tIF","tIFDEF", 574 "tIFNDEF","tELSE","tELIF","tENDIF","tDEFINED","tNL","tTYPEDEF","tEXTERN","NUMBER", 575 "LNUMBER","tSTRING","IDENT","FILENAME","RAWDATA","ACCELERATORS","tBITMAP","CURSOR", 576 "DIALOG","DIALOGEX","MENU","MENUEX","MESSAGETABLE","RCDATA","VERSIONINFO","STRINGTABLE", 577 "FONT","ICON","AUTO3STATE","AUTOCHECKBOX","AUTORADIOBUTTON","CHECKBOX","DEFPUSHBUTTON", 578 "PUSHBUTTON","RADIOBUTTON","STATE3","GROUPBOX","COMBOBOX","LISTBOX","SCROLLBAR", 579 "CONTROL","EDITTEXT","RTEXT","CTEXT","LTEXT","BLOCK","VALUE","SHIFT","ALT","ASCII", 580 "VIRTKEY","GRAYED","CHECKED","INACTIVE","NOINVERT","tPURE","IMPURE","DISCARDABLE", 581 "LOADONCALL","PRELOAD","tFIXED","MOVEABLE","CLASS","CAPTION","CHARACTERISTICS", 582 "EXSTYLE","STYLE","VERSION","LANGUAGE","FILEVERSION","PRODUCTVERSION","FILEFLAGSMASK", 583 "FILEOS","FILETYPE","FILEFLAGS","FILESUBTYPE","MENUBARBREAK","MENUBREAK","MENUITEM", 584 "POPUP","SEPARATOR","HELP","TOOLBAR","BUTTON","tBEGIN","tEND","DLGINIT","LOGOR", 585 "LOGAND","'|'","'^'","'&'","EQ","NE","'<'","LTE","'>'","GTE","'+'","'-'","'*'", 586 "'/'","'~'","'!'","NOT","'('","')'","','","resource_file","resources","preprocessor", 587 "pp_expr","pp_constant","cjunk","resource","nameid","nameid_s","resource_definition", 588 "bitmap","cursor","font","icon","messagetable","rcdata","dlginit","userres", 589 "usertype","accelerators","events","acc_opt","dialog","dlg_attributes","ctrls", 595 static const char * const yytname[] = { "$","error","$undefined.","tTYPEDEF", 596 "tEXTERN","tSTRUCT","tENUM","tCPPCLASS","tINLINE","tSTATIC","tNL","tNUMBER", 597 "tLNUMBER","tSTRING","tIDENT","tFILENAME","tRAWDATA","tACCELERATORS","tBITMAP", 598 "tCURSOR","tDIALOG","tDIALOGEX","tMENU","tMENUEX","tMESSAGETABLE","tRCDATA", 599 "tVERSIONINFO","tSTRINGTABLE","tFONT","tFONTDIR","tICON","tAUTO3STATE","tAUTOCHECKBOX", 600 "tAUTORADIOBUTTON","tCHECKBOX","tDEFPUSHBUTTON","tPUSHBUTTON","tRADIOBUTTON", 601 "tSTATE3","tGROUPBOX","tCOMBOBOX","tLISTBOX","tSCROLLBAR","tCONTROL","tEDITTEXT", 602 "tRTEXT","tCTEXT","tLTEXT","tBLOCK","tVALUE","tSHIFT","tALT","tASCII","tVIRTKEY", 603 "tGRAYED","tCHECKED","tINACTIVE","tNOINVERT","tPURE","tIMPURE","tDISCARDABLE", 604 "tLOADONCALL","tPRELOAD","tFIXED","tMOVEABLE","tCLASS","tCAPTION","tCHARACTERISTICS", 605 "tEXSTYLE","tSTYLE","tVERSION","tLANGUAGE","tFILEVERSION","tPRODUCTVERSION", 606 "tFILEFLAGSMASK","tFILEOS","tFILETYPE","tFILEFLAGS","tFILESUBTYPE","tMENUBARBREAK", 607 "tMENUBREAK","tMENUITEM","tPOPUP","tSEPARATOR","tHELP","tTOOLBAR","tBUTTON", 608 "tBEGIN","tEND","tDLGINIT","'|'","'^'","'&'","'+'","'-'","'*'","'/'","'~'","tNOT", 609 "pUPM","'('","','","')'","resource_file","resources","cjunk","resource","@1", 610 "usrcvt","nameid","nameid_s","resource_definition","filename","bitmap","cursor", 611 "icon","font","fontdir","messagetable","rcdata","dlginit","userres","usertype", 612 "accelerators","events","acc_opt","accs","acc","dialog","dlg_attributes","ctrls", 590 613 "lab_ctrl","ctrl_desc","iconinfo","gen_ctrl","opt_font","optional_style","optional_style_pair", 591 614 "style","ctlclass","dialogex","dlgex_attribs","exctrls","gen_exctrl","lab_exctrl", … … 595 618 "versioninfo","fix_version","ver_blocks","ver_block","ver_values","ver_value", 596 619 "ver_words","toolbar","toolbar_items","loadmemopts","lamo","lama","opt_lvc", 597 "opt_language","opt_characts","opt_version","raw_data","raw_elements"," e_expr",598 "e xpr","xpr","any_num", NULL620 "opt_language","opt_characts","opt_version","raw_data","raw_elements","file_raw", 621 "e_expr","expr","xpr","any_num", NULL 599 622 }; 600 623 #endif 601 624 602 625 static const short yyr1[] = { 0, 603 112, 113, 113, 113, 113, 114, 114, 114, 114, 114, 604 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 605 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 606 116, 116, 117, 117, 117, 117, 117, 118, 118, 118, 607 119, 119, 120, 120, 121, 121, 121, 121, 121, 121, 608 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 609 122, 123, 123, 124, 125, 125, 126, 127, 128, 129, 610 129, 130, 130, 131, 132, 132, 132, 133, 133, 133, 611 133, 133, 133, 133, 134, 135, 135, 135, 135, 135, 612 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, 613 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 614 136, 136, 136, 136, 137, 138, 139, 139, 139, 139, 615 140, 140, 141, 142, 142, 143, 143, 143, 144, 144, 616 144, 144, 145, 145, 146, 147, 147, 147, 147, 147, 617 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 618 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 619 148, 148, 148, 148, 148, 149, 149, 150, 151, 152, 620 152, 153, 153, 154, 155, 155, 156, 157, 158, 158, 621 158, 158, 159, 159, 159, 159, 159, 159, 159, 160, 622 161, 162, 162, 162, 162, 163, 163, 163, 163, 164, 623 164, 164, 164, 164, 165, 166, 167, 167, 168, 168, 624 169, 170, 170, 170, 170, 170, 170, 170, 170, 171, 625 171, 172, 173, 173, 174, 174, 174, 175, 175, 176, 626 177, 177, 177, 178, 178, 178, 179, 179, 179, 179, 627 180, 180, 180, 181, 181, 181, 181, 182, 183, 184, 628 185, 186, 186, 186, 186, 186, 186, 186, 186, 187, 629 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 630 189, 189, 189, 190, 190 626 103, 104, 104, 104, 105, 105, 105, 105, 105, 105, 627 105, 105, 105, 106, 106, 106, 106, 107, 106, 108, 628 109, 109, 110, 110, 111, 111, 111, 111, 111, 111, 629 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 630 112, 112, 112, 113, 114, 115, 116, 117, 118, 119, 631 120, 121, 122, 122, 123, 124, 124, 124, 125, 125, 632 126, 126, 127, 127, 127, 127, 127, 127, 128, 129, 633 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 634 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 635 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, 636 132, 133, 133, 133, 133, 134, 134, 135, 136, 136, 637 137, 137, 137, 138, 138, 138, 138, 139, 139, 140, 638 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 639 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 640 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 641 142, 143, 143, 144, 145, 146, 146, 147, 147, 148, 642 149, 149, 150, 151, 152, 152, 152, 152, 153, 153, 643 153, 153, 153, 153, 153, 154, 155, 156, 156, 156, 644 156, 157, 157, 157, 157, 158, 158, 158, 158, 158, 645 159, 160, 161, 161, 162, 162, 163, 164, 164, 164, 646 164, 164, 164, 164, 164, 165, 165, 166, 167, 167, 647 168, 168, 168, 169, 169, 170, 171, 171, 171, 172, 648 172, 172, 173, 173, 173, 173, 174, 174, 174, 175, 649 175, 175, 175, 176, 177, 178, 179, 180, 180, 180, 650 180, 180, 180, 180, 180, 181, 181, 182, 182, 183, 651 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 652 184, 184, 184, 185, 185 631 653 }; 632 654 633 655 static const short yyr2[] = { 0, 634 1, 0, 2, 2, 2, 3, 3, 3, 3, 2, 635 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 636 3, 3, 3, 2, 2, 2, 2, 3, 1, 1, 637 2, 4, 1, 1, 2, 2, 2, 2, 1, 1, 656 1, 0, 2, 2, 1, 1, 1, 1, 1, 1, 657 1, 2, 1, 3, 3, 4, 1, 0, 5, 0, 638 658 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 639 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 640 3, 3, 3, 3, 3, 3, 2, 4, 4, 3, 641 3, 1, 1, 6, 0, 5, 5, 0, 3, 3, 642 3, 3, 3, 3, 13, 0, 3, 3, 3, 2, 643 3, 3, 2, 2, 2, 0, 3, 3, 3, 3, 659 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 660 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 661 3, 3, 1, 1, 6, 0, 5, 5, 0, 2, 662 1, 3, 1, 1, 1, 1, 1, 1, 13, 0, 663 3, 3, 3, 2, 3, 3, 3, 2, 2, 2, 664 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 665 3, 3, 3, 3, 3, 3, 3, 3, 10, 12, 666 10, 0, 4, 6, 8, 17, 15, 4, 0, 2, 667 0, 2, 4, 3, 3, 1, 2, 1, 1, 14, 668 0, 3, 3, 3, 2, 2, 3, 3, 3, 2, 669 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 644 670 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 645 3, 3, 3, 10, 12, 10, 0, 4, 6, 8, 646 17, 15, 4, 0, 2, 0, 2, 4, 3, 3, 647 1, 2, 1, 1, 14, 0, 3, 3, 3, 2, 648 2, 3, 3, 2, 2, 2, 0, 3, 3, 3, 649 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 650 3, 3, 3, 3, 10, 19, 16, 13, 11, 0, 651 1, 0, 2, 9, 0, 2, 4, 3, 0, 6, 652 3, 5, 0, 3, 3, 3, 3, 3, 3, 4, 653 3, 0, 4, 3, 5, 0, 2, 5, 6, 0, 654 2, 4, 6, 8, 4, 3, 0, 4, 0, 1, 655 5, 0, 9, 9, 3, 3, 3, 3, 3, 0, 656 2, 5, 0, 2, 1, 4, 4, 1, 3, 9, 657 0, 3, 2, 0, 2, 2, 1, 1, 1, 1, 658 1, 1, 1, 0, 2, 2, 2, 4, 2, 2, 659 3, 1, 1, 1, 1, 3, 3, 3, 3, 0, 660 1, 1, 3, 3, 3, 3, 3, 3, 2, 2, 671 10, 19, 16, 13, 11, 0, 1, 0, 2, 9, 672 0, 2, 4, 3, 0, 6, 3, 5, 0, 3, 673 3, 3, 3, 3, 3, 4, 3, 0, 4, 3, 674 5, 0, 2, 5, 6, 0, 2, 4, 6, 8, 675 4, 3, 0, 4, 0, 1, 6, 0, 9, 9, 676 3, 3, 3, 3, 3, 0, 2, 5, 0, 2, 677 1, 4, 4, 1, 3, 9, 0, 3, 2, 0, 678 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 679 2, 2, 2, 4, 2, 2, 4, 1, 1, 1, 680 1, 3, 3, 3, 3, 1, 1, 0, 1, 1, 681 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 661 682 3, 1, 2, 1, 1 662 683 }; 663 684 664 685 static const short yydefact[] = { 2, 665 1, 0, 0, 0, 0, 0, 0, 33, 34, 274, 666 275, 42, 234, 0, 0, 0, 0, 0, 4, 5, 667 3, 0, 39, 0, 40, 41, 262, 272, 0, 30, 668 0, 0, 0, 0, 0, 0, 12, 29, 0, 0, 669 10, 0, 11, 35, 37, 36, 244, 0, 270, 269, 670 273, 0, 72, 73, 234, 234, 234, 234, 234, 234, 671 234, 0, 234, 212, 234, 234, 234, 234, 38, 46, 672 47, 51, 52, 55, 56, 50, 58, 234, 45, 48, 673 49, 53, 54, 59, 57, 207, 0, 0, 0, 0, 674 0, 0, 31, 0, 25, 26, 24, 27, 0, 6, 686 1, 5, 7, 6, 8, 9, 11, 10, 13, 264, 687 265, 20, 220, 18, 0, 0, 0, 0, 0, 4, 688 3, 17, 0, 20, 250, 262, 12, 0, 230, 0, 689 260, 259, 258, 263, 0, 193, 0, 0, 0, 0, 690 0, 0, 0, 0, 53, 54, 220, 220, 220, 220, 691 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 692 220, 15, 26, 27, 33, 31, 32, 36, 37, 30, 693 39, 220, 25, 28, 29, 34, 35, 40, 38, 226, 694 229, 225, 227, 223, 228, 224, 221, 222, 192, 0, 695 261, 0, 54, 14, 253, 257, 254, 251, 252, 255, 696 256, 16, 230, 230, 230, 0, 0, 230, 230, 230, 697 230, 198, 230, 230, 230, 0, 230, 230, 0, 0, 698 0, 231, 232, 233, 0, 191, 195, 0, 43, 42, 699 41, 246, 0, 247, 44, 45, 0, 0, 0, 0, 700 49, 50, 0, 47, 48, 46, 0, 51, 52, 235, 701 236, 0, 19, 196, 0, 56, 0, 0, 0, 165, 702 163, 178, 176, 0, 0, 0, 0, 0, 0, 0, 703 206, 0, 0, 194, 0, 239, 240, 241, 238, 195, 704 0, 0, 0, 0, 0, 0, 202, 203, 204, 201, 705 205, 0, 230, 234, 0, 55, 0, 237, 0, 0, 706 0, 0, 0, 164, 0, 0, 177, 0, 0, 0, 707 197, 207, 0, 0, 0, 243, 244, 245, 242, 0, 708 0, 195, 167, 169, 182, 180, 186, 0, 0, 0, 709 217, 59, 59, 0, 0, 0, 0, 0, 248, 179, 710 248, 0, 0, 0, 209, 0, 0, 57, 58, 70, 711 158, 169, 169, 169, 169, 169, 169, 169, 168, 0, 712 183, 0, 187, 181, 0, 0, 0, 219, 0, 216, 713 65, 64, 66, 67, 68, 63, 60, 61, 0, 0, 714 121, 166, 171, 170, 173, 174, 175, 172, 248, 248, 715 0, 0, 0, 208, 211, 210, 218, 0, 0, 0, 716 0, 0, 0, 0, 0, 81, 74, 78, 79, 80, 717 159, 0, 169, 249, 0, 188, 199, 200, 0, 62, 718 24, 22, 23, 76, 21, 77, 0, 75, 73, 0, 719 0, 72, 116, 71, 0, 0, 0, 0, 0, 0, 720 0, 0, 133, 125, 126, 130, 131, 132, 0, 184, 721 248, 0, 0, 117, 0, 0, 0, 0, 0, 0, 675 722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 676 0, 7, 8, 9, 240, 243, 239, 241, 237, 242, 677 238, 235, 236, 206, 0, 271, 244, 0, 0, 0, 678 0, 244, 244, 67, 244, 0, 0, 0, 0, 244, 679 0, 0, 265, 266, 263, 264, 267, 268, 0, 28, 680 13, 14, 17, 18, 19, 20, 22, 21, 23, 15, 681 16, 0, 0, 245, 246, 247, 248, 0, 60, 0, 682 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 683 0, 0, 0, 0, 0, 220, 64, 65, 66, 0, 684 0, 70, 71, 205, 209, 32, 249, 250, 75, 253, 685 254, 255, 252, 209, 0, 0, 179, 177, 192, 190, 686 68, 0, 0, 216, 217, 218, 215, 219, 0, 0, 687 69, 210, 0, 0, 251, 0, 0, 0, 0, 0, 688 0, 0, 0, 211, 221, 244, 208, 0, 74, 0, 689 257, 258, 259, 256, 0, 0, 0, 0, 178, 0, 690 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 691 209, 181, 183, 196, 194, 200, 0, 0, 223, 231, 692 78, 78, 0, 0, 0, 0, 0, 260, 193, 260, 693 0, 0, 0, 0, 0, 76, 77, 86, 172, 183, 694 183, 183, 183, 183, 183, 183, 182, 0, 197, 0, 695 201, 195, 0, 0, 0, 222, 225, 224, 233, 0, 696 230, 0, 0, 0, 136, 180, 185, 184, 187, 188, 697 189, 186, 260, 260, 213, 214, 0, 232, 81, 80, 698 82, 83, 84, 79, 0, 0, 0, 0, 0, 0, 699 96, 90, 93, 94, 95, 173, 0, 183, 261, 0, 700 202, 0, 42, 92, 0, 44, 43, 91, 89, 0, 701 0, 88, 131, 87, 0, 0, 0, 0, 0, 0, 702 0, 147, 140, 141, 144, 145, 146, 0, 198, 260, 703 226, 227, 228, 0, 132, 0, 0, 0, 0, 0, 723 0, 0, 0, 0, 69, 128, 129, 0, 127, 124, 724 123, 122, 0, 185, 0, 189, 212, 213, 214, 108, 725 115, 114, 195, 195, 92, 94, 95, 87, 88, 90, 726 91, 93, 89, 85, 0, 84, 86, 195, 82, 83, 727 98, 97, 96, 0, 0, 0, 0, 0, 0, 0, 704 728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 705 0, 0, 0, 0, 0, 85, 143, 0, 142, 139, 706 138, 137, 0, 199, 0, 203, 0, 123, 130, 129, 707 209, 209, 107, 109, 110, 102, 103, 105, 106, 108, 708 104, 100, 0, 99, 101, 209, 97, 98, 113, 112, 709 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729 0, 0, 120, 0, 0, 0, 0, 0, 0, 108, 730 195, 195, 144, 146, 147, 139, 140, 142, 143, 145, 731 141, 137, 0, 136, 138, 195, 134, 135, 150, 149, 732 148, 190, 215, 0, 0, 0, 0, 0, 0, 0, 710 733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 711 135, 0, 229, 0, 0, 0, 0, 123, 209, 209, 712 158, 160, 161, 153, 154, 156, 157, 159, 155, 151, 713 0, 150, 152, 209, 148, 149, 164, 163, 162, 204, 714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 716 0, 134, 0, 133, 0, 0, 0, 0, 0, 0, 717 0, 0, 0, 175, 0, 0, 0, 0, 117, 0, 718 0, 0, 0, 174, 0, 0, 0, 0, 0, 114, 719 0, 0, 0, 176, 117, 0, 0, 0, 0, 0, 720 124, 0, 165, 0, 0, 0, 0, 0, 0, 116, 721 0, 0, 126, 0, 118, 124, 125, 0, 0, 0, 722 170, 0, 0, 115, 0, 126, 127, 169, 171, 0, 723 119, 0, 170, 0, 0, 0, 0, 168, 128, 0, 724 120, 122, 0, 0, 170, 121, 0, 167, 172, 170, 725 166, 0, 0, 0 734 0, 0, 0, 0, 119, 0, 118, 0, 0, 0, 735 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 736 0, 102, 0, 0, 0, 0, 160, 0, 0, 0, 737 0, 0, 99, 0, 0, 0, 162, 102, 0, 0, 738 0, 0, 0, 109, 0, 151, 0, 0, 0, 0, 739 0, 0, 101, 0, 0, 111, 0, 103, 109, 110, 740 0, 0, 0, 156, 0, 0, 100, 0, 111, 112, 741 155, 157, 0, 104, 0, 156, 0, 0, 0, 0, 742 154, 113, 0, 105, 107, 0, 0, 156, 106, 0, 743 153, 158, 156, 152, 0, 0, 0 726 744 }; 727 745 728 static const short yydefgoto[] = { 602, 729 1, 19, 36, 37, 20, 21, 357, 358, 69, 70, 730 71, 72, 73, 74, 75, 76, 77, 78, 79, 224, 731 286, 80, 313, 365, 423, 432, 540, 437, 342, 560, 732 571, 362, 513, 81, 347, 413, 485, 471, 480, 578, 733 315, 374, 534, 82, 208, 229, 277, 83, 210, 230, 734 279, 281, 23, 24, 142, 223, 84, 136, 219, 235, 735 284, 308, 382, 85, 285, 47, 122, 123, 124, 164, 736 165, 166, 579, 204, 298, 26, 27, 28 746 static const short yydefgoto[] = { 575, 747 1, 20, 21, 30, 28, 323, 324, 62, 132, 63, 748 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 749 175, 248, 277, 278, 74, 279, 335, 395, 404, 513, 750 409, 307, 533, 544, 332, 486, 75, 312, 383, 457, 751 443, 452, 551, 281, 345, 507, 76, 161, 183, 238, 752 77, 163, 184, 240, 242, 22, 23, 92, 155, 78, 753 143, 192, 212, 267, 296, 388, 79, 246, 29, 87, 754 88, 133, 122, 123, 124, 134, 180, 135, 260, 325, 755 25, 26 737 756 }; 738 757 739 758 static const short yypact[] = {-32768, 740 39, 10, -4, 0, -1, 10, 15,-32768,-32768,-32768, 741 -32768, -15,-32768, 197, 197, 197, 82, 197,-32768,-32768, 742 -32768, 442,-32768, -68,-32768,-32768, 390,-32768, 6,-32768, 743 10, 10, 10, 10, 10, 298,-32768,-32768, 31, 56, 744 -32768, 351,-32768,-32768,-32768,-32768, 611, -41, 50,-32768, 745 -32768, 483,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 746 -32768, 55,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 759 4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 760 -32768, -61,-32768,-32768, 233, 233, 233, 49, 233,-32768, 761 -32768,-32768, 1,-32768, 248,-32768,-32768, 391, 651, 233, 762 -32768,-32768,-32768,-32768, 606,-32768, 559, 233, 233, 233, 763 233, 233, 233, 233,-32768, -19,-32768,-32768,-32768,-32768, 747 764 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 748 -32768,-32768,-32768,-32768,-32768,-32768, 197, 197, 197, 197,749 197, 197,-32768, 58,-32768,-32768,-32768,-32768, 449,-32768,750 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,751 10,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,752 -32768,-32768,-32768, 349, 197,-32768, 611, 345, 417, 110,753 110, 611, 611,-32768, 611, 558, 19, 439, 110, 611,754 454, 114, 517, 125, 50, 50,-32768,-32768, -25,-32768,755 690, 700, 556, 706, 706, 85, 85, 85, 85,-32768,756 -32768, 197, 197,-32768,-32768,-32768,-32768, 153,-32768, 401,757 -32768,-32768,-32768, -14, 7, 195, 255, 262, 197, 197,758 197, 197, 197, 197, 197,-32768,-32768,-32768,-32768, 53,759 262,-32768,-32768,-32768, 78,-32768,-32768,-32768,-32768,-32768,760 -32768,-32768,-32768, -13, 197, 197,-32768,-32768,-32768,-32768,761 -32768, 88, 123,-32768,-32768,-32768,-32768,-32768, -22, 197,762 -32768,-32768, 135, 73,-32768, 516, 132, 148, 74, 95,763 197, 197, 178,-32768,-32768,-32768,-32768, 154,-32768, 157,764 -32768,-32768,-32768,-32768, 197, 197, -9, 254,-32768, -7,765 257,-32768, 173, 184, 22, 276, 197, 197, 214, 220,766 78,-32768, 224, 230,-32768, 234, 197, 197,-32768,-32768,767 -32768,-32768, 197, 197, 197, 111, 209, 197,-32768, 197,768 258, 240, 245, 76, 268, 252, 252,-32768, 267, 224,769 224, 224, 224, 224, 224, 224,-32768, 269, 273, 280,770 273,-32768, 197, 197, 297,-32768,-32768,-32768,-32768, 197,771 -32768, 723, 530, 197,-32768,-32768,-32768,-32768,-32768,-32768,772 -32768,-32768, 197, 197,-32768,-32768, 282,-32768,-32768,-32768,773 -32768,-32768,-32768,-32768, 193, 197, 77, 364, 35, 35,774 -32768,-32768,-32768,-32768,-32768,-32768, 618, 291,-32768, 292,775 273, 43,-32768,-32768, 302,-32768,-32768,-32768,-32768, 82,776 35, 294,-32768, 294, 676, 193, 197, 77, 420, 35,777 35,-32768,-32768,-32768,-32768,-32768,-32768, 201,-32768, 197,778 -32768, 328,-32768, 425,-32768, 48, 35, 77, 426, 426,779 426, 426, 426, 426, 426, 426, 426, 197, 197, 197,780 77, 197, 426, 426, 426,-32768,-32768, 335,-32768,-32768,781 294, 294, 694,-32768, 347, 273, 197,-32768,-32768,-32768,782 78, 78,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,783 -32768,-32768, 348,-32768,-32768, 78,-32768,-32768,-32768,-32768,784 -32768, 459, 77, 469, 469, 469, 469, 469, 469, 469,785 469, 469, 197, 197, 197, 77, 197, 469, 469, 469,786 -32768, 197,-32768, 197, 197, 197, 197, 376, 78, 78,787 765 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 788 378,-32768,-32768, 78,-32768,-32768,-32768,-32768,-32768,-32768, 789 379, 380, 385, 386, 197, 197, 197, 197, 197, 197, 790 197, 197, 146, 398, 400, 409, 411, 412, 413, 415, 791 422,-32768, 424,-32768, 197, 197, 197, 197, 146, 197, 792 197, 197, 35, 427, 428, 433, 444, 445, 447, 453, 793 455, 101, 197,-32768, 197, 197, 197, 35, 197,-32768, 794 197, 197, 197,-32768, 447, 456, 458, 149, 466, 468, 795 470, 472,-32768, 197, 197, 197, 197, 197, 35,-32768, 796 197, 478, 479, 480, 502, 470, 294, 503, 197, 35, 797 465, 197, 35,-32768, 197, 479, 151,-32768,-32768, 504, 798 218, 505, 465, 35, 197, 35, 197,-32768, 294, 506, 799 294, 527, 197, 35, -71, 294, 35,-32768, 231, 465, 800 -32768, 512, 537,-32768 766 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 767 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 215, 2, 768 -32768, 62,-32768,-32768, 625, 102, 269, 36, 36,-32768, 769 -32768,-32768, 651, 191, 191, 82, 82, 651, 651, 191, 770 191, 651, 191, 191, 191, 82, 191, 191, 233, 233, 771 233,-32768,-32768,-32768, 233,-32768, 16, 12,-32768,-32768, 772 -32768,-32768, 228,-32768,-32768,-32768, 22, 38, 237, 282, 773 -32768,-32768, 376,-32768,-32768,-32768, 48,-32768,-32768,-32768, 774 -32768, 52,-32768,-32768, 87,-32768, 114, 233, 233,-32768, 775 -32768,-32768,-32768, 233, 233, 233, 233, 233, 233, 233, 776 -32768, 233, 233,-32768, 124,-32768,-32768,-32768,-32768, -29, 777 60, 72, -49, 40, 76, 77,-32768,-32768,-32768,-32768, 778 -32768, -31,-32768,-32768, 80,-32768, 108,-32768, 264, 233, 779 233, 7, 100,-32768, 9, 198,-32768, 233, 233, 206, 780 -32768,-32768, 360, 233, 233,-32768,-32768,-32768,-32768, 119, 781 122, 16,-32768, 127, 128,-32768, 131, 140, 146, 171, 782 -32768, 161, 161, 233, 233, 233, 147, 180, 233,-32768, 783 233, 187, 233, 233,-32768, 173, 342,-32768,-32768,-32768, 784 182, 127, 127, 127, 127, 127, 127, 127,-32768, 186, 785 196, 204, 196,-32768, 205, 211, -21,-32768, 233,-32768, 786 -32768,-32768,-32768,-32768,-32768,-32768, 219,-32768, 289, 233, 787 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 233, 233, 788 233, 233, 308,-32768,-32768,-32768,-32768, 342, 172, 225, 789 233, 172, 315, 14, 14,-32768,-32768,-32768,-32768,-32768, 790 -32768, 375, 231,-32768, 244, 196,-32768,-32768, 270,-32768, 791 -32768,-32768,-32768,-32768,-32768,-32768, 271,-32768,-32768, 49, 792 14, 239,-32768, 239, 561, 172, 225, 233, 172, 321, 793 14, 14,-32768,-32768,-32768,-32768,-32768,-32768, 54,-32768, 794 233, 281, 364,-32768, -60, 14, 172, 367, 367, 367, 795 367, 367, 367, 367, 367, 367, 233, 233, 233, 172, 796 233, 367, 367, 367,-32768,-32768,-32768, 272,-32768,-32768, 797 239, 239, 579,-32768, 285, 196,-32768, 288,-32768,-32768, 798 -32768,-32768, 16, 16,-32768,-32768,-32768,-32768,-32768,-32768, 799 -32768,-32768,-32768,-32768, 295,-32768,-32768, 16,-32768,-32768, 800 -32768,-32768,-32768, 378, 172, 385, 385, 385, 385, 385, 801 385, 385, 385, 385, 233, 233, 233, 172, 233, 385, 802 385, 385,-32768, 233, 233, 233, 233, 233, 233, 299, 803 16, 16,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 804 -32768,-32768, 300,-32768,-32768, 16,-32768,-32768,-32768,-32768, 805 -32768,-32768,-32768, 303, 305, 306, 317, 233, 233, 233, 806 233, 233, 233, 233, 233, 290, 322, 328, 331, 338, 807 358, 363, 365, 377,-32768, 380,-32768, 233, 233, 233, 808 233, 290, 233, 233, 233, 14, 381, 382, 383, 384, 809 397, 399, 401, 402, -39, 233,-32768, 233, 233, 233, 810 14, 233,-32768, 233, 233, 233,-32768, 399, 403, 405, 811 -14, 409, 411, 416, 424,-32768, 233, 233, 233, 233, 812 233, 14,-32768, 233, 430, 431, 433, 434, 416, 239, 813 435, 233, 14, 390, 233, 14,-32768, 233, 431, -12, 814 -32768,-32768, 437, -6, 438, 390, 14, 233, 14, 233, 815 -32768, 239, 439, 239, 441, 233, 14, -24, 239, 14, 816 -32768, 6, 390,-32768, 422, 465,-32768 801 817 }; 802 818 803 819 static const short yypgoto[] = {-32768, 804 -32768,-32768, 28,-32768,-32768,-32768, 1, -248,-32768,-32768,820 -32768,-32768,-32768,-32768, 455, -296, -299, 449,-32768,-32768, 805 821 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 806 308,-32768,-32768,-32768, 33, -202, 49,-32768, 293, 94, 807 63, -333, 142,-32768,-32768,-32768,-32768, 312, -84, -223, 808 68,-32768,-32768,-32768, 391,-32768, 26,-32768, 397,-32768, 809 -32768,-32768,-32768,-32768,-32768, -190,-32768,-32768,-32768, 395, 810 -32768,-32768,-32768,-32768,-32768, 688,-32768,-32768, -122, 2, 811 -278, -274, 107,-32768, -259, 108, 186, -2 822 -32768, 310,-32768, 247,-32768,-32768,-32768, 296, -55, 28, 823 -32768, 238, 10, 3, -286, 61,-32768,-32768,-32768,-32768, 824 254, 29, -504, -18,-32768,-32768,-32768, 318,-32768, -65, 825 -32768, 313,-32768,-32768,-32768,-32768,-32768,-32768, -178,-32768, 826 -32768,-32768, 291,-32768,-32768,-32768,-32768,-32768, 580,-32768, 827 -32768, -23, -274, -258, -244, -520,-32768, 577, -240, -1, 828 480, 5 812 829 }; 813 830 814 831 815 #define YYLAST 809 816 817 818 static const short yytable[] = { 38, 819 44, 22, 25, 38, 168, 261, 364, 264, 41, 176, 820 177, 39, 178, 226, 51, 40, 170, 191, 29, 86, 821 300, 93, 10, 11, 43, 30, 233, 386, 38, 38, 822 38, 38, 38, 42, 344, 187, 411, 412, 345, 597, 823 112, 2, 3, 4, 5, 6, 7, 10, 11, 8, 824 9, 10, 11, 420, 12, 10, 11, 381, 95, 96, 825 97, 98, 99, 348, 350, 113, 234, 13, 376, 125, 826 275, 134, 377, 149, 262, 225, 265, 115, 116, 117, 827 118, 119, 120, 121, 196, 10, 11, 238, 45, 10, 828 11, 356, 353, 46, 10, 11, 205, 222, 38, 38, 829 38, 38, 38, 38, 38, 38, 38, 38, 38, 269, 830 14, 31, 32, 256, 94, 33, 34, 206, 35, 409, 831 415, 48, 10, 11, 233, 305, 10, 11, 151, 152, 832 153, 154, 155, 156, 157, 158, 159, 160, 161, 421, 833 387, 15, 360, 361, 16, 15, 17, 18, 16, 237, 834 17, 18, 436, 91, 92, 247, 248, 419, 10, 11, 835 512, 239, 249, 220, 306, 291, 292, 293, 115, 116, 836 117, 118, 119, 120, 121, 15, 250, 251, 16, 15, 837 17, 18, 16, 252, 17, 18, 110, 111, 222, 532, 838 294, 295, 255, 387, 469, 296, 434, 435, 231, 438, 839 49, 50, 194, 52, 548, 10, 11, 484, 353, 10, 840 11, 543, 15, 10, 11, 16, 15, 17, 18, 16, 841 162, 17, 18, 163, 14, 567, 89, 90, 91, 92, 842 464, 465, 167, 232, 171, 173, 577, 174, 175, 581, 843 199, 387, 245, 387, 189, 467, 190, 193, 15, 195, 844 589, 16, 591, 17, 18, 291, 292, 293, 246, 556, 845 596, 584, 162, 599, 257, 163, 14, 258, 263, 197, 846 198, 266, 143, 144, 145, 146, 147, 148, 496, 497, 847 294, 295, 207, 267, 211, 296, 212, 213, 214, 215, 848 216, 217, 218, 499, 268, 15, 207, 221, 16, 15, 849 17, 18, 16, 15, 17, 18, 16, 100, 17, 18, 850 387, 327, 227, 228, 343, 316, 317, 318, 319, 320, 851 321, 322, 162, 387, 273, 163, 14, 236, 586, 162, 852 274, 240, 163, 14, 276, 354, 363, 363, 253, 254, 853 278, 314, 209, 162, 280, 209, 163, 14, 375, 170, 854 303, 309, 259, 260, 310, 304, 311, 385, 363, 588, 855 114, 169, 312, 270, 271, 272, 407, 363, 363, 482, 856 483, 598, 486, 379, 282, 283, 601, 314, 359, 323, 857 288, 289, 290, -261, 363, 299, 387, 301, 101, 102, 858 324, 103, 352, 104, 105, 106, 107, 108, 109, 110, 859 111, 378, 380, 115, 116, 117, 118, 119, 120, 121, 860 325, 326, 384, 200, 201, 202, 162, 328, 203, 163, 861 14, 346, 424, 425, 426, 427, 428, 429, 430, 431, 862 349, 351, 170, 172, 410, 439, 440, 441, 417, 418, 863 422, 101, 102, 355, 103, 442, 104, 105, 106, 107, 864 108, 109, 110, 111, 53, 188, 54, 462, 466, 383, 865 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 866 192, 65, 66, 468, 408, 115, 116, 117, 118, 119, 867 120, 121, 87, 470, 88, 414, 495, 416, 498, 500, 868 501, 89, 90, 91, 92, 502, 503, 115, 116, 117, 869 118, 119, 120, 121, 170, 433, 433, 433, 515, 433, 870 516, 603, 115, 116, 117, 118, 119, 120, 121, 517, 871 363, 518, 519, 520, 463, 521, 170, 67, 241, 242, 872 243, 68, 522, 244, 523, 363, 604, 533, 535, 101, 873 102, 170, 103, 536, 104, 105, 106, 107, 108, 109, 874 110, 111, 170, 335, 537, 538, 363, 539, 150, 336, 875 481, 481, 481, 541, 481, 542, 554, 363, 555, 490, 876 363, 491, 492, 493, 494, 87, 557, 88, 558, 287, 877 559, 363, 561, 363, 89, 90, 91, 92, 569, 570, 878 572, 363, 126, 553, 363, 337, 338, 162, 339, 340, 879 163, 14, 504, 505, 506, 507, 508, 509, 510, 511, 880 514, 88, 573, 575, 585, 587, 593, 341, 89, 90, 881 91, 92, 524, 525, 526, 527, 514, 529, 530, 531, 882 179, 180, 181, 182, 183, 184, 185, 594, 583, 373, 883 544, 366, 545, 546, 547, 186, 549, 367, 550, 551, 884 552, 104, 105, 106, 107, 108, 109, 110, 111, 574, 885 528, 562, 563, 564, 565, 566, 600, 297, 568, 115, 886 116, 117, 118, 119, 120, 121, 576, 302, 307, 580, 887 0, 0, 582, 368, 369, 162, 370, 371, 163, 14, 888 0, 0, 590, 0, 592, 0, 0, 0, 0, 0, 889 595, 0, 0, 0, 0, 372, 388, 389, 390, 391, 890 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 891 402, 403, 404, 405, 443, 444, 445, 446, 447, 448, 892 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 893 459, 460, 127, 128, 129, 130, 131, 132, 133, 0, 894 135, 0, 137, 138, 139, 140, 472, 473, 474, 475, 895 476, 477, 478, 479, 406, 141, 329, 0, 0, 487, 896 488, 489, 0, 330, 331, 332, 333, 0, 0, 0, 897 334, 102, 461, 103, 0, 104, 105, 106, 107, 108, 898 109, 110, 111, 103, 0, 104, 105, 106, 107, 108, 899 109, 110, 111, 106, 107, 108, 109, 110, 111 832 #define YYLAST 721 833 834 835 static const short yytable[] = { 24, 836 262, 199, 328, 326, 308, 89, 2, 3, 4, 5, 837 6, 7, 8, 9, 10, 11, 210, 12, 334, 222, 838 309, 225, 34, 552, 10, 11, 210, 293, 90, 356, 839 13, 202, 203, 27, 310, 552, 376, 346, 204, 379, 840 377, 391, -230, 236, 355, -230, -230, 552, 313, 315, 841 356, 561, 552, 347, 381, 382, 211, 393, 198, 10, 842 11, 516, -230, 571, 10, 11, 294, 348, 574, 392, 843 408, 154, 10, 11, 14, 356, 570, 356, 119, 128, 844 102, 120, 121, 356, 139, 140, 529, 36, 557, 223, 845 127, 226, 10, 11, 559, 356, 15, 16, 156, 174, 846 17, 18, 125, 19, 137, 138, 280, 253, 254, 255, 847 385, 330, 224, 331, 147, 441, 154, 150, 151, 152, 848 205, 206, 158, 153, 176, 177, 178, 207, 456, 179, 849 43, 44, 256, 257, 10, 11, 195, 258, 159, 80, 850 81, 82, 83, 84, 85, 86, 15, 16, 172, 126, 851 17, 18, 173, 19, 15, 16, 181, 182, 17, 18, 852 200, 19, 185, 186, 187, 188, 189, 190, 191, 213, 853 193, 194, 201, 197, 15, 16, 208, 209, 17, 18, 854 214, 19, 10, 11, 321, 322, 282, 283, 284, 285, 855 286, 287, 288, 40, 41, 42, 43, 44, 220, 221, 856 253, 254, 255, 129, 130, 131, 228, 229, 215, 505, 857 227, 196, 232, 233, 436, 437, 15, 16, 230, 234, 858 17, 18, 235, 19, 521, 256, 257, 237, 239, 439, 859 258, 241, 250, 251, 252, 10, 11, 261, 322, 263, 860 243, 265, 266, 10, 11, 540, 244, 350, 80, 81, 861 82, 83, 84, 85, 86, 268, 550, 245, 269, 554, 862 270, 247, 469, 470, 15, 16, 160, 297, 17, 18, 863 562, 19, 564, 162, 216, 217, 218, 472, 311, 219, 864 569, 119, 280, 572, 120, 121, 289, 314, 316, 317, 865 318, 10, 11, 387, 119, 299, -249, 120, 121, 327, 866 10, 11, 485, 119, 290, 291, 120, 121, 333, 333, 867 300, 292, 406, 407, 157, 410, 301, 15, 16, 298, 868 319, 17, 18, 160, 19, 15, 16, 329, 356, 17, 869 18, 349, 19, 380, 354, 333, 378, 38, 39, 40, 870 41, 42, 43, 44, 351, 333, 333, 384, 119, 386, 871 389, 120, 121, 302, 303, 119, 304, 305, 120, 121, 872 333, 41, 42, 43, 44, 405, 405, 405, 162, 405, 873 352, 353, 414, 15, 16, 306, 390, 17, 18, 394, 874 19, 336, 15, 16, 271, 434, 17, 18, 435, 19, 875 440, 272, 273, 274, 275, 438, 337, 442, 276, 468, 876 471, 45, 338, 473, 46, 474, 475, 47, 48, 49, 877 50, 51, 52, 53, 54, 55, 56, 476, 57, 58, 878 59, 576, 488, 453, 453, 453, 119, 453, 489, 120, 879 121, 490, 462, 463, 464, 465, 466, 467, 491, 339, 880 340, 119, 341, 342, 120, 121, 231, 164, 165, 166, 881 167, 168, 169, 170, 454, 455, -230, 458, 492, -230, 882 -230, 343, 171, 493, 577, 494, 477, 478, 479, 480, 883 481, 482, 483, 484, 487, 60, -230, 495, 37, 61, 884 496, 506, 508, 509, 510, 94, 497, 498, 499, 500, 885 487, 502, 503, 504, 31, 32, 33, 511, 35, 512, 886 333, 514, 515, 527, 517, 528, 518, 519, 520, 530, 887 522, 531, 523, 524, 525, 333, 532, 95, 96, 97, 888 98, 99, 100, 101, 534, 535, 536, 537, 538, 539, 889 542, 543, 541, 545, 546, 548, 333, 558, 560, 566, 890 549, 567, 249, 553, 320, 526, 555, 333, 547, 344, 891 333, 556, 501, 573, 264, 259, 563, 295, 565, 0, 892 0, 333, 0, 333, 568, 0, 0, 0, 0, 45, 893 0, 333, 93, 0, 333, 47, 48, 49, 50, 51, 894 52, 53, 54, 55, 56, 0, 57, 58, 59, 0, 895 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 896 367, 368, 369, 370, 371, 372, 373, 374, 415, 416, 897 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 898 427, 428, 429, 430, 431, 432, 103, 104, 105, 106, 899 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 900 117, 0, 0, 60, 0, 0, 0, 61, 375, 0, 901 0, 118, 0, 0, 396, 397, 398, 399, 400, 401, 902 402, 403, 0, 0, 0, 0, 433, 411, 412, 413, 903 444, 445, 446, 447, 448, 449, 450, 451, 0, 0, 904 0, 136, 0, 459, 460, 461, 141, 142, 0, 144, 905 145, 146, 0, 148, 149, 38, 39, 40, 41, 42, 906 43, 44, 0, 0, 0, 0, 0, 91, 80, 81, 907 82, 83, 84, 85, 86, 39, 40, 41, 42, 43, 908 44 900 909 }; 901 910 902 static const short yycheck[] = { 2, 903 16, 1, 1, 6, 127, 15, 340, 15, 10, 132, 904 133, 16, 135, 204, 17, 16, 88, 140, 9, 88, 905 280, 16, 13, 14, 10, 16, 49, 361, 31, 32, 906 33, 34, 35, 6, 313, 17, 370, 371, 313, 111, 907 10, 3, 4, 5, 6, 7, 8, 13, 14, 11, 908 12, 13, 14, 387, 16, 13, 14, 15, 31, 32, 909 33, 34, 35, 323, 324, 10, 89, 29, 347, 111, 910 261, 17, 347, 16, 84, 89, 84, 59, 60, 61, 911 62, 63, 64, 65, 110, 13, 14, 15, 104, 13, 912 14, 15, 16, 109, 13, 14, 111, 111, 101, 102, 913 103, 104, 105, 106, 107, 108, 109, 110, 111, 88, 914 72, 102, 103, 236, 109, 106, 107, 111, 109, 368, 915 380, 14, 13, 14, 49, 50, 13, 14, 101, 102, 916 103, 104, 105, 106, 107, 108, 109, 110, 111, 388, 917 93, 103, 108, 109, 106, 103, 108, 109, 106, 15, 918 108, 109, 401, 104, 105, 82, 83, 110, 13, 14, 919 15, 89, 89, 111, 89, 55, 56, 57, 59, 60, 920 61, 62, 63, 64, 65, 103, 82, 83, 106, 103, 921 108, 109, 106, 89, 108, 109, 102, 103, 111, 523, 922 80, 81, 15, 93, 443, 85, 399, 400, 111, 402, 923 15, 16, 89, 18, 538, 13, 14, 456, 16, 13, 924 14, 111, 103, 13, 14, 106, 103, 108, 109, 106, 925 68, 108, 109, 71, 72, 559, 102, 103, 104, 105, 926 421, 422, 125, 111, 128, 129, 570, 130, 131, 573, 927 88, 93, 111, 93, 138, 436, 139, 141, 103, 142, 928 584, 106, 586, 108, 109, 55, 56, 57, 111, 111, 929 594, 111, 68, 597, 111, 71, 72, 111, 15, 162, 930 163, 15, 87, 88, 89, 90, 91, 92, 469, 470, 931 80, 81, 88, 111, 178, 85, 179, 180, 181, 182, 932 183, 184, 185, 484, 111, 103, 88, 191, 106, 103, 933 108, 109, 106, 103, 108, 109, 106, 10, 108, 109, 934 93, 15, 205, 206, 313, 290, 291, 292, 293, 294, 935 295, 296, 68, 93, 111, 71, 72, 220, 111, 68, 936 111, 224, 71, 72, 111, 335, 339, 340, 231, 232, 937 111, 111, 88, 68, 111, 88, 71, 72, 347, 88, 938 111, 84, 245, 246, 87, 111, 89, 360, 361, 583, 939 10, 17, 111, 88, 257, 258, 366, 370, 371, 454, 940 455, 595, 457, 348, 267, 268, 600, 111, 15, 111, 941 273, 274, 275, 111, 387, 278, 93, 280, 91, 92, 942 111, 94, 111, 96, 97, 98, 99, 100, 101, 102, 943 103, 111, 111, 59, 60, 61, 62, 63, 64, 65, 944 303, 304, 111, 13, 14, 15, 68, 310, 18, 71, 945 72, 314, 390, 391, 392, 393, 394, 395, 396, 397, 946 323, 324, 88, 17, 15, 403, 404, 405, 111, 15, 947 15, 91, 92, 336, 94, 111, 96, 97, 98, 99, 948 100, 101, 102, 103, 13, 17, 15, 111, 111, 352, 949 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 950 17, 30, 31, 15, 367, 59, 60, 61, 62, 63, 951 64, 65, 93, 15, 95, 378, 111, 380, 111, 111, 952 111, 102, 103, 104, 105, 111, 111, 59, 60, 61, 953 62, 63, 64, 65, 88, 398, 399, 400, 111, 402, 954 111, 0, 59, 60, 61, 62, 63, 64, 65, 111, 955 523, 111, 111, 111, 417, 111, 88, 86, 13, 14, 956 15, 90, 111, 18, 111, 538, 0, 111, 111, 91, 957 92, 88, 94, 111, 96, 97, 98, 99, 100, 101, 958 102, 103, 88, 24, 111, 111, 559, 111, 110, 30, 959 453, 454, 455, 111, 457, 111, 111, 570, 111, 462, 960 573, 464, 465, 466, 467, 93, 111, 95, 111, 272, 961 111, 584, 111, 586, 102, 103, 104, 105, 111, 111, 962 111, 594, 110, 545, 597, 66, 67, 68, 69, 70, 963 71, 72, 495, 496, 497, 498, 499, 500, 501, 502, 964 503, 95, 111, 111, 111, 111, 111, 88, 102, 103, 965 104, 105, 515, 516, 517, 518, 519, 520, 521, 522, 966 73, 74, 75, 76, 77, 78, 79, 111, 576, 347, 967 533, 24, 535, 536, 537, 88, 539, 30, 541, 542, 968 543, 96, 97, 98, 99, 100, 101, 102, 103, 566, 969 519, 554, 555, 556, 557, 558, 599, 277, 561, 59, 970 60, 61, 62, 63, 64, 65, 569, 281, 284, 572, 971 -1, -1, 575, 66, 67, 68, 69, 70, 71, 72, 972 -1, -1, 585, -1, 587, -1, -1, -1, -1, -1, 973 593, -1, -1, -1, -1, 88, 31, 32, 33, 34, 974 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 975 45, 46, 47, 48, 31, 32, 33, 34, 35, 36, 976 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 977 47, 48, 55, 56, 57, 58, 59, 60, 61, -1, 978 63, -1, 65, 66, 67, 68, 445, 446, 447, 448, 979 449, 450, 451, 452, 89, 78, 44, -1, -1, 458, 980 459, 460, -1, 51, 52, 53, 54, -1, -1, -1, 981 58, 92, 89, 94, -1, 96, 97, 98, 99, 100, 982 101, 102, 103, 94, -1, 96, 97, 98, 99, 100, 983 101, 102, 103, 98, 99, 100, 101, 102, 103 911 static const short yycheck[] = { 1, 912 241, 180, 302, 300, 279, 29, 3, 4, 5, 6, 913 7, 8, 9, 10, 11, 12, 48, 14, 305, 13, 914 279, 13, 18, 544, 11, 12, 48, 49, 30, 90, 915 27, 81, 82, 95, 279, 556, 336, 312, 88, 339, 916 337, 102, 67, 222, 331, 70, 71, 568, 289, 290, 917 90, 556, 573, 312, 341, 342, 88, 357, 88, 11, 918 12, 101, 87, 568, 11, 12, 88, 312, 573, 356, 919 370, 101, 11, 12, 71, 90, 101, 90, 67, 103, 920 100, 70, 71, 90, 108, 109, 101, 87, 101, 83, 921 92, 83, 11, 12, 101, 90, 93, 94, 87, 13, 922 97, 98, 101, 100, 106, 107, 101, 54, 55, 56, 923 351, 98, 13, 100, 116, 415, 101, 119, 120, 121, 924 81, 82, 101, 125, 11, 12, 13, 88, 428, 16, 925 95, 96, 79, 80, 11, 12, 13, 84, 101, 58, 926 59, 60, 61, 62, 63, 64, 93, 94, 101, 88, 927 97, 98, 101, 100, 93, 94, 158, 159, 97, 98, 928 101, 100, 164, 165, 166, 167, 168, 169, 170, 193, 929 172, 173, 101, 175, 93, 94, 101, 101, 97, 98, 930 101, 100, 11, 12, 13, 14, 252, 253, 254, 255, 931 256, 257, 258, 92, 93, 94, 95, 96, 200, 201, 932 54, 55, 56, 13, 14, 15, 208, 209, 101, 496, 933 13, 88, 214, 215, 393, 394, 93, 94, 13, 101, 934 97, 98, 101, 100, 511, 79, 80, 101, 101, 408, 935 84, 101, 234, 235, 236, 11, 12, 239, 14, 241, 936 101, 243, 244, 11, 12, 532, 101, 313, 58, 59, 937 60, 61, 62, 63, 64, 83, 543, 87, 86, 546, 938 88, 101, 441, 442, 93, 94, 87, 269, 97, 98, 939 557, 100, 559, 87, 11, 12, 13, 456, 280, 16, 940 567, 67, 101, 570, 70, 71, 101, 289, 290, 291, 941 292, 11, 12, 13, 67, 7, 101, 70, 71, 301, 942 11, 12, 13, 67, 101, 101, 70, 71, 304, 305, 943 22, 101, 368, 369, 87, 371, 28, 93, 94, 101, 944 13, 97, 98, 87, 100, 93, 94, 13, 90, 97, 945 98, 101, 100, 13, 330, 331, 338, 90, 91, 92, 946 93, 94, 95, 96, 101, 341, 342, 349, 67, 351, 947 352, 70, 71, 65, 66, 67, 68, 69, 70, 71, 948 356, 93, 94, 95, 96, 367, 368, 369, 87, 371, 949 101, 101, 101, 93, 94, 87, 13, 97, 98, 13, 950 100, 7, 93, 94, 43, 101, 97, 98, 101, 100, 951 13, 50, 51, 52, 53, 101, 22, 13, 57, 101, 952 101, 11, 28, 101, 14, 101, 101, 17, 18, 19, 953 20, 21, 22, 23, 24, 25, 26, 101, 28, 29, 954 30, 0, 101, 425, 426, 427, 67, 429, 101, 70, 955 71, 101, 434, 435, 436, 437, 438, 439, 101, 65, 956 66, 67, 68, 69, 70, 71, 87, 72, 73, 74, 957 75, 76, 77, 78, 426, 427, 67, 429, 101, 70, 958 71, 87, 87, 101, 0, 101, 468, 469, 470, 471, 959 472, 473, 474, 475, 476, 85, 87, 101, 24, 89, 960 101, 101, 101, 101, 101, 37, 488, 489, 490, 491, 961 492, 493, 494, 495, 15, 16, 17, 101, 19, 101, 962 496, 101, 101, 101, 506, 101, 508, 509, 510, 101, 963 512, 101, 514, 515, 516, 511, 101, 38, 39, 40, 964 41, 42, 43, 44, 101, 527, 528, 529, 530, 531, 965 101, 101, 534, 101, 101, 101, 532, 101, 101, 101, 966 542, 101, 233, 545, 298, 518, 548, 543, 539, 312, 967 546, 549, 492, 572, 242, 238, 558, 267, 560, -1, 968 -1, 557, -1, 559, 566, -1, -1, -1, -1, 11, 969 -1, 567, 14, -1, 570, 17, 18, 19, 20, 21, 970 22, 23, 24, 25, 26, -1, 28, 29, 30, -1, 971 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 972 40, 41, 42, 43, 44, 45, 46, 47, 30, 31, 973 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 974 42, 43, 44, 45, 46, 47, 47, 48, 49, 50, 975 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 976 61, -1, -1, 85, -1, -1, -1, 89, 88, -1, 977 -1, 72, -1, -1, 359, 360, 361, 362, 363, 364, 978 365, 366, -1, -1, -1, -1, 88, 372, 373, 374, 979 417, 418, 419, 420, 421, 422, 423, 424, -1, -1, 980 -1, 105, -1, 430, 431, 432, 110, 111, -1, 113, 981 114, 115, -1, 117, 118, 90, 91, 92, 93, 94, 982 95, 96, -1, -1, -1, -1, -1, 102, 58, 59, 983 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 984 96 984 985 }; 985 986 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ 986 #line 3 "/emx/share/bison.simple" 987 /* This file comes from bison-1.28. */ 987 #line 3 "bison.simple" 988 988 989 989 /* Skeleton output parser for bison, … … 1002 1002 You should have received a copy of the GNU General Public License 1003 1003 along with this program; if not, write to the Free Software 1004 Foundation, Inc., 59 Temple Place - Suite 330, 1005 Boston, MA 02111-1307, USA. */ 1004 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 1006 1005 1007 1006 /* As a special exception, when this file is copied by Bison into a … … 1010 1009 in version 1.24 of Bison. */ 1011 1010 1011 #ifndef alloca 1012 #ifdef __GNUC__ 1013 #define alloca __builtin_alloca 1014 #else /* not GNU C. */ 1015 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) 1016 #include <alloca.h> 1017 #else /* not sparc */ 1018 #if defined (MSDOS) && !defined (__TURBOC__) 1019 #include <malloc.h> 1020 #else /* not MSDOS, or __TURBOC__ */ 1021 #if defined(_AIX) 1022 #include <malloc.h> 1023 #pragma alloca 1024 #else /* not MSDOS, __TURBOC__, or _AIX */ 1025 #ifdef __hpux 1026 #ifdef __cplusplus 1027 extern "C" { 1028 void *alloca (unsigned int); 1029 }; 1030 #else /* not __cplusplus */ 1031 void *alloca (); 1032 #endif /* not __cplusplus */ 1033 #endif /* __hpux */ 1034 #endif /* not _AIX */ 1035 #endif /* not MSDOS, or __TURBOC__ */ 1036 #endif /* not sparc. */ 1037 #endif /* not GNU C. */ 1038 #endif /* alloca not defined. */ 1039 1012 1040 /* This is the parser code that is written into each bison parser 1013 1041 when the %semantic_parser declaration is not specified in the grammar. … … 1015 1043 used when %semantic_parser is specified. */ 1016 1044 1017 #ifndef YYSTACK_USE_ALLOCA1018 #ifdef alloca1019 #define YYSTACK_USE_ALLOCA1020 #else /* alloca not defined */1021 #ifdef __GNUC__1022 #define YYSTACK_USE_ALLOCA1023 #define alloca __builtin_alloca1024 #else /* not GNU C. */1025 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))1026 #define YYSTACK_USE_ALLOCA1027 #include <alloca.h>1028 #else /* not sparc */1029 /* We think this test detects Watcom and Microsoft C. */1030 /* This used to test MSDOS, but that is a bad idea1031 since that symbol is in the user namespace. */1032 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)1033 #if 0 /* No need for malloc.h, which pollutes the namespace;1034 instead, just don't use alloca. */1035 #include <malloc.h>1036 #endif1037 #else /* not MSDOS, or __TURBOC__ */1038 #if defined(_AIX)1039 /* I don't know what this was needed for, but it pollutes the namespace.1040 So I turned it off. rms, 2 May 1997. */1041 /* #include <malloc.h> */1042 #pragma alloca1043 #define YYSTACK_USE_ALLOCA1044 #else /* not MSDOS, or __TURBOC__, or _AIX */1045 #if 01046 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,1047 and on HPUX 10. Eventually we can turn this on. */1048 #define YYSTACK_USE_ALLOCA1049 #define alloca __builtin_alloca1050 #endif /* __hpux */1051 #endif1052 #endif /* not _AIX */1053 #endif /* not MSDOS, or __TURBOC__ */1054 #endif /* not sparc */1055 #endif /* not GNU C */1056 #endif /* alloca not defined */1057 #endif /* YYSTACK_USE_ALLOCA not defined */1058 1059 #ifdef YYSTACK_USE_ALLOCA1060 #define YYSTACK_ALLOC alloca1061 #else1062 #define YYSTACK_ALLOC malloc1063 #endif1064 1065 1045 /* Note: there must be only one dollar sign in this file. 1066 1046 It is replaced by the list of actions, each action … … 1071 1051 #define YYEMPTY -2 1072 1052 #define YYEOF 0 1073 #define YYACCEPT goto yyacceptlab1074 #define YYABORT goto yyabortlab1053 #define YYACCEPT return(0) 1054 #define YYABORT return(1) 1075 1055 #define YYERROR goto yyerrlab1 1076 1056 /* Like YYERROR except do call yyerror. … … 1154 1134 #endif 1155 1135 1156 1157 /* Define __yy_memcpy. Note that the size argument 1158 should be passed with type unsigned int, because that is what the non-GCC 1159 definitions require. With GCC, __builtin_memcpy takes an arg 1160 of type size_t, but it can handle unsigned int. */ 1136 /* Prevent warning if -Wstrict-prototypes. */ 1137 #ifdef __GNUC__ 1138 int yyparse (void); 1139 #endif 1140 1161 1141 1162 1142 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ … … 1171 1151 char *to; 1172 1152 char *from; 1173 unsignedint count;1153 int count; 1174 1154 { 1175 1155 register char *f = from; … … 1186 1166 in available built-in functions on various systems. */ 1187 1167 static void 1188 __yy_memcpy (char *to, char *from, unsigned int count) 1189 { 1168 __yy_memcpy (char *to, char *from, int count) 1169 { 1170 register char *f = from; 1190 1171 register char *t = to; 1191 register char *f = from;1192 1172 register int i = count; 1193 1173 … … 1200 1180 1201 1181 1202 #line 217 "/emx/share/bison.simple"1182 #line 196 "bison.simple" 1203 1183 1204 1184 /* The user can define YYPARSE_PARAM as the name of an argument to be passed … … 1221 1201 #endif /* not YYPARSE_PARAM */ 1222 1202 1223 /* Prevent warning if -Wstrict-prototypes. */1224 #ifdef __GNUC__1225 #ifdef YYPARSE_PARAM1226 int yyparse (void *);1227 #else1228 int yyparse (void);1229 #endif1230 #endif1231 1232 1203 int 1233 1204 yyparse(YYPARSE_PARAM_ARG) … … 1258 1229 1259 1230 int yystacksize = YYINITDEPTH; 1260 int yyfree_stacks = 0;1261 1231 1262 1232 #ifdef YYPURE … … 1343 1313 { 1344 1314 yyerror("parser stack overflow"); 1345 if (yyfree_stacks)1346 {1347 free (yyss);1348 free (yyvs);1349 #ifdef YYLSP_NEEDED1350 free (yyls);1351 #endif1352 }1353 1315 return 2; 1354 1316 } … … 1356 1318 if (yystacksize > YYMAXDEPTH) 1357 1319 yystacksize = YYMAXDEPTH; 1358 #ifndef YYSTACK_USE_ALLOCA 1359 yyfree_stacks = 1; 1360 #endif 1361 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); 1362 __yy_memcpy ((char *)yyss, (char *)yyss1, 1363 size * (unsigned int) sizeof (*yyssp)); 1364 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); 1365 __yy_memcpy ((char *)yyvs, (char *)yyvs1, 1366 size * (unsigned int) sizeof (*yyvsp)); 1320 yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); 1321 __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); 1322 yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); 1323 __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); 1367 1324 #ifdef YYLSP_NEEDED 1368 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); 1369 __yy_memcpy ((char *)yyls, (char *)yyls1, 1370 size * (unsigned int) sizeof (*yylsp)); 1325 yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); 1326 __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); 1371 1327 #endif 1372 1328 #endif /* no yyoverflow */ … … 1529 1485 1530 1486 case 1: 1531 #line 3 10"parser.y"1487 #line 346 "parser.y" 1532 1488 { 1533 1489 resource_t *rsc; … … 1543 1499 else 1544 1500 yyvsp[0].res = rsc; 1501 /* Find the tail again */ 1502 while(yyvsp[0].res && yyvsp[0].res->next) 1503 yyvsp[0].res = yyvsp[0].res->next; 1504 /* Now add any fontdirecory */ 1505 rsc = build_fontdirs(yyvsp[0].res); 1506 /* 'build_fontdir' returns a head and $1 is a tail */ 1507 if(yyvsp[0].res) 1508 { 1509 yyvsp[0].res->next = rsc; 1510 if(rsc) 1511 rsc->prev = yyvsp[0].res; 1512 } 1513 else 1514 yyvsp[0].res = rsc; 1545 1515 /* Final statement before were done */ 1546 1516 resource_top = get_resource_head(yyvsp[0].res); … … 1548 1518 break;} 1549 1519 case 2: 1550 #line 3 30 "parser.y"1551 { yyval.res = NULL; want_ rscname= 1; ;1520 #line 380 "parser.y" 1521 { yyval.res = NULL; want_id = 1; ; 1552 1522 break;} 1553 1523 case 3: 1554 #line 3 31 "parser.y"1524 #line 381 "parser.y" 1555 1525 { 1556 1526 if(yyvsp[0].res) … … 1566 1536 yyvsp[-1].res->next = head; 1567 1537 yyval.res = tail; 1538 /* Check for duplicate identifiers */ 1539 while(yyvsp[-1].res && head) 1540 { 1541 resource_t *rsc = yyvsp[-1].res; 1542 while(rsc) 1543 { 1544 if(rsc->type == head->type 1545 && rsc->lan->id == head->lan->id 1546 && rsc->lan->sub == head->lan->sub 1547 && !compare_name_id(rsc->name, head->name)) 1548 { 1549 yyerror("Duplicate resource name '%s'", get_nameid_str(rsc->name)); 1550 } 1551 rsc = rsc->prev; 1552 } 1553 head = head->next; 1554 } 1568 1555 } 1569 1556 else if(yyvsp[-1].res) … … 1576 1563 else 1577 1564 yyval.res = NULL; 1578 want_rscname = 1; 1565 1566 if(!dont_want_id) /* See comments in language parsing below */ 1567 want_id = 1; 1568 dont_want_id = 0; 1579 1569 ; 1580 1570 break;} 1581 1571 case 4: 1582 #line 356 "parser.y"1583 { yyval.res = yyvsp[-1].res; want_ rscname= 1; ;1572 #line 426 "parser.y" 1573 { yyval.res = yyvsp[-1].res; want_id = 1; ; 1584 1574 break;} 1585 1575 case 5: 1586 #line 357"parser.y"1587 { yyval.res = yyvsp[-1].res; want_rscname = 1; ;1576 #line 431 "parser.y" 1577 { strip_til_semicolon(); ; 1588 1578 break;} 1589 1579 case 6: 1590 #line 362 "parser.y"1591 { pop_start(); push_if(yyvsp[-1].iptr ? *(yyvsp[-1].iptr) : 0, 0, 0); if(yyvsp[-1].iptr) free(yyvsp[-1].iptr);;1580 #line 432 "parser.y" 1581 { strip_til_semicolon(); ; 1592 1582 break;} 1593 1583 case 7: 1594 #line 363 "parser.y"1595 { pop_start(); push_if(pp_lookup(yyvsp[-1].str->str.cstr) != NULL, 0, 0); ;1584 #line 433 "parser.y" 1585 { strip_til_semicolon(); ; 1596 1586 break;} 1597 1587 case 8: 1598 #line 364 "parser.y"1599 { pop_start(); push_if(pp_lookup(yyvsp[-1].str->str.cstr) == NULL, 0, 0); ;1588 #line 434 "parser.y" 1589 { strip_til_semicolon(); ; 1600 1590 break;} 1601 1591 case 9: 1602 #line 365 "parser.y"1603 { pop_start(); push_if(yyvsp[-1].iptr ? *(yyvsp[-1].iptr) : 0, pop_if(), 0); if(yyvsp[-1].iptr) free(yyvsp[-1].iptr); ;1592 #line 435 "parser.y" 1593 { strip_til_semicolon(); ; 1604 1594 break;} 1605 1595 case 10: 1606 #line 366 "parser.y"1607 { pop_start(); push_if(1, pop_if(), 0); ;1596 #line 436 "parser.y" 1597 { strip_til_semicolon(); ; 1608 1598 break;} 1609 1599 case 11: 1610 #line 367 "parser.y"1611 { pop_if(); ;1600 #line 437 "parser.y" 1601 { internal_error(__FILE__, __LINE__, "Don't yet know how to strip inline functions\n"); ; 1612 1602 break;} 1613 1603 case 12: 1614 #line 370 "parser.y" 1615 { yyval.iptr = yyvsp[0].iptr; ; 1616 break;} 1617 case 13: 1618 #line 371 "parser.y" 1619 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr || *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1604 #line 441 "parser.y" 1605 { strip_til_semicolon(); ; 1620 1606 break;} 1621 1607 case 14: 1622 #line 372 "parser.y" 1623 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr && *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1624 break;} 1625 case 15: 1626 #line 373 "parser.y" 1627 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr + *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1628 break;} 1629 case 16: 1630 #line 374 "parser.y" 1631 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr - *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1632 break;} 1633 case 17: 1634 #line 375 "parser.y" 1635 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr ^ *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1636 break;} 1637 case 18: 1638 #line 376 "parser.y" 1639 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr == *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1640 break;} 1641 case 19: 1642 #line 377 "parser.y" 1643 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr != *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1644 break;} 1645 case 20: 1646 #line 378 "parser.y" 1647 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr < *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1648 break;} 1649 case 21: 1650 #line 379 "parser.y" 1651 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr > *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1652 break;} 1653 case 22: 1654 #line 380 "parser.y" 1655 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr <= *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1656 break;} 1657 case 23: 1658 #line 381 "parser.y" 1659 { yyval.iptr = new_int(yyvsp[-2].iptr && yyvsp[0].iptr ? (*yyvsp[-2].iptr >= *yyvsp[0].iptr) : 0); if(yyvsp[-2].iptr) free(yyvsp[-2].iptr); if(yyvsp[0].iptr) free(yyvsp[0].iptr); ; 1660 break;} 1661 case 24: 1662 #line 382 "parser.y" 1663 { yyval.iptr = yyvsp[0].iptr; if(yyvsp[0].iptr) *yyvsp[0].iptr = ~(*yyvsp[0].iptr); ; 1664 break;} 1665 case 25: 1666 #line 383 "parser.y" 1667 { yyval.iptr = yyvsp[0].iptr; ; 1668 break;} 1669 case 26: 1670 #line 384 "parser.y" 1671 { yyval.iptr = yyvsp[0].iptr; if(yyvsp[0].iptr) *yyvsp[0].iptr = -(*yyvsp[0].iptr); ; 1672 break;} 1673 case 27: 1674 #line 385 "parser.y" 1675 { yyval.iptr = yyvsp[0].iptr; if(yyvsp[0].iptr) *yyvsp[0].iptr = !(*yyvsp[0].iptr); ; 1676 break;} 1677 case 28: 1678 #line 386 "parser.y" 1679 { yyval.iptr = yyvsp[-1].iptr; ; 1680 break;} 1681 case 29: 1682 #line 390 "parser.y" 1683 { yyval.iptr = new_int(yyvsp[0].num); ; 1684 break;} 1685 case 30: 1686 #line 391 "parser.y" 1687 { yyval.iptr = NULL; ; 1688 break;} 1689 case 31: 1690 #line 392 "parser.y" 1691 { yyval.iptr = new_int(pp_lookup(yyvsp[0].str->str.cstr) != NULL); ; 1692 break;} 1693 case 32: 1694 #line 393 "parser.y" 1695 { yyval.iptr = new_int(pp_lookup(yyvsp[-1].str->str.cstr) != NULL); ; 1696 break;} 1697 case 33: 1698 #line 397 "parser.y" 1699 { strip_til_semicolon(); ; 1700 break;} 1701 case 34: 1702 #line 398 "parser.y" 1703 { strip_extern(); ; 1704 break;} 1705 case 35: 1706 #line 399 "parser.y" 1707 { strip_til_semicolon(); ; 1708 break;} 1709 case 36: 1710 #line 400 "parser.y" 1711 { strip_til_parenthesis(); ; 1712 break;} 1713 case 37: 1714 #line 401 "parser.y" 1715 { strip_til_semicolon(); ; 1716 break;} 1717 case 38: 1718 #line 406 "parser.y" 1608 #line 471 "parser.y" 1719 1609 { 1720 1610 yyval.res = yyvsp[0].res; 1721 1611 if(yyval.res) 1722 1612 { 1723 yyval.res->name = yyvsp[-1].nid; 1724 if(yyvsp[-1].nid->type == name_ord) 1725 { 1726 chat("Got %s (%d)",get_typename(yyvsp[0].res),yyvsp[-1].nid->name.i_name); 1613 if(yyvsp[-2].num > 65535 || yyvsp[-2].num < -32768) 1614 yyerror("Resource's ID out of range (%d)", yyvsp[-2].num); 1615 yyval.res->name = new_name_id(); 1616 yyval.res->name->type = name_ord; 1617 yyval.res->name->name.i_name = yyvsp[-2].num; 1618 chat("Got %s (%d)", get_typename(yyvsp[0].res), yyval.res->name->name.i_name); 1727 1619 } 1728 else if(yyvsp[-1].nid->type == name_str) 1729 { 1730 chat("Got %s (%s)",get_typename(yyvsp[0].res),yyvsp[-1].nid->name.s_name->str.cstr); 1731 } 1732 } 1733 ; 1734 break;} 1735 case 39: 1736 #line 421 "parser.y" 1620 ; 1621 break;} 1622 case 15: 1623 #line 483 "parser.y" 1624 { 1625 yyval.res = yyvsp[0].res; 1626 if(yyval.res) 1627 { 1628 yyval.res->name = new_name_id(); 1629 yyval.res->name->type = name_str; 1630 yyval.res->name->name.s_name = yyvsp[-2].str; 1631 chat("Got %s (%s)", get_typename(yyvsp[0].res), yyval.res->name->name.s_name->str.cstr); 1632 } 1633 ; 1634 break;} 1635 case 16: 1636 #line 493 "parser.y" 1637 { /* cjunk */ strip_til_parenthesis(); yyval.res = NULL; ; 1638 break;} 1639 case 17: 1640 #line 514 "parser.y" 1737 1641 { 1738 1642 /* Don't do anything, stringtables are converted to … … 1744 1648 ; 1745 1649 break;} 1746 case 40: 1747 #line 429 "parser.y" 1748 { 1650 case 18: 1651 #line 522 "parser.y" 1652 {want_nl = 1; ; 1653 break;} 1654 case 19: 1655 #line 522 "parser.y" 1656 { 1657 /* We *NEED* the newline to delimit the expression. 1658 * Otherwise, we would not be able to set the next 1659 * want_id anymore because of the token-lookahead. 1660 * 1661 * However, we can test the lookahead-token for 1662 * being "non-expression" type, in which case we 1663 * continue. Fortunately, tNL is the only token that 1664 * will break expression parsing and is implicitely 1665 * void, so we just remove it. This scheme makes it 1666 * possible to do some (not all) fancy preprocessor 1667 * stuff. 1668 * BTW, we also need to make sure that the next 1669 * reduction of 'resources' above will *not* set 1670 * want_id because we already have a lookahead that 1671 * cannot be undone. 1672 */ 1673 if(yychar != YYEMPTY && yychar != tNL) 1674 dont_want_id = 1; 1675 1676 if(yychar == tNL) 1677 yychar = YYEMPTY; /* Could use 'yyclearin', but we already need the*/ 1678 /* direct access to yychar in rule 'usrcvt' below. */ 1679 else if(yychar == tIDENT) 1680 yywarning("LANGUAGE statement not delimited with newline; next identifier might be wrong"); 1681 1682 want_nl = 0; /* We don't want it anymore if we didn't get it */ 1683 1749 1684 if(!win32) 1750 1685 yywarning("LANGUAGE not supported in 16-bit mode"); 1751 1686 if(currentlanguage) 1752 1687 free(currentlanguage); 1753 currentlanguage = yyvsp[0].lan;1688 currentlanguage = new_language(yyvsp[-2].num, yyvsp[0].num); 1754 1689 yyval.res = NULL; 1755 ; 1756 break;} 1757 case 41: 1758 #line 442 "parser.y" 1690 chat("Got LANGUAGE %d,%d (0x%04x)", yyvsp[-2].num, yyvsp[0].num, (yyvsp[0].num<<10) + yyvsp[-2].num); 1691 ; 1692 break;} 1693 case 20: 1694 #line 564 "parser.y" 1695 { yychar = rsrcid_to_token(yychar); ; 1696 break;} 1697 case 21: 1698 #line 570 "parser.y" 1759 1699 { 1760 1700 if(yyvsp[0].num > 65535 || yyvsp[0].num < -32768) … … 1763 1703 yyval.nid->type = name_ord; 1764 1704 yyval.nid->name.i_name = yyvsp[0].num; 1765 want_rscname = 0; 1766 ; 1767 break;} 1768 case 42: 1769 #line 450 "parser.y" 1705 ; 1706 break;} 1707 case 22: 1708 #line 577 "parser.y" 1770 1709 { 1771 1710 yyval.nid = new_name_id(); 1772 1711 yyval.nid->type = name_str; 1773 1712 yyval.nid->name.s_name = yyvsp[0].str; 1774 want_rscname = 0; 1775 ; 1776 break;} 1777 case 43: 1778 #line 461 "parser.y" 1713 ; 1714 break;} 1715 case 23: 1716 #line 587 "parser.y" 1779 1717 { yyval.nid = yyvsp[0].nid; ; 1780 1718 break;} 1781 case 44:1782 #line 462"parser.y"1719 case 24: 1720 #line 588 "parser.y" 1783 1721 { 1784 1722 yyval.nid = new_name_id(); 1785 1723 yyval.nid->type = name_str; 1786 1724 yyval.nid->name.s_name = yyvsp[0].str; 1787 want_rscname = 0; 1788 ; 1789 break;} 1790 case 45: 1791 #line 472 "parser.y" 1725 ; 1726 break;} 1727 case 25: 1728 #line 597 "parser.y" 1792 1729 { yyval.res = new_resource(res_acc, yyvsp[0].acc, yyvsp[0].acc->memopt, yyvsp[0].acc->lvc.language); ; 1793 1730 break;} 1794 case 46:1795 #line 473"parser.y"1796 { yyval.res = new_resource(res_bmp, yyvsp[0].bmp, yyvsp[0].bmp->memopt, dup_language(currentlanguage)); ;1797 break;} 1798 case 47:1799 #line 474"parser.y"1731 case 26: 1732 #line 598 "parser.y" 1733 { yyval.res = new_resource(res_bmp, yyvsp[0].bmp, yyvsp[0].bmp->memopt, yyvsp[0].bmp->data->lvc.language); ; 1734 break;} 1735 case 27: 1736 #line 599 "parser.y" 1800 1737 { 1801 1738 resource_t *rsc; 1802 cursor_t *cur; 1803 yyval.res = rsc = new_resource(res_curg, yyvsp[0].curg, yyvsp[0].curg->memopt, dup_language(currentlanguage)); 1804 for(cur = yyvsp[0].curg->cursorlist; cur; cur = cur->next) 1805 { 1806 rsc->prev = new_resource(res_cur, cur, yyvsp[0].curg->memopt, dup_language(currentlanguage)); 1807 rsc->prev->next = rsc; 1808 rsc = rsc->prev; 1809 rsc->name = new_name_id(); 1810 rsc->name->type = name_ord; 1811 rsc->name->name.i_name = cur->id; 1812 } 1813 ; 1814 break;} 1815 case 48: 1816 #line 488 "parser.y" 1739 if(yyvsp[0].ani->type == res_anicur) 1740 { 1741 yyval.res = rsc = new_resource(res_anicur, yyvsp[0].ani->u.ani, yyvsp[0].ani->u.ani->memopt, yyvsp[0].ani->u.ani->data->lvc.language); 1742 } 1743 else if(yyvsp[0].ani->type == res_curg) 1744 { 1745 cursor_t *cur; 1746 yyval.res = rsc = new_resource(res_curg, yyvsp[0].ani->u.curg, yyvsp[0].ani->u.curg->memopt, yyvsp[0].ani->u.curg->lvc.language); 1747 for(cur = yyvsp[0].ani->u.curg->cursorlist; cur; cur = cur->next) 1748 { 1749 rsc->prev = new_resource(res_cur, cur, yyvsp[0].ani->u.curg->memopt, yyvsp[0].ani->u.curg->lvc.language); 1750 rsc->prev->next = rsc; 1751 rsc = rsc->prev; 1752 rsc->name = new_name_id(); 1753 rsc->name->type = name_ord; 1754 rsc->name->name.i_name = cur->id; 1755 } 1756 } 1757 else 1758 internal_error(__FILE__, __LINE__, "Invalid top-level type %d in cursor resource", yyvsp[0].ani->type); 1759 free(yyvsp[0].ani); 1760 ; 1761 break;} 1762 case 28: 1763 #line 623 "parser.y" 1817 1764 { yyval.res = new_resource(res_dlg, yyvsp[0].dlg, yyvsp[0].dlg->memopt, yyvsp[0].dlg->lvc.language); ; 1818 1765 break;} 1819 case 49:1820 #line 489"parser.y"1766 case 29: 1767 #line 624 "parser.y" 1821 1768 { 1822 1769 if(win32) … … 1826 1773 ; 1827 1774 break;} 1828 case 50: 1829 #line 495 "parser.y" 1830 { yyval.res = new_resource(res_dlginit, yyvsp[0].dginit, yyvsp[0].dginit->memopt, yyvsp[0].dginit->lvc.language); ; 1831 break;} 1832 case 51: 1833 #line 496 "parser.y" 1834 { yyval.res = new_resource(res_fnt, yyvsp[0].fnt, yyvsp[0].fnt->memopt, dup_language(currentlanguage)); ; 1835 break;} 1836 case 52: 1837 #line 497 "parser.y" 1775 case 30: 1776 #line 630 "parser.y" 1777 { yyval.res = new_resource(res_dlginit, yyvsp[0].dginit, yyvsp[0].dginit->memopt, yyvsp[0].dginit->data->lvc.language); ; 1778 break;} 1779 case 31: 1780 #line 631 "parser.y" 1781 { yyval.res = new_resource(res_fnt, yyvsp[0].fnt, yyvsp[0].fnt->memopt, yyvsp[0].fnt->data->lvc.language); ; 1782 break;} 1783 case 32: 1784 #line 632 "parser.y" 1785 { yyval.res = new_resource(res_fntdir, yyvsp[0].fnd, yyvsp[0].fnd->memopt, yyvsp[0].fnd->data->lvc.language); ; 1786 break;} 1787 case 33: 1788 #line 633 "parser.y" 1838 1789 { 1839 1790 resource_t *rsc; 1840 icon_t *ico; 1841 yyval.res = rsc = new_resource(res_icog, yyvsp[0].icog, yyvsp[0].icog->memopt, dup_language(currentlanguage)); 1842 for(ico = yyvsp[0].icog->iconlist; ico; ico = ico->next) 1843 { 1844 rsc->prev = new_resource(res_ico, ico, yyvsp[0].icog->memopt, dup_language(currentlanguage)); 1845 rsc->prev->next = rsc; 1846 rsc = rsc->prev; 1847 rsc->name = new_name_id(); 1848 rsc->name->type = name_ord; 1849 rsc->name->name.i_name = ico->id; 1850 } 1851 ; 1852 break;} 1853 case 53: 1854 #line 511 "parser.y" 1791 if(yyvsp[0].ani->type == res_aniico) 1792 { 1793 yyval.res = rsc = new_resource(res_aniico, yyvsp[0].ani->u.ani, yyvsp[0].ani->u.ani->memopt, yyvsp[0].ani->u.ani->data->lvc.language); 1794 } 1795 else if(yyvsp[0].ani->type == res_icog) 1796 { 1797 icon_t *ico; 1798 yyval.res = rsc = new_resource(res_icog, yyvsp[0].ani->u.icog, yyvsp[0].ani->u.icog->memopt, yyvsp[0].ani->u.icog->lvc.language); 1799 for(ico = yyvsp[0].ani->u.icog->iconlist; ico; ico = ico->next) 1800 { 1801 rsc->prev = new_resource(res_ico, ico, yyvsp[0].ani->u.icog->memopt, yyvsp[0].ani->u.icog->lvc.language); 1802 rsc->prev->next = rsc; 1803 rsc = rsc->prev; 1804 rsc->name = new_name_id(); 1805 rsc->name->type = name_ord; 1806 rsc->name->name.i_name = ico->id; 1807 } 1808 } 1809 else 1810 internal_error(__FILE__, __LINE__, "Invalid top-level type %d in icon resource", yyvsp[0].ani->type); 1811 free(yyvsp[0].ani); 1812 ; 1813 break;} 1814 case 34: 1815 #line 657 "parser.y" 1855 1816 { yyval.res = new_resource(res_men, yyvsp[0].men, yyvsp[0].men->memopt, yyvsp[0].men->lvc.language); ; 1856 1817 break;} 1857 case 54:1858 #line 512"parser.y"1818 case 35: 1819 #line 658 "parser.y" 1859 1820 { 1860 1821 if(win32) … … 1864 1825 ; 1865 1826 break;} 1866 case 55:1867 #line 518"parser.y"1827 case 36: 1828 #line 664 "parser.y" 1868 1829 { yyval.res = new_resource(res_msg, yyvsp[0].msg, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, dup_language(currentlanguage)); ; 1869 1830 break;} 1870 case 56:1871 #line 519"parser.y"1872 { yyval.res = new_resource(res_rdt, yyvsp[0].rdt, yyvsp[0].rdt->memopt, yyvsp[0].rdt-> lvc.language); ;1873 break;} 1874 case 57:1875 #line 520"parser.y"1831 case 37: 1832 #line 665 "parser.y" 1833 { yyval.res = new_resource(res_rdt, yyvsp[0].rdt, yyvsp[0].rdt->memopt, yyvsp[0].rdt->data->lvc.language); ; 1834 break;} 1835 case 38: 1836 #line 666 "parser.y" 1876 1837 { yyval.res = new_resource(res_toolbar, yyvsp[0].tlbar, yyvsp[0].tlbar->memopt, yyvsp[0].tlbar->lvc.language); ; 1877 1838 break;} 1878 case 58: 1879 #line 521 "parser.y" 1880 { yyval.res = new_resource(res_usr, yyvsp[0].usr, yyvsp[0].usr->memopt, dup_language(currentlanguage)); ; 1881 break;} 1882 case 59: 1883 #line 522 "parser.y" 1884 { yyval.res = new_resource(res_ver, yyvsp[0].veri, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, dup_language(currentlanguage)); ; 1885 break;} 1886 case 60: 1887 #line 526 "parser.y" 1888 { yyval.bmp = new_bitmap(load_file(yyvsp[0].str), yyvsp[-1].iptr); ; 1889 break;} 1890 case 61: 1891 #line 527 "parser.y" 1839 case 39: 1840 #line 667 "parser.y" 1841 { yyval.res = new_resource(res_usr, yyvsp[0].usr, yyvsp[0].usr->memopt, yyvsp[0].usr->data->lvc.language); ; 1842 break;} 1843 case 40: 1844 #line 668 "parser.y" 1845 { yyval.res = new_resource(res_ver, yyvsp[0].veri, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, yyvsp[0].veri->lvc.language); ; 1846 break;} 1847 case 41: 1848 #line 672 "parser.y" 1849 { yyval.str = make_filename(yyvsp[0].str); ; 1850 break;} 1851 case 42: 1852 #line 673 "parser.y" 1853 { yyval.str = make_filename(yyvsp[0].str); ; 1854 break;} 1855 case 43: 1856 #line 674 "parser.y" 1857 { yyval.str = make_filename(yyvsp[0].str); ; 1858 break;} 1859 case 44: 1860 #line 678 "parser.y" 1892 1861 { yyval.bmp = new_bitmap(yyvsp[0].raw, yyvsp[-1].iptr); ; 1893 1862 break;} 1894 case 62: 1895 #line 531 "parser.y" 1896 { yyval.curg = new_cursor_group(load_file(yyvsp[0].str), yyvsp[-1].iptr); ; 1897 break;} 1898 case 63: 1899 #line 532 "parser.y" 1900 { yyval.curg = new_cursor_group(yyvsp[0].raw, yyvsp[-1].iptr); ; 1901 break;} 1902 case 64: 1903 #line 537 "parser.y" 1904 { yyval.fnt = new_font(load_file(yyvsp[0].str), yyvsp[-1].iptr); ; 1905 break;} 1906 case 65: 1907 #line 541 "parser.y" 1908 { yyval.icog = new_icon_group(load_file(yyvsp[0].str), yyvsp[-1].iptr); ; 1909 break;} 1910 case 66: 1911 #line 542 "parser.y" 1912 { yyval.icog = new_icon_group(yyvsp[0].raw, yyvsp[-1].iptr); ; 1913 break;} 1914 case 67: 1915 #line 550 "parser.y" 1863 case 45: 1864 #line 682 "parser.y" 1865 { 1866 yyval.ani = new_ani_any(); 1867 if(yyvsp[0].raw->size > 4 && !memcmp(yyvsp[0].raw->data, riff, sizeof(riff))) 1868 { 1869 yyval.ani->type = res_anicur; 1870 yyval.ani->u.ani = new_ani_curico(res_anicur, yyvsp[0].raw, yyvsp[-1].iptr); 1871 } 1872 else 1873 { 1874 yyval.ani->type = res_curg; 1875 yyval.ani->u.curg = new_cursor_group(yyvsp[0].raw, yyvsp[-1].iptr); 1876 } 1877 ; 1878 break;} 1879 case 46: 1880 #line 698 "parser.y" 1881 { 1882 yyval.ani = new_ani_any(); 1883 if(yyvsp[0].raw->size > 4 && !memcmp(yyvsp[0].raw->data, riff, sizeof(riff))) 1884 { 1885 yyval.ani->type = res_aniico; 1886 yyval.ani->u.ani = new_ani_curico(res_aniico, yyvsp[0].raw, yyvsp[-1].iptr); 1887 } 1888 else 1889 { 1890 yyval.ani->type = res_icog; 1891 yyval.ani->u.icog = new_icon_group(yyvsp[0].raw, yyvsp[-1].iptr); 1892 } 1893 ; 1894 break;} 1895 case 47: 1896 #line 720 "parser.y" 1897 { yyval.fnt = new_font(yyvsp[0].raw, yyvsp[-1].iptr); ; 1898 break;} 1899 case 48: 1900 #line 730 "parser.y" 1901 { yyval.fnd = new_fontdir(yyvsp[0].raw, yyvsp[-1].iptr); ; 1902 break;} 1903 case 49: 1904 #line 738 "parser.y" 1916 1905 { 1917 1906 if(!win32) 1918 1907 yywarning("MESSAGETABLE not supported in 16-bit mode"); 1919 yyval.msg = new_messagetable(load_file(yyvsp[0].str)); 1920 ; 1921 break;} 1922 case 68: 1923 #line 558 "parser.y" 1924 { 1925 yyval.rdt = new_rcdata(yyvsp[0].raw, yyvsp[-2].iptr); 1926 if(yyvsp[-1].lvc) 1927 { 1928 yyval.rdt->lvc = *(yyvsp[-1].lvc); 1929 free(yyvsp[-1].lvc); 1930 } 1931 if(!yyval.rdt->lvc.language) 1932 yyval.rdt->lvc.language = dup_language(currentlanguage); 1933 ; 1934 break;} 1935 case 69: 1936 #line 571 "parser.y" 1937 { 1938 yyval.dginit = new_dlginit(yyvsp[0].raw, yyvsp[-2].iptr); 1939 if(yyvsp[-1].lvc) 1940 { 1941 yyval.dginit->lvc = *(yyvsp[-1].lvc); 1942 free(yyvsp[-1].lvc); 1943 } 1944 if(!yyval.dginit->lvc.language) 1945 yyval.dginit->lvc.language = dup_language(currentlanguage); 1946 ; 1947 break;} 1948 case 70: 1949 #line 584 "parser.y" 1950 { yyval.usr = new_user(yyvsp[-2].nid, load_file(yyvsp[0].str), yyvsp[-1].iptr); ; 1951 break;} 1952 case 71: 1953 #line 585 "parser.y" 1954 { yyval.usr = new_user(yyvsp[-2].nid, yyvsp[0].raw, yyvsp[-1].iptr); ; 1955 break;} 1956 case 72: 1957 #line 604 "parser.y" 1908 yyval.msg = new_messagetable(yyvsp[0].raw, yyvsp[-1].iptr); 1909 ; 1910 break;} 1911 case 50: 1912 #line 746 "parser.y" 1913 { yyval.rdt = new_rcdata(yyvsp[0].raw, yyvsp[-1].iptr); ; 1914 break;} 1915 case 51: 1916 #line 750 "parser.y" 1917 { yyval.dginit = new_dlginit(yyvsp[0].raw, yyvsp[-1].iptr); ; 1918 break;} 1919 case 52: 1920 #line 754 "parser.y" 1921 { 1922 #ifdef WORDS_BIGENDIAN 1923 if(pedantic && byteorder != WRC_BO_LITTLE) 1924 #else 1925 if(pedantic && byteorder == WRC_BO_BIG) 1926 #endif 1927 yywarning("Byteordering is not little-endian and type cannot be interpreted"); 1928 yyval.usr = new_user(yyvsp[-2].nid, yyvsp[0].raw, yyvsp[-1].iptr); 1929 ; 1930 break;} 1931 case 53: 1932 #line 765 "parser.y" 1958 1933 { 1959 1934 yyval.nid = new_name_id(); 1960 1935 yyval.nid->type = name_ord; 1961 1936 yyval.nid->name.i_name = yyvsp[0].num; 1962 set_yywf(); 1963 ; 1964 break;} 1965 case 73: 1966 #line 616 "parser.y" 1937 ; 1938 break;} 1939 case 54: 1940 #line 770 "parser.y" 1967 1941 { 1968 1942 yyval.nid = new_name_id(); 1969 1943 yyval.nid->type = name_str; 1970 1944 yyval.nid->name.s_name = yyvsp[0].str; 1971 set_yywf(); 1972 ; 1973 break;} 1974 case 74: 1975 #line 626 "parser.y" 1945 ; 1946 break;} 1947 case 55: 1948 #line 779 "parser.y" 1976 1949 { 1977 1950 yyval.acc = new_accelerator(); … … 1997 1970 ; 1998 1971 break;} 1999 case 75:2000 #line 650"parser.y"1972 case 56: 1973 #line 803 "parser.y" 2001 1974 { yyval.event=NULL; ; 2002 1975 break;} 2003 case 76:2004 #line 651"parser.y"1976 case 57: 1977 #line 804 "parser.y" 2005 1978 { yyval.event=add_string_event(yyvsp[-3].str, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); ; 2006 1979 break;} 2007 case 77:2008 #line 652"parser.y"1980 case 58: 1981 #line 805 "parser.y" 2009 1982 { yyval.event=add_event(yyvsp[-3].num, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); ; 2010 1983 break;} 2011 case 78: 2012 #line 655 "parser.y" 2013 { yyval.num=0; ; 2014 break;} 2015 case 79: 2016 #line 656 "parser.y" 2017 { yyval.num=yyvsp[-2].num | WRC_AF_NOINVERT; ; 2018 break;} 2019 case 80: 2020 #line 657 "parser.y" 2021 { yyval.num=yyvsp[-2].num | WRC_AF_SHIFT; ; 2022 break;} 2023 case 81: 2024 #line 658 "parser.y" 2025 { yyval.num=yyvsp[-2].num | WRC_AF_CONTROL; ; 2026 break;} 2027 case 82: 2028 #line 659 "parser.y" 2029 { yyval.num=yyvsp[-2].num | WRC_AF_ALT; ; 2030 break;} 2031 case 83: 2032 #line 660 "parser.y" 2033 { yyval.num=yyvsp[-2].num | WRC_AF_ASCII; ; 2034 break;} 2035 case 84: 2036 #line 661 "parser.y" 2037 { yyval.num=yyvsp[-2].num | WRC_AF_VIRTKEY; ; 2038 break;} 2039 case 85: 2040 #line 667 "parser.y" 1984 case 59: 1985 #line 814 "parser.y" 1986 { yyval.num = 0; ; 1987 break;} 1988 case 60: 1989 #line 815 "parser.y" 1990 { yyval.num = yyvsp[0].num; ; 1991 break;} 1992 case 61: 1993 #line 818 "parser.y" 1994 { yyval.num = yyvsp[0].num; ; 1995 break;} 1996 case 62: 1997 #line 819 "parser.y" 1998 { yyval.num = yyvsp[-2].num | yyvsp[0].num; ; 1999 break;} 2000 case 63: 2001 #line 822 "parser.y" 2002 { yyval.num = WRC_AF_NOINVERT; ; 2003 break;} 2004 case 64: 2005 #line 823 "parser.y" 2006 { yyval.num = WRC_AF_SHIFT; ; 2007 break;} 2008 case 65: 2009 #line 824 "parser.y" 2010 { yyval.num = WRC_AF_CONTROL; ; 2011 break;} 2012 case 66: 2013 #line 825 "parser.y" 2014 { yyval.num = WRC_AF_ALT; ; 2015 break;} 2016 case 67: 2017 #line 826 "parser.y" 2018 { yyval.num = WRC_AF_ASCII; ; 2019 break;} 2020 case 68: 2021 #line 827 "parser.y" 2022 { yyval.num = WRC_AF_VIRTKEY; ; 2023 break;} 2024 case 69: 2025 #line 833 "parser.y" 2041 2026 { 2042 2027 if(yyvsp[-11].iptr) … … 2066 2051 yyval.dlg->style->and_mask = 0; 2067 2052 2068 indialog = FALSE;2069 2053 if(!yyval.dlg->lvc.language) 2070 2054 yyval.dlg->lvc.language = dup_language(currentlanguage); 2071 2055 ; 2072 2056 break;} 2057 case 70: 2058 #line 866 "parser.y" 2059 { yyval.dlg=new_dialog(); ; 2060 break;} 2061 case 71: 2062 #line 867 "parser.y" 2063 { yyval.dlg=dialog_style(yyvsp[0].style,yyvsp[-2].dlg); ; 2064 break;} 2065 case 72: 2066 #line 868 "parser.y" 2067 { yyval.dlg=dialog_exstyle(yyvsp[0].style,yyvsp[-2].dlg); ; 2068 break;} 2069 case 73: 2070 #line 869 "parser.y" 2071 { yyval.dlg=dialog_caption(yyvsp[0].str,yyvsp[-2].dlg); ; 2072 break;} 2073 case 74: 2074 #line 870 "parser.y" 2075 { yyval.dlg=dialog_font(yyvsp[0].fntid,yyvsp[-1].dlg); ; 2076 break;} 2077 case 75: 2078 #line 871 "parser.y" 2079 { yyval.dlg=dialog_class(yyvsp[0].nid,yyvsp[-2].dlg); ; 2080 break;} 2081 case 76: 2082 #line 872 "parser.y" 2083 { yyval.dlg=dialog_class(yyvsp[0].nid,yyvsp[-2].dlg); ; 2084 break;} 2085 case 77: 2086 #line 873 "parser.y" 2087 { yyval.dlg=dialog_menu(yyvsp[0].nid,yyvsp[-2].dlg); ; 2088 break;} 2089 case 78: 2090 #line 874 "parser.y" 2091 { yyval.dlg=dialog_language(yyvsp[0].lan,yyvsp[-1].dlg); ; 2092 break;} 2093 case 79: 2094 #line 875 "parser.y" 2095 { yyval.dlg=dialog_characteristics(yyvsp[0].chars,yyvsp[-1].dlg); ; 2096 break;} 2097 case 80: 2098 #line 876 "parser.y" 2099 { yyval.dlg=dialog_version(yyvsp[0].ver,yyvsp[-1].dlg); ; 2100 break;} 2101 case 81: 2102 #line 879 "parser.y" 2103 { yyval.ctl = NULL; ; 2104 break;} 2105 case 82: 2106 #line 880 "parser.y" 2107 { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2108 break;} 2109 case 83: 2110 #line 881 "parser.y" 2111 { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2112 break;} 2113 case 84: 2114 #line 882 "parser.y" 2115 { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2116 break;} 2117 case 85: 2118 #line 883 "parser.y" 2119 { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2120 break;} 2073 2121 case 86: 2074 #line 701"parser.y"2075 { yyval. dlg=new_dialog(); ;2122 #line 884 "parser.y" 2123 { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2076 2124 break;} 2077 2125 case 87: 2078 #line 702"parser.y"2079 { yyval. dlg=dialog_style(yyvsp[0].style,yyvsp[-2].dlg); ;2126 #line 885 "parser.y" 2127 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2080 2128 break;} 2081 2129 case 88: 2082 #line 703"parser.y"2083 { yyval. dlg=dialog_exstyle(yyvsp[0].style,yyvsp[-2].dlg); ;2130 #line 886 "parser.y" 2131 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2084 2132 break;} 2085 2133 case 89: 2086 #line 704"parser.y"2087 { yyval. dlg=dialog_caption(yyvsp[0].str,yyvsp[-2].dlg);;2134 #line 887 "parser.y" 2135 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);; 2088 2136 break;} 2089 2137 case 90: 2090 #line 705"parser.y"2091 { yyval. dlg=dialog_font(yyvsp[0].fntid,yyvsp[-1].dlg); ;2138 #line 888 "parser.y" 2139 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2092 2140 break;} 2093 2141 case 91: 2094 #line 706"parser.y"2095 { yyval. dlg=dialog_class(yyvsp[0].nid,yyvsp[-2].dlg); ;2142 #line 890 "parser.y" 2143 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2096 2144 break;} 2097 2145 case 92: 2098 #line 707"parser.y"2099 { yyval. dlg=dialog_menu(yyvsp[0].nid,yyvsp[-2].dlg); ;2146 #line 891 "parser.y" 2147 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2100 2148 break;} 2101 2149 case 93: 2102 #line 708"parser.y"2103 { yyval. dlg=dialog_language(yyvsp[0].lan,yyvsp[-1].dlg); ;2150 #line 892 "parser.y" 2151 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2104 2152 break;} 2105 2153 case 94: 2106 #line 709"parser.y"2107 { yyval. dlg=dialog_characteristics(yyvsp[0].chars,yyvsp[-1].dlg); ;2154 #line 893 "parser.y" 2155 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2108 2156 break;} 2109 2157 case 95: 2110 #line 710"parser.y"2111 { yyval. dlg=dialog_version(yyvsp[0].ver,yyvsp[-1].dlg); ;2158 #line 894 "parser.y" 2159 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2112 2160 break;} 2113 2161 case 96: 2114 #line 713"parser.y"2115 { yyval.ctl = NULL; ;2162 #line 895 "parser.y" 2163 { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2116 2164 break;} 2117 2165 case 97: 2118 #line 714"parser.y"2119 { yyval.ctl=ins_ctrl( -1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;2166 #line 896 "parser.y" 2167 { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2120 2168 break;} 2121 2169 case 98: 2122 #line 715"parser.y"2123 { yyval.ctl=ins_ctrl(CT_ EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;2170 #line 897 "parser.y" 2171 { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2124 2172 break;} 2125 2173 case 99: 2126 #line 716 "parser.y" 2127 { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2128 break;} 2129 case 100: 2130 #line 717 "parser.y" 2131 { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2132 break;} 2133 case 101: 2134 #line 718 "parser.y" 2135 { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2136 break;} 2137 case 102: 2138 #line 719 "parser.y" 2139 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2140 break;} 2141 case 103: 2142 #line 720 "parser.y" 2143 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2144 break;} 2145 case 104: 2146 #line 721 "parser.y" 2147 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);; 2148 break;} 2149 case 105: 2150 #line 722 "parser.y" 2151 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2152 break;} 2153 case 106: 2154 #line 724 "parser.y" 2155 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2156 break;} 2157 case 107: 2158 #line 725 "parser.y" 2159 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2160 break;} 2161 case 108: 2162 #line 726 "parser.y" 2163 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2164 break;} 2165 case 109: 2166 #line 727 "parser.y" 2167 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2168 break;} 2169 case 110: 2170 #line 728 "parser.y" 2171 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2172 break;} 2173 case 111: 2174 #line 729 "parser.y" 2175 { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2176 break;} 2177 case 112: 2178 #line 730 "parser.y" 2179 { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2180 break;} 2181 case 113: 2182 #line 731 "parser.y" 2183 { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2184 break;} 2185 case 114: 2186 #line 733 "parser.y" 2174 #line 899 "parser.y" 2187 2175 { 2188 2176 yyvsp[0].ctl->title = yyvsp[-7].nid; … … 2193 2181 ; 2194 2182 break;} 2195 case 1 15:2196 #line 743"parser.y"2183 case 100: 2184 #line 909 "parser.y" 2197 2185 { 2198 2186 yyval.ctl=new_control(); … … 2212 2200 ; 2213 2201 break;} 2214 case 1 16:2215 #line 762"parser.y"2202 case 101: 2203 #line 928 "parser.y" 2216 2204 { 2217 2205 yyval.ctl = new_control(); … … 2228 2216 ; 2229 2217 break;} 2230 case 1 17:2231 #line 778"parser.y"2218 case 102: 2219 #line 944 "parser.y" 2232 2220 { yyval.ctl = new_control(); ; 2233 2221 break;} 2234 case 1 18:2235 #line 780"parser.y"2222 case 103: 2223 #line 946 "parser.y" 2236 2224 { 2237 2225 yyval.ctl = new_control(); … … 2240 2228 ; 2241 2229 break;} 2242 case 1 19:2243 #line 785"parser.y"2230 case 104: 2231 #line 951 "parser.y" 2244 2232 { 2245 2233 yyval.ctl = new_control(); … … 2250 2238 ; 2251 2239 break;} 2252 case 1 20:2253 #line 792"parser.y"2240 case 105: 2241 #line 958 "parser.y" 2254 2242 { 2255 2243 yyval.ctl = new_control(); … … 2262 2250 ; 2263 2251 break;} 2264 case 1 21:2265 #line 803"parser.y"2252 case 106: 2253 #line 969 "parser.y" 2266 2254 { 2267 2255 yyval.ctl=new_control(); … … 2279 2267 ; 2280 2268 break;} 2281 case 1 22:2282 #line 817"parser.y"2269 case 107: 2270 #line 983 "parser.y" 2283 2271 { 2284 2272 yyval.ctl=new_control(); … … 2294 2282 ; 2295 2283 break;} 2296 case 1 23:2297 #line 832"parser.y"2284 case 108: 2285 #line 998 "parser.y" 2298 2286 { yyval.fntid = new_font_id(yyvsp[-2].num, yyvsp[0].str, 0, 0); ; 2299 2287 break;} 2300 case 1 24:2301 #line 837"parser.y"2288 case 109: 2289 #line 1003 "parser.y" 2302 2290 { yyval.style = NULL; ; 2303 2291 break;} 2304 case 1 25:2305 #line 838"parser.y"2292 case 110: 2293 #line 1004 "parser.y" 2306 2294 { yyval.style = yyvsp[0].style; ; 2307 2295 break;} 2308 case 1 26:2309 #line 842"parser.y"2296 case 111: 2297 #line 1008 "parser.y" 2310 2298 { yyval.styles = NULL; ; 2311 2299 break;} 2312 case 1 27:2313 #line 843"parser.y"2300 case 112: 2301 #line 1009 "parser.y" 2314 2302 { yyval.styles = new_style_pair(yyvsp[0].style, 0); ; 2315 2303 break;} 2316 case 1 28:2317 #line 844"parser.y"2304 case 113: 2305 #line 1010 "parser.y" 2318 2306 { yyval.styles = new_style_pair(yyvsp[-2].style, yyvsp[0].style); ; 2319 2307 break;} 2320 case 1 29:2321 #line 848"parser.y"2308 case 114: 2309 #line 1014 "parser.y" 2322 2310 { yyval.style = new_style(yyvsp[-2].style->or_mask | yyvsp[0].style->or_mask, yyvsp[-2].style->and_mask | yyvsp[0].style->and_mask); free(yyvsp[-2].style); free(yyvsp[0].style);; 2323 2311 break;} 2324 case 1 30:2325 #line 849"parser.y"2312 case 115: 2313 #line 1015 "parser.y" 2326 2314 { yyval.style = yyvsp[-1].style; ; 2327 2315 break;} 2328 case 1 31:2329 #line 850"parser.y"2316 case 116: 2317 #line 1016 "parser.y" 2330 2318 { yyval.style = new_style(yyvsp[0].num, 0); ; 2331 2319 break;} 2332 case 1 32:2333 #line 851"parser.y"2320 case 117: 2321 #line 1017 "parser.y" 2334 2322 { yyval.style = new_style(0, yyvsp[0].num); ; 2335 2323 break;} 2336 case 1 33:2337 #line 855"parser.y"2324 case 118: 2325 #line 1021 "parser.y" 2338 2326 { 2339 2327 yyval.nid = new_name_id(); … … 2342 2330 ; 2343 2331 break;} 2344 case 1 34:2345 #line 860"parser.y"2332 case 119: 2333 #line 1026 "parser.y" 2346 2334 { 2347 2335 yyval.nid = new_name_id(); … … 2350 2338 ; 2351 2339 break;} 2352 case 1 35:2353 #line 869"parser.y"2340 case 120: 2341 #line 1035 "parser.y" 2354 2342 { 2355 2343 if(!win32) … … 2389 2377 yyval.dlgex->style->and_mask = 0; 2390 2378 2391 indialog = FALSE;2392 2379 if(!yyval.dlgex->lvc.language) 2393 2380 yyval.dlgex->lvc.language = dup_language(currentlanguage); 2394 2381 ; 2395 2382 break;} 2383 case 121: 2384 #line 1078 "parser.y" 2385 { yyval.dlgex=new_dialogex(); ; 2386 break;} 2387 case 122: 2388 #line 1079 "parser.y" 2389 { yyval.dlgex=dialogex_style(yyvsp[0].style,yyvsp[-2].dlgex); ; 2390 break;} 2391 case 123: 2392 #line 1080 "parser.y" 2393 { yyval.dlgex=dialogex_exstyle(yyvsp[0].style,yyvsp[-2].dlgex); ; 2394 break;} 2395 case 124: 2396 #line 1081 "parser.y" 2397 { yyval.dlgex=dialogex_caption(yyvsp[0].str,yyvsp[-2].dlgex); ; 2398 break;} 2399 case 125: 2400 #line 1082 "parser.y" 2401 { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); ; 2402 break;} 2403 case 126: 2404 #line 1083 "parser.y" 2405 { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); ; 2406 break;} 2407 case 127: 2408 #line 1084 "parser.y" 2409 { yyval.dlgex=dialogex_class(yyvsp[0].nid,yyvsp[-2].dlgex); ; 2410 break;} 2411 case 128: 2412 #line 1085 "parser.y" 2413 { yyval.dlgex=dialogex_class(yyvsp[0].nid,yyvsp[-2].dlgex); ; 2414 break;} 2415 case 129: 2416 #line 1086 "parser.y" 2417 { yyval.dlgex=dialogex_menu(yyvsp[0].nid,yyvsp[-2].dlgex); ; 2418 break;} 2419 case 130: 2420 #line 1087 "parser.y" 2421 { yyval.dlgex=dialogex_language(yyvsp[0].lan,yyvsp[-1].dlgex); ; 2422 break;} 2423 case 131: 2424 #line 1088 "parser.y" 2425 { yyval.dlgex=dialogex_characteristics(yyvsp[0].chars,yyvsp[-1].dlgex); ; 2426 break;} 2427 case 132: 2428 #line 1089 "parser.y" 2429 { yyval.dlgex=dialogex_version(yyvsp[0].ver,yyvsp[-1].dlgex); ; 2430 break;} 2431 case 133: 2432 #line 1092 "parser.y" 2433 { yyval.ctl = NULL; ; 2434 break;} 2435 case 134: 2436 #line 1093 "parser.y" 2437 { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2438 break;} 2439 case 135: 2440 #line 1094 "parser.y" 2441 { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2442 break;} 2396 2443 case 136: 2397 #line 913"parser.y"2398 { yyval. dlgex=new_dialogex(); ;2444 #line 1095 "parser.y" 2445 { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2399 2446 break;} 2400 2447 case 137: 2401 #line 914"parser.y"2402 { yyval. dlgex=dialogex_style(yyvsp[0].style,yyvsp[-2].dlgex); ;2448 #line 1096 "parser.y" 2449 { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2403 2450 break;} 2404 2451 case 138: 2405 #line 915"parser.y"2406 { yyval. dlgex=dialogex_exstyle(yyvsp[0].style,yyvsp[-2].dlgex); ;2452 #line 1097 "parser.y" 2453 { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2407 2454 break;} 2408 2455 case 139: 2409 #line 916"parser.y"2410 { yyval. dlgex=dialogex_caption(yyvsp[0].str,yyvsp[-2].dlgex); ;2456 #line 1098 "parser.y" 2457 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2411 2458 break;} 2412 2459 case 140: 2413 #line 917"parser.y"2414 { yyval. dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); ;2460 #line 1099 "parser.y" 2461 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2415 2462 break;} 2416 2463 case 141: 2417 #line 918"parser.y"2418 { yyval. dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex);;2464 #line 1100 "parser.y" 2465 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);; 2419 2466 break;} 2420 2467 case 142: 2421 #line 919"parser.y"2422 { yyval. dlgex=dialogex_class(yyvsp[0].nid,yyvsp[-2].dlgex); ;2468 #line 1101 "parser.y" 2469 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2423 2470 break;} 2424 2471 case 143: 2425 #line 920"parser.y"2426 { yyval. dlgex=dialogex_menu(yyvsp[0].nid,yyvsp[-2].dlgex); ;2472 #line 1103 "parser.y" 2473 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2427 2474 break;} 2428 2475 case 144: 2429 #line 921"parser.y"2430 { yyval. dlgex=dialogex_language(yyvsp[0].lan,yyvsp[-1].dlgex); ;2476 #line 1104 "parser.y" 2477 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2431 2478 break;} 2432 2479 case 145: 2433 #line 922"parser.y"2434 { yyval. dlgex=dialogex_characteristics(yyvsp[0].chars,yyvsp[-1].dlgex); ;2480 #line 1105 "parser.y" 2481 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2435 2482 break;} 2436 2483 case 146: 2437 #line 923"parser.y"2438 { yyval. dlgex=dialogex_version(yyvsp[0].ver,yyvsp[-1].dlgex); ;2484 #line 1106 "parser.y" 2485 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2439 2486 break;} 2440 2487 case 147: 2441 #line 926"parser.y"2442 { yyval.ctl = NULL; ;2488 #line 1107 "parser.y" 2489 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2443 2490 break;} 2444 2491 case 148: 2445 #line 927"parser.y"2446 { yyval.ctl=ins_ctrl( -1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;2492 #line 1108 "parser.y" 2493 { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2447 2494 break;} 2448 2495 case 149: 2449 #line 928"parser.y"2450 { yyval.ctl=ins_ctrl(CT_ EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;2496 #line 1109 "parser.y" 2497 { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2451 2498 break;} 2452 2499 case 150: 2453 #line 929"parser.y"2454 { yyval.ctl=ins_ctrl(CT_ LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;2500 #line 1110 "parser.y" 2501 { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2455 2502 break;} 2456 2503 case 151: 2457 #line 930 "parser.y" 2458 { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2459 break;} 2460 case 152: 2461 #line 931 "parser.y" 2462 { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2463 break;} 2464 case 153: 2465 #line 932 "parser.y" 2466 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2467 break;} 2468 case 154: 2469 #line 933 "parser.y" 2470 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2471 break;} 2472 case 155: 2473 #line 934 "parser.y" 2474 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);; 2475 break;} 2476 case 156: 2477 #line 935 "parser.y" 2478 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2479 break;} 2480 case 157: 2481 #line 937 "parser.y" 2482 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2483 break;} 2484 case 158: 2485 #line 938 "parser.y" 2486 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2487 break;} 2488 case 159: 2489 #line 939 "parser.y" 2490 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2491 break;} 2492 case 160: 2493 #line 940 "parser.y" 2494 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2495 break;} 2496 case 161: 2497 #line 941 "parser.y" 2498 { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2499 break;} 2500 case 162: 2501 #line 942 "parser.y" 2502 { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2503 break;} 2504 case 163: 2505 #line 943 "parser.y" 2506 { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2507 break;} 2508 case 164: 2509 #line 944 "parser.y" 2510 { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ; 2511 break;} 2512 case 165: 2513 #line 946 "parser.y" 2504 #line 1112 "parser.y" 2514 2505 { 2515 2506 yyvsp[0].ctl->title = yyvsp[-7].nid; … … 2520 2511 ; 2521 2512 break;} 2522 case 1 66:2523 #line 957"parser.y"2513 case 152: 2514 #line 1123 "parser.y" 2524 2515 { 2525 2516 yyval.ctl=new_control(); … … 2547 2538 ; 2548 2539 break;} 2549 case 1 67:2550 #line 981"parser.y"2540 case 153: 2541 #line 1147 "parser.y" 2551 2542 { 2552 2543 yyval.ctl=new_control(); … … 2563 2554 ; 2564 2555 break;} 2565 case 1 68:2566 #line 997"parser.y"2556 case 154: 2557 #line 1163 "parser.y" 2567 2558 { 2568 2559 yyval.ctl=new_control(); … … 2591 2582 ; 2592 2583 break;} 2593 case 1 69:2594 #line 1 025"parser.y"2584 case 155: 2585 #line 1191 "parser.y" 2595 2586 { 2596 2587 yyval.ctl = new_control(); … … 2615 2606 ; 2616 2607 break;} 2617 case 1 70:2618 #line 1 048"parser.y"2608 case 156: 2609 #line 1214 "parser.y" 2619 2610 { yyval.raw = NULL; ; 2620 2611 break;} 2621 case 1 71:2622 #line 1 049"parser.y"2612 case 157: 2613 #line 1215 "parser.y" 2623 2614 { yyval.raw = yyvsp[0].raw; ; 2624 2615 break;} 2625 case 1 72:2626 #line 1 052"parser.y"2616 case 158: 2617 #line 1218 "parser.y" 2627 2618 { yyval.iptr = NULL; ; 2628 2619 break;} 2629 case 1 73:2630 #line 1 053"parser.y"2620 case 159: 2621 #line 1219 "parser.y" 2631 2622 { yyval.iptr = new_int(yyvsp[0].num); ; 2632 2623 break;} 2633 case 1 74:2634 #line 1 057"parser.y"2624 case 160: 2625 #line 1223 "parser.y" 2635 2626 { yyval.fntid = new_font_id(yyvsp[-7].num, yyvsp[-5].str, yyvsp[-3].num, yyvsp[-1].num); ; 2636 2627 break;} 2637 case 1 75:2638 #line 1 064"parser.y"2628 case 161: 2629 #line 1230 "parser.y" 2639 2630 { yyval.fntid = NULL; ; 2640 2631 break;} 2641 case 1 76:2642 #line 1 065"parser.y"2632 case 162: 2633 #line 1231 "parser.y" 2643 2634 { yyval.fntid = NULL; ; 2644 2635 break;} 2645 case 1 77:2646 #line 1 069"parser.y"2636 case 163: 2637 #line 1235 "parser.y" 2647 2638 { 2648 2639 if(!yyvsp[0].menitm) … … 2666 2657 ; 2667 2658 break;} 2668 case 1 78:2669 #line 1 092"parser.y"2659 case 164: 2660 #line 1258 "parser.y" 2670 2661 { yyval.menitm = yyvsp[-1].menitm; ; 2671 2662 break;} 2672 case 1 79:2673 #line 1 096"parser.y"2663 case 165: 2664 #line 1262 "parser.y" 2674 2665 {yyval.menitm = NULL;; 2675 2666 break;} 2676 case 1 80:2677 #line 1 097"parser.y"2667 case 166: 2668 #line 1263 "parser.y" 2678 2669 { 2679 2670 yyval.menitm=new_menu_item(); … … 2686 2677 ; 2687 2678 break;} 2688 case 1 81:2689 #line 1 106"parser.y"2679 case 167: 2680 #line 1272 "parser.y" 2690 2681 { 2691 2682 yyval.menitm=new_menu_item(); … … 2695 2686 ; 2696 2687 break;} 2697 case 1 82:2698 #line 1 112"parser.y"2688 case 168: 2689 #line 1278 "parser.y" 2699 2690 { 2700 2691 yyval.menitm = new_menu_item(); … … 2706 2697 ; 2707 2698 break;} 2708 case 1 83:2709 #line 1 131"parser.y"2699 case 169: 2700 #line 1297 "parser.y" 2710 2701 { yyval.num = 0; ; 2711 2702 break;} 2712 case 1 84:2713 #line 1 132"parser.y"2703 case 170: 2704 #line 1298 "parser.y" 2714 2705 { yyval.num = yyvsp[0].num | MF_CHECKED; ; 2715 2706 break;} 2716 case 1 85:2717 #line 1 133"parser.y"2707 case 171: 2708 #line 1299 "parser.y" 2718 2709 { yyval.num = yyvsp[0].num | MF_GRAYED; ; 2719 2710 break;} 2720 case 1 86:2721 #line 1 134"parser.y"2711 case 172: 2712 #line 1300 "parser.y" 2722 2713 { yyval.num = yyvsp[0].num | MF_HELP; ; 2723 2714 break;} 2724 case 1 87:2725 #line 1 135"parser.y"2715 case 173: 2716 #line 1301 "parser.y" 2726 2717 { yyval.num = yyvsp[0].num | MF_DISABLED; ; 2727 2718 break;} 2728 case 1 88:2729 #line 1 136"parser.y"2719 case 174: 2720 #line 1302 "parser.y" 2730 2721 { yyval.num = yyvsp[0].num | MF_MENUBARBREAK; ; 2731 2722 break;} 2732 case 1 89:2733 #line 1 137"parser.y"2723 case 175: 2724 #line 1303 "parser.y" 2734 2725 { yyval.num = yyvsp[0].num | MF_MENUBREAK; ; 2735 2726 break;} 2736 case 1 90:2737 #line 1 141"parser.y"2727 case 176: 2728 #line 1307 "parser.y" 2738 2729 { 2739 2730 if(!win32) … … 2759 2750 ; 2760 2751 break;} 2761 case 1 91:2762 #line 1 166"parser.y"2752 case 177: 2753 #line 1332 "parser.y" 2763 2754 { yyval.menexitm = yyvsp[-1].menexitm; ; 2764 2755 break;} 2765 case 1 92:2766 #line 1 170"parser.y"2756 case 178: 2757 #line 1336 "parser.y" 2767 2758 {yyval.menexitm = NULL; ; 2768 2759 break;} 2769 case 1 93:2770 #line 1 171"parser.y"2760 case 179: 2761 #line 1337 "parser.y" 2771 2762 { 2772 2763 yyval.menexitm = new_menuex_item(); … … 2786 2777 ; 2787 2778 break;} 2788 case 1 94:2789 #line 1 187"parser.y"2779 case 180: 2780 #line 1353 "parser.y" 2790 2781 { 2791 2782 yyval.menexitm = new_menuex_item(); … … 2795 2786 ; 2796 2787 break;} 2797 case 1 95:2798 #line 1 193"parser.y"2788 case 181: 2789 #line 1359 "parser.y" 2799 2790 { 2800 2791 yyval.menexitm = new_menuex_item(); … … 2815 2806 ; 2816 2807 break;} 2817 case 1 96:2818 #line 1 213"parser.y"2808 case 182: 2809 #line 1379 "parser.y" 2819 2810 { yyval.exopt = new_itemex_opt(0, 0, 0, 0); ; 2820 2811 break;} 2821 case 1 97:2822 #line 1 214"parser.y"2812 case 183: 2813 #line 1380 "parser.y" 2823 2814 { 2824 2815 yyval.exopt = new_itemex_opt(yyvsp[0].num, 0, 0, 0); … … 2826 2817 ; 2827 2818 break;} 2828 case 1 98:2829 #line 1 218"parser.y"2819 case 184: 2820 #line 1384 "parser.y" 2830 2821 { 2831 2822 yyval.exopt = new_itemex_opt(yyvsp[-3].iptr ? *(yyvsp[-3].iptr) : 0, yyvsp[-1].iptr ? *(yyvsp[-1].iptr) : 0, yyvsp[0].num, 0); … … 2837 2828 ; 2838 2829 break;} 2839 case 1 99:2840 #line 1 226"parser.y"2830 case 185: 2831 #line 1392 "parser.y" 2841 2832 { 2842 2833 yyval.exopt = new_itemex_opt(yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0); … … 2848 2839 ; 2849 2840 break;} 2850 case 200:2851 #line 1 237"parser.y"2841 case 186: 2842 #line 1403 "parser.y" 2852 2843 { yyval.exopt = new_itemex_opt(0, 0, 0, 0); ; 2853 2844 break;} 2854 case 201:2855 #line 1 238"parser.y"2845 case 187: 2846 #line 1404 "parser.y" 2856 2847 { 2857 2848 yyval.exopt = new_itemex_opt(yyvsp[0].num, 0, 0, 0); … … 2859 2850 ; 2860 2851 break;} 2861 case 202:2862 #line 1 242"parser.y"2852 case 188: 2853 #line 1408 "parser.y" 2863 2854 { 2864 2855 yyval.exopt = new_itemex_opt(yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0, 0); … … 2868 2859 ; 2869 2860 break;} 2870 case 203:2871 #line 1 248"parser.y"2861 case 189: 2862 #line 1414 "parser.y" 2872 2863 { 2873 2864 yyval.exopt = new_itemex_opt(yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0); … … 2879 2870 ; 2880 2871 break;} 2881 case 204:2882 #line 1 256"parser.y"2872 case 190: 2873 #line 1422 "parser.y" 2883 2874 { 2884 2875 yyval.exopt = new_itemex_opt(yyvsp[-6].iptr ? *(yyvsp[-6].iptr) : 0, yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num); … … 2892 2883 ; 2893 2884 break;} 2894 case 205:2895 #line 1 276"parser.y"2885 case 191: 2886 #line 1442 "parser.y" 2896 2887 { 2897 2888 if(!yyvsp[-1].stt) … … 2933 2924 ; 2934 2925 break;} 2935 case 206:2936 #line 1 317"parser.y"2926 case 192: 2927 #line 1483 "parser.y" 2937 2928 { 2938 2929 if((tagstt = find_stringtable(yyvsp[0].lvc)) == NULL) … … 2945 2936 ; 2946 2937 break;} 2947 case 207:2948 #line 1 328"parser.y"2938 case 193: 2939 #line 1494 "parser.y" 2949 2940 { yyval.stt = NULL; ; 2950 2941 break;} 2951 case 208:2952 #line 1 329"parser.y"2942 case 194: 2943 #line 1495 "parser.y" 2953 2944 { 2954 2945 int i; … … 2974 2965 tagstt->entries[tagstt->nentries-1].characts = tagstt_characts; 2975 2966 2967 if(pedantic && !yyvsp[0].str->size) 2968 yywarning("Zero length strings make no sense"); 2976 2969 if(!win32 && yyvsp[0].str->size > 254) 2977 2970 yyerror("Stringtable entry more than 254 characters"); … … 2981 2974 ; 2982 2975 break;} 2983 case 211:2984 #line 1 367"parser.y"2976 case 197: 2977 #line 1535 "parser.y" 2985 2978 { 2986 2979 yyval.veri = yyvsp[-3].veri; 2987 yyvsp[-3].veri->blocks = get_ver_block_head(yyvsp[-1].blk); 2988 ; 2989 break;} 2990 case 212: 2991 #line 1374 "parser.y" 2980 if(yyvsp[-4].iptr) 2981 { 2982 yyval.veri->memopt = *(yyvsp[-4].iptr); 2983 free(yyvsp[-4].iptr); 2984 } 2985 else 2986 yyval.veri->memopt = WRC_MO_MOVEABLE | (win32 ? WRC_MO_PURE : 0); 2987 yyval.veri->blocks = get_ver_block_head(yyvsp[-1].blk); 2988 /* Set language; there is no version or characteristics */ 2989 yyval.veri->lvc.language = dup_language(currentlanguage); 2990 ; 2991 break;} 2992 case 198: 2993 #line 1551 "parser.y" 2992 2994 { yyval.veri = new_versioninfo(); ; 2993 2995 break;} 2994 case 213:2995 #line 1 375"parser.y"2996 case 199: 2997 #line 1552 "parser.y" 2996 2998 { 2997 2999 if(yyvsp[-8].veri->gotit.fv) … … 3005 3007 ; 3006 3008 break;} 3007 case 2 14:3008 #line 1 385"parser.y"3009 case 200: 3010 #line 1562 "parser.y" 3009 3011 { 3010 3012 if(yyvsp[-8].veri->gotit.pv) … … 3018 3020 ; 3019 3021 break;} 3020 case 2 15:3021 #line 1 395"parser.y"3022 case 201: 3023 #line 1572 "parser.y" 3022 3024 { 3023 3025 if(yyvsp[-2].veri->gotit.ff) … … 3028 3030 ; 3029 3031 break;} 3030 case 2 16:3031 #line 1 402"parser.y"3032 case 202: 3033 #line 1579 "parser.y" 3032 3034 { 3033 3035 if(yyvsp[-2].veri->gotit.ffm) … … 3038 3040 ; 3039 3041 break;} 3040 case 2 17:3041 #line 1 409"parser.y"3042 case 203: 3043 #line 1586 "parser.y" 3042 3044 { 3043 3045 if(yyvsp[-2].veri->gotit.fo) … … 3048 3050 ; 3049 3051 break;} 3050 case 2 18:3051 #line 1 416"parser.y"3052 case 204: 3053 #line 1593 "parser.y" 3052 3054 { 3053 3055 if(yyvsp[-2].veri->gotit.ft) … … 3058 3060 ; 3059 3061 break;} 3060 case 2 19:3061 #line 1 423"parser.y"3062 case 205: 3063 #line 1600 "parser.y" 3062 3064 { 3063 3065 if(yyvsp[-2].veri->gotit.fst) … … 3068 3070 ; 3069 3071 break;} 3070 case 2 20:3071 #line 1 433"parser.y"3072 case 206: 3073 #line 1610 "parser.y" 3072 3074 { yyval.blk = NULL; ; 3073 3075 break;} 3074 case 2 21:3075 #line 1 434"parser.y"3076 case 207: 3077 #line 1611 "parser.y" 3076 3078 { 3077 3079 yyval.blk = yyvsp[0].blk; … … 3081 3083 ; 3082 3084 break;} 3083 case 2 22:3084 #line 1 443"parser.y"3085 case 208: 3086 #line 1620 "parser.y" 3085 3087 { 3086 3088 yyval.blk = new_ver_block(); … … 3089 3091 ; 3090 3092 break;} 3091 case 2 23:3092 #line 1 451"parser.y"3093 case 209: 3094 #line 1628 "parser.y" 3093 3095 { yyval.val = NULL; ; 3094 3096 break;} 3095 case 2 24:3096 #line 1 452"parser.y"3097 case 210: 3098 #line 1629 "parser.y" 3097 3099 { 3098 3100 yyval.val = yyvsp[0].val; … … 3102 3104 ; 3103 3105 break;} 3104 case 2 25:3105 #line 1 461"parser.y"3106 case 211: 3107 #line 1638 "parser.y" 3106 3108 { 3107 3109 yyval.val = new_ver_value(); … … 3110 3112 ; 3111 3113 break;} 3112 case 2 26:3113 #line 1 466"parser.y"3114 case 212: 3115 #line 1643 "parser.y" 3114 3116 { 3115 3117 yyval.val = new_ver_value(); … … 3119 3121 ; 3120 3122 break;} 3121 case 2 27:3122 #line 1 472"parser.y"3123 case 213: 3124 #line 1649 "parser.y" 3123 3125 { 3124 3126 yyval.val = new_ver_value(); … … 3128 3130 ; 3129 3131 break;} 3130 case 2 28:3131 #line 1 481"parser.y"3132 case 214: 3133 #line 1658 "parser.y" 3132 3134 { yyval.verw = new_ver_words(yyvsp[0].num); ; 3133 3135 break;} 3134 case 2 29:3135 #line 1 482"parser.y"3136 case 215: 3137 #line 1659 "parser.y" 3136 3138 { yyval.verw = add_ver_words(yyvsp[-2].verw, yyvsp[0].num); ; 3137 3139 break;} 3138 case 2 30:3139 #line 1 486"parser.y"3140 case 216: 3141 #line 1663 "parser.y" 3140 3142 { 3141 3143 int nitems; … … 3145 3147 { 3146 3148 yyval.tlbar->memopt = *(yyvsp[-7].iptr); 3147 free(yyvsp[-7].iptr); 3149 free(yyvsp[-7].iptr); 3148 3150 } 3149 3151 else … … 3162 3164 ; 3163 3165 break;} 3164 case 2 31:3165 #line 1 512"parser.y"3166 case 217: 3167 #line 1689 "parser.y" 3166 3168 { yyval.tlbarItems = NULL; ; 3167 3169 break;} 3168 case 2 32:3169 #line 1 513"parser.y"3170 { 3170 case 218: 3171 #line 1690 "parser.y" 3172 { 3171 3173 toolbar_item_t *idrec = new_toolbar_item(); 3172 3174 idrec->id = yyvsp[0].num; 3173 yyval.tlbarItems = ins_tlbr_button(yyvsp[-2].tlbarItems, idrec); 3174 ; 3175 break;} 3176 case 2 33:3177 #line 1 518"parser.y"3178 { 3175 yyval.tlbarItems = ins_tlbr_button(yyvsp[-2].tlbarItems, idrec); 3176 ; 3177 break;} 3178 case 219: 3179 #line 1695 "parser.y" 3180 { 3179 3181 toolbar_item_t *idrec = new_toolbar_item(); 3180 3182 idrec->id = 0; 3181 yyval.tlbarItems = ins_tlbr_button(yyvsp[-1].tlbarItems, idrec); 3183 yyval.tlbarItems = ins_tlbr_button(yyvsp[-1].tlbarItems, idrec); 3182 3184 ; 3183 3185 break;} 3184 case 2 34:3185 #line 1 527"parser.y"3186 case 220: 3187 #line 1704 "parser.y" 3186 3188 { yyval.iptr = NULL; ; 3187 3189 break;} 3188 case 2 35:3189 #line 1 528"parser.y"3190 case 221: 3191 #line 1705 "parser.y" 3190 3192 { 3191 3193 if(yyvsp[-1].iptr) … … 3199 3201 ; 3200 3202 break;} 3201 case 2 36:3202 #line 1 538"parser.y"3203 case 222: 3204 #line 1715 "parser.y" 3203 3205 { 3204 3206 if(yyvsp[-1].iptr) … … 3215 3217 ; 3216 3218 break;} 3217 case 2 37:3218 #line 1 553"parser.y"3219 case 223: 3220 #line 1730 "parser.y" 3219 3221 { yyval.iptr = new_int(WRC_MO_PRELOAD); ; 3220 3222 break;} 3221 case 2 38:3222 #line 1 554"parser.y"3223 case 224: 3224 #line 1731 "parser.y" 3223 3225 { yyval.iptr = new_int(WRC_MO_MOVEABLE); ; 3224 3226 break;} 3225 case 2 39:3226 #line 1 555"parser.y"3227 case 225: 3228 #line 1732 "parser.y" 3227 3229 { yyval.iptr = new_int(WRC_MO_DISCARDABLE); ; 3228 3230 break;} 3229 case 2 40:3230 #line 1 556"parser.y"3231 case 226: 3232 #line 1733 "parser.y" 3231 3233 { yyval.iptr = new_int(WRC_MO_PURE); ; 3232 3234 break;} 3233 case 2 41:3234 #line 1 559"parser.y"3235 case 227: 3236 #line 1736 "parser.y" 3235 3237 { yyval.iptr = new_int(~WRC_MO_PRELOAD); ; 3236 3238 break;} 3237 case 2 42:3238 #line 1 560"parser.y"3239 case 228: 3240 #line 1737 "parser.y" 3239 3241 { yyval.iptr = new_int(~WRC_MO_MOVEABLE); ; 3240 3242 break;} 3241 case 2 43:3242 #line 1 561"parser.y"3243 case 229: 3244 #line 1738 "parser.y" 3243 3245 { yyval.iptr = new_int(~WRC_MO_PURE); ; 3244 3246 break;} 3245 case 2 44:3246 #line 1 565"parser.y"3247 case 230: 3248 #line 1742 "parser.y" 3247 3249 { yyval.lvc = new_lvc(); ; 3248 3250 break;} 3249 case 2 45:3250 #line 1 566"parser.y"3251 case 231: 3252 #line 1743 "parser.y" 3251 3253 { 3252 3254 if(!win32) … … 3258 3260 ; 3259 3261 break;} 3260 case 2 46:3261 #line 1 574"parser.y"3262 case 232: 3263 #line 1751 "parser.y" 3262 3264 { 3263 3265 if(!win32) … … 3269 3271 ; 3270 3272 break;} 3271 case 2 47:3272 #line 1 582"parser.y"3273 case 233: 3274 #line 1759 "parser.y" 3273 3275 { 3274 3276 if(!win32) … … 3280 3282 ; 3281 3283 break;} 3284 case 234: 3285 #line 1777 "parser.y" 3286 { yyval.lan = new_language(yyvsp[-2].num, yyvsp[0].num); ; 3287 break;} 3288 case 235: 3289 #line 1781 "parser.y" 3290 { yyval.chars = new_characts(yyvsp[0].num); ; 3291 break;} 3292 case 236: 3293 #line 1785 "parser.y" 3294 { yyval.ver = new_version(yyvsp[0].num); ; 3295 break;} 3296 case 237: 3297 #line 1789 "parser.y" 3298 { 3299 if(yyvsp[-3].lvc) 3300 { 3301 yyvsp[-1].raw->lvc = *(yyvsp[-3].lvc); 3302 free(yyvsp[-3].lvc); 3303 } 3304 3305 if(!yyvsp[-1].raw->lvc.language) 3306 yyvsp[-1].raw->lvc.language = dup_language(currentlanguage); 3307 3308 yyval.raw = yyvsp[-1].raw; 3309 ; 3310 break;} 3311 case 238: 3312 #line 1804 "parser.y" 3313 { yyval.raw = yyvsp[0].raw; ; 3314 break;} 3315 case 239: 3316 #line 1805 "parser.y" 3317 { yyval.raw = int2raw_data(yyvsp[0].num); ; 3318 break;} 3319 case 240: 3320 #line 1806 "parser.y" 3321 { yyval.raw = long2raw_data(yyvsp[0].num); ; 3322 break;} 3323 case 241: 3324 #line 1807 "parser.y" 3325 { yyval.raw = str2raw_data(yyvsp[0].str); ; 3326 break;} 3327 case 242: 3328 #line 1808 "parser.y" 3329 { yyval.raw = merge_raw_data(yyvsp[-2].raw, yyvsp[0].raw); free(yyvsp[0].raw->data); free(yyvsp[0].raw); ; 3330 break;} 3331 case 243: 3332 #line 1809 "parser.y" 3333 { yyval.raw = merge_raw_data_int(yyvsp[-2].raw, yyvsp[0].num); ; 3334 break;} 3335 case 244: 3336 #line 1810 "parser.y" 3337 { yyval.raw = merge_raw_data_long(yyvsp[-2].raw, yyvsp[0].num); ; 3338 break;} 3339 case 245: 3340 #line 1811 "parser.y" 3341 { yyval.raw = merge_raw_data_str(yyvsp[-2].raw, yyvsp[0].str); ; 3342 break;} 3343 case 246: 3344 #line 1815 "parser.y" 3345 { 3346 yyval.raw = load_file(yyvsp[0].str); 3347 yyval.raw->lvc.language = dup_language(currentlanguage); 3348 ; 3349 break;} 3350 case 247: 3351 #line 1819 "parser.y" 3352 { yyval.raw = yyvsp[0].raw; ; 3353 break;} 3282 3354 case 248: 3283 #line 1 593"parser.y"3284 { yyval. lan = new_language(yyvsp[-2].num, yyvsp[0].num); ;3355 #line 1826 "parser.y" 3356 { yyval.iptr = 0; ; 3285 3357 break;} 3286 3358 case 249: 3287 #line 1 597 "parser.y"3288 { yyval. chars = new_characts(yyvsp[0].num); ;3359 #line 1827 "parser.y" 3360 { yyval.iptr = new_int(yyvsp[0].num); ; 3289 3361 break;} 3290 3362 case 250: 3291 #line 1 601 "parser.y"3292 { yyval. ver = new_version(yyvsp[0].num); ;3363 #line 1831 "parser.y" 3364 { yyval.num = (yyvsp[0].num); ; 3293 3365 break;} 3294 3366 case 251: 3295 #line 1 605"parser.y"3296 { yyval. raw = yyvsp[-1].raw; ;3367 #line 1834 "parser.y" 3368 { yyval.num = (yyvsp[-2].num) + (yyvsp[0].num); ; 3297 3369 break;} 3298 3370 case 252: 3299 #line 1 609"parser.y"3300 { yyval. raw = yyvsp[0].raw; ;3371 #line 1835 "parser.y" 3372 { yyval.num = (yyvsp[-2].num) - (yyvsp[0].num); ; 3301 3373 break;} 3302 3374 case 253: 3303 #line 1 610"parser.y"3304 { yyval. raw = int2raw_data(yyvsp[0].num); ;3375 #line 1836 "parser.y" 3376 { yyval.num = (yyvsp[-2].num) | (yyvsp[0].num); ; 3305 3377 break;} 3306 3378 case 254: 3307 #line 1 611"parser.y"3308 { yyval. raw = long2raw_data(yyvsp[0].num); ;3379 #line 1837 "parser.y" 3380 { yyval.num = (yyvsp[-2].num) & (yyvsp[0].num); ; 3309 3381 break;} 3310 3382 case 255: 3311 #line 1 612"parser.y"3312 { yyval. raw = str2raw_data(yyvsp[0].str); ;3383 #line 1838 "parser.y" 3384 { yyval.num = (yyvsp[-2].num) * (yyvsp[0].num); ; 3313 3385 break;} 3314 3386 case 256: 3315 #line 1 613"parser.y"3316 { yyval. raw = merge_raw_data(yyvsp[-2].raw, yyvsp[0].raw); free(yyvsp[0].raw->data); free(yyvsp[0].raw); ;3387 #line 1839 "parser.y" 3388 { yyval.num = (yyvsp[-2].num) / (yyvsp[0].num); ; 3317 3389 break;} 3318 3390 case 257: 3319 #line 1 614"parser.y"3320 { yyval. raw = merge_raw_data_int(yyvsp[-2].raw,yyvsp[0].num); ;3391 #line 1840 "parser.y" 3392 { yyval.num = (yyvsp[-2].num) ^ (yyvsp[0].num); ; 3321 3393 break;} 3322 3394 case 258: 3323 #line 1 615"parser.y"3324 { yyval. raw = merge_raw_data_long(yyvsp[-2].raw,yyvsp[0].num); ;3395 #line 1841 "parser.y" 3396 { yyval.num = ~(yyvsp[0].num); ; 3325 3397 break;} 3326 3398 case 259: 3327 #line 1 616"parser.y"3328 { yyval. raw = merge_raw_data_str(yyvsp[-2].raw, yyvsp[0].str); ;3399 #line 1842 "parser.y" 3400 { yyval.num = -(yyvsp[0].num); ; 3329 3401 break;} 3330 3402 case 260: 3331 #line 1 623 "parser.y"3332 { yyval. iptr = 0; ;3403 #line 1843 "parser.y" 3404 { yyval.num = yyvsp[0].num; ; 3333 3405 break;} 3334 3406 case 261: 3335 #line 1 624 "parser.y"3336 { yyval. iptr = new_int(yyvsp[0].num); ;3407 #line 1844 "parser.y" 3408 { yyval.num = yyvsp[-1].num; ; 3337 3409 break;} 3338 3410 case 262: 3339 #line 1 626"parser.y"3340 { yyval.num = (yyvsp[0].num); ;3411 #line 1845 "parser.y" 3412 { yyval.num = yyvsp[0].num; ; 3341 3413 break;} 3342 3414 case 263: 3343 #line 1 629"parser.y"3344 { yyval.num = (yyvsp[-2].num) +(yyvsp[0].num); ;3415 #line 1846 "parser.y" 3416 { yyval.num = ~(yyvsp[0].num); ; 3345 3417 break;} 3346 3418 case 264: 3347 #line 1 630"parser.y"3348 { yyval.num = (yyvsp[-2].num) - (yyvsp[0].num); ;3419 #line 1849 "parser.y" 3420 { yyval.num = yyvsp[0].num; ; 3349 3421 break;} 3350 3422 case 265: 3351 #line 1631 "parser.y" 3352 { yyval.num = (yyvsp[-2].num) | (yyvsp[0].num); ; 3353 break;} 3354 case 266: 3355 #line 1632 "parser.y" 3356 { yyval.num = (yyvsp[-2].num) & (yyvsp[0].num); ; 3357 break;} 3358 case 267: 3359 #line 1633 "parser.y" 3360 { yyval.num = (yyvsp[-2].num) * (yyvsp[0].num); ; 3361 break;} 3362 case 268: 3363 #line 1634 "parser.y" 3364 { yyval.num = (yyvsp[-2].num) / (yyvsp[0].num); ; 3365 break;} 3366 case 269: 3367 #line 1635 "parser.y" 3368 { yyval.num = ~(yyvsp[0].num); ; 3369 break;} 3370 case 270: 3371 #line 1636 "parser.y" 3372 { yyval.num = -(yyvsp[0].num); ; 3373 break;} 3374 case 271: 3375 #line 1638 "parser.y" 3376 { yyval.num = yyvsp[-1].num; ; 3377 break;} 3378 case 272: 3379 #line 1639 "parser.y" 3380 { yyval.num = yyvsp[0].num; want_rscname = 0; ; 3381 break;} 3382 case 273: 3383 #line 1640 "parser.y" 3384 { yyval.num = ~(yyvsp[0].num); ; 3385 break;} 3386 case 274: 3387 #line 1643 "parser.y" 3423 #line 1850 "parser.y" 3388 3424 { yyval.num = yyvsp[0].num; ; 3389 3425 break;} 3390 case 275:3391 #line 1644 "parser.y"3392 { yyval.num = yyvsp[0].num; ;3393 break;}3394 3426 } 3395 3427 /* the action file gets copied in in place of this dollarsign */ 3396 #line 543 "/emx/share/bison.simple"3428 #line 498 "bison.simple" 3397 3429 3398 3430 … … 3590 3622 yystate = yyn; 3591 3623 goto yynewstate; 3592 3593 yyacceptlab: 3594 /* YYACCEPT comes here. */ 3595 if (yyfree_stacks) 3596 { 3597 free (yyss); 3598 free (yyvs); 3599 #ifdef YYLSP_NEEDED 3600 free (yyls); 3601 #endif 3602 } 3603 return 0; 3604 3605 yyabortlab: 3606 /* YYABORT comes here. */ 3607 if (yyfree_stacks) 3608 { 3609 free (yyss); 3610 free (yyvs); 3611 #ifdef YYLSP_NEEDED 3612 free (yyls); 3613 #endif 3614 } 3615 return 1; 3616 } 3617 #line 1647 "parser.y" 3624 } 3625 #line 1853 "parser.y" 3618 3626 3619 3627 /* Dialog specific functions */ 3620 dialog_t *dialog_style(style_t * st, dialog_t *dlg)3628 static dialog_t *dialog_style(style_t * st, dialog_t *dlg) 3621 3629 { 3622 3630 assert(dlg != NULL); … … 3642 3650 } 3643 3651 3644 dialog_t *dialog_exstyle(style_t *st, dialog_t *dlg)3652 static dialog_t *dialog_exstyle(style_t *st, dialog_t *dlg) 3645 3653 { 3646 3654 assert(dlg != NULL); … … 3666 3674 } 3667 3675 3668 dialog_t *dialog_caption(string_t *s, dialog_t *dlg)3676 static dialog_t *dialog_caption(string_t *s, dialog_t *dlg) 3669 3677 { 3670 3678 assert(dlg != NULL); … … 3675 3683 } 3676 3684 3677 dialog_t *dialog_font(font_id_t *f, dialog_t *dlg)3685 static dialog_t *dialog_font(font_id_t *f, dialog_t *dlg) 3678 3686 { 3679 3687 assert(dlg != NULL); … … 3684 3692 } 3685 3693 3686 dialog_t *dialog_class(name_id_t *n, dialog_t *dlg)3694 static dialog_t *dialog_class(name_id_t *n, dialog_t *dlg) 3687 3695 { 3688 3696 assert(dlg != NULL); … … 3693 3701 } 3694 3702 3695 dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg)3703 static dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg) 3696 3704 { 3697 3705 assert(dlg != NULL); … … 3702 3710 } 3703 3711 3704 dialog_t *dialog_language(language_t *l, dialog_t *dlg)3712 static dialog_t *dialog_language(language_t *l, dialog_t *dlg) 3705 3713 { 3706 3714 assert(dlg != NULL); … … 3711 3719 } 3712 3720 3713 dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg)3721 static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg) 3714 3722 { 3715 3723 assert(dlg != NULL); … … 3720 3728 } 3721 3729 3722 dialog_t *dialog_version(version_t *v, dialog_t *dlg)3730 static dialog_t *dialog_version(version_t *v, dialog_t *dlg) 3723 3731 { 3724 3732 assert(dlg != NULL); … … 3730 3738 3731 3739 /* Controls specific functions */ 3732 control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev)3740 static control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev) 3733 3741 { 3734 3742 /* Hm... this seems to be jammed in at all time... */ … … 3854 3862 } 3855 3863 3856 name_id_t *convert_ctlclass(name_id_t *cls)3857 { 3858 char *cc ;3864 static name_id_t *convert_ctlclass(name_id_t *cls) 3865 { 3866 char *cc = NULL; 3859 3867 int iclass; 3860 3868 … … 3892 3900 3893 3901 /* DialogEx specific functions */ 3894 dialogex_t *dialogex_style(style_t * st, dialogex_t *dlg)3902 static dialogex_t *dialogex_style(style_t * st, dialogex_t *dlg) 3895 3903 { 3896 3904 assert(dlg != NULL); … … 3916 3924 } 3917 3925 3918 dialogex_t *dialogex_exstyle(style_t * st, dialogex_t *dlg)3926 static dialogex_t *dialogex_exstyle(style_t * st, dialogex_t *dlg) 3919 3927 { 3920 3928 assert(dlg != NULL); … … 3940 3948 } 3941 3949 3942 dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg)3950 static dialogex_t *dialogex_caption(string_t *s, dialogex_t *dlg) 3943 3951 { 3944 3952 assert(dlg != NULL); … … 3949 3957 } 3950 3958 3951 dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg)3959 static dialogex_t *dialogex_font(font_id_t *f, dialogex_t *dlg) 3952 3960 { 3953 3961 assert(dlg != NULL); … … 3958 3966 } 3959 3967 3960 dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg)3968 static dialogex_t *dialogex_class(name_id_t *n, dialogex_t *dlg) 3961 3969 { 3962 3970 assert(dlg != NULL); … … 3967 3975 } 3968 3976 3969 dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg)3977 static dialogex_t *dialogex_menu(name_id_t *m, dialogex_t *dlg) 3970 3978 { 3971 3979 assert(dlg != NULL); … … 3976 3984 } 3977 3985 3978 dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg)3986 static dialogex_t *dialogex_language(language_t *l, dialogex_t *dlg) 3979 3987 { 3980 3988 assert(dlg != NULL); … … 3985 3993 } 3986 3994 3987 dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg)3995 static dialogex_t *dialogex_characteristics(characts_t *c, dialogex_t *dlg) 3988 3996 { 3989 3997 assert(dlg != NULL); … … 3994 4002 } 3995 4003 3996 dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg)4004 static dialogex_t *dialogex_version(version_t *v, dialogex_t *dlg) 3997 4005 { 3998 4006 assert(dlg != NULL); … … 4004 4012 4005 4013 /* Accelerator specific functions */ 4006 event_t *add_event(int key, int id, int flags, event_t *prev)4014 static event_t *add_event(int key, int id, int flags, event_t *prev) 4007 4015 { 4008 4016 event_t *ev = new_event(); … … 4020 4028 } 4021 4029 4022 event_t *add_string_event(string_t *key, int id, int flags, event_t *prev)4030 static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev) 4023 4031 { 4024 4032 int keycode = 0; … … 4028 4036 yyerror("Key code must be an ascii string"); 4029 4037 4030 if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] ) && !isdigit(key->str.cstr[0])))4038 if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] & 0xff) && !isdigit(key->str.cstr[0] & 0xff))) 4031 4039 yyerror("VIRTKEY code is not equal to ascii value"); 4032 4040 … … 4053 4061 4054 4062 /* MenuEx specific functions */ 4055 itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid)4063 static itemex_opt_t *new_itemex_opt(int id, int type, int state, int helpid) 4056 4064 { 4057 4065 itemex_opt_t *opt = (itemex_opt_t *)xmalloc(sizeof(itemex_opt_t)); … … 4064 4072 4065 4073 /* Raw data functions */ 4066 raw_data_t *load_file(string_t *name)4074 static raw_data_t *load_file(string_t *name) 4067 4075 { 4068 4076 FILE *fp; … … 4070 4078 if(name->type != str_char) 4071 4079 yyerror("Filename must be ASCII string"); 4072 4073 fp = open_include(name->str.cstr, 1 );4080 4081 fp = open_include(name->str.cstr, 1, NULL); 4074 4082 if(!fp) 4075 4083 yyerror("Cannot open file %s", name->str.cstr); … … 4081 4089 fread(rd->data, rd->size, 1, fp); 4082 4090 fclose(fp); 4083 HEAPCHECK();4084 4091 return rd; 4085 4092 } 4086 4093 4087 raw_data_t *int2raw_data(int i)4094 static raw_data_t *int2raw_data(int i) 4088 4095 { 4089 4096 raw_data_t *rd; … … 4095 4102 rd->size = sizeof(short); 4096 4103 rd->data = (char *)xmalloc(rd->size); 4097 *(short *)(rd->data) = (short)i; 4104 switch(byteorder) 4105 { 4106 #ifdef WORDS_BIGENDIAN 4107 default: 4108 #endif 4109 case WRC_BO_BIG: 4110 rd->data[0] = HIBYTE(i); 4111 rd->data[1] = LOBYTE(i); 4112 break; 4113 4114 #ifndef WORDS_BIGENDIAN 4115 default: 4116 #endif 4117 case WRC_BO_LITTLE: 4118 rd->data[1] = HIBYTE(i); 4119 rd->data[0] = LOBYTE(i); 4120 break; 4121 } 4098 4122 return rd; 4099 4123 } 4100 4124 4101 raw_data_t *long2raw_data(int i)4125 static raw_data_t *long2raw_data(int i) 4102 4126 { 4103 4127 raw_data_t *rd; … … 4105 4129 rd->size = sizeof(int); 4106 4130 rd->data = (char *)xmalloc(rd->size); 4107 *(int *)(rd->data) = i; 4131 switch(byteorder) 4132 { 4133 #ifdef WORDS_BIGENDIAN 4134 default: 4135 #endif 4136 case WRC_BO_BIG: 4137 rd->data[0] = HIBYTE(HIWORD(i)); 4138 rd->data[1] = LOBYTE(HIWORD(i)); 4139 rd->data[2] = HIBYTE(LOWORD(i)); 4140 rd->data[3] = LOBYTE(LOWORD(i)); 4141 break; 4142 4143 #ifndef WORDS_BIGENDIAN 4144 default: 4145 #endif 4146 case WRC_BO_LITTLE: 4147 rd->data[3] = HIBYTE(HIWORD(i)); 4148 rd->data[2] = LOBYTE(HIWORD(i)); 4149 rd->data[1] = HIBYTE(LOWORD(i)); 4150 rd->data[0] = LOBYTE(LOWORD(i)); 4151 break; 4152 } 4108 4153 return rd; 4109 4154 } 4110 4155 4111 raw_data_t *str2raw_data(string_t *str)4156 static raw_data_t *str2raw_data(string_t *str) 4112 4157 { 4113 4158 raw_data_t *rd; … … 4115 4160 rd->size = str->size * (str->type == str_char ? 1 : 2); 4116 4161 rd->data = (char *)xmalloc(rd->size); 4117 memcpy(rd->data, str->str.cstr, rd->size); 4162 if(str->type == str_char) 4163 memcpy(rd->data, str->str.cstr, rd->size); 4164 else if(str->type == str_unicode) 4165 { 4166 int i; 4167 switch(byteorder) 4168 { 4169 #ifdef WORDS_BIGENDIAN 4170 default: 4171 #endif 4172 case WRC_BO_BIG: 4173 for(i = 0; i < str->size; i++) 4174 { 4175 rd->data[2*i + 0] = HIBYTE((WORD)str->str.wstr[i]); 4176 rd->data[2*i + 1] = LOBYTE((WORD)str->str.wstr[i]); 4177 } 4178 break; 4179 #ifndef WORDS_BIGENDIAN 4180 default: 4181 #endif 4182 case WRC_BO_LITTLE: 4183 for(i = 0; i < str->size; i++) 4184 { 4185 rd->data[2*i + 1] = HIBYTE((WORD)str->str.wstr[i]); 4186 rd->data[2*i + 0] = LOBYTE((WORD)str->str.wstr[i]); 4187 } 4188 break; 4189 } 4190 } 4191 else 4192 internal_error(__FILE__, __LINE__, "Invalid stringtype"); 4118 4193 return rd; 4119 4194 } 4120 4195 4121 raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2)4196 static raw_data_t *merge_raw_data(raw_data_t *r1, raw_data_t *r2) 4122 4197 { 4123 4198 r1->data = xrealloc(r1->data, r1->size + r2->size); … … 4127 4202 } 4128 4203 4129 raw_data_t *merge_raw_data_int(raw_data_t *r1, int i)4204 static raw_data_t *merge_raw_data_int(raw_data_t *r1, int i) 4130 4205 { 4131 4206 raw_data_t *t = int2raw_data(i); … … 4136 4211 } 4137 4212 4138 raw_data_t *merge_raw_data_long(raw_data_t *r1, int i)4213 static raw_data_t *merge_raw_data_long(raw_data_t *r1, int i) 4139 4214 { 4140 4215 raw_data_t *t = long2raw_data(i); … … 4145 4220 } 4146 4221 4147 raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str)4222 static raw_data_t *merge_raw_data_str(raw_data_t *r1, string_t *str) 4148 4223 { 4149 4224 raw_data_t *t = str2raw_data(str); … … 4155 4230 4156 4231 /* Function the go back in a list to get the head */ 4157 menu_item_t *get_item_head(menu_item_t *p)4232 static menu_item_t *get_item_head(menu_item_t *p) 4158 4233 { 4159 4234 if(!p) … … 4164 4239 } 4165 4240 4166 menuex_item_t *get_itemex_head(menuex_item_t *p)4241 static menuex_item_t *get_itemex_head(menuex_item_t *p) 4167 4242 { 4168 4243 if(!p) … … 4173 4248 } 4174 4249 4175 resource_t *get_resource_head(resource_t *p)4250 static resource_t *get_resource_head(resource_t *p) 4176 4251 { 4177 4252 if(!p) … … 4182 4257 } 4183 4258 4184 ver_block_t *get_ver_block_head(ver_block_t *p)4259 static ver_block_t *get_ver_block_head(ver_block_t *p) 4185 4260 { 4186 4261 if(!p) … … 4191 4266 } 4192 4267 4193 ver_value_t *get_ver_value_head(ver_value_t *p)4268 static ver_value_t *get_ver_value_head(ver_value_t *p) 4194 4269 { 4195 4270 if(!p) … … 4200 4275 } 4201 4276 4202 control_t *get_control_head(control_t *p)4277 static control_t *get_control_head(control_t *p) 4203 4278 { 4204 4279 if(!p) … … 4209 4284 } 4210 4285 4211 event_t *get_event_head(event_t *p)4286 static event_t *get_event_head(event_t *p) 4212 4287 { 4213 4288 if(!p) … … 4219 4294 4220 4295 /* Find a stringtable with given language */ 4221 st ringtable_t *find_stringtable(lvc_t *lvc)4296 static stringtable_t *find_stringtable(lvc_t *lvc) 4222 4297 { 4223 4298 stringtable_t *stt; … … 4231 4306 { 4232 4307 if(stt->lvc.language->id == lvc->language->id 4233 && stt->lvc.language-> id == lvc->language->id)4308 && stt->lvc.language->sub == lvc->language->sub) 4234 4309 { 4235 4310 /* Found a table with the same language */ … … 4255 4330 /* qsort sorting function for string table entries */ 4256 4331 #define STE(p) ((stt_entry_t *)(p)) 4257 int sort_stt_entry(const void *e1, const void *e2)4332 static int sort_stt_entry(const void *e1, const void *e2) 4258 4333 { 4259 4334 return STE(e1)->id - STE(e2)->id; … … 4261 4336 #undef STE 4262 4337 4263 resource_t *build_stt_resources(stringtable_t *stthead)4338 static resource_t *build_stt_resources(stringtable_t *stthead) 4264 4339 { 4265 4340 stringtable_t *stt; … … 4359 4434 } 4360 4435 4361 /* Cursor and icon splitter functions */ 4362 typedef struct { 4363 language_t lan; 4364 int id; 4365 } id_alloc_t; 4366 4367 static int get_new_id(id_alloc_t **list, int *n, language_t *lan) 4368 { 4369 int i; 4370 assert(lan != NULL); 4371 assert(list != NULL); 4372 assert(n != NULL); 4373 4374 if(!*list) 4375 { 4376 *list = (id_alloc_t *)xmalloc(sizeof(id_alloc_t)); 4377 *n = 1; 4378 (*list)[0].lan = *lan; 4379 (*list)[0].id = 1; 4380 return 1; 4381 } 4382 4383 for(i = 0; i < *n; i++) 4384 { 4385 if((*list)[i].lan.id == lan->id && (*list)[i].lan.sub == lan->sub) 4386 return ++((*list)[i].id); 4387 } 4388 4389 *list = (id_alloc_t *)xrealloc(*list, sizeof(id_alloc_t) * (*n+1)); 4390 (*list)[*n].lan = *lan; 4391 (*list)[*n].id = 1; 4392 *n += 1; 4393 return 1; 4394 } 4395 4396 int alloc_icon_id(language_t *lan) 4397 { 4398 static id_alloc_t *idlist = NULL; 4399 static int nid = 0; 4400 4401 return get_new_id(&idlist, &nid, lan); 4402 } 4403 4404 int alloc_cursor_id(language_t *lan) 4405 { 4406 static id_alloc_t *idlist = NULL; 4407 static int nid = 0; 4408 4409 return get_new_id(&idlist, &nid, lan); 4410 } 4411 4412 #define BPTR(base) ((char *)(rd->data + (base))) 4413 #define WPTR(base) ((WORD *)(rd->data + (base))) 4414 #define DPTR(base) ((DWORD *)(rd->data + (base))) 4415 void split_icons(raw_data_t *rd, icon_group_t *icog, int *nico) 4416 { 4417 int cnt; 4418 int i; 4419 icon_dir_entry_t *ide; 4420 icon_t *ico; 4421 icon_t *list = NULL; 4422 4423 /* FIXME: Distinguish between normal and animated icons (RIFF format) */ 4424 if(WPTR(0)[1] != 1) 4425 yyerror("Icon resource data has invalid type id %d", WPTR(0)[1]); 4426 cnt = WPTR(0)[2]; 4427 ide = (icon_dir_entry_t *)&(WPTR(0)[3]); 4428 for(i = 0; i < cnt; i++) 4429 { 4430 ico = new_icon(); 4431 ico->id = alloc_icon_id(icog->lvc.language); 4432 ico->lvc.language = dup_language(icog->lvc.language); 4433 if(ide[i].offset > rd->size 4434 || ide[i].offset + ide[i].ressize > rd->size) 4435 yyerror("Icon resource data corrupt"); 4436 ico->width = ide[i].width; 4437 ico->height = ide[i].height; 4438 ico->nclr = ide[i].nclr; 4439 ico->planes = ide[i].planes; 4440 ico->bits = ide[i].bits; 4441 if(!ico->planes) 4442 { 4443 /* Argh! They did not fill out the resdir structure */ 4444 ico->planes = ((BITMAPINFOHEADER *)BPTR(ide[i].offset))->biPlanes; 4445 } 4446 if(!ico->bits) 4447 { 4448 /* Argh! They did not fill out the resdir structure */ 4449 ico->bits = ((BITMAPINFOHEADER *)BPTR(ide[i].offset))->biBitCount; 4450 } 4451 ico->data = new_raw_data(); 4452 copy_raw_data(ico->data, rd, ide[i].offset, ide[i].ressize); 4453 if(!list) 4454 { 4455 list = ico; 4456 } 4457 else 4458 { 4459 ico->next = list; 4460 list->prev = ico; 4461 list = ico; 4462 } 4463 } 4464 icog->iconlist = list; 4465 *nico = cnt; 4466 } 4467 4468 void split_cursors(raw_data_t *rd, cursor_group_t *curg, int *ncur) 4469 { 4470 int cnt; 4471 int i; 4472 cursor_dir_entry_t *cde; 4473 cursor_t *cur; 4474 cursor_t *list = NULL; 4475 4476 /* FIXME: Distinguish between normal and animated cursors (RIFF format)*/ 4477 if(WPTR(0)[1] != 2) 4478 yyerror("Cursor resource data has invalid type id %d", WPTR(0)[1]); 4479 cnt = WPTR(0)[2]; 4480 cde = (cursor_dir_entry_t *)&(WPTR(0)[3]); 4481 for(i = 0; i < cnt; i++) 4482 { 4483 cur = new_cursor(); 4484 cur->id = alloc_cursor_id(curg->lvc.language); 4485 cur->lvc.language = dup_language(curg->lvc.language); 4486 if(cde[i].offset > rd->size 4487 || cde[i].offset + cde[i].ressize > rd->size) 4488 yyerror("Cursor resource data corrupt"); 4489 cur->width = cde[i].width; 4490 cur->height = cde[i].height; 4491 cur->nclr = cde[i].nclr; 4492 /* The next two are to support color cursors */ 4493 cur->planes = ((BITMAPINFOHEADER *)BPTR(cde[i].offset))->biPlanes; 4494 cur->bits = ((BITMAPINFOHEADER *)BPTR(cde[i].offset))->biBitCount; 4495 if(!win32 && (cur->planes != 1 || cur->bits != 1)) 4496 yywarning("Win16 cursor contains colors"); 4497 cur->xhot = cde[i].xhot; 4498 cur->yhot = cde[i].yhot; 4499 cur->data = new_raw_data(); 4500 copy_raw_data(cur->data, rd, cde[i].offset, cde[i].ressize); 4501 if(!list) 4502 { 4503 list = cur; 4504 } 4505 else 4506 { 4507 cur->next = list; 4508 list->prev = cur; 4509 list = cur; 4510 } 4511 } 4512 curg->cursorlist = list; 4513 *ncur = cnt; 4514 } 4515 4516 #undef BPTR 4517 #undef WPTR 4518 #undef DPTR 4519 4520 4521 toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec) 4436 4437 static toolbar_item_t *ins_tlbr_button(toolbar_item_t *prev, toolbar_item_t *idrec) 4522 4438 { 4523 4439 idrec->prev = prev; … … 4528 4444 } 4529 4445 4530 toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems)4446 static toolbar_item_t *get_tlbr_buttons_head(toolbar_item_t *p, int *nitems) 4531 4447 { 4532 4448 if(!p) … … 4534 4450 *nitems = 0; 4535 4451 return NULL; 4536 } 4452 } 4537 4453 4538 4454 *nitems = 1; … … 4547 4463 } 4548 4464 4465 static string_t *make_filename(string_t *str) 4466 { 4467 char *cptr; 4468 4469 if(str->type != str_char) 4470 yyerror("Cannot handle UNICODE filenames"); 4471 4472 /* Remove escaped backslash and convert to forward */ 4473 cptr = str->str.cstr; 4474 for(cptr = str->str.cstr; (cptr = strchr(cptr, '\\')) != NULL; cptr++) 4475 { 4476 if(cptr[1] == '\\') 4477 { 4478 memmove(cptr, cptr+1, strlen(cptr)); 4479 str->size--; 4480 } 4481 *cptr = '/'; 4482 } 4483 4484 /* Convert to lower case. Seems to be reasonable to do */ 4485 for(cptr = str->str.cstr; !leave_case && *cptr; cptr++) 4486 { 4487 *cptr = tolower(*cptr); 4488 } 4489 return str; 4490 } 4491 4492 /* 4493 * Process all resources to extract fonts and build 4494 * a fontdir resource. 4495 * 4496 * Note: MS' resource compiler (build 1472) does not 4497 * handle font resources with different languages. 4498 * The fontdir is generated in the last active language 4499 * and font identifiers must be unique across the entire 4500 * source. 4501 * This is not logical considering the localization 4502 * constraints of all other resource types. MS has, 4503 * most probably, never testet localized fonts. However, 4504 * using fontresources is rare, so it might not occur 4505 * in normal applications. 4506 * Wine does require better localization because a lot 4507 * of languages are coded into the same executable. 4508 * Therefore, I will generate fontdirs for *each* 4509 * localized set of fonts. 4510 */ 4511 static resource_t *build_fontdir(resource_t **fnt, int nfnt) 4512 { 4513 static int once = 0; 4514 if(!once) 4515 { 4516 warning("Need to parse fonts, not yet implemented (fnt: %p, nfnt: %d)", fnt, nfnt); 4517 once++; 4518 } 4519 return NULL; 4520 } 4521 4522 static resource_t *build_fontdirs(resource_t *tail) 4523 { 4524 resource_t *rsc; 4525 resource_t *lst = NULL; 4526 resource_t **fnt = NULL; /* List of all fonts */ 4527 int nfnt = 0; 4528 resource_t **fnd = NULL; /* List of all fontdirs */ 4529 int nfnd = 0; 4530 resource_t **lanfnt = NULL; 4531 int nlanfnt = 0; 4532 int i; 4533 name_id_t nid; 4534 string_t str; 4535 int fntleft; 4536 4537 nid.type = name_str; 4538 nid.name.s_name = &str; 4539 str.type = str_char; 4540 str.str.cstr = "FONTDIR"; 4541 str.size = 7; 4542 4543 /* Extract all fonts and fontdirs */ 4544 for(rsc = tail; rsc; rsc = rsc->prev) 4545 { 4546 if(rsc->type == res_fnt) 4547 { 4548 nfnt++; 4549 fnt = xrealloc(fnt, nfnt * sizeof(*fnt)); 4550 fnt[nfnt-1] = rsc; 4551 } 4552 else if(rsc->type == res_fntdir) 4553 { 4554 nfnd++; 4555 fnd = xrealloc(fnd, nfnd * sizeof(*fnd)); 4556 fnd[nfnd-1] = rsc; 4557 } 4558 } 4559 4560 /* Verify the name of the present fontdirs */ 4561 for(i = 0; i < nfnd; i++) 4562 { 4563 if(compare_name_id(&nid, fnd[i]->name)) 4564 { 4565 warning("User supplied FONTDIR entry has an invalid name '%s', ignored", 4566 get_nameid_str(fnd[i]->name)); 4567 fnd[i] = NULL; 4568 } 4569 } 4570 4571 /* Sanity check */ 4572 if(nfnt == 0) 4573 { 4574 if(nfnd != 0) 4575 warning("Found %d FONTDIR entries without any fonts present", nfnd); 4576 goto clean; 4577 } 4578 4579 /* Copy space */ 4580 lanfnt = xmalloc(nfnt * sizeof(*lanfnt)); 4581 4582 /* Get all fonts covered by fontdirs */ 4583 for(i = 0; i < nfnd; i++) 4584 { 4585 int j; 4586 WORD cnt; 4587 int isswapped = 0; 4588 4589 if(!fnd[i]) 4590 continue; 4591 for(j = 0; j < nfnt; j++) 4592 { 4593 if(!fnt[j]) 4594 continue; 4595 if(fnt[j]->lan->id == fnd[i]->lan->id && fnt[j]->lan->sub == fnd[i]->lan->sub) 4596 { 4597 lanfnt[nlanfnt] = fnt[j]; 4598 nlanfnt++; 4599 fnt[j] = NULL; 4600 } 4601 } 4602 4603 cnt = *(WORD *)fnd[i]->res.fnd->data->data; 4604 if(nlanfnt == cnt) 4605 isswapped = 0; 4606 else if(nlanfnt == BYTESWAP_WORD(cnt)) 4607 isswapped = 1; 4608 else 4609 error("FONTDIR for language %d,%d has wrong count (%d, expected %d)", 4610 fnd[i]->lan->id, fnd[i]->lan->sub, cnt, nlanfnt); 4611 #ifdef WORDS_BIGENDIAN 4612 if((byteorder == WRC_BO_LITTLE && !isswapped) || (byteorder != WRC_BO_LITTLE && isswapped)) 4613 #else 4614 if((byteorder == WRC_BO_BIG && !isswapped) || (byteorder != WRC_BO_BIG && isswapped)) 4615 #endif 4616 { 4617 internal_error(__FILE__, __LINE__, "User supplied FONTDIR needs byteswapping"); 4618 } 4619 } 4620 4621 /* We now have fonts left where we need to make a fontdir resource */ 4622 for(i = fntleft = 0; i < nfnt; i++) 4623 { 4624 if(fnt[i]) 4625 fntleft++; 4626 } 4627 while(fntleft) 4628 { 4629 /* Get fonts of same language in lanfnt[] */ 4630 for(i = nlanfnt = 0; i < nfnt; i++) 4631 { 4632 if(fnt[i]) 4633 { 4634 if(!nlanfnt) 4635 { 4636 addlanfnt: 4637 lanfnt[nlanfnt] = fnt[i]; 4638 nlanfnt++; 4639 fnt[i] = NULL; 4640 fntleft--; 4641 } 4642 else if(fnt[i]->lan->id == lanfnt[0]->lan->id && fnt[i]->lan->sub == lanfnt[0]->lan->sub) 4643 goto addlanfnt; 4644 } 4645 } 4646 /* and build a fontdir */ 4647 rsc = build_fontdir(lanfnt, nlanfnt); 4648 if(rsc) 4649 { 4650 if(lst) 4651 { 4652 lst->next = rsc; 4653 rsc->prev = lst; 4654 } 4655 lst = rsc; 4656 } 4657 } 4658 4659 free(lanfnt); 4660 clean: 4661 if(fnt) 4662 free(fnt); 4663 if(fnd) 4664 free(fnd); 4665 return lst; 4666 } 4667 4668 /* 4669 * This gets invoked to determine whether the next resource 4670 * is to be of a standard-type (e.g. bitmaps etc.), or should 4671 * be a user-type resource. This function is required because 4672 * there is the _possibility_ of a lookahead token in the 4673 * parser, which is generated from the "expr" state in the 4674 * "nameid" parsing. 4675 * 4676 * The general resource format is: 4677 * <identifier> <type> <flags> <resourcebody> 4678 * 4679 * The <identifier> can either be tIDENT or "expr". The latter 4680 * will always generate a lookahead, which is the <type> of the 4681 * resource to parse. Otherwise, we need to get a new token from 4682 * the scanner to determine the next step. 4683 * 4684 * The problem arrises when <type> is numerical. This case should 4685 * map onto default resource-types and be parsed as such instead 4686 * of being mapped onto user-type resources. 4687 * 4688 * The trick lies in the fact that yacc (bison) doesn't care about 4689 * intermediate changes of the lookahead while reducing a rule. We 4690 * simply replace the lookahead with a token that will result in 4691 * a shift to the appropriate rule for the specific resource-type. 4692 */ 4693 static int rsrcid_to_token(int lookahead) 4694 { 4695 int token; 4696 char *type = "?"; 4697 4698 /* Get a token if we don't have one yet */ 4699 if(lookahead == YYEMPTY) 4700 lookahead = YYLEX; 4701 4702 /* Only numbers are possibly interesting */ 4703 switch(lookahead) 4704 { 4705 case tNUMBER: 4706 case tLNUMBER: 4707 break; 4708 default: 4709 return lookahead; 4710 } 4711 4712 token = lookahead; 4713 4714 switch(yylval.num) 4715 { 4716 case WRC_RT_CURSOR: 4717 type = "CURSOR"; 4718 token = tCURSOR; 4719 break; 4720 case WRC_RT_ICON: 4721 type = "ICON"; 4722 token = tICON; 4723 break; 4724 case WRC_RT_BITMAP: 4725 type = "BITMAP"; 4726 token = tBITMAP; 4727 break; 4728 case WRC_RT_FONT: 4729 type = "FONT"; 4730 token = tFONT; 4731 break; 4732 case WRC_RT_FONTDIR: 4733 type = "FONTDIR"; 4734 token = tFONTDIR; 4735 break; 4736 case WRC_RT_RCDATA: 4737 type = "RCDATA"; 4738 token = tRCDATA; 4739 break; 4740 case WRC_RT_MESSAGETABLE: 4741 type = "MESSAGETABLE"; 4742 token = tMESSAGETABLE; 4743 break; 4744 case WRC_RT_DLGINIT: 4745 type = "DLGINIT"; 4746 token = tDLGINIT; 4747 break; 4748 case WRC_RT_ACCELERATOR: 4749 type = "ACCELERATOR"; 4750 token = tACCELERATORS; 4751 break; 4752 case WRC_RT_MENU: 4753 type = "MENU"; 4754 token = tMENU; 4755 break; 4756 case WRC_RT_DIALOG: 4757 type = "DIALOG"; 4758 token = tDIALOG; 4759 break; 4760 case WRC_RT_VERSION: 4761 type = "VERSION"; 4762 token = tVERSIONINFO; 4763 break; 4764 case WRC_RT_TOOLBAR: 4765 type = "TOOLBAR"; 4766 token = tTOOLBAR; 4767 break; 4768 4769 case WRC_RT_STRING: 4770 type = "STRINGTABLE"; 4771 break; 4772 4773 case WRC_RT_ANICURSOR: 4774 case WRC_RT_ANIICON: 4775 case WRC_RT_GROUP_CURSOR: 4776 case WRC_RT_GROUP_ICON: 4777 yywarning("Usertype uses reserved type-ID %d, which is auto-generated", yylval.num); 4778 return lookahead; 4779 4780 case WRC_RT_DLGINCLUDE: 4781 case WRC_RT_PLUGPLAY: 4782 case WRC_RT_VXD: 4783 case WRC_RT_HTML: 4784 yywarning("Usertype uses reserved type-ID %d, which is not supported by wrc", yylval.num); 4785 default: 4786 return lookahead; 4787 } 4788 4789 if(remap) 4790 return token; 4791 else 4792 yywarning("Usertype uses reserved type-ID %d, which is used by %s", yylval.num, type); 4793 return lookahead; 4794 } 4795
Note:
See TracChangeset
for help on using the changeset viewer.