/* %Z%%M% %I% %E% */

/*
 * Copyright (c) 1990, 1991, 1995 by Wayne C. Gramlich.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * for any purpose is hereby granted without fee provided that the above
 * copyright notice and this permission are retained.  The author makes
 * no representations about the suitability of this software for any purpose.
 * It is provided "as is" without express or implied warranty.
 */

#ifndef TOKEN_DEFS_H
#define TOKEN_DEFS_H

#ifndef TOKEN_EXPORTS_H
#include "token_exports.h"
#endif

#define TOKEN_NONE	((Token)0)

/* These are the different types of lexical values: */
union Token_value_union {
	int		operator;
	int		integer;
	Str		string;
	Str		symbol;
	Str		text;
};

/* This is a lexical token: */
struct Token_struct {
	int		position;	/* File character offset */
	Token_type	type;		/* Token type */
	Token_value	value;		/* Token value */
};

#endif /* TOKEN_DEFS_H */
