📄 rcparse.y
字号:
} | CONTROL optstringc numexpr cnumexpr control_styleexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data { $$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10); if (dialog.ex == NULL) rcparse_warning (_("help ID requires DIALOGEX")); $$->help = $11; $$->data = $12; } | CONTROL optstringc numexpr ',' QUOTEDSTRING control_styleexpr cnumexpr cnumexpr cnumexpr cnumexpr optcnumexpr opt_control_data { $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11); if ($12 != NULL) { if (dialog.ex == NULL) rcparse_warning ("control data requires DIALOGEX"); $$->data = $12; } $$->class.named = 1; unicode_from_ascii(&$$->class.u.n.length, &$$->class.u.n.name, $5); } | CONTROL optstringc numexpr ',' QUOTEDSTRING control_styleexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data { $$ = define_control ($2, $3, $7, $8, $9, $10, 0, style, $11); if (dialog.ex == NULL) rcparse_warning ("help ID requires DIALOGEX"); $$->help = $12; $$->data = $13; $$->class.named = 1; unicode_from_ascii(&$$->class.u.n.length, &$$->class.u.n.name, $5); } | CTEXT { default_style = SS_CENTER | WS_GROUP; base_style = SS_CENTER; class = CTL_STATIC; } control_params { $$ = $3; } | DEFPUSHBUTTON { default_style = BS_DEFPUSHBUTTON | WS_TABSTOP; base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; class = CTL_BUTTON; } control_params { $$ = $3; } | EDITTEXT { default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class = CTL_EDIT; } control_params { $$ = $3; } | GROUPBOX { default_style = BS_GROUPBOX; base_style = BS_GROUPBOX; class = CTL_BUTTON; } control_params { $$ = $3; } | HEDIT { default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class = CTL_EDIT; } control_params { $$ = $3; if (dialog.ex == NULL) rcparse_warning (_("IEDIT requires DIALOGEX")); res_string_to_id (&$$->class, "HEDIT"); } | ICON resref numexpr cnumexpr cnumexpr opt_control_data { $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $6, dialog.ex); } | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data { $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $8, dialog.ex); } | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr icon_styleexpr optcnumexpr opt_control_data { $$ = define_icon_control ($2, $3, $4, $5, style, $9, 0, $10, dialog.ex); } | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr icon_styleexpr cnumexpr cnumexpr opt_control_data { $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11, dialog.ex); } | IEDIT { default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class = CTL_EDIT; } control_params { $$ = $3; if (dialog.ex == NULL) rcparse_warning (_("IEDIT requires DIALOGEX")); res_string_to_id (&$$->class, "IEDIT"); } | LISTBOX { default_style = LBS_NOTIFY | WS_BORDER; base_style = LBS_NOTIFY | WS_BORDER; class = CTL_LISTBOX; } control_params { $$ = $3; } | LTEXT { default_style = SS_LEFT | WS_GROUP; base_style = SS_LEFT; class = CTL_STATIC; } control_params { $$ = $3; } | PUSHBOX { default_style = BS_PUSHBOX | WS_TABSTOP; base_style = BS_PUSHBOX; class = CTL_BUTTON; } control_params { $$ = $3; } | PUSHBUTTON { default_style = BS_PUSHBUTTON | WS_TABSTOP; base_style = BS_PUSHBUTTON | WS_TABSTOP; class = CTL_BUTTON; } control_params { $$ = $3; } | RADIOBUTTON { default_style = BS_RADIOBUTTON | WS_TABSTOP; base_style = BS_RADIOBUTTON; class = CTL_BUTTON; } control_params { $$ = $3; } | RTEXT { default_style = SS_RIGHT | WS_GROUP; base_style = SS_RIGHT; class = CTL_STATIC; } control_params { $$ = $3; } | SCROLLBAR { default_style = SBS_HORZ; base_style = 0; class = CTL_SCROLLBAR; } control_params { $$ = $3; } | STATE3 { default_style = BS_3STATE | WS_TABSTOP; base_style = BS_3STATE; class = CTL_BUTTON; } control_params { $$ = $3; } | USERBUTTON QUOTEDSTRING ',' numexpr ',' numexpr ',' numexpr ',' numexpr ',' numexpr ',' { style = WS_CHILD | WS_VISIBLE; } styleexpr optcnumexpr { $$ = define_control ($2, $4, $6, $8, $10, $12, CTL_BUTTON, style, $16); } ;/* Parameters for a control. The static variables DEFAULT_STYLE, BASE_STYLE, and CLASS must be initialized before this nonterminal is used. DEFAULT_STYLE is the style to use if no style expression is specified. BASE_STYLE is the base style to use if a style expression is specified; the style expression modifies the base style. CLASS is the class of the control. */control_params: optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data { $$ = define_control ($1, $2, $3, $4, $5, $6, class, default_style | WS_CHILD | WS_VISIBLE, 0); if ($7 != NULL) { if (dialog.ex == NULL) rcparse_warning (_("control data requires DIALOGEX")); $$->data = $7; } } | optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr control_params_styleexpr optcnumexpr opt_control_data { $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8); if ($9 != NULL) { if (dialog.ex == NULL) rcparse_warning (_("control data requires DIALOGEX")); $$->data = $9; } } | optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr control_params_styleexpr cnumexpr cnumexpr opt_control_data { $$ = define_control ($1, $2, $3, $4, $5, $6, class, style, $8); if (dialog.ex == NULL) rcparse_warning (_("help ID requires DIALOGEX")); $$->help = $9; $$->data = $10; } ;optstringc: /* empty */ { $$ = NULL; } | QUOTEDSTRING { $$ = $1; } | QUOTEDSTRING ',' { $$ = $1; } ;opt_control_data: /* empty */ { $$ = NULL; } | BEG optrcdata_data END { $$ = $2.first; } ;/* These only exist to parse a reduction out of a common case. */control_styleexpr: ',' { style = WS_CHILD | WS_VISIBLE; } styleexpr ;icon_styleexpr: ',' { style = SS_ICON | WS_CHILD | WS_VISIBLE; } styleexpr ;control_params_styleexpr: ',' { style = base_style | WS_CHILD | WS_VISIBLE; } styleexpr ;/* Font resources. */font: id FONT memflags_move_discard file_name { define_font ($1, &$3, $4); } ;/* Icon resources. */icon: id ICON memflags_move_discard file_name { define_icon ($1, &$3, $4); } ;/* Language command. This changes the static variable language, which affects all subsequent resources. */language: LANGUAGE numexpr cnumexpr { language = $2 | ($3 << 8); } ;/* Menu resources. */menu: id MENU suboptions BEG menuitems END { define_menu ($1, &$3, $5); } ;menuitems: /* empty */ { $$ = NULL; } | menuitems menuitem { if ($1 == NULL) $$ = $2; else { struct menuitem **pp; for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next) ; *pp = $2; $$ = $1; } } ;menuitem: MENUITEM QUOTEDSTRING cnumexpr menuitem_flags { $$ = define_menuitem ($2, $3, $4, 0, 0, NULL); } | MENUITEM SEPARATOR { $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL); } | POPUP QUOTEDSTRING menuitem_flags BEG menuitems END { $$ = define_menuitem ($2, 0, $3, 0, 0, $5); } ;menuitem_flags: /* empty */ { $$ = 0; } | menuitem_flags ',' menuitem_flag { $$ = $1 | $3; } | menuitem_flags menuitem_flag { $$ = $1 | $2; } ;menuitem_flag: CHECKED { $$ = MENUITEM_CHECKED; } | GRAYED { $$ = MENUITEM_GRAYED; } | HELP { $$ = MENUITEM_HELP; } | INACTIVE { $$ = MENUITEM_INACTIVE; } | MENUBARBREAK { $$ = MENUITEM_MENUBARBREAK; } | MENUBREAK { $$ = MENUITEM_MENUBREAK; } ;/* Menuex resources. */menuex: id MENUEX suboptions BEG menuexitems END { define_menu ($1, &$3, $5); } ;menuexitems: /* empty */ { $$ = NULL; } | menuexitems menuexitem { if ($1 == NULL) $$ = $2; else { struct menuitem **pp; for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next) ; *pp = $2; $$ = $1; } } ;menuexitem: MENUITEM QUOTEDSTRING { $$ = define_menuitem ($2, 0, 0, 0, 0, NULL); } | MENUITEM QUOTEDSTRING cnumexpr { $$ = define_menuitem ($2, $3, 0, 0, 0, NULL); } | MENUITEM QUOTEDSTRING cnumexpr cnumexpr optcnumexpr { $$ = define_menuitem ($2, $3, $4, $5, 0, NULL); } | MENUITEM SEPARATOR { $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL); } | POPUP QUOTEDSTRING BEG menuexitems END { $$ = define_menuitem ($2, 0, 0, 0, 0, $4); } | POPUP QUOTEDSTRING cnumexpr BEG menuexitems END { $$ = define_menuitem ($2, $3, 0, 0, 0, $5); } | POPUP QUOTEDSTRING cnumexpr cnumexpr BEG menuexitems END { $$ = define_menuitem ($2, $3, $4, 0, 0, $6); } | POPUP QUOTEDSTRING cnumexpr cnumexpr cnumexpr optcnumexpr BEG menuexitems END { $$ = define_menuitem ($2, $3, $4, $5, $6, $8); } ;/* Messagetable resources. */messagetable: id MESSAGETABLE memflags_move file_name { define_messagetable ($1, &$3, $4); } ;/* Rcdata resources. */rcdata: id RCDATA suboptions BEG optrcdata_data END { define_rcdata ($1, &$3, $5.first); } ;/* We use a different lexing algorithm, because rcdata strings may contain embedded null bytes, and we need to know the length to use. */optrcdata_data: { rcparse_rcdata (); } optrcdata_data_int { rcparse_normal (); $$ = $2; } ;optrcdata_data_int: /* empty */ { $$.first = NULL; $$.last = NULL; } | rcdata_data { $$ = $1; } ;rcdata_data: SIZEDSTRING { struct rcdata_item *ri; ri = define_rcdata_string ($1.s, $1.length); $$.first = ri; $$.last = ri; } | sizednumexpr { struct rcdata_item *ri; ri = define_rcdata_number ($1.val, $1.dword); $$.first = ri; $$.last = ri; } | rcdata_data ',' SIZEDSTRING { struct rcdata_item *ri; ri = define_rcdata_string ($3.s, $3.length); $$.first = $1.first; $1.last->next = ri; $$.last = ri;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -