diff options
| author | rsc <devnull@localhost> | 2004-04-20 01:42:20 +0000 |
|---|---|---|
| committer | rsc <devnull@localhost> | 2004-04-20 01:42:20 +0000 |
| commit | e637c944febf271252e59742aa108d6e0a527eb7 (patch) | |
| tree | e4ace5415b3b978ceca3685d2ea3eebe855a9b76 /src/cmd/acid/expr.c | |
| parent | a196bf0577767d97165f01186b32b0913430a1fe (diff) | |
| download | plan9port-e637c944febf271252e59742aa108d6e0a527eb7.tar.gz plan9port-e637c944febf271252e59742aa108d6e0a527eb7.zip | |
i hate []
Diffstat (limited to 'src/cmd/acid/expr.c')
| -rw-r--r-- | src/cmd/acid/expr.c | 176 |
1 files changed, 95 insertions, 81 deletions
diff --git a/src/cmd/acid/expr.c b/src/cmd/acid/expr.c index 46e522bf..18b68f4e 100644 --- a/src/cmd/acid/expr.c +++ b/src/cmd/acid/expr.c @@ -6,36 +6,39 @@ #define Extern extern #include "acid.h" -static int fsize[] = -{ - ['A'] 4, - ['B'] 4, - ['C'] 1, - ['D'] 4, - ['F'] 8, - ['G'] 8, - ['O'] 4, - ['Q'] 4, - ['R'] 4, - ['S'] 4, - ['U'] 4, - ['V'] 8, - ['X'] 4, - ['Y'] 8, - ['W'] 8, - ['Z'] 8, - ['a'] 4, - ['b'] 1, - ['c'] 1, - ['d'] 2, - ['f'] 4, - ['g'] 4, - ['o'] 2, - ['q'] 2, - ['r'] 2, - ['s'] 4, - ['u'] 2, - ['x'] 2, +static int fsize[256]; + +static void +initfsize(void) +{ + fsize['A'] = 4; + fsize['B'] = 4; + fsize['C'] = 1; + fsize['D'] = 4; + fsize['F'] = 8; + fsize['G'] = 8; + fsize['O'] = 4; + fsize['Q'] = 4; + fsize['R'] = 4; + fsize['S'] = 4; + fsize['U'] = 4; + fsize['V'] = 8; + fsize['X'] = 4; + fsize['Y'] = 8; + fsize['W'] = 8; + fsize['Z'] = 8; + fsize['a'] = 4; + fsize['b'] = 1; + fsize['c'] = 1; + fsize['d'] = 2; + fsize['f'] = 4; + fsize['g'] = 4; + fsize['o'] = 2; + fsize['q'] = 2; + fsize['r'] = 2; + fsize['s'] = 4; + fsize['u'] = 2; + fsize['x'] = 2; }; int @@ -964,55 +967,66 @@ owhat(Node *n, Node *res) whatis(n->sym); } -void (*expop[])(Node*, Node*) = -{ - [ONAME] oname, - [OCONST] oconst, - [OMUL] omul, - [ODIV] odiv, - [OMOD] omod, - [OADD] oadd, - [OSUB] osub, - [ORSH] orsh, - [OLSH] olsh, - [OLT] olt, - [OGT] ogt, - [OLEQ] oleq, - [OGEQ] ogeq, - [OEQ] oeq, - [ONEQ] oeq, - [OLAND] oland, - [OXOR] oxor, - [OLOR] olor, - [OCAND] ocand, - [OCOR] ocor, - [OASGN] oasgn, - [OINDM] oindm, - [OEDEC] oeinc, - [OEINC] oeinc, - [OPINC] opinc, - [OPDEC] opinc, - [ONOT] onot, - [OIF] 0, - [ODO] 0, - [OLIST] olist, - [OCALL] ocall, - [OCTRUCT] octruct, - [OWHILE] 0, - [OELSE] 0, - [OHEAD] ohead, - [OTAIL] otail, - [OAPPEND] oappend, - [ORET] 0, - [OINDEX] oindex, - [OINDC] oindc, - [ODOT] odot, - [OLOCAL] 0, - [OFRAME] oframe, - [OCOMPLEX] 0, - [ODELETE] odelete, - [OCAST] ocast, - [OFMT] ofmt, - [OEVAL] oeval, - [OWHAT] owhat, +void (*expop[NUMO])(Node*, Node*); + +static void +initexpop(void) +{ + expop[ONAME] = oname; + expop[OCONST] = oconst; + expop[OMUL] = omul; + expop[ODIV] = odiv; + expop[OMOD] = omod; + expop[OADD] = oadd; + expop[OSUB] = osub; + expop[ORSH] = orsh; + expop[OLSH] = olsh; + expop[OLT] = olt; + expop[OGT] = ogt; + expop[OLEQ] = oleq; + expop[OGEQ] = ogeq; + expop[OEQ] = oeq; + expop[ONEQ] = oeq; + expop[OLAND] = oland; + expop[OXOR] = oxor; + expop[OLOR] = olor; + expop[OCAND] = ocand; + expop[OCOR] = ocor; + expop[OASGN] = oasgn; + expop[OINDM] = oindm; + expop[OEDEC] = oeinc; + expop[OEINC] = oeinc; + expop[OPINC] = opinc; + expop[OPDEC] = opinc; + expop[ONOT] = onot; + expop[OIF] = 0; + expop[ODO] = 0; + expop[OLIST] = olist; + expop[OCALL] = ocall; + expop[OCTRUCT] = octruct; + expop[OWHILE] =0; + expop[OELSE] = 0; + expop[OHEAD] = ohead; + expop[OTAIL] = otail; + expop[OAPPEND] = oappend; + expop[ORET] = 0; + expop[OINDEX] =oindex; + expop[OINDC] = oindc; + expop[ODOT] = odot; + expop[OLOCAL] =0; + expop[OFRAME] = oframe; + expop[OCOMPLEX] =0; + expop[ODELETE] = odelete; + expop[OCAST] = ocast; + expop[OFMT] = ofmt; + expop[OEVAL] = oeval; + expop[OWHAT] = owhat; }; + +void +initexpr(void) +{ + initfsize(); + initexpop(); +} + |
