summaryrefslogtreecommitdiff
path: root/support/ltx2x/l2xiprse.h
blob: b010f318d831302729c80fd7b2e7c17e54ca7537 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* 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