/* Definitions for symtab.c and callers, part of bison,
- Copyright (C) 1984, 1989, 1992, 2000 Free Software Foundation, Inc.
+ Copyright 1984, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
#ifndef SYMTAB_H_
# define SYMTAB_H_
+# include "gram.h"
#define TABSIZE 1009
/* symbol classes */
-#define SUNKNOWN 0
-#define STOKEN 1 /* terminal symbol */
-#define SNTERM 2 /* non-terminal */
+typedef enum
+{
+ unknown_sym,
+ token_sym, /* terminal symbol */
+ nterm_sym /* non-terminal */
+} symbol_class;
+#define SUNDEF -1 /* For undefined user number. */
#define SALIAS -9991 /* for symbol generated with an alias */
typedef struct bucket
{
+ /* Needed for the hash table. */
struct bucket *link;
struct bucket *next;
+
+ /* The key, name of the symbol. */
char *tag;
+ /* Its type. */
char *type_name;
short value;
short prec;
- short assoc;
+ associativity assoc;
short user_token_number;
- /* special value SALIAS in the identifier half of the
- identifier-symbol pair for an alias */
+ /* Points to the other in the identifier-symbol pair for an
+ alias. Special value SALIAS in the identifier half of the
+ identifier-symbol pair for an alias. */
struct bucket *alias;
- /* points to the other in the identifier-symbol pair for an alias */
- char class;
+ symbol_class class;
}
bucket;