/* l2xiprse.h for LTX2X interpreter parser module */
/* BASED ON: parser.h (unaltered except for common names) */
#ifndef parser_h
#define parser_h
#include "l2xicmon.h"
#include "l2xisymt.h"
/* users of a variable */
typedef enum {
EXPR_USE, TARGET_USE, VARPARM_USE,
} USE;
/* FUNCTIONS */
TYPE_STRUCT_PTR expression();
TYPE_STRUCT_PTR variable();
TYPE_STRUCT_PTR routine_call();
TYPE_STRUCT_PTR base_type();
BOOLEAN is_assign_type_compatible();
/* MACROS for parsing */
/* if_token_get if token = token_code, get the next token */
#define if_token_get(token_code) \
if (token == token_code) get_token()
/* if_token_get_else_error if token = token code, get next token, else error */
#define if_token_get_else_error(token_code, error_code) \
if (token == token_code) get_token(); \
else error(error_code)
/* ANALYSIS routine calls */
/* Unless the following statements are preceeded by #define analyze */
/* calls to the analysis routines are not compiled. */
#ifndef analyze
#define analyze_const_defn(idp)
#define analyze_var_decl(idp)
#define analyze_type_defn(idp)
#define analyze_routine_header(idp)
#define analyze_block(idp)
#endif
#endif