/* Begin include file pl1_macro_lex_dcls.incl.pl1 */ /****^ HISTORY COMMENTS: 1) change(87-05-11,Huen), approve(87-05-11,MCR7675), audit(87-05-11,RWaters), install(87-12-01,MR12.2-1005): Fix PL/1 bug2163 : Speeding up the macro processing. END HISTORY COMMENTS */ /* format: style2 */ /* Created Dec 80 M E Presser Modified 11 May 87 - SH, speeding up the macro processing 3 August 81 - MEP redefined token 18 May 81 - MEP, redefined token, temp_seg_3, and token types */ /* automatic */ declare temp_segs (5) pointer; /* use of temp_segs: 1. tokens in pl1_macro_lex_ 2. output_string 3. job information 4. listing and cross_ref 5. Unused just now */ /* area */ declare area area based (temp_seg_3.area_ptr); /* based */ declare 1 atoken aligned based, 2 string_size fixed binary (21) unaligned, /* length of token string */ 2 created bit (1) unaligned, /* "1" iff created by pl1_macro */ 2 pct_type fixed binary (5) unsigned unaligned, 2 type fixed binary (8) unsigned unaligned, /* token_type */ 2 replace_by fixed binary, /* index of replacement value, if any */ 2 string_ptr unaligned pointer; /* pointer to start of token */ declare 1 token (divide (sys_info$max_seg_size, size (atoken), 19)) aligned based (temp_segs (1)) like atoken; /* builtin */ declare size builtin; /* structure for command line args */ declare 1 args aligned based, 2 string_size fixed binary (21), 2 string_ptr unaligned pointer; /* structure for command line parameter control arg arguments */ declare 1 params aligned based, 2 name aligned like args, 2 value aligned like token; /* temp_seg_3 is used for general storage of system wide information */ declare 1 temp_seg_3 aligned based (temp_segs (3)), 2 area_ptr pointer, /* base of area */ 2 source_ptr pointer, /* ptr to source seg */ 2 source_length fixed binary (21), /* lenght (chars) of source */ 2 output_length fixed binary (21), /* length (chars) of output */ 2 constant_base pointer, /* start of chain of constant nodes */ 2 variable_base pointer, /* start of chain of variable nodes */ 2 source_depth fixed binary, /* depth of file_macro_stack */ 2 file_stack_ptr pointer, /* ptr -> file_macro_stack */ 2 flags unaligned, 3 list bit (1), /* if .maclist to be made */ 3 pad1 bit (35), 2 target_value fixed binary (17), /* as returned by system_type_ */ 2 number_of_clargs fixed binary, 2 number_of_params fixed binary, 2 cl_args (64) aligned like args, 2 cl_params (64) aligned like params; declare output_string char (4 * sys_info$max_seg_size) based (temp_segs (2)); /* variable node */ declare 1 variable aligned based, 2 next pointer unaligned, /* next alloc in chain */ 2 nextv pointer unaligned, /* next var in hash chain */ 2 alias_id fixed binary (17) unaligned, /* index into token chain */ 2 variable_type fixed binary unaligned, /* default, replace or set type */ 2 name_length fixed binary (17) unaligned, 2 name character (variable_name_length refer (variable.name_length)); declare variable_name_length fixed binary; /* constant node */ declare 1 constant aligned based, 2 next pointer, /* next in chain */ 2 string_length fixed binary (21), 2 string_value character (constant_length refer (constant.string_length)); declare constant_length fixed binary (21); /* token types */ declare ( no_token initial (0), invalid_char initial (1), identifier initial (2), keyword_token initial (3), isub initial (4), plus initial (5), minus initial (6), asterisk initial (7), slash initial (8), expon initial (9), not initial (10), and initial (11), or initial (12), cat initial (13), eq initial (14), ne initial (15), lt initial (16), gt initial (17), le initial (18), ge initial (19), ngt initial (20), nlt initial (21), prefix_plus initial (22), prefix_minus initial (23), assignment initial (24), colon initial (25), semi_colon initial (26), comma initial (27), period initial (28), arrow initial (29), left_parn initial (30), right_parn initial (31), percent initial (32), target_comma initial (33), comment_token initial (34), nl_vt_np_token initial (35), bit_string initial (36), char_string initial (37), fixed_bin initial (38), bin_integer initial (39), fixed_dec initial (40), dec_integer initial (41), float_bin initial (42), token_hole_1 initial (43), float_dec initial (44), token_hole_2 initial (45), i_fixed_bin initial (46), i_bin_integer initial (47), i_fixed_dec initial (48), i_dec_integer initial (49), i_float_bin initial (50), token_hole_3 initial (51), i_float_dec initial (52), token_hole_4 initial (53), white_space_token initial (54) ) fixed binary (8) unsigned internal static options (constant); /* token class limits */ declare ( min_delimiter_token initial (5), max_delimiter_token initial (35), min_constant_token initial (36), max_constant_token initial (53), min_arithmetic_token initial (38), max_arithmetic_token initial (53) ) fixed binary (8) unsigned internal static options (constant); /* arithmetic token type masks */ declare ( is_imaginary_constant initial ("1000"b), is_float_constant initial ("0100"b), is_decimal_constant initial ("0010"b), is_integral_constant initial ("0001"b) ) bit (4) aligned internal static options (constant); /* valid keyword following a percent_sign and their attributes */ /* format: off */ declare 1 pct_keywords (19) aligned structure internal static options (constant), 2 name character (8) varying initial( "page", "skip", "replace", "default", "target", "isarg", "isdef", "include","if", "then", "else", "elseif", "endif", "print", "error", "warn", "abort", "INCLUDE", "set"), 2 terminator fixed binary (17) unaligned /* refer to macro stack types */ initial( 3, 3, 3, 3, 1, 1, 1, 3, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3), 2 needs_reinterpreation bit (1) unaligned initial( "0"b, "0"b, "1"b, "1"b, "1"b, "1"b, "1"b, "0"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b), 2 m_index fixed binary (17) unaligned initial( 2, 3, 4, 1, 7, 8, 6, 15, 9, 10, 11, 12, 13, 16, 5, 17, 18, 14, 19); /* format: on */ /* pct_types */ declare ( pct_default initial (1), pct_page initial (2), pct_skip initial (3), pct_replace initial (4), pct_error initial (5), pct_isdef initial (6), pct_target initial (7), pct_isarg initial (8), pct_if initial (9), pct_then initial (10), pct_else initial (11), pct_elseif initial (12), pct_endif initial (13), pct_INCLUDE initial (14), pct_include initial (15), pct_print initial (16), pct_warn initial (17), pct_abort initial (18), pct_set initial (19) ) fixed binary internal static options (constant); /* variable types - in which statement type they were first declared */ declare ( replace_var initial (1), default_var initial (2), set_var initial (3), parameter_var initial (4) ) fixed binary internal static options (constant); /* macro stack types */ declare ( paren_macro initial (1), if_macro initial (2), semicolon_macro initial (3), reinterpret_macro initial (4) ) fixed binary internal static options (constant); /* lexical limits */ declare ( max_bit_string_constant initial (253), max_char_string_constant initial (254), max_identifier_length initial (256) ) fixed binary internal static options (constant); /* external static */ declare pl1_macro_severity_ fixed binary (35) external static; declare sys_info$max_seg_size fixed binary (19) external static; /* entry */ declare pl1_macro_error_ entry (fixed binary (35), char (*), pointer, fixed binary (21), fixed binary (21)); declare pl1_macro_lex_ entry ((*) pointer, fixed binary (35)); declare pl1_macro_lex_$cleanup entry ((*) pointer); declare system_type_ entry (char (*), char (*), fixed binary (17), fixed binary (35)); /* constants mostly used by lex */ declare arithchar char (28) internal static options (constant) initial ("0123456789(=^=<=>=+-*/) ."" "); declare alphabetics char (52) internal static options (constant) initial ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); declare numerals char (10) internal static options (constant) initial ("0123456789"); declare identifier_chars char (64) internal static options (constant) initial ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$"); declare lower_case_letters char (26) internal static options (constant) initial ("abcdefghijklmnopqrstuvwxyz"); declare upper_case_letters char (26) internal static options (constant) initial ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); declare zero_one char (2) internal static options (constant) initial ("01"); declare QUOTE char (1) internal static options (constant) initial (""""); declare QUOTEQUOTE char (2) internal static options (constant) initial (""""""); /* miscellaneous constants */ declare none fixed binary internal static options (constant) initial (0); declare macro_version character (5) internal static options (constant) initial (" 2.0 "); declare command character (9) internal static options (constant) initial ("pl1_macro"); /* error codes */ declare NO_RESULT fixed binary (35) internal static options (constant) initial (1); declare COMPILER_ERROR fixed binary (35) internal static options (constant) initial (2); declare SYNTAX_ERROR fixed binary (35) internal static options (constant) initial (3); declare SEMANTIC_ERROR fixed binary (35) internal static options (constant) initial (4); declare STORAGE_SYSTEM_ERROR fixed binary (35) internal static options (constant) initial (5); declare IMPLEMENTATION_RESTRICTION fixed binary (35) internal static options (constant) initial (6); declare TARGET_STRING_ERROR fixed binary (35) internal static options (constant) initial (7); %include system_types; /* END INCLUDE FILE . . . pl1_macro_lex_dcls.incl. */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */