4 * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
5 * ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
6 * the full copyright text.
11 /* "$TOG: Uil.y /main/11 1998/01/23 15:05:38 mgreess $" */
13 * (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
19 ** DECwindows Toolkit User Interface Language Compiler (UIL)
23 ** YACC Grammar for UIL
30 /* Begin user declarations section */
33 #include "UilCompGl.h"
35 #define YYSTYPE yystype
39 /* Declare and initialize stack entry for epsilon productions. */
41 YYSTYPE gz_yynullval = {NULL,0,0,0,0};
43 /* Declare token to aid in saving source context */
47 /* End user declarations section */
51 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
52 * token name token value token class *
53 * ---------- ----------- ----------- *
54 *----------------------------------------------------------------------------*
58 ** terminals of the language
60 ** NOTE: the tags which appear in comments at the end of each token
61 ** definition name the token class for the token. These name the
62 ** the .dat file processed by WML while constructing token tables.
63 ** Thus the output of WML and these tags must match, e.g. for
64 ** the token tag 'special' the file 'special.dat' must exist.
67 /* end of file indicator */
69 %token UILEOF 0 /* unused */
73 %token NAME 1 /* identifier */
74 %token FONT_NAME 2 /* font */
75 %token COLOR_NAME 3 /* color */
76 %token ARGUMENT_NAME 4 /* argument */
77 %token REASON_NAME 5 /* reason */
78 %token CHARSET_NAME 6 /* charset */
79 %token ENUMVAL_NAME 7 /* enumval */
80 %token CLASS_NAME 8 /* class */
81 %token CHILD_NAME 96 /* child */
85 %token UNS_FLOAT_LITERAL 9 /* literal */
86 %token COMP_STRING 10 /* literal */
87 %token CHAR_8_LITERAL 11 /* literal */
88 %token UNS_INT_LITERAL 12 /* literal */
90 /* Special characters. Treat these as tokens rather than literals, so
91 * that we can assign token numbers to them rather than have YACC use
92 * the ASCII value as the token number.
95 %token LEFT_PAREN 13 /* special */
96 %token RIGHT_PAREN 14 /* special */
97 %token COLON 15 /* special */
98 %token SEMICOLON 16 /* special */
99 %token LEFT_BRACE 17 /* special */
100 %token RIGHT_BRACE 18 /* special */
101 %token COMMA 19 /* special */
102 %token EQUAL_SIGN 20 /* special */
103 %token NOT 21 /* special */
104 %token PLUS 22 /* special */
105 %token MINUS 23 /* special */
106 %token AND 24 /* special */
107 %token OR 25 /* special */
108 %token XOR 26 /* special */
109 %token MULTIPLY 27 /* special */
110 %token DIVIDE 28 /* special */
111 %token LEFT_SHIFT 29 /* special */
112 %token RIGHT_SHIFT 30 /* special */
116 %token LIST 31 /* reserved */
117 %token IDENTIFIER 32 /* reserved */
118 %token END 33 /* reserved */
119 %token MODULE 34 /* reserved */
120 %token UILTRUE 35 /* reserved */
121 %token UILFALSE 36 /* reserved */
122 %token INCLUDE 37 /* reserved */
123 %token MACRO 38 /* reserved */
124 %token ON 39 /* reserved */
125 %token OFF 40 /* reserved */
126 %token VALUE 41 /* reserved */
127 %token ARGUMENTS 42 /* reserved */
128 %token CALLBACKS 43 /* reserved */
129 %token PROCEDURES 44 /* reserved */
130 %token CONTROLS 45 /* reserved */
131 %token PROCEDURE 46 /* reserved */
132 %token OBJECT 47 /* reserved */
136 %token OBJECTS 48 /* keyword */
137 %token WIDGET 49 /* reserved */
138 %token GADGET 50 /* reserved */
140 %token FONT 51 /* keyword */
141 %token ARGUMENT 52 /* keyword */
142 %token REASON 53 /* keyword */
143 %token PIXMAP 54 /* keyword */
144 %token COLOR 55 /* keyword */
146 %token NAMES 56 /* keyword */
147 %token CHARACTER_SET 57 /* keyword */
148 %token CASE_SENSITIVE 58 /* keyword */
149 %token CASE_INSENSITIVE 59 /* keyword */
151 %token VERSION 60 /* keyword */
153 %token MANAGED 61 /* keyword */
154 %token UNMANAGED 62 /* keyword */
156 %token PRIVATE 63 /* reserved */
157 %token IMPORTED 64 /* keyword */
158 %token EXPORTED 65 /* reserved */
160 %token UILFILE 66 /* keyword */
162 %token STRING_TABLE 67 /* keyword */
163 %token TRANSLATION_TABLE 68 /* keyword */
164 %token COMPOUND_STRING 69 /* keyword */
165 %token FONT_TABLE 70 /* keyword */
167 %token ANY 71 /* keyword */
168 %token STRING 72 /* keyword */
169 %token BOOLEAN 73 /* keyword */
170 %token ICON 74 /* keyword */
171 %token RIGHT_TO_LEFT 75 /* keyword */
172 %token BACKGROUND 76 /* keyword */
173 %token FOREGROUND 77 /* keyword */
174 %token COLOR_TABLE 78 /* keyword */
175 %token FLOAT 79 /* keyword */
176 %token INTEGER 80 /* keyword */
177 %token CLASS_REC_NAME 81 /* keyword */
178 %token ASCIZ_TABLE 82 /* keyword */
179 %token INTEGER_TABLE 83 /* keyword */
180 %token ASCIZ_STRING_TABLE 84 /* keyword */
181 %token COMPOUND_STRING_TABLE 85 /* keyword */
182 %token XBITMAPFILE 86 /* keyword */
183 %token SEPARATE 87 /* keyword */
184 %token SIXTEEN_BIT 88 /* keyword */
185 %token POUND 89 /* special */
186 %token KEYSYM 90 /* keyword */
187 %token SINGLE_FLOAT 91 /* keyword */
188 %token RGB 92 /* keyword */
189 %token WIDE_CHARACTER 93 /* keyword */
190 %token LOC_STRING 94 /* literal */ /* New for 1.2 */
191 %token FONTSET 95 /* keyword */
192 %token COMPOUND_STRING_COMPONENT 97 /* keyword */
201 %token CENTIMETER 107
202 %token CENTIMETERS 108
204 %token MILLIMETER 109
205 %token MILLIMETERS 110
211 %token FONT_UNITS 114
220 ** productions of the grammar
224 /* module structure */
228 { sar_save_module_source (); }
229 module_declaration_list END MODULE SEMICOLON
233 : /* empty */ { sar_create_root ( &$$ ); }
234 MODULE id { sar_create_module( &$$, &$3, &$2 ); }
245 | module_clauses module_clause
249 : VERSION EQUAL_SIGN character_8_value { sar_process_module_version( &$3 , &$1 ); }
250 | NAMES EQUAL_SIGN sensitivity_value { sar_process_module_sensitivity( &$3 , &$1 ); }
251 | CHARACTER_SET EQUAL_SIGN valid_charset { sar_process_module_charset( &$3 , &$1 ); }
252 | OBJECTS { sar_make_def_obj (&$1); } EQUAL_SIGN variant_spec
261 : LEFT_BRACE RIGHT_BRACE
262 | LEFT_BRACE variant_list RIGHT_BRACE
263 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
267 : variant_clause SEMICOLON
268 | variant_list variant_clause SEMICOLON
269 | error { lex_issue_error (SEMICOLON); } SEMICOLON
273 : CLASS_NAME { sar_make_def_obj (&$1); }
274 EQUAL_SIGN variant { sar_process_module_variant (&$1, &$4); $$ = gz_yynullval; }
278 : WIDGET { $$ = gz_yynullval; $$.b_type = sym_k_widget_entry; }
279 | GADGET { $$ = gz_yynullval; $$.b_type = sym_k_gadget_entry; }
282 module_declaration_list
284 | module_declaration_list module_declaration
289 | identifier_declaration
290 | procedure_declaration
298 /* VALUE declaration */
301 : VALUE { $$ = $1; sar_save_section_source (&$1, sym_k_value_section); } value_declaration_list
304 value_declaration_list
306 | value_declaration_list value_decl
307 | error { lex_issue_error (SEMICOLON); } SEMICOLON
311 : id COLON value_definition SEMICOLON { sar_bind_value_name( &$1, &$3, &$4 ); }
315 : EXPORTED private_value { $$ = $2; $$.b_flags |= sym_m_exported; $$.b_flags &= ~sym_m_private; }
316 | PRIVATE private_value_plus { $$ = $2; $$.b_flags |= sym_m_private; $$.b_flags &= ~sym_m_exported; }
317 | private_value_plus { $$ = $1; $$.b_flags |= sym_m_private; $$.b_flags &= ~sym_m_exported; }
318 | IMPORTED value_type { sar_import_value_entry( &$$, &$2 ); }
322 : INTEGER { $$ = $1; $$.b_type = sym_k_integer_value; }
323 | STRING { $$ = $1; $$.b_type = sym_k_char_8_value; }
324 | PIXMAP { $$ = $1; $$.b_type = sym_k_pixmap_value; }
325 | FLOAT { $$ = $1; $$.b_type = sym_k_float_value; }
326 | BOOLEAN { $$ = $1; $$.b_type = sym_k_bool_value; }
327 | FONT { $$ = $1; $$.b_type = sym_k_font_value; }
328 | REASON { $$ = $1; $$.b_type = sym_k_reason_value; }
329 | ARGUMENT { $$ = $1; $$.b_type = sym_k_argument_value; }
330 | COLOR { $$ = $1; $$.b_type = sym_k_color_value; }
331 | string_table_type { $$ = $1; $$.b_type = sym_k_string_table_value; }
332 | asciz_table_type { $$ = $1; $$.b_type = sym_k_asciz_table_value; }
333 | INTEGER_TABLE { $$ = $1; $$.b_type = sym_k_integer_table_value; }
334 | TRANSLATION_TABLE { $$ = $1; $$.b_type = sym_k_trans_table_value; }
335 | FONT_TABLE { $$ = $1; $$.b_type = sym_k_font_table_value; }
336 | ICON { $$ = $1; $$.b_type = sym_k_icon_value; }
337 | COMPOUND_STRING { $$ = $1; $$.b_type = sym_k_compound_string_value; }
338 | COMPOUND_STRING_COMPONENT { $$ = $1; $$.b_type = sym_k_compound_string_value; }
339 | CLASS_REC_NAME { $$ = $1; $$.b_type = sym_k_class_rec_name_value; }
340 | XBITMAPFILE { $$ = $1; $$.b_type = sym_k_xbitmapfile_value; }
341 | KEYSYM { $$ = $1; $$.b_type = sym_k_keysym_value; }
342 | SINGLE_FLOAT { $$ = $1; $$.b_type = sym_k_single_float_value; }
343 | RGB { $$ = $1; $$.b_type = sym_k_rgb_value; }
344 | WIDE_CHARACTER { $$ = $1; $$.b_type = sym_k_wchar_string_value; }
345 | FONTSET { $$ = $1; $$.b_type = sym_k_fontset_value; }
346 | WIDGET { $$ = $1; $$.b_type = sym_k_widget_ref_value; }
349 /* Seperately defined for fixing CR 5888 */
351 : INTEGER { $$ = $1; $$.b_type = sym_k_integer_value; }
352 | STRING { $$ = $1; $$.b_type = sym_k_char_8_value; }
353 | PIXMAP { $$ = $1; $$.b_type = sym_k_pixmap_value; }
354 | FLOAT { $$ = $1; $$.b_type = sym_k_float_value; }
355 | BOOLEAN { $$ = $1; $$.b_type = sym_k_bool_value; }
356 | FONT { $$ = $1; $$.b_type = sym_k_font_value; }
357 | REASON { $$ = $1; $$.b_type = sym_k_reason_value; }
358 | COLOR { $$ = $1; $$.b_type = sym_k_color_value; }
359 | string_table_type { $$ = $1; $$.b_type = sym_k_string_table_value; }
360 | asciz_table_type { $$ = $1; $$.b_type = sym_k_asciz_table_value; }
361 | INTEGER_TABLE { $$ = $1; $$.b_type = sym_k_integer_table_value; }
362 | TRANSLATION_TABLE { $$ = $1; $$.b_type = sym_k_trans_table_value; }
363 | FONT_TABLE { $$ = $1; $$.b_type = sym_k_font_table_value; }
364 | ICON { $$ = $1; $$.b_type = sym_k_icon_value; }
365 | COMPOUND_STRING { $$ = $1; $$.b_type = sym_k_compound_string_value; }
366 | KEYSYM { $$ = $1; $$.b_type = sym_k_keysym_value; }
367 | SINGLE_FLOAT { $$ = $1; $$.b_type = sym_k_single_float_value; }
368 | WIDE_CHARACTER { $$ = $1; $$.b_type = sym_k_wchar_string_value; }
369 | FONTSET { $$ = $1; $$.b_type = sym_k_fontset_value; }
370 | WIDGET { $$ = $1; $$.b_type = sym_k_widget_ref_value; }
371 /* End for fixing CR 5888 */
375 | COMPOUND_STRING_TABLE
384 /* PROCEDURE declaration */
386 procedure_declaration
387 : PROCEDURE { $$ = $1; sar_save_section_source (&$1, sym_k_procedure_section); } procedure_declaration_list
390 procedure_declaration_list
392 | procedure_declaration_list procedure_decl
393 | error { lex_issue_error (SEMICOLON); } SEMICOLON
397 : id opt_formal_parameters opt_class SEMICOLON { sar_create_procedure( &$1, &$2, &$3, &$4 );}
400 opt_formal_parameters
401 : /* empty */ { $$ = gz_yynullval; }
402 | LEFT_PAREN formal_parameter_type RIGHT_PAREN { $$ = $2; }
405 formal_parameter_type
406 : /* empty */ { $$ = gz_yynullval; $$.b_type = sym_k_no_value; }
408 | ANY { $$ = $1; $$.b_type =
412 temp[0] = gz_yynullval;
413 sar_create_object(&temp[0], sym_k_widget_entry);
414 temp[1] = $1; sar_set_object_class(&temp[1]);
415 sar_verify_object(&temp[1]);
421 : /* empty */ { $$.b_flags = sym_m_private; }
423 | EXPORTED { $$.b_flags = sym_m_exported; }
424 | PRIVATE { $$.b_flags = sym_m_private; }
425 | IMPORTED { $$.b_flags = sym_m_imported; }
431 /* IDENTIFIER declaration */
433 identifier_declaration
434 : IDENTIFIER { $$ = $1; sar_save_section_source (&$1, sym_k_identifier_section); } identifier_declaration_list
437 identifier_declaration_list
439 | identifier_declaration_list identifier_decl
440 | error { lex_issue_error (SEMICOLON); } SEMICOLON
444 : id SEMICOLON { sar_create_identifier ( &$1, &$2 ); }
451 /* Include Directive */
454 : INCLUDE UILFILE character_8_value SEMICOLON { sar_include_file (&$3, &$1, &$4); }
455 | error { lex_issue_error (SEMICOLON); } SEMICOLON
460 /* OBJECT declaration */
463 : OBJECT { $$ = $1; sar_save_section_source (&$1, sym_k_object_section); } object_decl_list
467 : object_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$2 ); }
468 | object_decl_list object_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$3 ); }
469 | error { lex_issue_error (SEMICOLON); } SEMICOLON
474 { sar_create_object (&$1, sym_k_widget_entry);
475 sar_link_section (&$1); $$ = gz_yynullval;}
476 COLON object_definition
477 { $$ = gz_yynullval; }
482 { sar_set_object_flags (&$1, sym_m_exported); }
485 { sar_set_object_flags (&$1, sym_m_private); }
488 { sar_set_object_flags (&$1, sym_m_exported); }
491 { sar_set_object_flags (&$1, sym_m_imported); }
493 { sar_set_object_class (&$3); }
495 * Fix for CR 5440 - Call opt_create_proc_ref to check for creation procedures
496 * for imported user_defined widgets.
500 * End fix for CR 5440
503 { sar_verify_object (&$1); }
506 control_object_definition
508 { sar_set_object_flags (&$1, sym_m_exported); }
511 { sar_set_object_flags (&$1, sym_m_private); }
514 { sar_set_object_flags (& $1, (sym_m_managed | sym_m_exported)); }
517 { sar_unset_object_flags (& $1, sym_m_managed), sar_set_object_flags (& $1, sym_m_exported); }
520 { sar_set_object_flags (&$1, sym_m_exported); }
523 { sar_set_object_flags (&$1, sym_m_imported); }
525 { sar_set_object_class (&$3); }
527 { sar_verify_object (&$1); }
532 { sar_set_object_class (&$1); }
536 { sar_verify_object (&$1); }
541 { sar_set_object_variant (&$1); }
543 { sar_set_object_variant (&$1); }
546 control_object_specification
548 { sar_set_object_class (&$1); $$ = gz_yynullval;}
552 { sar_verify_object (&$1); }
557 | PROCEDURE id_ref opt_parens
558 { sar_process_proc_ref (&$2, &gz_yynullval, sym_k_object_proc);
559 sar_save_user_proc_ref_src ( &$1, &$2, &$3 ); }
564 | LEFT_PAREN RIGHT_PAREN { $$ = $2; }
570 /* object specification. */
574 { sar_object_reference (&$1); }
575 | LEFT_BRACE RIGHT_BRACE
576 | LEFT_BRACE object_feature_list RIGHT_BRACE
577 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
582 { sar_object_reference (&$1); }
583 | LEFT_BRACE RIGHT_BRACE
585 { sar_set_object_flags (&$1, sym_m_exported); }
586 | LEFT_BRACE object_feature_list RIGHT_BRACE
588 { sar_set_object_flags (&$1, sym_m_exported); }
589 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
593 : LEFT_BRACE RIGHT_BRACE
595 { sar_set_object_flags (&$1, sym_m_private); }
596 | LEFT_BRACE object_feature_list RIGHT_BRACE
598 { sar_set_object_flags (&$1, sym_m_private); }
599 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
604 | object_feature_list object_feature
608 : argument_list_def SEMICOLON
609 { sar_save_list_end ( &$2); sar_save_feature (&$1); $$ = gz_yynullval; }
610 | callback_list_def SEMICOLON
611 { sar_save_list_end ( &$2); sar_save_feature (&$1); $$ = gz_yynullval; }
612 | control_list_def SEMICOLON
613 { sar_save_list_end ( &$2); sar_save_feature (&$1);
614 sar_update_parent_list (&$1); $$ = gz_yynullval; }
615 | error { lex_issue_error (SEMICOLON); } SEMICOLON
620 { $$ = gz_yynullval; }
625 /* LIST declaration */
628 : LIST { $$ = $1; sar_save_section_source (&$1, sym_k_list_section); }
633 : list_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$2 ); }
634 | list_decl_list list_decl SEMICOLON { $$ = $1; sar_save_src_semicolon_pos (&$3 ); }
635 | error { lex_issue_error (SEMICOLON); } SEMICOLON
640 { sar_create_object (&$1, sym_k_list_entry);
641 sar_link_section (&$1); $$ = gz_yynullval;}
642 COLON list_specification
643 { $$ = gz_yynullval; }
647 : control_list_specification
648 | argument_list_specification
649 | callback_list_specification
650 | procedure_list_specification
653 control_list_specification
655 { $$ = gz_yynullval; sar_set_list_type (&$1); }
657 { sar_verify_object (&$1); }
660 argument_list_specification
662 { $$ = gz_yynullval; sar_set_list_type (&$1); }
664 { sar_verify_object (&$1); }
667 callback_list_specification
669 { $$ = gz_yynullval; sar_set_list_type (&$1); }
671 { sar_verify_object (&$1); }
674 procedure_list_specification
675 : procedure_list_type
676 { $$ = gz_yynullval; sar_set_list_type (&$1); }
678 { sar_verify_object (&$1); }
683 { $$ = gz_yynullval; $$.b_type = sym_k_argument_list; }
688 { $$ = gz_yynullval; $$.b_type = sym_k_callback_list; }
693 { $$ = gz_yynullval; $$.b_type = sym_k_proc_ref_list; }
697 { $$ = gz_yynullval; $$.b_type = sym_k_control_list; }
701 : id_ref { sar_object_reference (&$1); }
702 | LEFT_BRACE RIGHT_BRACE
703 | LEFT_BRACE argument_list_clause_list RIGHT_BRACE
704 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
708 : id_ref { sar_object_reference (&$1); }
709 | LEFT_BRACE RIGHT_BRACE
710 | LEFT_BRACE callback_list_clause_list RIGHT_BRACE
711 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
716 { sar_object_reference (&$1); }
717 | LEFT_BRACE RIGHT_BRACE
718 | LEFT_BRACE procedure_list_clause_list RIGHT_BRACE
719 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
723 : id_ref { sar_object_reference (&$1); }
724 | LEFT_BRACE RIGHT_BRACE
725 | LEFT_BRACE control_list_clause_list RIGHT_BRACE
726 | error { lex_issue_error (RIGHT_BRACE); } RIGHT_BRACE
729 argument_list_clause_list
730 : argument_list_clause
731 | argument_list_clause_list argument_list_clause
734 callback_list_clause_list
735 : callback_list_clause
736 | callback_list_clause_list callback_list_clause
739 procedure_list_clause_list
740 : procedure_list_clause
741 | procedure_list_clause_list procedure_list_clause
744 control_list_clause_list
745 : control_list_clause
746 | control_list_clause_list control_list_clause
750 : argument_list_def SEMICOLON
751 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
752 | argument_list_item SEMICOLON
753 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
754 | error { lex_issue_error (SEMICOLON); } SEMICOLON
758 : callback_list_def SEMICOLON
759 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
760 | callback_list_item SEMICOLON
761 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
762 | error { lex_issue_error (SEMICOLON); } SEMICOLON
765 procedure_list_clause
766 : procedure_list_def SEMICOLON
767 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
768 | procedure_list_def_ref SEMICOLON
769 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
770 | error { lex_issue_error (SEMICOLON); } SEMICOLON
774 : control_list_def SEMICOLON
775 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
776 | control_list_item SEMICOLON
777 { sar_save_src_entry_end (&$2, &$1); sar_add_list_entry (&$1); $$ = gz_yynullval; }
778 | error { lex_issue_error (SEMICOLON); } SEMICOLON
783 { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
784 control_list_specification
790 { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
791 argument_list_specification
797 { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
798 callback_list_specification
804 { $$ = gz_yynullval; sar_create_object (&$1, sym_k_list_entry); }
805 procedure_list_specification
813 : opt_managed control_item
814 { sar_save_control_item (&$1, &$2); $$ = $1; }
817 { sar_create_object (& $1, sym_k_widget_entry); $1.b_flags = sym_m_managed; $$ = gz_yynullval;}
819 control_object_definition
820 { sar_save_control_widget (& $1, & $2); $$ = $1; }
822 | CHILD_NAME opt_child_managed
823 { sar_create_child (& $1); $1.b_flags = sym_m_managed;
826 { sar_save_control_widget (& $1, & $2); $$ = $1; }
827 | CHILD_NAME UNMANAGED
828 { sar_create_child (& $1); $$ = gz_yynullval; }
830 { sar_save_control_widget (& $1, & $3); $$ = $1; }
841 /* Argument value pair */
843 : value EQUAL_SIGN value
844 { sar_save_argument_pair (&$1, &$3, &$2); $$ = $1; }
846 /* Argument widget pair */
848 | value EQUAL_SIGN CLASS_NAME id_ref
850 temp [0] = gz_yynullval;
851 sar_create_object (&temp [0], sym_k_widget_entry);
852 temp [1] = $3; sar_set_object_class (&temp [1]);
853 temp [1] = $4; sar_object_reference (&temp [1]);
854 sar_verify_object (&temp [1]);
855 sar_save_argument_pair (&$1, &temp [0], &$2); $$ = $1; }
860 /* Callback reason binding */
862 : value EQUAL_SIGN procedure_reference
863 { sar_save_reason_binding (&$1, &$3, &$2); $$ = $1; }
864 | value EQUAL_SIGN procedure_list_def
865 { sar_save_reason_binding (&$1, &$3, &$2); $$ = $1; }
870 { sar_create_object (&$1, sym_k_widget_entry); $$ = gz_yynullval; }
871 control_object_specification
877 { $$.b_flags = sym_m_managed; }
879 { $$ = gz_yynullval; $$.b_flags = sym_m_managed; }
881 { $$ = gz_yynullval; }
885 : PROCEDURE id_ref opt_procedure_argument
886 { sar_process_proc_ref (&$2, &$3, sym_k_callback_proc); $$ = $2; }
889 procedure_list_def_ref
890 : id_ref opt_procedure_argument
891 { sar_process_proc_ref (&$1, &$2, sym_k_callback_proc); $$ = $1; }
894 opt_procedure_argument
896 | LEFT_PAREN value RIGHT_PAREN
898 | LEFT_PAREN CLASS_NAME id_ref RIGHT_PAREN
900 temp [0] = gz_yynullval;
901 sar_create_object (&temp [0], sym_k_widget_entry);
902 temp [1] = $2; sar_set_object_class (&temp [1]);
903 temp [1] = $3; sar_object_reference (&temp [1]);
904 sar_verify_object (&temp [1]);
906 | LEFT_PAREN RIGHT_PAREN
907 { $$ = gz_yynullval; }
912 /* definition of an id */
922 | keyword { sar_map_keyword_to_name( &$$, &$1); }
925 /* reference of an id */
929 { sar_process_id_ref (&$1); $$ = $1; }
959 | COMPOUND_STRING_COMPONENT
986 character_8_value : value
989 if (($$.b_type != sym_k_error_value) &&
990 ($$.b_type != sym_k_any_value) &&
991 (($$.b_flags &sym_m_forward_ref) == 0))
993 if (($$.b_type != sym_k_char_8_value) &&
994 ($$.b_type != sym_k_localized_string_value))
995 sar_value_type_error( &$$, sym_k_char_8_value );
996 if (($$.b_flags &sym_m_private) == 0)
997 sar_private_error( &$$ );
1004 if ($$.b_type != sym_k_error_value)
1006 if ((($$.b_flags &sym_m_private) == 0) &&
1007 (($$.b_flags &sym_m_forward_ref) == 0))
1008 sar_private_error( &$$ );
1013 /* BEGIN HaL fix CR 5427 */
1016 : non_export_value { $$ = $1;
1017 if ($$.b_type != sym_k_error_value)
1019 if ((($$.b_flags &sym_m_private) == 0) &&
1020 (($$.b_flags &sym_m_forward_ref) == 0))
1021 sar_private_error( &$$ );
1026 if ($$.b_type != sym_k_error_value)
1028 if ((($$.b_flags &sym_m_private) == 0) &&
1029 (($$.b_flags &sym_m_forward_ref) == 0))
1030 sar_private_error( &$$ );
1035 : COLOR_TABLE LEFT_PAREN color_list RIGHT_PAREN { sar_make_color_table( &$$, &$3, &$1); }
1037 /* END HaL fix CR 5427 */
1042 | value OR value_1 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1043 | value XOR value_1 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1048 | value_1 AND value_2 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1053 | value_2 LEFT_SHIFT value_3 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1054 | value_2 RIGHT_SHIFT value_3 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1059 | value_3 PLUS value_4 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1060 | value_3 MINUS value_4 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1065 | value_4 MULTIPLY value_5 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1066 | value_4 DIVIDE value_5 { $$ = $2; sar_binary_op( &$$, &$1, &$3 ); }
1071 | MINUS value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
1072 | NOT value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
1073 | PLUS value_5 { $$ = $1; sar_unary_op( &$$, &$2 ); }
1078 | LEFT_PAREN value RIGHT_PAREN { $$ = $2; }
1082 : UNS_INT_LITERAL { sar_make_private_value( &$$, &$1, sym_k_integer_value,
1084 | UNS_INT_LITERAL units_specification { sar_make_private_value( &$$, &$1, sym_k_integer_value,
1085 &$1, sar_get_units_type(&$2)); }
1086 | optional_charset CHAR_8_LITERAL { /* Don't use FALSE because it is a token not a Boolean! */
1087 Uil_lex_l_charset_specified = 0;
1088 sar_make_private_value( &$$, &$2, sym_k_char_8_value,
1090 | id { sar_process_id( &$$, &$1 );}
1091 | UNS_FLOAT_LITERAL { sar_make_private_value( &$$, &$1, sym_k_float_value,
1093 | UNS_FLOAT_LITERAL units_specification { sar_make_private_value( &$$, &$1, sym_k_float_value,
1094 &$1, sar_get_units_type(&$2)); }
1095 | PIXMAP LEFT_PAREN character_8_value RIGHT_PAREN { sar_value_not_implemented( &$$, &$1, "pixmap literal" ); }
1096 | FONT LEFT_PAREN font_spec RIGHT_PAREN { $$ = $3; }
1097 | FONTSET LEFT_PAREN fontset_spec RIGHT_PAREN { $$ = $3; }
1098 | COLOR LEFT_PAREN color_spec RIGHT_PAREN { $$ = $3; }
1099 | REASON LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_reason_value,
1101 | CLASS_REC_NAME LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_class_rec_name_value,
1103 | ARGUMENT LEFT_PAREN character_8_value opt_arg_type RIGHT_PAREN
1104 { sar_make_private_value
1105 ( &$$, &$3, sym_k_argument_value, &$1, $4.b_type ); }
1106 | UILTRUE { sar_make_private_value( &$$, &$1, sym_k_bool_value,
1108 | UILFALSE { sar_make_private_value( &$$, &$1, sym_k_bool_value,
1110 | ON { sar_make_private_value( &$$, &$1, sym_k_bool_value,
1112 | OFF { sar_make_private_value( &$$, &$1, sym_k_bool_value,
1114 | optional_charset COMP_STRING { /* Don't use FALSE because it is a token not a Boolean! */
1115 Uil_lex_l_charset_specified = 0;
1116 sar_make_private_value
1117 ( &$$, &$2, sym_k_compound_string_value, &$2, 0); }
1118 | string_table_type LEFT_PAREN comp_str_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_string_table_value,
1120 | asciz_table_type LEFT_PAREN asciz_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_asciz_table_value,
1122 | INTEGER_TABLE LEFT_PAREN integer_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_integer_table_value,
1124 | TRANSLATION_TABLE LEFT_PAREN string_list RIGHT_PAREN { sar_make_private_value( &$$, &$3, sym_k_trans_table_value,
1126 | COMPOUND_STRING LEFT_PAREN comp_str_result RIGHT_PAREN { $$ = $3; }
1127 | COMPOUND_STRING_COMPONENT LEFT_PAREN comp_str_comp_result RIGHT_PAREN { $$ = $3; }
1128 | FONT_TABLE LEFT_PAREN font_list RIGHT_PAREN { $$ = $3; }
1129 | ICON LEFT_PAREN icon_spec RIGHT_PAREN { $$ = $3; }
1130 | FLOAT LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
1131 | INTEGER LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
1133 | XBITMAPFILE LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_xbitmapfile_value,
1136 | KEYSYM LEFT_PAREN character_8_value RIGHT_PAREN { sar_make_private_value(&$$, &$3, sym_k_keysym_value,
1139 | SINGLE_FLOAT LEFT_PAREN value RIGHT_PAREN { $$ = $1; sar_unary_op( &$$, &$3 ); }
1141 | RGB LEFT_PAREN rgb_list RIGHT_PAREN { sar_make_private_value( & $$, & $3, sym_k_rgb_value,
1143 | WIDE_CHARACTER LEFT_PAREN wchar_str_result RIGHT_PAREN { $$ = $3; }
1144 | LOC_STRING { sar_make_private_value(&$$, &$1, sym_k_localized_string_value,
1150 { $$ = gz_yynullval; }
1157 { sar_append_table_value (&$1, &gz_yynullval, sym_k_trans_table_value, &$1); $$ = $1; }
1158 | string_list_2 COMMA private_value
1159 { sar_append_table_value (&$3, &$1, sym_k_trans_table_value, &$2); $$ = $3; }
1164 { $$ = gz_yynullval; }
1171 { sar_append_table_value (&$1, &gz_yynullval, sym_k_asciz_table_value, &$1); $$ = $1; }
1172 | asciz_list_2 COMMA private_value
1173 { sar_append_table_value (&$3, &$1, sym_k_asciz_table_value, &$2); $$ = $3; }
1178 { $$ = gz_yynullval; }
1185 { sar_append_table_value (&$1, &gz_yynullval, sym_k_integer_table_value, &$1); $$ = $1; }
1186 | integer_list_2 COMMA private_value
1187 { sar_append_table_value (&$3, &$1, sym_k_integer_table_value, &$2); $$ = $3; }
1190 /* RAP rgb data type */
1192 : private_value COMMA private_value COMMA private_value
1193 {sar_append_table_value(&$1, & gz_yynullval, sym_k_integer_table_value, & $1);
1194 sar_append_table_value(& $3, & $1, sym_k_integer_table_value, & $2);
1195 sar_append_table_value(& $5, & $3, sym_k_integer_table_value, & $4);
1202 { $$ = gz_yynullval; }
1209 { sar_append_table_value (&$1, &gz_yynullval, sym_k_string_table_value, &$1); $$ = $1; }
1210 | comp_str_list_2 COMMA private_value
1211 { sar_append_table_value (&$3, &$1, sym_k_string_table_value, &$2); $$ = $3; }
1215 : /* empty */ { $$ = gz_yynullval; $$.b_type = sym_k_any_value; }
1216 | COMMA arg_value_type { $$ = gz_yynullval; $$.b_type = $2.b_type; }
1217 | COMMA ANY { $$ = gz_yynullval; $$.b_type = sym_k_any_value; }
1221 : private_value { sar_make_comp_str( &$$, &$1, &gz_yynullval, &$-1 ); }
1222 | private_value comp_str_attrs { sar_make_comp_str( &$$, &$1, &$2, &$-1 ); }
1225 comp_str_comp_result
1226 : ENUMVAL_NAME { sar_make_comp_str_comp(&$$, &$1, &gz_yynullval, &$-1 ); }
1227 | ENUMVAL_NAME COMMA ENUMVAL_NAME { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
1228 | ENUMVAL_NAME COMMA CHAR_8_LITERAL { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
1229 | ENUMVAL_NAME COMMA LOC_STRING { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
1230 | ENUMVAL_NAME COMMA CHARSET_NAME { sar_make_comp_str_comp( &$$, &$1, &$3, &$-1 ); }
1234 : COMMA comp_str_attr { sar_chk_comp_str_attr( &$$, &$2, &gz_yynullval ); }
1235 | comp_str_attrs COMMA comp_str_attr { sar_chk_comp_str_attr( &$$, &$3, &$1 ); }
1239 : CHARACTER_SET EQUAL_SIGN valid_charset { $$.b_type = $1.b_type;
1240 $$.b_tag = $3.b_tag;
1241 $$.value.az_keyword_entry = $3.value.az_keyword_entry;
1242 $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
1243 | RIGHT_TO_LEFT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
1244 $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
1245 | SEPARATE EQUAL_SIGN private_value { $$.b_type = $1.b_type;
1246 $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
1250 : private_value { sar_make_wchar_str( &$$, &$1, &gz_yynullval, &$-1 ); }
1254 : character_8_value COMMA CHARACTER_SET EQUAL_SIGN valid_charset
1255 { sar_make_font( &$$, &$5, &$1, &$-1 ); }
1256 | character_8_value { sar_make_font( &$$, &gz_yynullval, &$1, &$-1 ); }
1260 : character_8_value COMMA CHARACTER_SET EQUAL_SIGN valid_charset
1261 { sar_make_fontset( &$$, &$5, &$1, &$-1 ); }
1262 | character_8_value { sar_make_fontset( &$$, &gz_yynullval, &$1, &$-1 ); }
1266 : font_item { sar_make_font_table( &$$, &$1, &gz_yynullval, &$-1 ); }
1267 | font_list COMMA font_item { sar_make_font_table( &$$, &$3, &$1, &$-1 ); }
1271 ** THIS PRODUCTION DOESN'T LOOK RIGHT!!!!!!!!!!!!!!!!!!!!!!
1274 : valid_charset EQUAL_SIGN private_value { sar_make_font_item( &$$, &$1, &$3 ); }
1275 | private_value { sar_make_font_item( &$$, &gz_yynullval, &$1 ); }
1279 : POUND valid_charset { /* Don't use TRUE because it is a token not a Boolean! */
1281 Uil_lex_l_charset_specified = 1;}
1282 | epsilon_production
1287 : CHARSET_NAME { sar_charset_verify (&$1); $$ = $1; }
1288 | CHARACTER_SET LEFT_PAREN charset_info RIGHT_PAREN { $$ = $3; }
1289 | NAME { sar_make_fallback_charset(&$1);
1295 : character_8_value { sar_make_private_value(&$$, &$1, sym_k_char_8_value,
1297 sar_make_charset (&$$, &$$, &gz_yynullval, &$1); }
1298 | character_8_value charset_attrs { sar_make_private_value(&$$, &$1, sym_k_char_8_value,
1300 sar_make_charset (&$$, &$$, &$2, &$1); }
1304 : COMMA charset_attr { sar_chk_charset_attr( &$$, &$2, &gz_yynullval ); }
1305 | charset_attrs COMMA charset_attr { sar_chk_charset_attr( &$$, &$3, &$1 ); }
1309 : RIGHT_TO_LEFT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
1310 if ($3.b_type != sym_k_bool_value)
1311 sar_value_type_error( &$3, sym_k_bool_value );
1312 $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
1313 | SIXTEEN_BIT EQUAL_SIGN private_value { $$.b_type = $1.b_type;
1314 if ($3.b_type != sym_k_bool_value)
1315 sar_value_type_error( &$3, sym_k_bool_value );
1316 $$.value.az_symbol_entry = $3.value.az_symbol_entry; }
1320 : color_item { sar_append_color_item( &$$, &$1, &gz_yynullval ); }
1321 | color_list COMMA color_item { sar_append_color_item( &$$, &$3, &$1 ); }
1325 : BACKGROUND COLOR EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$4 ); }
1326 | FOREGROUND COLOR EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$4 ); }
1327 | value EQUAL_SIGN character_8_value { sar_make_color_item( &$$, &$1, &$3 ); }
1331 : character_8_value { sar_make_color( &$$, &$1, &gz_yynullval, &$-1 ); }
1332 | character_8_value COMMA mono_color_spec { sar_make_color( &$$, &$1, &$3, &$-1 ); }
1341 : icon_rows { sar_make_icon( &$$, &$1, &gz_yynullval, &$-1); }
1342 | COLOR_TABLE EQUAL_SIGN private_value COMMA icon_rows
1343 { sar_make_icon( &$$, &$5, &$3, &$-1 ); }
1348 { sar_append_table_value (&$1, &gz_yynullval, sym_k_icon_value, &$1); $$ = $1; }
1349 | icon_rows COMMA private_value
1350 { sar_append_table_value (&$3, &$1, sym_k_icon_value, &$2); $$ = $3; }
1394 /* Dummy error routine for the parser. We will output our own