#include "SDCCset.h"
#include "SDCCmem.h"
-#define EX_OP 0
-#define EX_VALUE 1
-#define EX_LINK 2
-#define EX_STMNT 3
-#define EX_OPERAND 4
+typedef enum {
+ EX_OP=0,
+ EX_VALUE,
+ EX_LINK,
+ EX_OPERAND
+} ASTTYPE;
/* expression tree */
typedef struct ast
{
- unsigned type:3;
+ ASTTYPE type;
unsigned decorated:1;
unsigned isError:1;
unsigned funcName:1;
value *val; /* value if type = EX_VALUE */
sym_link *lnk; /* sym_link * if type= EX_LINK */
struct operand *oprnd; /* used only for side effecting function calls */
- unsigned stmnt; /* statement if type=EX_STMNT */
unsigned op; /* operator if type= EX_OP */
}
opval;
ast *newAst_VALUE (value * val);
ast *newAst_OP (unsigned op);
ast *newAst_LINK (sym_link * val);
-ast *newAst_STMNT (unsigned val);
void initAst ();
ast *newNode (long, ast *, ast *);