diff options
Diffstat (limited to 'defs.h')
-rw-r--r-- | defs.h | 137 |
1 files changed, 106 insertions, 31 deletions
@@ -1,4 +1,4 @@ -/* $Id: defs.h,v 1.57 2017/04/30 23:29:11 tom Exp $ */ +/* $Id: defs.h,v 1.65 2019/11/19 23:47:49 tom Exp $ */ #ifdef HAVE_CONFIG_H #include <config.h> @@ -101,39 +101,48 @@ /* keyword codes */ -#define TOKEN 0 -#define LEFT 1 -#define RIGHT 2 -#define NONASSOC 3 -#define MARK 4 -#define TEXT 5 -#define TYPE 6 -#define START 7 -#define UNION 8 -#define IDENT 9 -#define EXPECT 10 -#define EXPECT_RR 11 -#define PURE_PARSER 12 -#define PARSE_PARAM 13 -#define LEX_PARAM 14 -#define POSIX_YACC 15 -#define TOKEN_TABLE 16 -#define ERROR_VERBOSE 17 -#define XXXDEBUG 18 +typedef enum +{ + TOKEN = 0 + ,LEFT + ,RIGHT + ,NONASSOC + ,MARK + ,TEXT + ,TYPE + ,START + ,UNION + ,IDENT + ,EXPECT + ,EXPECT_RR + ,PURE_PARSER + ,PARSE_PARAM + ,LEX_PARAM + ,POSIX_YACC + ,TOKEN_TABLE + ,ERROR_VERBOSE + ,XXXDEBUG + ,XCODE #if defined(YYBTYACC) -#define LOCATIONS 19 -#define DESTRUCTOR 20 -#define INITIAL_ACTION 21 + ,LOCATIONS + ,DESTRUCTOR + ,INITIAL_ACTION #endif +} +KEY_CASES; /* symbol classes */ -#define UNKNOWN 0 -#define TERM 1 -#define NONTERM 2 -#define ACTION 3 -#define ARGUMENT 4 +typedef enum +{ + UNKNOWN = 0 + ,TERM + ,NONTERM + ,ACTION + ,ARGUMENT +} +SYM_CASES; /* the undefined value */ @@ -146,9 +155,10 @@ /* character macros */ -#define IS_IDENT(c) (isalnum(c) || (c) == '_' || (c) == '.' || (c) == '$') +#define IS_NAME1(c) (isalpha(UCH(c)) || (c) == '_' || (c) == '$') +#define IS_NAME2(c) (isalnum(UCH(c)) || (c) == '_' || (c) == '$') +#define IS_IDENT(c) (isalnum(UCH(c)) || (c) == '_' || (c) == '.' || (c) == '$') #define IS_OCTAL(c) ((c) >= '0' && (c) <= '7') -#define NUMERIC_VALUE(c) ((c) - '0') /* symbol macros */ @@ -272,6 +282,7 @@ struct param /* global variables */ +extern char dflag2; extern char dflag; extern char gflag; extern char iflag; @@ -411,6 +422,21 @@ extern param *parse_param; #endif #endif +#ifdef __GNUC__ +#define ATTRIBUTE_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define ATTRIBUTE_NORETURN __declspec(noreturn) +#else +#define ATTRIBUTE_NORETURN +#endif + +#if defined(NDEBUG) && defined(_MSC_VER) +#define NODEFAULT __assume(0); +#else +#define NODEFAULT +#endif +#define NOTREACHED NODEFAULT + #ifndef GCC_UNUSED #if defined(__unused) #define GCC_UNUSED __unused @@ -438,20 +464,31 @@ struct ainfo extern void arg_number_disagree_warning(int a_lineno, char *a_name); extern void arg_type_disagree_warning(int a_lineno, int i, char *a_name); +ATTRIBUTE_NORETURN extern void at_error(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN; extern void at_warning(int a_lineno, int i); +ATTRIBUTE_NORETURN extern void bad_formals(void) GCC_NORETURN; extern void default_action_warning(char *s); extern void destructor_redeclared_warning(const struct ainfo *); +ATTRIBUTE_NORETURN extern void dollar_error(int a_lineno, char *a_line, char *a_cptr) GCC_NORETURN; extern void dollar_warning(int a_lineno, int i); +ATTRIBUTE_NORETURN extern void fatal(const char *msg) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void illegal_character(char *c_cptr) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void illegal_tag(int t_lineno, char *t_line, char *t_cptr) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void missing_brace(void) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void no_grammar(void) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void no_space(void) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void open_error(const char *filename) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void over_unionized(char *u_cptr) GCC_NORETURN; extern void prec_redeclared(void); extern void reprec_warning(char *s); @@ -459,25 +496,43 @@ extern void restarted_warning(void); extern void retyped_warning(char *s); extern void revalued_warning(char *s); extern void start_requires_args(char *a_name); +ATTRIBUTE_NORETURN extern void syntax_error(int st_lineno, char *st_line, char *st_cptr) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void terminal_lhs(int s_lineno) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void terminal_start(char *s) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void tokenized_start(char *s) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void undefined_goal(char *s) GCC_NORETURN; extern void undefined_symbol_warning(char *s); +ATTRIBUTE_NORETURN extern void unexpected_EOF(void) GCC_NORETURN; -extern void unknown_arg_warning(int d_lineno, const char *dlr_opt, const char *d_arg, const char *d_line, const char *d_cptr); +extern void unknown_arg_warning(int d_lineno, const char *dlr_opt, + const char *d_arg, const char *d_line, + const char *d_cptr); +ATTRIBUTE_NORETURN extern void unknown_rhs(int i) GCC_NORETURN; extern void unsupported_flag_warning(const char *flag, const char *details); +ATTRIBUTE_NORETURN extern void unterminated_action(const struct ainfo *) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void unterminated_comment(const struct ainfo *) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void unterminated_string(const struct ainfo *) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void unterminated_text(const struct ainfo *) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void unterminated_union(const struct ainfo *) GCC_NORETURN; extern void untyped_arg_warning(int a_lineno, const char *dlr_opt, const char *a_name); +ATTRIBUTE_NORETURN extern void untyped_lhs(void) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void untyped_rhs(int i, char *s) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void used_reserved(char *s) GCC_NORETURN; +ATTRIBUTE_NORETURN extern void unterminated_arglist(const struct ainfo *) GCC_NORETURN; extern void wrong_number_args_warning(const char *which, const char *a_name); extern void wrong_type_for_arg_warning(int i, char *a_name); @@ -497,6 +552,7 @@ extern void show_shifts(void); /* main.c */ extern void *allocate(size_t n); +ATTRIBUTE_NORETURN extern void done(int k) GCC_NORETURN; /* mkpar.c */ @@ -512,6 +568,7 @@ struct mstring extern void msprintf(struct mstring *, const char *, ...) GCC_PRINTFLIKE(2,3); extern int mputchar(struct mstring *, int); extern struct mstring *msnew(void); +extern struct mstring *msrenew(char *); extern char *msdone(struct mstring *); extern int strnscmp(const char *, const char *); extern unsigned int strnshash(const char *); @@ -526,6 +583,24 @@ extern void output(void); /* reader.c */ extern void reader(void); +typedef enum +{ + CODE_HEADER = 0 + ,CODE_REQUIRES + ,CODE_PROVIDES + ,CODE_TOP + ,CODE_IMPORTS + ,CODE_MAX /* this must be last */ +} +CODE_CASES; +extern struct code_lines +{ + const char *name; + char *lines; + size_t num; +} +code_lines[CODE_MAX]; + /* skeleton.c (generated by skel2c) */ extern void write_section(FILE * fp, const char *const section[]); |