[BusyBox] further ash size reduction

Vladimir N. Oleynik dzo at simtreas.ru
Tue Aug 7 10:57:24 UTC 2001


Manuel Novoa III wrote:
> 
> While I was looking at ash.c w.r.t. the is_special() macro, I couldn't help
> but notice the large number of redundant entries in the syntax tables.  So,
> I collapsed them using indirect addressing.  On i386, this patch drops the
> size of ash.o for me by 1k.  I only minimially tested it though, as I've
> wasted enough time on this tangent for today.
> 
> Note that this patch is against the current CVS version.  It only deals
> with is_special() and the syntax tables.  It does not incorporate any of
> the other changes (vodz and Aaron have) posted to the list.
> 
> Manuel
> 
>   --------------------------------------------------------------------------------
>                     Name: ash.c-diff.gz
>    ash.c-diff.gz    Type: unspecified type (application/octet-stream)
>                 Encoding: base64

Amazingly! I could increase readable a code and in the beginning it seemed, 
that have won at a rate of, but then appeared, that the result is worse on 280
bytes. ;-(


--w
vodz
-------------- next part --------------
--- ash0.c	Tue Aug  7 15:53:29 2001
+++ ash.c	Tue Aug  7 18:37:59 2001
@@ -179,11 +179,6 @@
 #define TEND 29
 
 
-#define BASESYNTAX (basesyntax + SYNBASE)
-#define DQSYNTAX (dqsyntax + SYNBASE)
-#define SQSYNTAX (sqsyntax + SYNBASE)
-#define ARISYNTAX (arisyntax + SYNBASE)
-
 /* control characters in argument strings */
 #define CTLESC '\201'
 #define CTLVAR '\202'
@@ -199,8 +194,11 @@
 #define is_alpha(c)     (((c) < CTLESC || (c) > CTLENDARI) && isalpha((unsigned char) (c)))
 #define is_name(c)      (((c) < CTLESC || (c) > CTLENDARI) && ((c) == '_' || isalpha((unsigned char) (c))))
 #define is_in_name(c)   (((c) < CTLESC || (c) > CTLENDARI) && ((c) == '_' || isalnum((unsigned char) (c))))
-#define is_special(c)   (is_digit(c)||c=='!'||c=='#'||c=='$'||c=='*'||c=='-'||c=='?'||c=='@')
 #define digit_val(c)    ((c) - '0')
+#define is_special(c) \
+	( (((unsigned int)c) - 33 < 32) \
+		&& ((0xc1ff920dUL >> (((unsigned int)c) - 33)) & 1))
+
 
 
 #define _DIAGASSERT(x)
@@ -690,282 +688,287 @@
 static void out2c(int c)           { putc(c, stderr); }
 #endif
 
-/* syntax table used when not in quotes */
-static const char basesyntax[257] = {
-      CENDFILE,   CSPCL,   CWORD,   CCTL,
-      CCTL,    CCTL,    CCTL,    CCTL,
-      CCTL,    CCTL,    CCTL,    CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CSPCL,
-      CNL,     CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CSPCL,   CWORD,
-      CDQUOTE, CWORD,   CVAR,    CWORD,
-      CSPCL,   CSQUOTE, CSPCL,   CSPCL,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CSPCL,   CSPCL,   CWORD,
-      CSPCL,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CBACK,   CWORD,
-      CWORD,   CWORD,   CBQUOTE, CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CSPCL,   CENDVAR,
-      CWORD
-};
-
-/* syntax table used when in double quotes */
-static const char dqsyntax[257] = {
-      CENDFILE,   CIGN,    CWORD,   CCTL,
-      CCTL,    CCTL,    CCTL,    CCTL,
-      CCTL,    CCTL,    CCTL,    CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CNL,     CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CCTL,
-      CENDQUOTE,CWORD,  CVAR,    CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CCTL,    CWORD,   CWORD,   CCTL,
-      CWORD,   CCTL,    CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CCTL,    CWORD,   CWORD,   CCTL,
-      CWORD,   CCTL,    CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CCTL,    CBACK,   CCTL,
-      CWORD,   CWORD,   CBQUOTE, CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CENDVAR,
-      CCTL
-};
-
-/* syntax table used when in single quotes */
-static const char sqsyntax[257] = {
-      CENDFILE,   CIGN,    CWORD,   CCTL,
-      CCTL,    CCTL,    CCTL,    CCTL,
-      CCTL,    CCTL,    CCTL,    CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CNL,     CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CCTL,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CENDQUOTE,CWORD,  CWORD,
-      CCTL,    CWORD,   CWORD,   CCTL,
-      CWORD,   CCTL,    CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CCTL,    CWORD,   CWORD,   CCTL,
-      CWORD,   CCTL,    CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CCTL,    CCTL,    CCTL,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CCTL
-};
-
-/* syntax table used when in arithmetic */
-static const char arisyntax[257] = {
-      CENDFILE,   CIGN,    CWORD,   CCTL,
-      CCTL,    CCTL,    CCTL,    CCTL,
-      CCTL,    CCTL,    CCTL,    CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CNL,     CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CDQUOTE, CWORD,   CVAR,    CWORD,
-      CWORD,   CSQUOTE, CLP,     CRP,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CBACK,   CWORD,
-      CWORD,   CWORD,   CBQUOTE, CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CWORD,
-      CWORD,   CWORD,   CWORD,   CENDVAR,
-      CWORD
+
+/* syntax table used when
+  1. not in quotes
+  2. in double quotes
+  3. in single quotes
+  4. in arithmetic
+*/
+
+/* number shift bits for finding int syntax index */
+#define  BASESYNTAX  0
+#define  DQSYNTAX    4
+#define  SQSYNTAX    8
+#define  ARISYNTAX  12
+
+#define NQ_set(b)       (b << BASESYNTAX )
+#define DQ_set(b)       (b << DQSYNTAX   )
+#define SQ_set(b)       (b << SQSYNTAX   )
+#define AR_set(b)       (b << ARISYNTAX  )
+
+static const short syntax_index_table[257] = {
+  /*   0 */  NQ_set(CENDFILE) | DQ_set(CENDFILE) | SQ_set(CENDFILE) | AR_set(CENDFILE),
+  /*   1 */  NQ_set(CSPCL) | DQ_set(CIGN) | SQ_set(CIGN) | AR_set(CIGN),
+  /*   2 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*   3 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   4 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   5 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   6 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   7 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   8 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*   9 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*  10 */  NQ_set(CCTL) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CCTL),
+  /*  11 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  12 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  13 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  14 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  15 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  16 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  17 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  18 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  19 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  20 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  21 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  22 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  23 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  24 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  25 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  26 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  27 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  28 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  29 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  30 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  31 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  32 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  33 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  34 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  35 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  36 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  37 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  38 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  39 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  40 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  41 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  42 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  43 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  44 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  45 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  46 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  47 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  48 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  49 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  50 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  51 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  52 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  53 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  54 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  55 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  56 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  57 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  58 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  59 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  60 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  61 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  62 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  63 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  64 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  65 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  66 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  67 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  68 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  69 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  70 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  71 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  72 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  73 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  74 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  75 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  76 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  77 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  78 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  79 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  80 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  81 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  82 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  83 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  84 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  85 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  86 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  87 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  88 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  89 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  90 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  91 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  92 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  93 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  94 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  95 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  96 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  97 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  98 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /*  99 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 100 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 101 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 102 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 103 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 104 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 105 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 106 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 107 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 108 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 109 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 110 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 111 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 112 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 113 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 114 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 115 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 116 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 117 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 118 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 119 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 120 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 121 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 122 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 123 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 124 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 125 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 126 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 127 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 128 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 129 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 130 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 131 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 132 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 133 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 134 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 135 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 136 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 137 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 138 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 139 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 140 */  NQ_set(CNL) | DQ_set(CNL) | SQ_set(CNL) | AR_set(CNL),
+  /* 141 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 142 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 143 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 144 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 145 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 146 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 147 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 148 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 149 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 150 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 151 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 152 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 153 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 154 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 155 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 156 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 157 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 158 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 159 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 160 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 161 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 162 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 163 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 164 */  NQ_set(CDQUOTE) | DQ_set(CENDQUOTE) | SQ_set(CWORD) | AR_set(CDQUOTE),
+  /* 165 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 166 */  NQ_set(CVAR) | DQ_set(CVAR) | SQ_set(CWORD) | AR_set(CVAR),
+  /* 167 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 168 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 169 */  NQ_set(CSQUOTE) | DQ_set(CWORD) | SQ_set(CENDQUOTE) | AR_set(CSQUOTE),
+  /* 170 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CLP),
+  /* 171 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CRP),
+  /* 172 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 173 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 174 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 175 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 176 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 177 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 178 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 179 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 180 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 181 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 182 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 183 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 184 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 185 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 186 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 187 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 188 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 189 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 190 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 191 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 192 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 193 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 194 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 195 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 196 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 197 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 198 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 199 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 200 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 201 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 202 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 203 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 204 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 205 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 206 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 207 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 208 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 209 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 210 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 211 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 212 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 213 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 214 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 215 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 216 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 217 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 218 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 219 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 220 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 221 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 222 */  NQ_set(CBACK) | DQ_set(CBACK) | SQ_set(CCTL) | AR_set(CBACK),
+  /* 223 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
+  /* 224 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 225 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 226 */  NQ_set(CBQUOTE) | DQ_set(CBQUOTE) | SQ_set(CWORD) | AR_set(CBQUOTE),
+  /* 227 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 228 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 229 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 230 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 231 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 232 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 233 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 234 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 235 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 236 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 237 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 238 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 239 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 240 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 241 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 242 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 243 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 244 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 245 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 246 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 247 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 248 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 249 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 250 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 251 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 252 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 253 */  NQ_set(CWORD) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 254 */  NQ_set(CSPCL) | DQ_set(CWORD) | SQ_set(CWORD) | AR_set(CWORD),
+  /* 255 */  NQ_set(CENDVAR) | DQ_set(CENDVAR) | SQ_set(CWORD) | AR_set(CENDVAR),
+  /* 256 */  NQ_set(CWORD) | DQ_set(CCTL) | SQ_set(CCTL) | AR_set(CWORD),
 };
 
+#define SIT(c, syntax) ((syntax_index_table[((int)c)+SYNBASE]>>syntax)&15)
+
 /* first char is indicating which tokens mark the end of a list */
 static const char *const tokname_array[] = {
 	"\1end of file",
@@ -1150,6 +1153,7 @@
 
 static const char spcstr[] = " ";
 static const char snlfmt[] = "%s\n";
+static const char types[] = "}-+?=";
 
 static int sstrnleft;
 static int herefd = -1;
@@ -4322,7 +4326,7 @@
 static void expbackq (union node *, int, int);
 static int subevalvar (char *, char *, int, int, int, int, int);
 static int varisset (char *, int);
-static void strtodest (const char *, const char *, int);
+static void strtodest (const char *, int, int);
 static void varvalue (char *, int, int);
 static void recordregion (int, int, int);
 static void removerecordregions (int);
@@ -4804,10 +4808,7 @@
  */
 
 static void
-expbackq(cmd, quoted, flag)
-	union node *cmd;
-	int quoted;
-	int flag;
+expbackq(union node *cmd, int quoted, int flag)
 {
 	volatile struct backcmd in;
 	int i;
@@ -4819,7 +4820,7 @@
 	struct nodelist *volatile saveargbackq;
 	char lastc;
 	int startloc = dest - stackblock();
-	char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
+	int syntax = quoted ? DQSYNTAX : BASESYNTAX;
 	volatile int saveherefd;
 	int quotes = flag & (EXP_FULL | EXP_CASE);
 	struct jmploc jmploc;
@@ -4876,7 +4877,7 @@
 		}
 		lastc = *p++;
 		if (lastc != '\0') {
-			if (quotes && syntax[(int)lastc] == CCTL)
+			if (quotes && SIT(lastc, syntax) == CCTL)
 				STPUTC(CTLESC, dest);
 			STPUTC(lastc, dest);
 		}
@@ -5077,13 +5078,10 @@
  */
 
 static void
-strtodest(p, syntax, quotes)
-	const char *p;
-	const char *syntax;
-	int quotes;
+strtodest(const char *p, int syntax, int quotes)
 {
 	while (*p) {
-		if (quotes && syntax[(int) *p] == CCTL)
+		if (quotes && SIT(*p, syntax) == CCTL)
 			STPUTC(CTLESC, expdest);
 		STPUTC(*p++, expdest);
 	}
@@ -5105,7 +5103,7 @@
 	int sep;
 	int sepq = 0;
 	char **ap;
-	char const *syntax;
+	int syntax;
 	int allow_split = flags & EXP_FULL;
 	int quotes = flags & (EXP_FULL | EXP_CASE);
 
@@ -5140,7 +5138,7 @@
 	case '*':
 		sep = ifsset() ? ifsval()[0] : ' ';
 		if (quotes) {
-			sepq = syntax[(int) sep] == CCTL;
+			sepq = SIT(sep, syntax) == CCTL;
 		}
 param:
 		for (ap = shellparam.p ; (p = *ap++) != NULL ; ) {
@@ -7226,7 +7224,7 @@
 				*q++ = '{';
 			subtype = *p++;
 		} else if (c == '=' && subtype != 0) {
-			*q++ = "}-+?="[(subtype & VSTYPE) - VSNORMAL];
+			*q++ = types[(subtype & VSTYPE) - VSNORMAL];
 			subtype = 0;
 		} else if (c == CTLENDVAR) {
 			*q++ = '}';
@@ -9253,8 +9251,8 @@
 static char peektoken (void);
 static int readtoken (void);
 static int xxreadtoken (void);
-static int readtoken1 (int, char const *, char *, int);
-static int noexpand (char *);
+static int readtoken1 (int, int, const char *, int);
+static int noexpand (const char *);
 static void synexpect (int) __attribute__((noreturn));
 static void synerror (const char *) __attribute__((noreturn));
 static void setprompt (int);
@@ -10007,12 +10005,8 @@
 #define PARSEARITH()    {goto parsearith; parsearith_return:;}
 
 static int
-readtoken1(firstc, syntax, eofmark, striptabs)
-	int firstc;
-	char const *syntax;
-	char *eofmark;
-	int striptabs;
-	{
+readtoken1(int firstc, int syntax, const char *eofmark, int striptabs)
+{
 	int c = firstc;
 	char *out;
 	int len;
@@ -10025,7 +10019,7 @@
 	int parenlevel; /* levels of parens in arithmetic */
 	int dqvarnest;  /* levels of variables expansion within double quotes */
 	int oldstyle;
-	char const *prevsyntax; /* syntax before arithmetic */
+	int prevsyntax; /* syntax before arithmetic */
 #if __GNUC__
 	/* Avoid longjmp clobbering */
 	(void) &out;
@@ -10056,7 +10050,7 @@
 		CHECKEND();     /* set c to PEOF if at end of here document */
 		for (;;) {      /* until end of line or end of word */
 			CHECKSTRSPACE(3, out);  /* permit 3 calls to USTPUTC */
-			switch(syntax[c]) {
+			switch(SIT(c, syntax)) {
 			case CNL:       /* '\n' */
 				if (syntax == BASESYNTAX)
 					goto endword;   /* exit outer loop */
@@ -10091,7 +10085,7 @@
 					if (dblquote && c != '\\' && c != '`' && c != '$'
 							 && (c != '"' || eofmark != NULL))
 						USTPUTC('\\', out);
-					if (SQSYNTAX[c] == CCTL)
+					if (SIT(c, SQSYNTAX) == CCTL)
 						USTPUTC(CTLESC, out);
 					else if (eofmark == NULL)
 						USTPUTC(CTLQUOTEMARK, out);
@@ -10242,7 +10236,7 @@
 		}
 		if (c == *eofmark) {
 			if (pfgets(line, sizeof line) != NULL) {
-				char *p, *q;
+				const char *p, *q;
 
 				p = line;
 				for (q = eofmark + 1 ; *q && *p == *q ; p++, q++);
@@ -10334,7 +10328,7 @@
 	int typeloc;
 	int flags;
 	char *p;
-	static const char types[] = "}-+?=";
+
 
 	c = pgetc();
 	if (
@@ -10620,10 +10614,9 @@
  */
 
 static int
-noexpand(text)
-	char *text;
-	{
-	char *p;
+noexpand(const char *text)
+{
+	const char *p;
 	char c;
 
 	p = text;
@@ -10632,7 +10625,7 @@
 			continue;
 		if (c == CTLESC)
 			p++;
-		else if (BASESYNTAX[(int)c] == CCTL)
+		else if (SIT(c, BASESYNTAX) == CCTL)
 			return 0;
 	}
 	return 1;
@@ -12611,8 +12604,6 @@
 	return (0);
 }
 
-
-
 /*
  * Find the appropriate entry in the hash table from the name.
  */
@@ -12627,8 +12618,6 @@
 		hashval += (unsigned char) *p++;
 	return &vartab[hashval % VTABSIZE];
 }
-
-
 
 /*
  * Returns true if the two strings specify the same varable.  The first


More information about the busybox mailing list