📄 common.h
字号:
extern char grm_file[], lis_file[], act_file[], hact_file[], tab_file[], prs_file[], sym_file[], def_file[], dcl_file[], file_prefix[], prefix[], suffix[], parm[], msg_line[];extern FILE *syslis, *sysgrm, *sysact, *syshact, *systab, *syssym, *sysprs, *sysdcl, *sysprs, *sysdef;/******************************************************//* The variables below are global counters. *//******************************************************/extern long num_items, num_states, max_la_state;extern int num_symbols, symno_size, /* NUM_SYMBOLS + 1 */ num_names, num_terminals, num_non_terminals, num_rules, num_conflict_elements, num_single_productions, gotodom_size;/******************************************************//* The variables below are used for options setting. *//******************************************************/extern BOOLEAN list_bit, slr_bit, verbose_bit, first_bit, follow_bit, action_bit, edit_bit, states_bit, xref_bit, nt_check_bit, conflicts_bit, read_reduce_bit, goto_default_bit, shift_default_bit, byte_bit, warnings_bit, single_productions_bit, error_maps_bit, debug_bit, deferred_bit, c_bit, cpp_bit, java_bit, jikes_bit, /* undocumented hack for special jikes behavior */ scopes_bit;extern int lalr_level, default_opt, trace_opt, table_opt, names_opt, increment, maximum_distance, minimum_distance, stack_size;extern char escape, ormark, record_format;extern char blockb[], blocke[], hblockb[], hblocke[], errmsg[], gettok[], smactn[], tkactn[];/*********************************************************************//* The variables below are used to hold information about special *//* grammar symbols. *//*********************************************************************/extern short accept_image, eoft_image, eolt_image, empty, error_image; /* Miscellaneous counters. */extern int num_first_sets, num_shift_maps, page_no;extern long string_offset, string_size, num_shifts, num_shift_reduces, num_gotos, num_goto_reduces, num_reductions, num_sr_conflicts, num_rr_conflicts, num_entries;extern char *string_table;extern short *rhs_sym;extern struct ruletab_type *rules;/***********************************************************************//* CLOSURE is a mapping from non-terminal to a set (linked-list) of *//* non-terminals. The set consists of non-terminals that are *//* automatically introduced via closure when the original non-terminal *//* is introduced. *//* CL_ITEMS is a mapping from each non-terminal to a set (linked list) *//* of items which are the first item of the rules generated by the *//* non-terminal in question. ADEQUATE_ITEM is a mapping from each rule *//* to the last (complete) item produced by that rule. *//* ITEM_TABLE is used to map each item into a number. Given that *//* number one can retrieve the rule the item belongs to, the position *//* of the dot, the symbol following the dot, and FIRST of the suffix *//* following the "dot symbol". *//***********************************************************************/extern struct node **closure, **clitems, **adequate_item;extern struct itemtab{ short symbol, rule_number, suffix_index, dot;} *item_table;/***********************************************************************//* SYMNO is an array that maps symbol numbers to actual symbols. *//***********************************************************************/extern struct symno_type{ int ptr, name_index;} *symno;/***********************************************************************//* These variables hold the number of BOOLEAN_CELLS required to form a *//* set of terminals, non-terminals and states, respectively. *//***********************************************************************/extern int term_set_size, non_term_set_size, state_set_size;/***********************************************************************//* NULL_NT is a boolean vector that indicates whether or not a given *//* non-terminal is nullable. *//***********************************************************************/extern BOOLEAN *null_nt;/***********************************************************************//* FOLLOW is a mapping from non-terminals to a set of terminals that *//* may appear immediately after the non-terminal. *//***********************************************************************/extern SET_PTR nt_first, first, follow;/***********************************************************************//* NAME is an array containing names to be associated with symbols. *//* REDUCE is a mapping from each state to reduce actions in that state.*//* SHIFT is an array used to hold the complete set of all shift maps *//* needed to construct the state automaton. Though its size is *//* NUM_STATES, the actual number of elements used in it is indicated *//* by the integer NUM_SHIFT_MAPS. NUM_STATES elements were allocated, *//* because if the user requests that certain single productions be *//* removed, a Shift map containing actions involving such productions *//* cannot be shared. *//***********************************************************************/extern struct shift_header_type *shift;extern struct reduce_header_type *reduce;extern short *gotodef, *shiftdf, *gd_index, *gd_range;extern int *name;/***********************************************************************//* STATSET is a mapping from state number to state information. *//* LASTATS is a similar mapping for look-ahead states. *//* IN_STAT is a mapping from each state to the set of states that have *//* a transition into the state in question. *//***********************************************************************/extern struct statset_type *statset;extern struct lastats_type *lastats;extern struct node **in_stat;extern int num_scopes, scope_rhs_size, scope_state_size, num_error_rules;extern struct scope_type{ short prefix, suffix, lhs_symbol, look_ahead, state_set;} *scope;extern short *scope_right_side, *scope_state;/*******************************************************************//*******************************************************************//** **//** OUTPUT DECLARATIONS **//** **//*******************************************************************//*******************************************************************//* The following external variables are used only in processing *//* output. *//*******************************************************************/extern char *output_ptr, *output_buffer;extern short *symbol_map, *ordered_state, *state_list;extern int *next, *previous, *state_index;extern long table_size, action_size, increment_size;extern short last_non_terminal, last_terminal;extern int accept_act, error_act, first_index, last_index, last_symbol, max_name_length;extern SET_PTR naction_symbols, action_symbols;extern BOOLEAN byte_terminal_range;#endif /* COMMON_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -