diff options
Diffstat (limited to 'expr.h')
| -rw-r--r-- | expr.h | 94 | 
1 files changed, 0 insertions, 94 deletions
| @@ -1,94 +0,0 @@ -enum exprkind { -	/* primary expression */ -	EXPRIDENT, -	EXPRCONST, -	EXPRSTRING, - -	/* postfix expression */ -	EXPRCALL, -	/* member E.M gets transformed to *(typeof(E.M) *)((char *)E + offsetof(typeof(E), M)) */ -	EXPRINCDEC, -	EXPRCOMPOUND, -	/* subscript E1[E2] gets transformed to *((E1)+(E2)) */ - -	EXPRUNARY, -	EXPRCAST, -	EXPRBINARY, -	EXPRCOND, -	EXPRASSIGN, -	EXPRCOMMA, - -	EXPRBUILTIN, -	EXPRTEMP, -}; - -enum exprflags { -	EXPRFLAG_LVAL    = 1<<0, -	EXPRFLAG_DECAYED = 1<<1, -}; - -struct expr { -	enum exprkind kind; -	enum exprflags flags; -	struct type *type; -	struct expr *next; -	union { -		struct { -			struct decl *decl; -		} ident; -		union { -			uint64_t i; -			double f; -		} constant; -		struct { -			char *data; -			size_t size; -		} string; -		struct { -			struct expr *func, *args; -			size_t nargs; -		} call; -		struct { -			struct init *init; -		} compound; -		struct { -			int op; -			_Bool post; -			struct expr *base; -		} incdec; -		struct { -			int op; -			struct expr *base; -		} unary; -		struct { -			struct expr *e; -		} cast; -		struct { -			int op; -			struct expr *l, *r; -		} binary; -		struct { -			struct expr *e, *t, *f; -		} cond; -		struct { -			struct expr *l, *r; -		} assign; -		struct { -			struct expr *exprs; -		} comma; -		struct { -			int kind; -			struct expr *arg; -		} builtin; -		struct value *temp; -	}; -}; - -struct scope; - -struct expr *expr(struct scope *); -struct expr *assignexpr(struct scope *); -uint64_t intconstexpr(struct scope *, _Bool); -void delexpr(struct expr *); - -struct expr *exprconvert(struct expr *, struct type *); | 
