struct resword {
  const char  *name;
  short        token;
  enum rid     rid;
  enum toktype { RESERVED, DIRECTIVE, PREDEF } flags;
};
extern tree ridpointers [];
#ifdef __GNUC__
__inline
#endif
static unsigned int hash	PARAMS ((const char *, unsigned int));
#ifdef __GNUC__
__inline
#endif
struct resword *in_word_set	PARAMS ((const char *, unsigned int));
%%
access,			ACCESS,			NORID,	RESERVED
after,			AFTER,			NORID,	RESERVED
all,			ALL,			NORID,	RESERVED
all_static_off,		ALL_STATIC_OFF,		NORID,  DIRECTIVE
all_static_on,		ALL_STATIC_ON,		NORID,	DIRECTIVE
and,			AND,			NORID,	RESERVED
andif,			ANDIF,			NORID,	RESERVED
array,			ARRAY,			NORID,	RESERVED
asm,			ASM_KEYWORD,		NORID,	RESERVED
assert,			ASSERT,			NORID,	RESERVED
at,			AT,			NORID,	RESERVED
based,			BASED,			NORID,	RESERVED
begin,			BEGINTOKEN,		NORID,	RESERVED
bin,			BIN,			NORID,	RESERVED
bit,			BOOLS,			RID_BOOLS,	PREDEF
body,			BODY,			NORID,	RESERVED
bools,			BOOLS,			RID_BOOLS,	RESERVED
buffer,			BUFFER,			NORID,	RESERVED
buffer_code,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
by,			BY,			NORID,	RESERVED
call,			CALL,			NORID,	RESERVED
case,			CASE,			NORID,	RESERVED
cause,			CAUSE,			NORID,	RESERVED
ccitt_os,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
chars,			CHARS,			NORID,	RESERVED
context,		CONTEXT,		NORID,	RESERVED
continue,		CONTINUE,		NORID,	RESERVED
cycle,			CYCLE,			NORID,	RESERVED
dcl,			DCL,			NORID,	RESERVED
debug_lines,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
debug_symbols,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
debug_types,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
delay,			DELAY,			NORID,	RESERVED
do,			DO,			NORID,	RESERVED
down,			DOWN,			NORID,	RESERVED
dynamic,		DYNAMIC,		RID_DYNAMIC,	RESERVED
else,			ELSE,			NORID,	RESERVED
elsif,			ELSIF,			NORID,	RESERVED
empty_off,		EMPTY_OFF,		NORID,	DIRECTIVE
empty_on,		EMPTY_ON,		NORID,	DIRECTIVE
end,			END,			NORID,	RESERVED
esac,			ESAC,			NORID,	RESERVED
even,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
event,			EVENT,			NORID,	RESERVED
event_code,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
ever,			EVER,			NORID,	RESERVED
exceptions,		EXCEPTIONS,		NORID,	RESERVED
exit,			EXIT,			NORID,	RESERVED
extra_const_seg,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
far,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
fi,			FI,			NORID,	RESERVED
for,			FOR,			NORID,	RESERVED
forbid,			FORBID,			NORID,	RESERVED
general,		GENERAL,		NORID,	RESERVED
generate_all_set_names,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
generate_set_names,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
goto,			GOTO,			NORID,	RESERVED
grant,			GRANT,			NORID,	RESERVED
grant_file_size,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
if,			IF,			NORID,	RESERVED
in,			IN,			RID_IN,	RESERVED
init,			INIT,			NORID,	RESERVED
inline,			INLINE,			RID_INLINE,	RESERVED
inout,			PARAMATTR,		RID_INOUT,	RESERVED
large,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
list,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
loc,			LOC,			NORID,	RESERVED
make_publics_for_discrete_syns,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
medium,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
mod,			MOD,			NORID,	RESERVED
module,			MODULE,			NORID,	RESERVED
multiple_const_segs,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
multiple_data_segs,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
newmode,		NEWMODE,		NORID,	RESERVED
nolist,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
no_overlap_check,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
nonref,			NONREF,			NORID,	RESERVED
nopack,			NOPACK,			NORID,	RESERVED
not,			NOT,			NORID,	RESERVED
od,			OD,			NORID,	RESERVED
of,			OF,			NORID,	RESERVED
on,			ON,			NORID,	RESERVED
only_for_simulation,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
only_for_target,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
optimize,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
optimize_runtime,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
optimization_window,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
or,			OR,			NORID,	RESERVED
orif,			ORIF,			NORID,	RESERVED
out,			PARAMATTR,		RID_OUT,	RESERVED
pack,			PACK,			NORID,	RESERVED
page,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
pos,			POS,			NORID,	RESERVED
powerset,		POWERSET,		NORID,	RESERVED
prefixed,		PREFIXED,		NORID,	RESERVED
print_o_code,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
print_symbol_table,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
priority,		PRIORITY,		NORID,	RESERVED
proc,			PROC,			NORID,	RESERVED
process,		PROCESS,		NORID,	RESERVED
process_type,		PROCESS_TYPE_TOKEN,	NORID,	DIRECTIVE
range,			RANGE,			NORID,	RESERVED
range_off,		RANGE_OFF,		NORID,	DIRECTIVE
range_on,		RANGE_ON,		NORID,	DIRECTIVE
read,			READ,			RID_READ,	RESERVED
receive,		RECEIVE,		NORID,	RESERVED
recursive,		RECURSIVE,		NORID,	RESERVED
reentrant,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
reentrant_all,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
ref,			REF,			NORID,	RESERVED
region,			REGION,			NORID,	RESERVED
rem,			REM,			NORID,	RESERVED
remote,			REMOTE,			NORID,	RESERVED
result,			RESULT,			NORID,	RESERVED
return,			RETURN,			NORID,	RESERVED
returns,		RETURNS,		NORID,	RESERVED
row,			ROW,			NORID,	RESERVED
seize,			SEIZE,			NORID,	RESERVED
send,			SEND,			NORID,	RESERVED
send_buffer_default_priority,	SEND_BUFFER_DEFAULT_PRIORITY,	NORID,	DIRECTIVE
send_signal_default_priority,	SEND_SIGNAL_DEFAULT_PRIORITY,	NORID,	DIRECTIVE
set,			SET,			NORID,	RESERVED
short_pred_succ,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
signal,			SIGNAL,			NORID,	RESERVED
signal_code,		SIGNAL_CODE,		NORID,	DIRECTIVE
signal_max_length,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
simple,			SIMPLE,			NORID,	RESERVED
small,			IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
spec,			SPEC,			NORID,	RESERVED
start,			START,			NORID,	RESERVED
state_routine,		IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
static,			STATIC,			NORID,	RESERVED
step,			STEP,			NORID,	RESERVED
stop,			STOP,			NORID,	RESERVED
struct,			STRUCT,			NORID,	RESERVED
support_causing_address,	IGNORED_DIRECTIVE,	NORID,	DIRECTIVE
syn,			SYN,			NORID,	RESERVED
synmode,		SYNMODE,		NORID,	RESERVED
text,			TEXT,			NORID,	RESERVED
then,			THEN,			NORID,	RESERVED
this,			THIS,			NORID,	RESERVED
timeout,		TIMEOUT,		NORID,	RESERVED
to,			TO,			NORID,	RESERVED
up,			UP,			NORID,	RESERVED
use_seize_file,		USE_SEIZE_FILE,		NORID,	DIRECTIVE
use_seize_file_restricted,	USE_SEIZE_FILE_RESTRICTED,	NORID,	DIRECTIVE
varying,		VARYING,		NORID,	RESERVED
while,			WHILE,			NORID,	RESERVED
with,			WITH,			NORID,	RESERVED
xor,			XOR,			NORID,	RESERVED
