diff options
| author | 2025-10-19 08:09:09 +0200 | |
|---|---|---|
| committer | 2025-10-19 08:09:09 +0200 | |
| commit | dea8fd171acb54b6d9685422d5e391fb55074008 (patch) | |
| tree | 2c149892f35c5183c9b2a1da4ab437228dc432ef /c.h | |
| parent | 3437945692f2b87883a4f066473c9deed50f25f5 (diff) | |
Organize source files into directories
Diffstat (limited to 'c.h')
| -rw-r--r-- | c.h | 89 |
1 files changed, 0 insertions, 89 deletions
@@ -1,89 +0,0 @@ -#include "common.h" - -/*************/ -/* EXPR TREE */ -/*************/ - -enum exprkind { - EXXX, ENUMLIT, ESTRLIT, ESYM, EINIT, EGETF, ECALL, ECOND, - /* unary */ - EPLUS, ENEG, ECOMPL, ELOGNOT, EDEREF, EADDROF, ECAST, - EPREINC, EPOSTINC, EPREDEC, EPOSTDEC, - /* binary */ - EADD, ESUB, EMUL, EDIV, EREM, EBAND, EBIOR, EXOR, ESHL, ESHR, - ELOGAND, ELOGIOR, - EEQU, ENEQ, ELTH, EGTH, ELTE, EGTE, - ESET, ESETADD, ESETSUB, ESETMUL, ESETDIV, ESETREM, ESETAND, ESETIOR, ESETXOR, ESETSHL, ESETSHR, - ESEQ, -}; -#define isunop(t) in_range(t, EPLUS, EPOSTDEC) -#define isbinop(t) in_range(t, EADD, ESEQ) -#define isassign(t) in_range(t, ESET, ESETSHR) -#define assigntobinop(t) ((t) - ESETADD + EADD) - -struct expr { - uchar t; - uchar qual; - ushort narg; /* ECALL */ - union type ty; - struct span span; - union { - struct { - struct expr *sub; - struct exgetfld { - ushort off; - uchar bitsiz, bitoff; - } fld; /* EGETF */ - }; - uvlong u; vlong i; double f; /* ENUMLIT */ - struct bytes s; /* ESTRLIT */ - struct decl *sym; /* ESYM */ - struct init *init; /* EINIT */ - }; -}; - -struct init { - struct bitset zero[1]; /* bytes to zero out up to 64 */ - struct initval { - struct initval *next; - uint off; - uchar bitoff, bitsiz; - struct expr ex; - } *vals, **tail; -}; - -enum storageclass { - SCNONE, - SCTYPEDEF = 1<<0, - SCEXTERN = 1<<1, - SCSTATIC = 1<<2, - SCTHREADLOCAL = 1<<3, - SCAUTO = 1<<4, - SCREGISTER = 1<<5, -}; - -struct decl { - union type ty; - uchar scls; - uchar qual : 2; - uchar isenum : 1; - uchar isdef : 1; - struct span span; - const char *name; - union { - struct { ushort align; int id; }; - vlong value; - }; -}; - -enum evalmode { - EVNONE, - EVINTCONST, - EVARITH, - EVSTATICINI, - EVFOLD, -}; - -bool eval(struct expr *, enum evalmode); - -/* vim:set ts=3 sw=3 expandtab: */ |