diff options
Diffstat (limited to 'flexdef.h')
-rw-r--r-- | flexdef.h | 322 |
1 files changed, 166 insertions, 156 deletions
@@ -91,9 +91,7 @@ char *alloca (); #define true 1 #define false 0 #endif -#ifdef HAVE_REGEX_H #include <regex.h> -#endif #include "flexint.h" /* We use gettext. So, when we write strings which should be translated, we mark them with _() */ @@ -385,8 +383,10 @@ char *alloca (); * "no more files". * csize - size of character set for the scanner we're generating; * 128 for 7-bit chars and 256 for 8-bit - * yymore_used - if true, yymore() is used in input rules - * reject - if true, generate back-up tables for REJECT macro + * yymore_used - if true, yymore() is used in input rules; true if Flex + * detected use of yymore(), but can be overridden; see yymore_really_used) + * reject - if true, generate back-up tables for REJECT macro; true if Flex + * detected use of reject, but can be overridden; see reject_really_used) * real_reject - if true, scanner really uses REJECT (as opposed to just * having "reject" set for variable trailing context) * continued_action - true if this rule's action is to "fall through" to @@ -396,6 +396,9 @@ char *alloca (); * of what we think based on references to it in the user's actions. * reject_really_used - same for REJECT */ +#ifdef __cplusplus +extern "C" { +#endif extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt; @@ -403,7 +406,6 @@ extern int interactive, lex_compat, posix_compat, do_yylineno; extern int useecs, fulltbl, usemecs, fullspd; extern int gen_line_dirs, performance_report, backing_up_report; extern int reentrant, bison_bridge_lval, bison_bridge_lloc; -extern bool ansi_func_defs, ansi_func_protos; extern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap; extern int csize; extern int yymore_used, reject, real_reject, continued_action, in_rule; @@ -416,15 +418,16 @@ extern int yymore_really_used, reject_really_used; * dataline - number of contiguous lines of data in current data * statement. Used to generate readable -f output * linenum - current input line number - * skelfile - the skeleton file - * skel - compiled-in skeleton array - * skel_ind - index into "skel" array, if skelfile is nil + * out_linenum - current output line number + * skelfile - the skeleton FILE + * skelname - Name of the skeleton source file. + * flex_include_path - path to skeleton m4 files * yyin - input file * backing_up_file - file to summarize backing-up states to * infilename - name of input file * outfilename - name of output file * headerfilename - name of the .h file to generate - * did_outfilename - whether outfilename was explicitly set + * m4outfilename - name of file for intermediate m4 file (for devel debugging) * prefix - the prefix used for externally visible names ("yy" by default) * yyclass - yyFlexLexer subclass to use for YY_DECL * do_stdinit - whether to initialize yyin/yyout to stdin/stdout @@ -443,12 +446,10 @@ extern int yymore_really_used, reject_really_used; * to "action_array" */ -extern int datapos, dataline, linenum; +extern int datapos, dataline, linenum, out_linenum; extern FILE *skelfile, *yyin, *backing_up_file; -extern const char *skel[]; -extern int skel_ind; +extern char *skelname, *flex_include_path; extern char *infilename, *outfilename, *headerfilename; -extern int did_outfilename; extern char *prefix, *yyclass, *extra_type; extern int do_stdinit, use_stdout; extern char **input_files; @@ -674,12 +675,12 @@ extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; extern int num_backing_up, bol_needed; -void *allocate_array PROTO ((int, size_t)); -void *reallocate_array PROTO ((void *, int, size_t)); +void *allocate_array (int, size_t); +void *reallocate_array (void *, int, size_t); -void *flex_alloc PROTO ((size_t)); -void *flex_realloc PROTO ((void *, size_t)); -void flex_free PROTO ((void *)); +void *flex_alloc (size_t); +void *flex_realloc (void *, size_t); +void flex_free (void *); #define allocate_integer_array(size) \ (int *) allocate_array( size, sizeof( int ) ) @@ -737,146 +738,146 @@ extern int yylval; /* from file ccl.c */ -extern void ccladd PROTO ((int, int)); /* add a single character to a ccl */ -extern int cclinit PROTO ((void)); /* make an empty ccl */ -extern void cclnegate PROTO ((int)); /* negate a ccl */ +extern void ccladd (int, int); /* add a single character to a ccl */ +extern int cclinit (void); /* make an empty ccl */ +extern void cclnegate (int); /* negate a ccl */ extern int ccl_set_diff (int a, int b); /* set difference of two ccls. */ extern int ccl_set_union (int a, int b); /* set union of two ccls. */ /* List the members of a set of characters in CCL form. */ -extern void list_character_set PROTO ((FILE *, int[])); +extern void list_character_set (FILE *, int[]); /* from file dfa.c */ /* Check a DFA state for backing up. */ -extern void check_for_backing_up PROTO ((int, int[])); +extern void check_for_backing_up (int, int[]); /* Check to see if NFA state set constitutes "dangerous" trailing context. */ -extern void check_trailing_context PROTO ((int *, int, int *, int)); +extern void check_trailing_context (int *, int, int *, int); /* Construct the epsilon closure of a set of ndfa states. */ -extern int *epsclosure PROTO ((int *, int *, int[], int *, int *)); +extern int *epsclosure (int *, int *, int[], int *, int *); /* Increase the maximum number of dfas. */ -extern void increase_max_dfas PROTO ((void)); +extern void increase_max_dfas (void); -extern void ntod PROTO ((void)); /* convert a ndfa to a dfa */ +extern void ntod (void); /* convert a ndfa to a dfa */ /* Converts a set of ndfa states into a dfa state. */ -extern int snstods PROTO ((int[], int, int[], int, int, int *)); +extern int snstods (int[], int, int[], int, int, int *); /* from file ecs.c */ /* Convert character classes to set of equivalence classes. */ -extern void ccl2ecl PROTO ((void)); +extern void ccl2ecl (void); /* Associate equivalence class numbers with class members. */ -extern int cre8ecs PROTO ((int[], int[], int)); +extern int cre8ecs (int[], int[], int); /* Update equivalence classes based on character class transitions. */ -extern void mkeccl PROTO ((Char[], int, int[], int[], int, int)); +extern void mkeccl (Char[], int, int[], int[], int, int); /* Create equivalence class for single character. */ -extern void mkechar PROTO ((int, int[], int[])); +extern void mkechar (int, int[], int[]); /* from file gen.c */ -extern void do_indent PROTO ((void)); /* indent to the current level */ +extern void do_indent (void); /* indent to the current level */ /* Generate the code to keep backing-up information. */ -extern void gen_backing_up PROTO ((void)); +extern void gen_backing_up (void); /* Generate the code to perform the backing up. */ -extern void gen_bu_action PROTO ((void)); +extern void gen_bu_action (void); /* Generate full speed compressed transition table. */ -extern void genctbl PROTO ((void)); +extern void genctbl (void); /* Generate the code to find the action number. */ -extern void gen_find_action PROTO ((void)); +extern void gen_find_action (void); -extern void genftbl PROTO ((void)); /* generate full transition table */ +extern void genftbl (void); /* generate full transition table */ /* Generate the code to find the next compressed-table state. */ -extern void gen_next_compressed_state PROTO ((char *)); +extern void gen_next_compressed_state (char *); /* Generate the code to find the next match. */ -extern void gen_next_match PROTO ((void)); +extern void gen_next_match (void); /* Generate the code to find the next state. */ -extern void gen_next_state PROTO ((int)); +extern void gen_next_state (int); /* Generate the code to make a NUL transition. */ -extern void gen_NUL_trans PROTO ((void)); +extern void gen_NUL_trans (void); /* Generate the code to find the start state. */ -extern void gen_start_state PROTO ((void)); +extern void gen_start_state (void); /* Generate data statements for the transition tables. */ -extern void gentabs PROTO ((void)); +extern void gentabs (void); /* Write out a formatted string at the current indentation level. */ -extern void indent_put2s PROTO ((const char *, const char *)); +extern void indent_put2s (const char *, const char *); /* Write out a string + newline at the current indentation level. */ -extern void indent_puts PROTO ((const char *)); +extern void indent_puts (const char *); + +extern void make_tables (void); /* generate transition tables */ -extern void make_tables PROTO ((void)); /* generate transition tables */ +extern void generate_code (void); /* main code-generation routine */ /* from file main.c */ -extern void check_options PROTO ((void)); -extern void flexend PROTO ((int)); -extern void usage PROTO ((void)); +extern void check_options (void); +extern void flexend (int); +extern void usage (void); /* from file misc.c */ /* Add a #define to the action file. */ -extern void action_define PROTO ((const char *defname, int value)); +extern void action_define (const char *defname, int value); /* Add the given text to the stored actions. */ -extern void add_action PROTO ((const char *new_text)); +extern void add_action (const char *new_text); /* True if a string is all lower case. */ -extern int all_lower PROTO ((register char *)); +extern int all_lower (register char *); /* True if a string is all upper case. */ -extern int all_upper PROTO ((register char *)); - +extern int all_upper (register char *); /* Compare two integers for use by qsort. */ extern int intcmp PROTO ((const void *, const void *)); /* Check a character to make sure it's in the expected range. */ -extern void check_char PROTO ((int c)); +extern void check_char (int c); /* Replace upper-case letter to lower-case. */ -extern Char clower PROTO ((int)); +extern Char clower (int); /* Returns a dynamically allocated copy of a string. */ -extern char *copy_string PROTO ((register const char *)); +extern char *copy_string (register const char *); /* Returns a dynamically allocated copy of a (potentially) unsigned string. */ -extern Char *copy_unsigned_string PROTO ((register Char *)); - +extern Char *copy_unsigned_string (register Char *); /* Compare two characters for use by qsort with '\0' sorting last. */ extern int cclcmp PROTO ((const void *, const void *)); /* Finish up a block of data declarations. */ -extern void dataend PROTO ((void)); +extern void dataend (void); /* Flush generated data statements. */ -extern void dataflush PROTO ((void)); +extern void dataflush (void); /* Report an error message and terminate. */ -extern void flexerror PROTO ((const char *)); +extern void flexerror (const char *); /* Report a fatal error message and terminate. */ -extern void flexfatal PROTO ((const char *)); +extern void flexfatal (const char *); /* Report a fatal error with a pinpoint, and terminate */ #if HAVE_DECL___FUNC__ @@ -900,202 +901,205 @@ extern void flexfatal PROTO ((const char *)); #endif /* ! HAVE_DECL___func__ */ /* Convert a hexadecimal digit string to an integer value. */ -extern int htoi PROTO ((Char[])); +extern int htoi (Char[]); /* Report an error message formatted with one integer argument. */ -extern void lerrif PROTO ((const char *, int)); +extern void lerrif (const char *, int); /* Report an error message formatted with one string argument. */ -extern void lerrsf PROTO ((const char *, const char *)); - -/* Like lerrsf, but also exit after displaying message. */ -extern void lerrsf_fatal PROTO ((const char *, const char *)); +extern void lerrsf (const char *, const char *); /* Spit out a "#line" statement. */ -extern void line_directive_out PROTO ((FILE *, int)); +extern void line_directive_out (FILE *, int); /* Mark the current position in the action array as the end of the section 1 * user defs. */ -extern void mark_defs1 PROTO ((void)); +extern void mark_defs1 (void); /* Mark the current position in the action array as the end of the prolog. */ -extern void mark_prolog PROTO ((void)); +extern void mark_prolog (void); /* Generate a data statment for a two-dimensional array. */ -extern void mk2data PROTO ((int)); +extern void mk2data (int); -extern void mkdata PROTO ((int)); /* generate a data statement */ +extern void mkdata (int); /* generate a data statement */ /* Return the integer represented by a string of digits. */ -extern int myctoi PROTO ((const char *)); +extern int myctoi (const char *); /* Return character corresponding to escape sequence. */ -extern Char myesc PROTO ((Char[])); +extern Char myesc (Char[]); /* Convert an octal digit string to an integer value. */ -extern int otoi PROTO ((Char[])); +extern int otoi (Char[]); /* Output a (possibly-formatted) string to the generated scanner. */ -extern void out PROTO ((const char *)); -extern void out_dec PROTO ((const char *, int)); -extern void out_dec2 PROTO ((const char *, int, int)); -extern void out_hex PROTO ((const char *, unsigned int)); -extern void out_str PROTO ((const char *, const char *)); +extern void out (const char *); +extern void out_dec (const char *, int); +extern void out_dec2 (const char *, int, int); +extern void out_hex (const char *, unsigned int); +extern void out_line_count (const char *); +extern void out_str (const char *, const char *); extern void out_str3 -PROTO ((const char *, const char *, const char *, const char *)); -extern void out_str_dec PROTO ((const char *, const char *, int)); -extern void outc PROTO ((int)); -extern void outn PROTO ((const char *)); +(const char *, const char *, const char *, const char *); +extern void out_str_dec (const char *, const char *, int); +extern void outc (int); +extern void outn (const char *); extern void out_m4_define (const char* def, const char* val); /* Return a printable version of the given character, which might be * 8-bit. */ -extern char *readable_form PROTO ((int)); +extern char *readable_form (int); /* Write out one section of the skeleton file. */ -extern void skelout PROTO ((void)); +extern void skelout (void); /* Output a yy_trans_info structure. */ -extern void transition_struct_out PROTO ((int, int)); +extern void transition_struct_out (int, int); /* Only needed when using certain broken versions of bison to build parse.c. */ -extern void *yy_flex_xmalloc PROTO ((int)); +extern void *yy_flex_xmalloc (int); /* Set a region of memory to 0. */ -extern void zero_out PROTO ((char *, size_t)); +extern void zero_out (char *, size_t); /* from file nfa.c */ /* Add an accepting state to a machine. */ -extern void add_accept PROTO ((int, int)); +extern void add_accept (int, int); /* Make a given number of copies of a singleton machine. */ -extern int copysingl PROTO ((int, int)); +extern int copysingl (int, int); /* Debugging routine to write out an nfa. */ -extern void dumpnfa PROTO ((int)); +extern void dumpnfa (int); /* Finish up the processing for a rule. */ -extern void finish_rule PROTO ((int, int, int, int, int)); +extern void finish_rule (int, int, int, int, int); /* Connect two machines together. */ -extern int link_machines PROTO ((int, int)); +extern int link_machines (int, int); /* Mark each "beginning" state in a machine as being a "normal" (i.e., * not trailing context associated) state. */ -extern void mark_beginning_as_normal PROTO ((register int)); +extern void mark_beginning_as_normal (register int); /* Make a machine that branches to two machines. */ -extern int mkbranch PROTO ((int, int)); +extern int mkbranch (int, int); -extern int mkclos PROTO ((int)); /* convert a machine into a closure */ -extern int mkopt PROTO ((int)); /* make a machine optional */ +extern int mkclos (int); /* convert a machine into a closure */ +extern int mkopt (int); /* make a machine optional */ /* Make a machine that matches either one of two machines. */ -extern int mkor PROTO ((int, int)); +extern int mkor (int, int); /* Convert a machine into a positive closure. */ -extern int mkposcl PROTO ((int)); +extern int mkposcl (int); -extern int mkrep PROTO ((int, int, int)); /* make a replicated machine */ +extern int mkrep (int, int, int); /* make a replicated machine */ /* Create a state with a transition on a given symbol. */ -extern int mkstate PROTO ((int)); +extern int mkstate (int); -extern void new_rule PROTO ((void)); /* initialize for a new rule */ +extern void new_rule (void); /* initialize for a new rule */ /* from file parse.y */ /* Build the "<<EOF>>" action for the active start conditions. */ -extern void build_eof_action PROTO ((void)); +extern void build_eof_action (void); /* Write out a message formatted with one string, pinpointing its location. */ -extern void format_pinpoint_message PROTO ((const char *, const char *)); +extern void format_pinpoint_message (const char *, const char *); /* Write out a message, pinpointing its location. */ -extern void pinpoint_message PROTO ((const char *)); +extern void pinpoint_message (const char *); /* Write out a warning, pinpointing it at the given line. */ -extern void line_warning PROTO ((const char *, int)); +extern void line_warning (const char *, int); /* Write out a message, pinpointing it at the given line. */ -extern void line_pinpoint PROTO ((const char *, int)); +extern void line_pinpoint (const char *, int); /* Report a formatted syntax error. */ -extern void format_synerr PROTO ((const char *, const char *)); -extern void synerr PROTO ((const char *)); /* report a syntax error */ -extern void format_warn PROTO ((const char *, const char *)); -extern void warn PROTO ((const char *)); /* report a warning */ -extern void yyerror PROTO ((const char *)); /* report a parse error */ -extern int yyparse PROTO ((void)); /* the YACC parser */ +extern void format_synerr (const char *, const char *); +extern void synerr (const char *); /* report a syntax error */ +extern void format_warn (const char *, const char *); +extern void warn (const char *); /* report a warning */ +extern void yyerror (const char *); /* report a parse error */ +extern int yyparse (void); /* the YACC parser */ /* from file scan.l */ /* The Flex-generated scanner for flex. */ -extern int flexscan PROTO ((void)); +extern int flexscan (void); /* Open the given file (if NULL, stdin) for scanning. */ -extern void set_input_file PROTO ((char *)); +extern void set_input_file (char *); /* Wrapup a file in the lexical analyzer. */ -extern int yywrap PROTO ((void)); +extern int yywrap (void); /* from file sym.c */ /* Save the text of a character class. */ -extern void cclinstal PROTO ((Char[], int)); +extern void cclinstal (Char[], int); /* Lookup the number associated with character class. */ -extern int ccllookup PROTO ((Char[])); +extern int ccllookup (Char[]); + +extern void ndinstal (const char *, Char[]); /* install a name definition */ +extern Char *ndlookup (const char *); /* lookup a name definition */ -extern void ndinstal PROTO ((const char *, Char[])); /* install a name definition */ -extern Char *ndlookup PROTO ((const char *)); /* lookup a name definition */ +extern Char *m4_define (const char *, Char[]); /* define an M4 macro */ + /* define an M4 macro, warn if already defined */ +extern void m4_define_warn (const char *, Char[], const char *message); +extern Char *m4_lookup (const char *); /* lookup an M4 macro definition */ /* Increase maximum number of SC's. */ -extern void scextend PROTO ((void)); -extern void scinstal PROTO ((const char *, int)); /* make a start condition */ +extern void scextend (void); +extern void scinstal (const char *, int); /* make a start condition */ /* Lookup the number associated with a start condition. */ -extern int sclookup PROTO ((const char *)); +extern int sclookup (const char *); /* from file tblcmp.c */ /* Build table entries for dfa state. */ -extern void bldtbl PROTO ((int[], int, int, int, int)); +extern void bldtbl (int[], int, int, int, int); -extern void cmptmps PROTO ((void)); /* compress template table entries */ -extern void expand_nxt_chk PROTO ((void)); /* increase nxt/chk arrays */ +extern void cmptmps (void); /* compress template table entries */ +extern void expand_nxt_chk (void); /* increase nxt/chk arrays */ /* Finds a space in the table for a state to be placed. */ -extern int find_table_space PROTO ((int *, int)); -extern void inittbl PROTO ((void)); /* initialize transition tables */ +extern int find_table_space (int *, int); +extern void inittbl (void); /* initialize transition tables */ /* Make the default, "jam" table entries. */ -extern void mkdeftbl PROTO ((void)); +extern void mkdeftbl (void); /* Create table entries for a state (or state fragment) which has * only one out-transition. */ -extern void mk1tbl PROTO ((int, int, int, int)); +extern void mk1tbl (int, int, int, int); /* Place a state into full speed transition table. */ -extern void place_state PROTO ((int *, int, int)); +extern void place_state (int *, int, int); /* Save states with only one out-transition to be processed later. */ -extern void stack1 PROTO ((int, int, int, int)); +extern void stack1 (int, int, int, int); /* from file yylex.c */ -extern int yylex PROTO ((void)); +extern int yylex (void); /* A growable array. See buf.c. */ struct Buf { @@ -1105,27 +1109,29 @@ struct Buf { int nmax; /* max capacity of elements. */ }; -extern void buf_init PROTO ((struct Buf * buf, size_t elem_size)); -extern void buf_destroy PROTO ((struct Buf * buf)); +extern void buf_init (struct Buf * buf, size_t elem_size); +extern void buf_destroy (struct Buf * buf); +extern void buf_free (struct Buf * buf); extern struct Buf *buf_append -PROTO ((struct Buf * buf, const void *ptr, int n_elem)); -extern struct Buf *buf_concat PROTO((struct Buf* dest, const struct Buf* src)); -extern struct Buf *buf_strappend PROTO ((struct Buf *, const char *str)); +(struct Buf * buf, const void *ptr, int n_elem); +extern struct Buf *buf_concat (struct Buf* dest, const struct Buf* src); +extern struct Buf *buf_strappend (struct Buf *, const char *str); extern struct Buf *buf_strnappend -PROTO ((struct Buf *, const char *str, int nchars)); +(struct Buf *, const char *str, int nchars); extern struct Buf *buf_strdefine -PROTO ((struct Buf * buf, const char *str, const char *def)); -extern struct Buf *buf_prints PROTO((struct Buf *buf, const char *fmt, const char* s)); -extern struct Buf *buf_m4_define PROTO((struct Buf *buf, const char* def, const char* val)); -extern struct Buf *buf_m4_undefine PROTO((struct Buf *buf, const char* def)); -extern struct Buf *buf_print_strings PROTO((struct Buf * buf, FILE* out)); -extern struct Buf *buf_linedir PROTO((struct Buf *buf, const char* filename, int lineno)); +(struct Buf * buf, const char *str, const char *def); +extern struct Buf *buf_prints (struct Buf *buf, const char *fmt, const char* s); +extern struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val); +extern struct Buf *buf_m4_undefine (struct Buf *buf, const char* def); +extern struct Buf *buf_print_strings (struct Buf * buf, FILE* out); +extern struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno); extern struct Buf userdef_buf; /* a string buffer for #define's generated by user-options on cmd line. */ extern struct Buf defs_buf; /* a char* buffer to save #define'd some symbols generated by flex. */ extern struct Buf yydmap_buf; /* a string buffer to hold yydmap elements */ extern struct Buf m4defs_buf; /* Holds m4 definitions. */ extern struct Buf top_buf; /* contains %top code. String buffer. */ +extern struct Buf bottom_buf; /* contains %bottom code. String buffer. */ /* For blocking out code from the header file. */ #define OUT_BEGIN_CODE() outn("m4_ifdef( [[M4_YY_IN_HEADER]],,[[") @@ -1181,14 +1187,15 @@ struct filter { /* output filter chain */ extern struct filter * output_chain; -extern struct filter *filter_create_ext PROTO((struct filter * chain, const char *cmd, ...)); -struct filter *filter_create_int PROTO((struct filter *chain, - int (*filter_func) (struct filter *), - void *extra)); -extern bool filter_apply_chain PROTO((struct filter * chain)); +extern struct filter *filter_create_ext (struct filter * chain, const char *cmd, ...); +struct filter *filter_create_int (struct filter *chain, + int (*filter_func) (struct filter *), void *extra); +extern bool filter_apply_chain (struct filter * chain); extern int filter_truncate (struct filter * chain, int max_len); -extern int filter_tee_header PROTO((struct filter *chain)); -extern int filter_fix_linedirs PROTO((struct filter *chain)); +extern int filter_tee_header (struct filter *chain); +extern int filter_fix_linedirs (struct filter *chain); +extern int filter_check_errors (struct filter *chain); + /* @@ -1222,5 +1229,8 @@ extern void sf_init(void); extern void sf_push(void); extern void sf_pop(void); +#ifdef __cplusplus +} +#endif #endif /* not defined FLEXDEF_H */ |