]> granicus.if.org Git - re2c/commitdiff
Added examples to test suite.
authorUlya Trofimovich <skvadrik@gmail.com>
Fri, 18 Aug 2017 15:09:59 +0000 (16:09 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Fri, 18 Aug 2017 15:09:59 +0000 (16:09 +0100)
28 files changed:
re2c/test/examples/01_recognizing_integers.i--tags.c [new file with mode: 0644]
re2c/test/examples/01_recognizing_integers.i--tags.re [new file with mode: 0644]
re2c/test/examples/02_recognizing_strings.i--tags.c [new file with mode: 0644]
re2c/test/examples/02_recognizing_strings.i--tags.re [new file with mode: 0644]
re2c/test/examples/03_arbitrary_large_input.i--tags.c [new file with mode: 0644]
re2c/test/examples/03_arbitrary_large_input.i--tags.re [new file with mode: 0644]
re2c/test/examples/04_parsing_integers_blocks.i--tags.c [new file with mode: 0644]
re2c/test/examples/04_parsing_integers_blocks.i--tags.re [new file with mode: 0644]
re2c/test/examples/05_parsing_integers_conditions.ci--tags.c [new file with mode: 0644]
re2c/test/examples/05_parsing_integers_conditions.ci--tags.re [new file with mode: 0644]
re2c/test/examples/06_braille.cr8i--tags.c [new file with mode: 0644]
re2c/test/examples/06_braille.cr8i--tags.re [new file with mode: 0644]
re2c/test/examples/07_cxx98.i--tags.c [new file with mode: 0644]
re2c/test/examples/07_cxx98.i--tags.re [new file with mode: 0644]
re2c/test/examples/08_ipv4.i--tags.c [new file with mode: 0644]
re2c/test/examples/08_ipv4.i--tags.re [new file with mode: 0644]
re2c/test/examples/09_etc_passwd.i--tags.c [new file with mode: 0644]
re2c/test/examples/09_etc_passwd.i--tags.re [new file with mode: 0644]
re2c/test/examples/10_uri_rfc3986.i--tags.c [new file with mode: 0644]
re2c/test/examples/10_uri_rfc3986.i--tags.re [new file with mode: 0644]
re2c/test/examples/11_http_rfc7230.i--tags.c [new file with mode: 0644]
re2c/test/examples/11_http_rfc7230.i--tags.re [new file with mode: 0644]
re2c/test/examples/12_float.i--tags.c [new file with mode: 0644]
re2c/test/examples/12_float.i--tags.re [new file with mode: 0644]
re2c/test/examples/13_records.i--tags.c [new file with mode: 0644]
re2c/test/examples/13_records.i--tags.re [new file with mode: 0644]
re2c/test/examples/14_options.i--tags.c [new file with mode: 0644]
re2c/test/examples/14_options.i--tags.re [new file with mode: 0644]

diff --git a/re2c/test/examples/01_recognizing_integers.i--tags.c b/re2c/test/examples/01_recognizing_integers.i--tags.c
new file mode 100644 (file)
index 0000000..84e3c9e
--- /dev/null
@@ -0,0 +1,171 @@
+/* Generated by re2c */
+#include <stdio.h>
+
+enum num_t { ERR, BIN, OCT, DEC, HEX };
+
+static num_t lex(const char *YYCURSOR)
+{
+    const char *YYMARKER;
+    
+{
+       char yych;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy4;
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy5;
+       default:        goto yy2;
+       }
+yy2:
+       ++YYCURSOR;
+yy3:
+       { return ERR; }
+yy4:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0x00:      goto yy6;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy8;
+       case 'B':
+       case 'b':       goto yy11;
+       case 'X':
+       case 'x':       goto yy12;
+       default:        goto yy3;
+       }
+yy5:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0x00:      goto yy13;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy15;
+       default:        goto yy3;
+       }
+yy6:
+       ++YYCURSOR;
+       { return OCT; }
+yy8:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy6;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy8;
+       default:        goto yy10;
+       }
+yy10:
+       YYCURSOR = YYMARKER;
+       goto yy3;
+yy11:
+       yych = *++YYCURSOR;
+       if (yych <= 0x00) goto yy10;
+       goto yy18;
+yy12:
+       yych = *++YYCURSOR;
+       if (yych <= 0x00) goto yy10;
+       goto yy20;
+yy13:
+       ++YYCURSOR;
+       { return DEC; }
+yy15:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy13;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy15;
+       default:        goto yy10;
+       }
+yy17:
+       yych = *++YYCURSOR;
+yy18:
+       switch (yych) {
+       case 0x00:      goto yy21;
+       case '0':
+       case '1':       goto yy17;
+       default:        goto yy10;
+       }
+yy19:
+       yych = *++YYCURSOR;
+yy20:
+       switch (yych) {
+       case 0x00:      goto yy23;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy19;
+       default:        goto yy10;
+       }
+yy21:
+       ++YYCURSOR;
+       { return BIN; }
+yy23:
+       ++YYCURSOR;
+       { return HEX; }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        switch (lex(argv[i])) {
+            case ERR: printf("error\n"); break;
+            case BIN: printf("binary\n"); break;
+            case OCT: printf("octal\n"); break;
+            case DEC: printf("decimal\n"); break;
+            case HEX: printf("hexadecimal\n"); break;
+        }
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/01_recognizing_integers.i--tags.re b/re2c/test/examples/01_recognizing_integers.i--tags.re
new file mode 100644 (file)
index 0000000..47c1320
--- /dev/null
@@ -0,0 +1,38 @@
+#include <stdio.h>
+
+enum num_t { ERR, BIN, OCT, DEC, HEX };
+
+static num_t lex(const char *YYCURSOR)
+{
+    const char *YYMARKER;
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:yyfill:enable = 0;
+
+        end = "\x00";
+        bin = '0b' [01]+;
+        oct = "0" [0-7]*;
+        dec = [1-9][0-9]*;
+        hex = '0x' [0-9a-fA-F]+;
+
+        *       { return ERR; }
+        bin end { return BIN; }
+        oct end { return OCT; }
+        dec end { return DEC; }
+        hex end { return HEX; }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        switch (lex(argv[i])) {
+            case ERR: printf("error\n"); break;
+            case BIN: printf("binary\n"); break;
+            case OCT: printf("octal\n"); break;
+            case DEC: printf("decimal\n"); break;
+            case HEX: printf("hexadecimal\n"); break;
+        }
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/02_recognizing_strings.i--tags.c b/re2c/test/examples/02_recognizing_strings.i--tags.c
new file mode 100644 (file)
index 0000000..7767398
--- /dev/null
@@ -0,0 +1,72 @@
+/* Generated by re2c */
+#include <stdio.h>
+#include <string.h>
+
+#define YYMAXFILL 1
+
+
+struct input_t {
+    size_t len;
+    char *str;
+
+    input_t(const char *s)
+        : len(strlen(s))
+        , str(new char[len + YYMAXFILL])
+    {
+        memcpy(str, s, len);
+        memset(str + len, 'a', YYMAXFILL);
+    }
+    ~input_t()
+    {
+        delete[]str;
+    }
+};
+
+static bool lex(const input_t & input)
+{
+    const char *YYCURSOR = input.str;
+    const char *const YYLIMIT = input.str + input.len + YYMAXFILL;
+    
+{
+       char yych;
+       if (YYLIMIT <= YYCURSOR) return false;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '"':       goto yy4;
+       case '\'':      goto yy6;
+       default:        goto yy2;
+       }
+yy2:
+       ++YYCURSOR;
+       { return false; }
+yy4:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) return false;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '"':       goto yy8;
+       default:        goto yy4;
+       }
+yy6:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) return false;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\'':      goto yy8;
+       default:        goto yy6;
+       }
+yy8:
+       ++YYCURSOR;
+       { return YYLIMIT - YYCURSOR == YYMAXFILL; }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        input_t arg(argv[i]);
+        printf("%s: %s\n", lex(arg) ? "str" : "err", argv[i]);
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/02_recognizing_strings.i--tags.re b/re2c/test/examples/02_recognizing_strings.i--tags.re
new file mode 100644 (file)
index 0000000..ec9d683
--- /dev/null
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <string.h>
+
+/*!max:re2c*/
+
+struct input_t {
+    size_t len;
+    char *str;
+
+    input_t(const char *s)
+        : len(strlen(s))
+        , str(new char[len + YYMAXFILL])
+    {
+        memcpy(str, s, len);
+        memset(str + len, 'a', YYMAXFILL);
+    }
+    ~input_t()
+    {
+        delete[]str;
+    }
+};
+
+static bool lex(const input_t & input)
+{
+    const char *YYCURSOR = input.str;
+    const char *const YYLIMIT = input.str + input.len + YYMAXFILL;
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:define:YYFILL = "return false;";
+        re2c:define:YYFILL:naked = 1;
+
+        sstr = "'"  [^']* "'";
+        dstr = "\"" [^"]* "\"";
+
+        *             { return false; }
+        (sstr | dstr) { return YYLIMIT - YYCURSOR == YYMAXFILL; }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        input_t arg(argv[i]);
+        printf("%s: %s\n", lex(arg) ? "str" : "err", argv[i]);
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/03_arbitrary_large_input.i--tags.c b/re2c/test/examples/03_arbitrary_large_input.i--tags.c
new file mode 100644 (file)
index 0000000..cd72624
--- /dev/null
@@ -0,0 +1,121 @@
+/* Generated by re2c */
+#include <stdio.h>
+#include <string.h>
+
+#define YYMAXFILL 1
+
+static const size_t SIZE = 16;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *tok;
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , tok(lim)
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in, unsigned int &count)
+{
+    for (count = 0;;) {
+        in.tok = in.cur;
+        
+{
+       char yych;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\n':      goto yy6;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy9;
+       default:        goto yy4;
+       }
+yy2:
+       ++in.cur;
+       { return YYMAXFILL == in.lim - in.tok; }
+yy4:
+       ++in.cur;
+       { return false; }
+yy6:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\n':      goto yy6;
+       default:        goto yy8;
+       }
+yy8:
+       { continue; }
+yy9:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy9;
+       default:        goto yy11;
+       }
+yy11:
+       { ++count; continue; }
+}
+
+    }
+}
+
+int main()
+{
+    input_t in;
+    unsigned int count;
+    if (lex(in, count)) {
+        printf("glorious %u numbers!\n", count);
+    } else {
+        printf("error\n");
+    }
+
+    return 0;
+}
diff --git a/re2c/test/examples/03_arbitrary_large_input.i--tags.re b/re2c/test/examples/03_arbitrary_large_input.i--tags.re
new file mode 100644 (file)
index 0000000..506ca41
--- /dev/null
@@ -0,0 +1,78 @@
+#include <stdio.h>
+#include <string.h>
+
+/*!max:re2c*/
+static const size_t SIZE = 16;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *tok;
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , tok(lim)
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in, unsigned int &count)
+{
+    for (count = 0;;) {
+        in.tok = in.cur;
+        /*!re2c
+            re2c:define:YYCTYPE = char;
+            re2c:define:YYCURSOR = in.cur;
+            re2c:define:YYLIMIT = in.lim;
+            re2c:define:YYFILL = "if (!in.fill(@@)) return false;";
+            re2c:define:YYFILL:naked = 1;
+
+            end = "\x00";
+            wsp = [\n]+;
+            num = [0-9]+;
+
+            *   { return false; }
+            end { return YYMAXFILL == in.lim - in.tok; }
+            wsp { continue; }
+            num { ++count; continue; }
+        */
+    }
+}
+
+int main()
+{
+    input_t in;
+    unsigned int count;
+    if (lex(in, count)) {
+        printf("glorious %u numbers!\n", count);
+    } else {
+        printf("error\n");
+    }
+
+    return 0;
+}
diff --git a/re2c/test/examples/04_parsing_integers_blocks.i--tags.c b/re2c/test/examples/04_parsing_integers_blocks.i--tags.c
new file mode 100644 (file)
index 0000000..c635aa3
--- /dev/null
@@ -0,0 +1,251 @@
+/* Generated by re2c */
+#include <limits.h>
+#include <stdio.h>
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned int d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+static bool lex(const char *s, unsigned long &u)
+{
+    const char *YYMARKER;
+    const char *YYCTXMARKER;
+    u = 0;
+
+    
+
+    
+{
+       char yych;
+       yych = *s;
+       switch (yych) {
+       case '0':       goto yy4;
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy6;
+       default:        goto yy2;
+       }
+yy2:
+       ++s;
+       { return false; }
+yy4:
+       yych = *(YYMARKER = ++s);
+       switch (yych) {
+       case 'B':
+       case 'b':       goto yy8;
+       case 'X':
+       case 'x':       goto yy10;
+       default:        goto yy5;
+       }
+yy5:
+       { goto oct; }
+yy6:
+       ++s;
+       s -= 1;
+       { goto dec; }
+yy8:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':       goto yy11;
+       default:        goto yy9;
+       }
+yy9:
+       s = YYMARKER;
+       goto yy5;
+yy10:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy13;
+       default:        goto yy9;
+       }
+yy11:
+       ++s;
+       s -= 1;
+       { goto bin; }
+yy13:
+       ++s;
+       s -= 1;
+       { goto hex; }
+}
+
+
+bin:
+    
+{
+       char yych;
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy17;
+       case '0':
+       case '1':       goto yy21;
+       default:        goto yy19;
+       }
+yy17:
+       ++s;
+       { return true; }
+yy19:
+       ++s;
+       { return false; }
+yy21:
+       ++s;
+       { if (!adddgt<2>(u, s[-1] - '0')) return false; goto bin; }
+}
+
+
+oct:
+    
+{
+       char yych;
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy25;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy29;
+       default:        goto yy27;
+       }
+yy25:
+       ++s;
+       { return true; }
+yy27:
+       ++s;
+       { return false; }
+yy29:
+       ++s;
+       { if (!adddgt<8>(u, s[-1] - '0')) return false; goto oct; }
+}
+
+
+dec:
+    
+{
+       char yych;
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy33;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy37;
+       default:        goto yy35;
+       }
+yy33:
+       ++s;
+       { return true; }
+yy35:
+       ++s;
+       { return false; }
+yy37:
+       ++s;
+       { if (!adddgt<10>(u, s[-1] - '0')) return false; goto dec; }
+}
+
+
+hex:
+    
+{
+       char yych;
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy41;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy45;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':       goto yy47;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy49;
+       default:        goto yy43;
+       }
+yy41:
+       ++s;
+       { return true; }
+yy43:
+       ++s;
+       { return false; }
+yy45:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - '0'))      return false; goto hex; }
+yy47:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 'A' + 10)) return false; goto hex; }
+yy49:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 'a' + 10)) return false; goto hex; }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        unsigned long u;
+        if (lex(argv[i], u)) {
+            printf("%lu\n", u);
+        } else {
+            printf("error\n");
+        }
+    }
+    return 0;
+}
+re2c: warning: line 32: rule matches empty string [-Wmatch-empty-string]
diff --git a/re2c/test/examples/04_parsing_integers_blocks.i--tags.re b/re2c/test/examples/04_parsing_integers_blocks.i--tags.re
new file mode 100644 (file)
index 0000000..20bf9de
--- /dev/null
@@ -0,0 +1,78 @@
+#include <limits.h>
+#include <stdio.h>
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned int d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+static bool lex(const char *s, unsigned long &u)
+{
+    const char *YYMARKER;
+    const char *YYCTXMARKER;
+    u = 0;
+
+    /*!re2c
+        re2c:yyfill:enable = 0;
+        re2c:define:YYCTYPE = char;
+        re2c:define:YYCURSOR = s;
+
+        end = "\x00";
+    */
+
+    /*!re2c
+        *                  { return false; }
+        '0b' / [01]        { goto bin; }
+        "0"                { goto oct; }
+        "" / [1-9]         { goto dec; }
+        '0x' / [0-9a-fA-F] { goto hex; }
+    */
+
+bin:
+    /*!re2c
+        *     { return false; }
+        end   { return true; }
+        [01]  { if (!adddgt<2>(u, s[-1] - '0')) return false; goto bin; }
+    */
+
+oct:
+    /*!re2c
+        *     { return false; }
+        end   { return true; }
+        [0-7] { if (!adddgt<8>(u, s[-1] - '0')) return false; goto oct; }
+    */
+
+dec:
+    /*!re2c
+        *     { return false; }
+        end   { return true; }
+        [0-9] { if (!adddgt<10>(u, s[-1] - '0')) return false; goto dec; }
+    */
+
+hex:
+    /*!re2c
+        *     { return false; }
+        end   { return true; }
+        [0-9] { if (!adddgt<16>(u, s[-1] - '0'))      return false; goto hex; }
+        [a-f] { if (!adddgt<16>(u, s[-1] - 'a' + 10)) return false; goto hex; }
+        [A-F] { if (!adddgt<16>(u, s[-1] - 'A' + 10)) return false; goto hex; }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        unsigned long u;
+        if (lex(argv[i], u)) {
+            printf("%lu\n", u);
+        } else {
+            printf("error\n");
+        }
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/05_parsing_integers_conditions.ci--tags.c b/re2c/test/examples/05_parsing_integers_conditions.ci--tags.c
new file mode 100644 (file)
index 0000000..177f295
--- /dev/null
@@ -0,0 +1,251 @@
+/* Generated by re2c */
+#include <limits.h>
+#include <stdio.h>
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned int d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+enum YYCONDTYPE {
+       yycinit,
+       yycbin,
+       yycdec,
+       yychex,
+       yycoct,
+};
+
+
+static bool lex(const char *s, unsigned long &u)
+{
+    const char *YYMARKER;
+    const char *YYCTXMARKER;
+    int c = yycinit;
+    u = 0;
+    
+{
+       char yych;
+       switch (c) {
+       case yycinit: goto yyc_init;
+       case yycbin: goto yyc_bin;
+       case yycdec: goto yyc_dec;
+       case yychex: goto yyc_hex;
+       case yycoct: goto yyc_oct;
+       }
+/* *********************************** */
+yyc_init:
+       yych = *s;
+       switch (yych) {
+       case '0':       goto yy5;
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy7;
+       default:        goto yy3;
+       }
+yy3:
+       ++s;
+       { return false; }
+yy5:
+       yych = *(YYMARKER = ++s);
+       switch (yych) {
+       case 'B':
+       case 'b':       goto yy9;
+       case 'X':
+       case 'x':       goto yy11;
+       default:        goto yy6;
+       }
+yy6:
+       c = yycoct;
+       goto yyc_oct;
+yy7:
+       ++s;
+       s -= 1;
+       c = yycdec;
+       goto yyc_dec;
+yy9:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':       goto yy12;
+       default:        goto yy10;
+       }
+yy10:
+       s = YYMARKER;
+       goto yy6;
+yy11:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy14;
+       default:        goto yy10;
+       }
+yy12:
+       ++s;
+       s -= 1;
+       c = yycbin;
+       goto yyc_bin;
+yy14:
+       ++s;
+       s -= 1;
+       c = yychex;
+       goto yyc_hex;
+/* *********************************** */
+yyc_bin:
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy18;
+       case '0':
+       case '1':       goto yy22;
+       default:        goto yy20;
+       }
+yy18:
+       ++s;
+       { return true; }
+yy20:
+       ++s;
+       { return false; }
+yy22:
+       ++s;
+       { if (!adddgt<2>(u, s[-1] - '0')) return false; goto yyc_bin; }
+/* *********************************** */
+yyc_dec:
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy26;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy30;
+       default:        goto yy28;
+       }
+yy26:
+       ++s;
+       { return true; }
+yy28:
+       ++s;
+       { return false; }
+yy30:
+       ++s;
+       { if (!adddgt<10>(u, s[-1] - '0')) return false; goto yyc_dec; }
+/* *********************************** */
+yyc_hex:
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy34;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy38;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':       goto yy40;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy42;
+       default:        goto yy36;
+       }
+yy34:
+       ++s;
+       { return true; }
+yy36:
+       ++s;
+       { return false; }
+yy38:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - '0'))      return false; goto yyc_hex; }
+yy40:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 'A' + 10)) return false; goto yyc_hex; }
+yy42:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 'a' + 10)) return false; goto yyc_hex; }
+/* *********************************** */
+yyc_oct:
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy46;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy50;
+       default:        goto yy48;
+       }
+yy46:
+       ++s;
+       { return true; }
+yy48:
+       ++s;
+       { return false; }
+yy50:
+       ++s;
+       { if (!adddgt<8>(u, s[-1] - '0')) return false; goto yyc_oct; }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        unsigned long u;
+        if (lex(argv[i], u)) {
+            printf("%lu\n", u);
+        } else {
+            printf("error\n");
+        }
+    }
+    return 0;
+}
+re2c: warning: line 35: rule in condition 'init' matches empty string [-Wmatch-empty-string]
diff --git a/re2c/test/examples/05_parsing_integers_conditions.ci--tags.re b/re2c/test/examples/05_parsing_integers_conditions.ci--tags.re
new file mode 100644 (file)
index 0000000..9fbc0fd
--- /dev/null
@@ -0,0 +1,59 @@
+#include <limits.h>
+#include <stdio.h>
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned int d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+/*!types:re2c*/
+
+static bool lex(const char *s, unsigned long &u)
+{
+    const char *YYMARKER;
+    const char *YYCTXMARKER;
+    int c = yycinit;
+    u = 0;
+    /*!re2c
+        re2c:yyfill:enable = 0;
+        re2c:define:YYCTYPE = char;
+        re2c:define:YYCURSOR = s;
+        re2c:define:YYGETCONDITION = "c";
+        re2c:define:YYGETCONDITION:naked = 1;
+        re2c:define:YYSETCONDITION = "c = @@;";
+        re2c:define:YYSETCONDITION:naked = 1;
+
+        <*> * { return false; }
+
+        <init> '0b' / [01]        :=> bin
+        <init> "0"                :=> oct
+        <init> "" / [1-9]         :=> dec
+        <init> '0x' / [0-9a-fA-F] :=> hex
+
+        <bin, oct, dec, hex> "\x00" { return true; }
+        <bin> [01]  { if (!adddgt<2>(u, s[-1] - '0')) return false; goto yyc_bin; }
+        <oct> [0-7] { if (!adddgt<8>(u, s[-1] - '0')) return false; goto yyc_oct; }
+        <dec> [0-9] { if (!adddgt<10>(u, s[-1] - '0')) return false; goto yyc_dec; }
+        <hex> [0-9] { if (!adddgt<16>(u, s[-1] - '0'))      return false; goto yyc_hex; }
+        <hex> [a-f] { if (!adddgt<16>(u, s[-1] - 'a' + 10)) return false; goto yyc_hex; }
+        <hex> [A-F] { if (!adddgt<16>(u, s[-1] - 'A' + 10)) return false; goto yyc_hex; }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        unsigned long u;
+        if (lex(argv[i], u)) {
+            printf("%lu\n", u);
+        } else {
+            printf("error\n");
+        }
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/06_braille.cr8i--tags.c b/re2c/test/examples/06_braille.cr8i--tags.c
new file mode 100644 (file)
index 0000000..f2fe8ee
--- /dev/null
@@ -0,0 +1,1701 @@
+/* Generated by re2c */
+#include <ctype.h>
+#include <stdio.h>
+
+template<typename char_t>
+struct input_t {
+    size_t len;
+    char_t *str;
+
+    input_t(FILE *f) : len(0), str(NULL)
+    {
+        fseek(f, 0, SEEK_END);
+        len = ftell(f) / sizeof(char_t);
+        fseek(f, 0, SEEK_SET);
+        str = new char_t[len + 1];
+        fread(str, sizeof(char_t), len, f);
+        str[len] = 0;
+    }
+    ~input_t()
+    {
+        delete[]str;
+    }
+};
+
+typedef input_t<unsigned char>  iutf8_t;
+typedef input_t<unsigned short> iutf16_t;
+typedef input_t<unsigned int>   iutf32_t;
+typedef input_t<unsigned short> iucs2_t;
+
+struct out_t {
+    bool caps;
+
+    out_t() : caps(false) {}
+    void prt(char c)
+    {
+        printf("%c", caps ? toupper(c) : c);
+        caps = false;
+    }
+    void err()
+    {
+        printf(" ... error\n");
+    }
+};
+
+
+
+enum YYCONDTYPE {
+       yycl,
+       yycn,
+};
+
+
+static void lex_utf8(const iutf8_t & in)
+{
+    const unsigned char *YYCURSOR = in.str;
+    const unsigned char *YYMARKER;
+    int c = yycl;
+    out_t out;
+    
+{
+       unsigned char yych;
+       switch (c) {
+       case yycl: goto yyc_l;
+       case yycn: goto yyc_n;
+       }
+/* *********************************** */
+yyc_l:
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy3;
+       case '\n':      goto yy7;
+       case ' ':       goto yy9;
+       case 0xE2:      goto yy11;
+       default:        goto yy5;
+       }
+yy3:
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy5:
+       ++YYCURSOR;
+yy6:
+       { out.err(); return; }
+yy7:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\r':      goto yy12;
+       default:        goto yy8;
+       }
+yy8:
+       { out.prt('\n'); goto yyc_l; }
+yy9:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy11:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0xA0:      goto yy13;
+       default:        goto yy6;
+       }
+yy12:
+       ++YYCURSOR;
+       goto yy8;
+yy13:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:      goto yy9;
+       case 0x81:      goto yy15;
+       case 0x82:      goto yy17;
+       case 0x83:      goto yy19;
+       case 0x84:      goto yy21;
+       case 0x85:      goto yy23;
+       case 0x86:      goto yy25;
+       case 0x87:      goto yy27;
+       case 0x89:      goto yy29;
+       case 0x8A:      goto yy31;
+       case 0x8B:      goto yy33;
+       case 0x8D:      goto yy35;
+       case 0x8E:      goto yy37;
+       case 0x8F:      goto yy39;
+       case 0x91:      goto yy41;
+       case 0x92:      goto yy43;
+       case 0x93:      goto yy45;
+       case 0x94:      goto yy47;
+       case 0x95:      goto yy49;
+       case 0x96:      goto yy51;
+       case 0x97:      goto yy53;
+       case 0x99:      goto yy55;
+       case 0x9A:      goto yy57;
+       case 0x9B:      goto yy59;
+       case 0x9D:      goto yy61;
+       case 0x9E:      goto yy63;
+       case 0x9F:      goto yy65;
+       case 0xA0:      goto yy67;
+       case 0xA4:      goto yy69;
+       case 0xA5:      goto yy71;
+       case 0xA6:      goto yy73;
+       case 0xA7:      goto yy75;
+       case 0xAD:      goto yy77;
+       case 0xB0:      goto yy79;
+       case 0xB2:      goto yy81;
+       case 0xB5:      goto yy83;
+       case 0xBA:      goto yy85;
+       case 0xBC:      goto yy87;
+       case 0xBD:      goto yy89;
+       default:        goto yy14;
+       }
+yy14:
+       YYCURSOR = YYMARKER;
+       goto yy6;
+yy15:
+       ++YYCURSOR;
+       { out.prt('a'); goto yyc_l; }
+yy17:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy19:
+       ++YYCURSOR;
+       { out.prt('b'); goto yyc_l; }
+yy21:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy23:
+       ++YYCURSOR;
+       { out.prt('k'); goto yyc_l; }
+yy25:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy27:
+       ++YYCURSOR;
+       { out.prt('l'); goto yyc_l; }
+yy29:
+       ++YYCURSOR;
+       { out.prt('c'); goto yyc_l; }
+yy31:
+       ++YYCURSOR;
+       { out.prt('i'); goto yyc_l; }
+yy33:
+       ++YYCURSOR;
+       { out.prt('f'); goto yyc_l; }
+yy35:
+       ++YYCURSOR;
+       { out.prt('m'); goto yyc_l; }
+yy37:
+       ++YYCURSOR;
+       { out.prt('s'); goto yyc_l; }
+yy39:
+       ++YYCURSOR;
+       { out.prt('p'); goto yyc_l; }
+yy41:
+       ++YYCURSOR;
+       { out.prt('e'); goto yyc_l; }
+yy43:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy45:
+       ++YYCURSOR;
+       { out.prt('h'); goto yyc_l; }
+yy47:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy49:
+       ++YYCURSOR;
+       { out.prt('o'); goto yyc_l; }
+yy51:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy53:
+       ++YYCURSOR;
+       { out.prt('r'); goto yyc_l; }
+yy55:
+       ++YYCURSOR;
+       { out.prt('d'); goto yyc_l; }
+yy57:
+       ++YYCURSOR;
+       { out.prt('j'); goto yyc_l; }
+yy59:
+       ++YYCURSOR;
+       { out.prt('g'); goto yyc_l; }
+yy61:
+       ++YYCURSOR;
+       { out.prt('n'); goto yyc_l; }
+yy63:
+       ++YYCURSOR;
+       { out.prt('t'); goto yyc_l; }
+yy65:
+       ++YYCURSOR;
+       { out.prt('q'); goto yyc_l; }
+yy67:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy69:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy71:
+       ++YYCURSOR;
+       { out.prt('u'); goto yyc_l; }
+yy73:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy75:
+       ++YYCURSOR;
+       { out.prt('v'); goto yyc_l; }
+yy77:
+       ++YYCURSOR;
+       { out.prt('x'); goto yyc_l; }
+yy79:
+       ++YYCURSOR;
+       goto yyc_l;
+yy81:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy83:
+       ++YYCURSOR;
+       { out.prt('z'); goto yyc_l; }
+yy85:
+       ++YYCURSOR;
+       { out.prt('w'); goto yyc_l; }
+yy87:
+       ++YYCURSOR;
+       c = yycn;
+       goto yyc_n;
+yy89:
+       ++YYCURSOR;
+       { out.prt('y'); goto yyc_l; }
+/* *********************************** */
+yyc_n:
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy93;
+       case '\n':      goto yy97;
+       case ' ':       goto yy99;
+       case 0xE2:      goto yy101;
+       default:        goto yy95;
+       }
+yy93:
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy95:
+       ++YYCURSOR;
+yy96:
+       { out.err(); return; }
+yy97:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\r':      goto yy102;
+       default:        goto yy98;
+       }
+yy98:
+       { out.prt('\n'); goto yyc_l; }
+yy99:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy101:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0xA0:      goto yy103;
+       default:        goto yy96;
+       }
+yy102:
+       ++YYCURSOR;
+       goto yy98;
+yy103:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x80:      goto yy99;
+       case 0x81:      goto yy105;
+       case 0x82:      goto yy107;
+       case 0x83:      goto yy109;
+       case 0x84:      goto yy111;
+       case 0x86:      goto yy113;
+       case 0x89:      goto yy115;
+       case 0x8A:      goto yy117;
+       case 0x8B:      goto yy119;
+       case 0x91:      goto yy121;
+       case 0x92:      goto yy123;
+       case 0x93:      goto yy125;
+       case 0x94:      goto yy127;
+       case 0x96:      goto yy129;
+       case 0x99:      goto yy131;
+       case 0x9A:      goto yy133;
+       case 0x9B:      goto yy135;
+       case 0xA0:      goto yy137;
+       case 0xA4:      goto yy139;
+       case 0xA6:      goto yy141;
+       case 0xB0:      goto yy143;
+       case 0xB2:      goto yy145;
+       case 0xBC:      goto yy147;
+       default:        goto yy104;
+       }
+yy104:
+       YYCURSOR = YYMARKER;
+       goto yy96;
+yy105:
+       ++YYCURSOR;
+       { out.prt('1'); goto yyc_n; }
+yy107:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy109:
+       ++YYCURSOR;
+       { out.prt('2'); goto yyc_n; }
+yy111:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy113:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy115:
+       ++YYCURSOR;
+       { out.prt('3'); goto yyc_n; }
+yy117:
+       ++YYCURSOR;
+       { out.prt('9'); goto yyc_n; }
+yy119:
+       ++YYCURSOR;
+       { out.prt('6'); goto yyc_n; }
+yy121:
+       ++YYCURSOR;
+       { out.prt('5'); goto yyc_n; }
+yy123:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy125:
+       ++YYCURSOR;
+       { out.prt('8'); goto yyc_n; }
+yy127:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy129:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy131:
+       ++YYCURSOR;
+       { out.prt('4'); goto yyc_n; }
+yy133:
+       ++YYCURSOR;
+       { out.prt('0'); goto yyc_n; }
+yy135:
+       ++YYCURSOR;
+       { out.prt('7'); goto yyc_n; }
+yy137:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy139:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy141:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy143:
+       ++YYCURSOR;
+       c = yycl;
+       goto yyc_l;
+yy145:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy147:
+       ++YYCURSOR;
+       goto yyc_n;
+}
+
+}
+
+static void lex_utf16(const iutf16_t & in)
+{
+    const unsigned short *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    
+{
+       unsigned int yych;
+       if (c < 1) {
+               goto yyc_l;
+       } else {
+               goto yyc_n;
+       }
+/* *********************************** */
+yyc_l:
+       yych = *YYCURSOR;
+       if (yych <= 0x2816) {
+               if (yych <= 0x2807) {
+                       if (yych <= 0x2800) {
+                               if (yych <= '\n') {
+                                       if (yych <= 0x0000) goto yy3;
+                                       if (yych <= '\t') goto yy5;
+                                       goto yy7;
+                               } else {
+                                       if (yych == ' ') goto yy9;
+                                       if (yych <= 0x27FF) goto yy5;
+                                       goto yy9;
+                               }
+                       } else {
+                               if (yych <= 0x2803) {
+                                       if (yych <= 0x2801) goto yy11;
+                                       if (yych <= 0x2802) goto yy13;
+                                       goto yy15;
+                               } else {
+                                       if (yych <= 0x2804) goto yy17;
+                                       if (yych <= 0x2805) goto yy19;
+                                       if (yych <= 0x2806) goto yy21;
+                                       goto yy23;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x280E) {
+                               if (yych <= 0x280A) {
+                                       if (yych <= 0x2808) goto yy5;
+                                       if (yych <= 0x2809) goto yy25;
+                                       goto yy27;
+                               } else {
+                                       if (yych <= 0x280B) goto yy29;
+                                       if (yych <= 0x280C) goto yy5;
+                                       if (yych <= 0x280D) goto yy31;
+                                       goto yy33;
+                               }
+                       } else {
+                               if (yych <= 0x2812) {
+                                       if (yych <= 0x280F) goto yy35;
+                                       if (yych <= 0x2810) goto yy5;
+                                       if (yych <= 0x2811) goto yy37;
+                                       goto yy39;
+                               } else {
+                                       if (yych <= 0x2813) goto yy41;
+                                       if (yych <= 0x2814) goto yy43;
+                                       if (yych <= 0x2815) goto yy45;
+                                       goto yy47;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x2826) {
+                       if (yych <= 0x281D) {
+                               if (yych <= 0x2819) {
+                                       if (yych <= 0x2817) goto yy49;
+                                       if (yych <= 0x2818) goto yy5;
+                                       goto yy51;
+                               } else {
+                                       if (yych <= 0x281A) goto yy53;
+                                       if (yych <= 0x281B) goto yy55;
+                                       if (yych <= 0x281C) goto yy5;
+                                       goto yy57;
+                               }
+                       } else {
+                               if (yych <= 0x2820) {
+                                       if (yych <= 0x281E) goto yy59;
+                                       if (yych <= 0x281F) goto yy61;
+                                       goto yy63;
+                               } else {
+                                       if (yych <= 0x2823) goto yy5;
+                                       if (yych <= 0x2824) goto yy65;
+                                       if (yych <= 0x2825) goto yy67;
+                                       goto yy69;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x2832) {
+                               if (yych <= 0x282D) {
+                                       if (yych <= 0x2827) goto yy71;
+                                       if (yych <= 0x282C) goto yy5;
+                                       goto yy73;
+                               } else {
+                                       if (yych == 0x2830) goto yy75;
+                                       if (yych <= 0x2831) goto yy5;
+                                       goto yy77;
+                               }
+                       } else {
+                               if (yych <= 0x283A) {
+                                       if (yych == 0x2835) goto yy79;
+                                       if (yych <= 0x2839) goto yy5;
+                                       goto yy81;
+                               } else {
+                                       if (yych <= 0x283B) goto yy5;
+                                       if (yych <= 0x283C) goto yy83;
+                                       if (yych <= 0x283D) goto yy85;
+                                       goto yy5;
+                               }
+                       }
+               }
+       }
+yy3:
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy5:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy7:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy87;
+yy8:
+       { out.prt('\n'); goto yyc_l; }
+yy9:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy11:
+       ++YYCURSOR;
+       { out.prt('a'); goto yyc_l; }
+yy13:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy15:
+       ++YYCURSOR;
+       { out.prt('b'); goto yyc_l; }
+yy17:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy19:
+       ++YYCURSOR;
+       { out.prt('k'); goto yyc_l; }
+yy21:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy23:
+       ++YYCURSOR;
+       { out.prt('l'); goto yyc_l; }
+yy25:
+       ++YYCURSOR;
+       { out.prt('c'); goto yyc_l; }
+yy27:
+       ++YYCURSOR;
+       { out.prt('i'); goto yyc_l; }
+yy29:
+       ++YYCURSOR;
+       { out.prt('f'); goto yyc_l; }
+yy31:
+       ++YYCURSOR;
+       { out.prt('m'); goto yyc_l; }
+yy33:
+       ++YYCURSOR;
+       { out.prt('s'); goto yyc_l; }
+yy35:
+       ++YYCURSOR;
+       { out.prt('p'); goto yyc_l; }
+yy37:
+       ++YYCURSOR;
+       { out.prt('e'); goto yyc_l; }
+yy39:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy41:
+       ++YYCURSOR;
+       { out.prt('h'); goto yyc_l; }
+yy43:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy45:
+       ++YYCURSOR;
+       { out.prt('o'); goto yyc_l; }
+yy47:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy49:
+       ++YYCURSOR;
+       { out.prt('r'); goto yyc_l; }
+yy51:
+       ++YYCURSOR;
+       { out.prt('d'); goto yyc_l; }
+yy53:
+       ++YYCURSOR;
+       { out.prt('j'); goto yyc_l; }
+yy55:
+       ++YYCURSOR;
+       { out.prt('g'); goto yyc_l; }
+yy57:
+       ++YYCURSOR;
+       { out.prt('n'); goto yyc_l; }
+yy59:
+       ++YYCURSOR;
+       { out.prt('t'); goto yyc_l; }
+yy61:
+       ++YYCURSOR;
+       { out.prt('q'); goto yyc_l; }
+yy63:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy65:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy67:
+       ++YYCURSOR;
+       { out.prt('u'); goto yyc_l; }
+yy69:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy71:
+       ++YYCURSOR;
+       { out.prt('v'); goto yyc_l; }
+yy73:
+       ++YYCURSOR;
+       { out.prt('x'); goto yyc_l; }
+yy75:
+       ++YYCURSOR;
+       goto yyc_l;
+yy77:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy79:
+       ++YYCURSOR;
+       { out.prt('z'); goto yyc_l; }
+yy81:
+       ++YYCURSOR;
+       { out.prt('w'); goto yyc_l; }
+yy83:
+       ++YYCURSOR;
+       c = yycn;
+       goto yyc_n;
+yy85:
+       ++YYCURSOR;
+       { out.prt('y'); goto yyc_l; }
+yy87:
+       ++YYCURSOR;
+       goto yy8;
+/* *********************************** */
+yyc_n:
+       yych = *YYCURSOR;
+       if (yych <= 0x2812) {
+               if (yych <= 0x2803) {
+                       if (yych <= ' ') {
+                               if (yych <= '\t') {
+                                       if (yych >= 0x0001) goto yy92;
+                               } else {
+                                       if (yych <= '\n') goto yy94;
+                                       if (yych <= 0x001F) goto yy92;
+                                       goto yy96;
+                               }
+                       } else {
+                               if (yych <= 0x2800) {
+                                       if (yych <= 0x27FF) goto yy92;
+                                       goto yy96;
+                               } else {
+                                       if (yych <= 0x2801) goto yy98;
+                                       if (yych <= 0x2802) goto yy100;
+                                       goto yy102;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x2809) {
+                               if (yych <= 0x2805) {
+                                       if (yych <= 0x2804) goto yy104;
+                                       goto yy92;
+                               } else {
+                                       if (yych <= 0x2806) goto yy106;
+                                       if (yych <= 0x2808) goto yy92;
+                                       goto yy108;
+                               }
+                       } else {
+                               if (yych <= 0x280B) {
+                                       if (yych <= 0x280A) goto yy110;
+                                       goto yy112;
+                               } else {
+                                       if (yych <= 0x2810) goto yy92;
+                                       if (yych <= 0x2811) goto yy114;
+                                       goto yy116;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x2820) {
+                       if (yych <= 0x2818) {
+                               if (yych <= 0x2814) {
+                                       if (yych <= 0x2813) goto yy118;
+                                       goto yy120;
+                               } else {
+                                       if (yych == 0x2816) goto yy122;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x281A) {
+                                       if (yych <= 0x2819) goto yy124;
+                                       goto yy126;
+                               } else {
+                                       if (yych <= 0x281B) goto yy128;
+                                       if (yych <= 0x281F) goto yy92;
+                                       goto yy130;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x282F) {
+                               if (yych <= 0x2824) {
+                                       if (yych <= 0x2823) goto yy92;
+                                       goto yy132;
+                               } else {
+                                       if (yych == 0x2826) goto yy134;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x2832) {
+                                       if (yych <= 0x2830) goto yy136;
+                                       if (yych <= 0x2831) goto yy92;
+                                       goto yy138;
+                               } else {
+                                       if (yych == 0x283C) goto yy140;
+                                       goto yy92;
+                               }
+                       }
+               }
+       }
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy92:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy94:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy142;
+yy95:
+       { out.prt('\n'); goto yyc_l; }
+yy96:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy98:
+       ++YYCURSOR;
+       { out.prt('1'); goto yyc_n; }
+yy100:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy102:
+       ++YYCURSOR;
+       { out.prt('2'); goto yyc_n; }
+yy104:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy106:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy108:
+       ++YYCURSOR;
+       { out.prt('3'); goto yyc_n; }
+yy110:
+       ++YYCURSOR;
+       { out.prt('9'); goto yyc_n; }
+yy112:
+       ++YYCURSOR;
+       { out.prt('6'); goto yyc_n; }
+yy114:
+       ++YYCURSOR;
+       { out.prt('5'); goto yyc_n; }
+yy116:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy118:
+       ++YYCURSOR;
+       { out.prt('8'); goto yyc_n; }
+yy120:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy122:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy124:
+       ++YYCURSOR;
+       { out.prt('4'); goto yyc_n; }
+yy126:
+       ++YYCURSOR;
+       { out.prt('0'); goto yyc_n; }
+yy128:
+       ++YYCURSOR;
+       { out.prt('7'); goto yyc_n; }
+yy130:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy132:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy134:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy136:
+       ++YYCURSOR;
+       c = yycl;
+       goto yyc_l;
+yy138:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy140:
+       ++YYCURSOR;
+       goto yyc_n;
+yy142:
+       ++YYCURSOR;
+       goto yy95;
+}
+
+}
+
+static void lex_utf32(const iutf32_t & in)
+{
+    const unsigned int *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    
+{
+       unsigned int yych;
+       if (c < 1) {
+               goto yyc_l;
+       } else {
+               goto yyc_n;
+       }
+/* *********************************** */
+yyc_l:
+       yych = *YYCURSOR;
+       if (yych <= 0x00002816) {
+               if (yych <= 0x00002807) {
+                       if (yych <= 0x00002800) {
+                               if (yych <= '\n') {
+                                       if (yych <= 0x00000000) goto yy3;
+                                       if (yych <= '\t') goto yy5;
+                                       goto yy7;
+                               } else {
+                                       if (yych == ' ') goto yy9;
+                                       if (yych <= 0x000027FF) goto yy5;
+                                       goto yy9;
+                               }
+                       } else {
+                               if (yych <= 0x00002803) {
+                                       if (yych <= 0x00002801) goto yy11;
+                                       if (yych <= 0x00002802) goto yy13;
+                                       goto yy15;
+                               } else {
+                                       if (yych <= 0x00002804) goto yy17;
+                                       if (yych <= 0x00002805) goto yy19;
+                                       if (yych <= 0x00002806) goto yy21;
+                                       goto yy23;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x0000280E) {
+                               if (yych <= 0x0000280A) {
+                                       if (yych <= 0x00002808) goto yy5;
+                                       if (yych <= 0x00002809) goto yy25;
+                                       goto yy27;
+                               } else {
+                                       if (yych <= 0x0000280B) goto yy29;
+                                       if (yych <= 0x0000280C) goto yy5;
+                                       if (yych <= 0x0000280D) goto yy31;
+                                       goto yy33;
+                               }
+                       } else {
+                               if (yych <= 0x00002812) {
+                                       if (yych <= 0x0000280F) goto yy35;
+                                       if (yych <= 0x00002810) goto yy5;
+                                       if (yych <= 0x00002811) goto yy37;
+                                       goto yy39;
+                               } else {
+                                       if (yych <= 0x00002813) goto yy41;
+                                       if (yych <= 0x00002814) goto yy43;
+                                       if (yych <= 0x00002815) goto yy45;
+                                       goto yy47;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x00002826) {
+                       if (yych <= 0x0000281D) {
+                               if (yych <= 0x00002819) {
+                                       if (yych <= 0x00002817) goto yy49;
+                                       if (yych <= 0x00002818) goto yy5;
+                                       goto yy51;
+                               } else {
+                                       if (yych <= 0x0000281A) goto yy53;
+                                       if (yych <= 0x0000281B) goto yy55;
+                                       if (yych <= 0x0000281C) goto yy5;
+                                       goto yy57;
+                               }
+                       } else {
+                               if (yych <= 0x00002820) {
+                                       if (yych <= 0x0000281E) goto yy59;
+                                       if (yych <= 0x0000281F) goto yy61;
+                                       goto yy63;
+                               } else {
+                                       if (yych <= 0x00002823) goto yy5;
+                                       if (yych <= 0x00002824) goto yy65;
+                                       if (yych <= 0x00002825) goto yy67;
+                                       goto yy69;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x00002832) {
+                               if (yych <= 0x0000282D) {
+                                       if (yych <= 0x00002827) goto yy71;
+                                       if (yych <= 0x0000282C) goto yy5;
+                                       goto yy73;
+                               } else {
+                                       if (yych == 0x00002830) goto yy75;
+                                       if (yych <= 0x00002831) goto yy5;
+                                       goto yy77;
+                               }
+                       } else {
+                               if (yych <= 0x0000283A) {
+                                       if (yych == 0x00002835) goto yy79;
+                                       if (yych <= 0x00002839) goto yy5;
+                                       goto yy81;
+                               } else {
+                                       if (yych <= 0x0000283B) goto yy5;
+                                       if (yych <= 0x0000283C) goto yy83;
+                                       if (yych <= 0x0000283D) goto yy85;
+                                       goto yy5;
+                               }
+                       }
+               }
+       }
+yy3:
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy5:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy7:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy87;
+yy8:
+       { out.prt('\n'); goto yyc_l; }
+yy9:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy11:
+       ++YYCURSOR;
+       { out.prt('a'); goto yyc_l; }
+yy13:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy15:
+       ++YYCURSOR;
+       { out.prt('b'); goto yyc_l; }
+yy17:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy19:
+       ++YYCURSOR;
+       { out.prt('k'); goto yyc_l; }
+yy21:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy23:
+       ++YYCURSOR;
+       { out.prt('l'); goto yyc_l; }
+yy25:
+       ++YYCURSOR;
+       { out.prt('c'); goto yyc_l; }
+yy27:
+       ++YYCURSOR;
+       { out.prt('i'); goto yyc_l; }
+yy29:
+       ++YYCURSOR;
+       { out.prt('f'); goto yyc_l; }
+yy31:
+       ++YYCURSOR;
+       { out.prt('m'); goto yyc_l; }
+yy33:
+       ++YYCURSOR;
+       { out.prt('s'); goto yyc_l; }
+yy35:
+       ++YYCURSOR;
+       { out.prt('p'); goto yyc_l; }
+yy37:
+       ++YYCURSOR;
+       { out.prt('e'); goto yyc_l; }
+yy39:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy41:
+       ++YYCURSOR;
+       { out.prt('h'); goto yyc_l; }
+yy43:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy45:
+       ++YYCURSOR;
+       { out.prt('o'); goto yyc_l; }
+yy47:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy49:
+       ++YYCURSOR;
+       { out.prt('r'); goto yyc_l; }
+yy51:
+       ++YYCURSOR;
+       { out.prt('d'); goto yyc_l; }
+yy53:
+       ++YYCURSOR;
+       { out.prt('j'); goto yyc_l; }
+yy55:
+       ++YYCURSOR;
+       { out.prt('g'); goto yyc_l; }
+yy57:
+       ++YYCURSOR;
+       { out.prt('n'); goto yyc_l; }
+yy59:
+       ++YYCURSOR;
+       { out.prt('t'); goto yyc_l; }
+yy61:
+       ++YYCURSOR;
+       { out.prt('q'); goto yyc_l; }
+yy63:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy65:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy67:
+       ++YYCURSOR;
+       { out.prt('u'); goto yyc_l; }
+yy69:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy71:
+       ++YYCURSOR;
+       { out.prt('v'); goto yyc_l; }
+yy73:
+       ++YYCURSOR;
+       { out.prt('x'); goto yyc_l; }
+yy75:
+       ++YYCURSOR;
+       goto yyc_l;
+yy77:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy79:
+       ++YYCURSOR;
+       { out.prt('z'); goto yyc_l; }
+yy81:
+       ++YYCURSOR;
+       { out.prt('w'); goto yyc_l; }
+yy83:
+       ++YYCURSOR;
+       c = yycn;
+       goto yyc_n;
+yy85:
+       ++YYCURSOR;
+       { out.prt('y'); goto yyc_l; }
+yy87:
+       ++YYCURSOR;
+       goto yy8;
+/* *********************************** */
+yyc_n:
+       yych = *YYCURSOR;
+       if (yych <= 0x00002812) {
+               if (yych <= 0x00002803) {
+                       if (yych <= ' ') {
+                               if (yych <= '\t') {
+                                       if (yych >= 0x00000001) goto yy92;
+                               } else {
+                                       if (yych <= '\n') goto yy94;
+                                       if (yych <= 0x0000001F) goto yy92;
+                                       goto yy96;
+                               }
+                       } else {
+                               if (yych <= 0x00002800) {
+                                       if (yych <= 0x000027FF) goto yy92;
+                                       goto yy96;
+                               } else {
+                                       if (yych <= 0x00002801) goto yy98;
+                                       if (yych <= 0x00002802) goto yy100;
+                                       goto yy102;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x00002809) {
+                               if (yych <= 0x00002805) {
+                                       if (yych <= 0x00002804) goto yy104;
+                                       goto yy92;
+                               } else {
+                                       if (yych <= 0x00002806) goto yy106;
+                                       if (yych <= 0x00002808) goto yy92;
+                                       goto yy108;
+                               }
+                       } else {
+                               if (yych <= 0x0000280B) {
+                                       if (yych <= 0x0000280A) goto yy110;
+                                       goto yy112;
+                               } else {
+                                       if (yych <= 0x00002810) goto yy92;
+                                       if (yych <= 0x00002811) goto yy114;
+                                       goto yy116;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x00002820) {
+                       if (yych <= 0x00002818) {
+                               if (yych <= 0x00002814) {
+                                       if (yych <= 0x00002813) goto yy118;
+                                       goto yy120;
+                               } else {
+                                       if (yych == 0x00002816) goto yy122;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x0000281A) {
+                                       if (yych <= 0x00002819) goto yy124;
+                                       goto yy126;
+                               } else {
+                                       if (yych <= 0x0000281B) goto yy128;
+                                       if (yych <= 0x0000281F) goto yy92;
+                                       goto yy130;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x0000282F) {
+                               if (yych <= 0x00002824) {
+                                       if (yych <= 0x00002823) goto yy92;
+                                       goto yy132;
+                               } else {
+                                       if (yych == 0x00002826) goto yy134;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x00002832) {
+                                       if (yych <= 0x00002830) goto yy136;
+                                       if (yych <= 0x00002831) goto yy92;
+                                       goto yy138;
+                               } else {
+                                       if (yych == 0x0000283C) goto yy140;
+                                       goto yy92;
+                               }
+                       }
+               }
+       }
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy92:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy94:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy142;
+yy95:
+       { out.prt('\n'); goto yyc_l; }
+yy96:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy98:
+       ++YYCURSOR;
+       { out.prt('1'); goto yyc_n; }
+yy100:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy102:
+       ++YYCURSOR;
+       { out.prt('2'); goto yyc_n; }
+yy104:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy106:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy108:
+       ++YYCURSOR;
+       { out.prt('3'); goto yyc_n; }
+yy110:
+       ++YYCURSOR;
+       { out.prt('9'); goto yyc_n; }
+yy112:
+       ++YYCURSOR;
+       { out.prt('6'); goto yyc_n; }
+yy114:
+       ++YYCURSOR;
+       { out.prt('5'); goto yyc_n; }
+yy116:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy118:
+       ++YYCURSOR;
+       { out.prt('8'); goto yyc_n; }
+yy120:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy122:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy124:
+       ++YYCURSOR;
+       { out.prt('4'); goto yyc_n; }
+yy126:
+       ++YYCURSOR;
+       { out.prt('0'); goto yyc_n; }
+yy128:
+       ++YYCURSOR;
+       { out.prt('7'); goto yyc_n; }
+yy130:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy132:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy134:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy136:
+       ++YYCURSOR;
+       c = yycl;
+       goto yyc_l;
+yy138:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy140:
+       ++YYCURSOR;
+       goto yyc_n;
+yy142:
+       ++YYCURSOR;
+       goto yy95;
+}
+
+}
+
+static void lex_ucs2(const iucs2_t & in)
+{
+    const unsigned short *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    
+{
+       unsigned int yych;
+       if (c < 1) {
+               goto yyc_l;
+       } else {
+               goto yyc_n;
+       }
+/* *********************************** */
+yyc_l:
+       yych = *YYCURSOR;
+       if (yych <= 0x2816) {
+               if (yych <= 0x2807) {
+                       if (yych <= 0x2800) {
+                               if (yych <= '\n') {
+                                       if (yych <= 0x0000) goto yy3;
+                                       if (yych <= '\t') goto yy5;
+                                       goto yy7;
+                               } else {
+                                       if (yych == ' ') goto yy9;
+                                       if (yych <= 0x27FF) goto yy5;
+                                       goto yy9;
+                               }
+                       } else {
+                               if (yych <= 0x2803) {
+                                       if (yych <= 0x2801) goto yy11;
+                                       if (yych <= 0x2802) goto yy13;
+                                       goto yy15;
+                               } else {
+                                       if (yych <= 0x2804) goto yy17;
+                                       if (yych <= 0x2805) goto yy19;
+                                       if (yych <= 0x2806) goto yy21;
+                                       goto yy23;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x280E) {
+                               if (yych <= 0x280A) {
+                                       if (yych <= 0x2808) goto yy5;
+                                       if (yych <= 0x2809) goto yy25;
+                                       goto yy27;
+                               } else {
+                                       if (yych <= 0x280B) goto yy29;
+                                       if (yych <= 0x280C) goto yy5;
+                                       if (yych <= 0x280D) goto yy31;
+                                       goto yy33;
+                               }
+                       } else {
+                               if (yych <= 0x2812) {
+                                       if (yych <= 0x280F) goto yy35;
+                                       if (yych <= 0x2810) goto yy5;
+                                       if (yych <= 0x2811) goto yy37;
+                                       goto yy39;
+                               } else {
+                                       if (yych <= 0x2813) goto yy41;
+                                       if (yych <= 0x2814) goto yy43;
+                                       if (yych <= 0x2815) goto yy45;
+                                       goto yy47;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x2826) {
+                       if (yych <= 0x281D) {
+                               if (yych <= 0x2819) {
+                                       if (yych <= 0x2817) goto yy49;
+                                       if (yych <= 0x2818) goto yy5;
+                                       goto yy51;
+                               } else {
+                                       if (yych <= 0x281A) goto yy53;
+                                       if (yych <= 0x281B) goto yy55;
+                                       if (yych <= 0x281C) goto yy5;
+                                       goto yy57;
+                               }
+                       } else {
+                               if (yych <= 0x2820) {
+                                       if (yych <= 0x281E) goto yy59;
+                                       if (yych <= 0x281F) goto yy61;
+                                       goto yy63;
+                               } else {
+                                       if (yych <= 0x2823) goto yy5;
+                                       if (yych <= 0x2824) goto yy65;
+                                       if (yych <= 0x2825) goto yy67;
+                                       goto yy69;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x2832) {
+                               if (yych <= 0x282D) {
+                                       if (yych <= 0x2827) goto yy71;
+                                       if (yych <= 0x282C) goto yy5;
+                                       goto yy73;
+                               } else {
+                                       if (yych == 0x2830) goto yy75;
+                                       if (yych <= 0x2831) goto yy5;
+                                       goto yy77;
+                               }
+                       } else {
+                               if (yych <= 0x283A) {
+                                       if (yych == 0x2835) goto yy79;
+                                       if (yych <= 0x2839) goto yy5;
+                                       goto yy81;
+                               } else {
+                                       if (yych <= 0x283B) goto yy5;
+                                       if (yych <= 0x283C) goto yy83;
+                                       if (yych <= 0x283D) goto yy85;
+                                       goto yy5;
+                               }
+                       }
+               }
+       }
+yy3:
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy5:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy7:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy87;
+yy8:
+       { out.prt('\n'); goto yyc_l; }
+yy9:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy11:
+       ++YYCURSOR;
+       { out.prt('a'); goto yyc_l; }
+yy13:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy15:
+       ++YYCURSOR;
+       { out.prt('b'); goto yyc_l; }
+yy17:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy19:
+       ++YYCURSOR;
+       { out.prt('k'); goto yyc_l; }
+yy21:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy23:
+       ++YYCURSOR;
+       { out.prt('l'); goto yyc_l; }
+yy25:
+       ++YYCURSOR;
+       { out.prt('c'); goto yyc_l; }
+yy27:
+       ++YYCURSOR;
+       { out.prt('i'); goto yyc_l; }
+yy29:
+       ++YYCURSOR;
+       { out.prt('f'); goto yyc_l; }
+yy31:
+       ++YYCURSOR;
+       { out.prt('m'); goto yyc_l; }
+yy33:
+       ++YYCURSOR;
+       { out.prt('s'); goto yyc_l; }
+yy35:
+       ++YYCURSOR;
+       { out.prt('p'); goto yyc_l; }
+yy37:
+       ++YYCURSOR;
+       { out.prt('e'); goto yyc_l; }
+yy39:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy41:
+       ++YYCURSOR;
+       { out.prt('h'); goto yyc_l; }
+yy43:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy45:
+       ++YYCURSOR;
+       { out.prt('o'); goto yyc_l; }
+yy47:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy49:
+       ++YYCURSOR;
+       { out.prt('r'); goto yyc_l; }
+yy51:
+       ++YYCURSOR;
+       { out.prt('d'); goto yyc_l; }
+yy53:
+       ++YYCURSOR;
+       { out.prt('j'); goto yyc_l; }
+yy55:
+       ++YYCURSOR;
+       { out.prt('g'); goto yyc_l; }
+yy57:
+       ++YYCURSOR;
+       { out.prt('n'); goto yyc_l; }
+yy59:
+       ++YYCURSOR;
+       { out.prt('t'); goto yyc_l; }
+yy61:
+       ++YYCURSOR;
+       { out.prt('q'); goto yyc_l; }
+yy63:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy65:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy67:
+       ++YYCURSOR;
+       { out.prt('u'); goto yyc_l; }
+yy69:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy71:
+       ++YYCURSOR;
+       { out.prt('v'); goto yyc_l; }
+yy73:
+       ++YYCURSOR;
+       { out.prt('x'); goto yyc_l; }
+yy75:
+       ++YYCURSOR;
+       goto yyc_l;
+yy77:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy79:
+       ++YYCURSOR;
+       { out.prt('z'); goto yyc_l; }
+yy81:
+       ++YYCURSOR;
+       { out.prt('w'); goto yyc_l; }
+yy83:
+       ++YYCURSOR;
+       c = yycn;
+       goto yyc_n;
+yy85:
+       ++YYCURSOR;
+       { out.prt('y'); goto yyc_l; }
+yy87:
+       ++YYCURSOR;
+       goto yy8;
+/* *********************************** */
+yyc_n:
+       yych = *YYCURSOR;
+       if (yych <= 0x2812) {
+               if (yych <= 0x2803) {
+                       if (yych <= ' ') {
+                               if (yych <= '\t') {
+                                       if (yych >= 0x0001) goto yy92;
+                               } else {
+                                       if (yych <= '\n') goto yy94;
+                                       if (yych <= 0x001F) goto yy92;
+                                       goto yy96;
+                               }
+                       } else {
+                               if (yych <= 0x2800) {
+                                       if (yych <= 0x27FF) goto yy92;
+                                       goto yy96;
+                               } else {
+                                       if (yych <= 0x2801) goto yy98;
+                                       if (yych <= 0x2802) goto yy100;
+                                       goto yy102;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x2809) {
+                               if (yych <= 0x2805) {
+                                       if (yych <= 0x2804) goto yy104;
+                                       goto yy92;
+                               } else {
+                                       if (yych <= 0x2806) goto yy106;
+                                       if (yych <= 0x2808) goto yy92;
+                                       goto yy108;
+                               }
+                       } else {
+                               if (yych <= 0x280B) {
+                                       if (yych <= 0x280A) goto yy110;
+                                       goto yy112;
+                               } else {
+                                       if (yych <= 0x2810) goto yy92;
+                                       if (yych <= 0x2811) goto yy114;
+                                       goto yy116;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 0x2820) {
+                       if (yych <= 0x2818) {
+                               if (yych <= 0x2814) {
+                                       if (yych <= 0x2813) goto yy118;
+                                       goto yy120;
+                               } else {
+                                       if (yych == 0x2816) goto yy122;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x281A) {
+                                       if (yych <= 0x2819) goto yy124;
+                                       goto yy126;
+                               } else {
+                                       if (yych <= 0x281B) goto yy128;
+                                       if (yych <= 0x281F) goto yy92;
+                                       goto yy130;
+                               }
+                       }
+               } else {
+                       if (yych <= 0x282F) {
+                               if (yych <= 0x2824) {
+                                       if (yych <= 0x2823) goto yy92;
+                                       goto yy132;
+                               } else {
+                                       if (yych == 0x2826) goto yy134;
+                                       goto yy92;
+                               }
+                       } else {
+                               if (yych <= 0x2832) {
+                                       if (yych <= 0x2830) goto yy136;
+                                       if (yych <= 0x2831) goto yy92;
+                                       goto yy138;
+                               } else {
+                                       if (yych == 0x283C) goto yy140;
+                                       goto yy92;
+                               }
+                       }
+               }
+       }
+       ++YYCURSOR;
+       { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+yy92:
+       ++YYCURSOR;
+       { out.err(); return; }
+yy94:
+       yych = *++YYCURSOR;
+       if (yych == '\r') goto yy142;
+yy95:
+       { out.prt('\n'); goto yyc_l; }
+yy96:
+       ++YYCURSOR;
+       { out.prt(' '); goto yyc_l; }
+yy98:
+       ++YYCURSOR;
+       { out.prt('1'); goto yyc_n; }
+yy100:
+       ++YYCURSOR;
+       { out.prt(','); goto yyc_l; }
+yy102:
+       ++YYCURSOR;
+       { out.prt('2'); goto yyc_n; }
+yy104:
+       ++YYCURSOR;
+       { out.prt('\''); goto yyc_l; }
+yy106:
+       ++YYCURSOR;
+       { out.prt(';'); goto yyc_l; }
+yy108:
+       ++YYCURSOR;
+       { out.prt('3'); goto yyc_n; }
+yy110:
+       ++YYCURSOR;
+       { out.prt('9'); goto yyc_n; }
+yy112:
+       ++YYCURSOR;
+       { out.prt('6'); goto yyc_n; }
+yy114:
+       ++YYCURSOR;
+       { out.prt('5'); goto yyc_n; }
+yy116:
+       ++YYCURSOR;
+       { out.prt(':'); goto yyc_l; }
+yy118:
+       ++YYCURSOR;
+       { out.prt('8'); goto yyc_n; }
+yy120:
+       ++YYCURSOR;
+       { out.prt('*'); goto yyc_l; }
+yy122:
+       ++YYCURSOR;
+       { out.prt('!'); goto yyc_l; }
+yy124:
+       ++YYCURSOR;
+       { out.prt('4'); goto yyc_n; }
+yy126:
+       ++YYCURSOR;
+       { out.prt('0'); goto yyc_n; }
+yy128:
+       ++YYCURSOR;
+       { out.prt('7'); goto yyc_n; }
+yy130:
+       ++YYCURSOR;
+       { out.caps = true; goto yyc_l; }
+yy132:
+       ++YYCURSOR;
+       { out.prt('-'); goto yyc_l; }
+yy134:
+       ++YYCURSOR;
+       { out.prt('?'); goto yyc_l; }
+yy136:
+       ++YYCURSOR;
+       c = yycl;
+       goto yyc_l;
+yy138:
+       ++YYCURSOR;
+       { out.prt('.'); goto yyc_l; }
+yy140:
+       ++YYCURSOR;
+       goto yyc_n;
+yy142:
+       ++YYCURSOR;
+       goto yy95;
+}
+
+}
+
+int main()
+{
+    FILE *f;
+
+    f = fopen("06_braille.utf8.txt", "rb");
+    if (f) {
+        printf("utf8:\n");
+        iutf8_t in(f);
+        lex_utf8(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.utf16.txt", "rb");
+    if (f) {
+        printf("utf16:\n");
+        iutf16_t in(f);
+        lex_utf16(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.utf32.txt", "rb");
+    if (f) {
+        printf("utf32:\n");
+        iutf32_t in(f);
+        lex_utf32(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.ucs2.txt", "rb");
+    if (f) {
+        printf("ucs2:\n");
+        iucs2_t in(f);
+        lex_ucs2(in);
+        fclose(f);
+    }
+
+    return 0;
+}
diff --git a/re2c/test/examples/06_braille.cr8i--tags.re b/re2c/test/examples/06_braille.cr8i--tags.re
new file mode 100644 (file)
index 0000000..5fa429e
--- /dev/null
@@ -0,0 +1,229 @@
+#include <ctype.h>
+#include <stdio.h>
+
+template<typename char_t>
+struct input_t {
+    size_t len;
+    char_t *str;
+
+    input_t(FILE *f) : len(0), str(NULL)
+    {
+        fseek(f, 0, SEEK_END);
+        len = ftell(f) / sizeof(char_t);
+        fseek(f, 0, SEEK_SET);
+        str = new char_t[len + 1];
+        fread(str, sizeof(char_t), len, f);
+        str[len] = 0;
+    }
+    ~input_t()
+    {
+        delete[]str;
+    }
+};
+
+typedef input_t<unsigned char>  iutf8_t;
+typedef input_t<unsigned short> iutf16_t;
+typedef input_t<unsigned int>   iutf32_t;
+typedef input_t<unsigned short> iucs2_t;
+
+struct out_t {
+    bool caps;
+
+    out_t() : caps(false) {}
+    void prt(char c)
+    {
+        printf("%c", caps ? toupper(c) : c);
+        caps = false;
+    }
+    void err()
+    {
+        printf(" ... error\n");
+    }
+};
+
+/*!rules:re2c
+    re2c:yyfill:enable = 0;
+
+    // letters
+    l = "\u2830";
+    la = "\u2801"; lb = "\u2803"; lc = "\u2809"; ld = "\u2819"; le = "\u2811";
+    lf = "\u280b"; lg = "\u281b"; lh = "\u2813"; li = "\u280a"; lj = "\u281a";
+    lk = "\u2805"; ll = "\u2807"; lm = "\u280d"; ln = "\u281d"; lo = "\u2815";
+    lp = "\u280f"; lq = "\u281f"; lr = "\u2817"; ls = "\u280e"; lt = "\u281e";
+    lu = "\u2825"; lv = "\u2827"; lw = "\u283a"; lx = "\u282d"; ly = "\u283d";
+    lz = "\u2835";
+
+    // numbers
+    n = "\u283c";
+    n1 = "\u2801"; n2 = "\u2803"; n3 = "\u2809"; n4 = "\u2819"; n5 = "\u2811";
+    n6 = "\u280b"; n7 = "\u281b"; n8 = "\u2813"; n9 = "\u280a"; n0 = "\u281a";
+
+    // punctuation
+    pcom = "\u2802"; psem = "\u2806"; pcln = "\u2812";
+    pdot = "\u2832"; pxcl = "\u2816"; pqst = "\u2826";
+    past = "\u2814"; pdsh = "\u2804"; phyp = "\u2824";
+
+    // formatting
+    fcp = "\u2820"; fsp = "\u2800" | "\x20"; fnl = "\n" | "\n\r";
+
+    <*> *      { out.err(); return; }
+    <*> "\x00" { if (YYCURSOR != in.str + in.len + 1) out.err(); return; }
+
+    <*> l :=> l
+    <l> la { out.prt('a'); goto yyc_l; }
+    <l> lb { out.prt('b'); goto yyc_l; }
+    <l> lc { out.prt('c'); goto yyc_l; }
+    <l> ld { out.prt('d'); goto yyc_l; }
+    <l> le { out.prt('e'); goto yyc_l; }
+    <l> lf { out.prt('f'); goto yyc_l; }
+    <l> lg { out.prt('g'); goto yyc_l; }
+    <l> lh { out.prt('h'); goto yyc_l; }
+    <l> li { out.prt('i'); goto yyc_l; }
+    <l> lj { out.prt('j'); goto yyc_l; }
+    <l> lk { out.prt('k'); goto yyc_l; }
+    <l> ll { out.prt('l'); goto yyc_l; }
+    <l> lm { out.prt('m'); goto yyc_l; }
+    <l> ln { out.prt('n'); goto yyc_l; }
+    <l> lo { out.prt('o'); goto yyc_l; }
+    <l> lp { out.prt('p'); goto yyc_l; }
+    <l> lq { out.prt('q'); goto yyc_l; }
+    <l> lr { out.prt('r'); goto yyc_l; }
+    <l> ls { out.prt('s'); goto yyc_l; }
+    <l> lt { out.prt('t'); goto yyc_l; }
+    <l> lu { out.prt('u'); goto yyc_l; }
+    <l> lv { out.prt('v'); goto yyc_l; }
+    <l> lw { out.prt('w'); goto yyc_l; }
+    <l> lx { out.prt('x'); goto yyc_l; }
+    <l> ly { out.prt('y'); goto yyc_l; }
+    <l> lz { out.prt('z'); goto yyc_l; }
+
+    <*> n :=> n
+    <n> n1 { out.prt('1'); goto yyc_n; }
+    <n> n2 { out.prt('2'); goto yyc_n; }
+    <n> n3 { out.prt('3'); goto yyc_n; }
+    <n> n4 { out.prt('4'); goto yyc_n; }
+    <n> n5 { out.prt('5'); goto yyc_n; }
+    <n> n6 { out.prt('6'); goto yyc_n; }
+    <n> n7 { out.prt('7'); goto yyc_n; }
+    <n> n8 { out.prt('8'); goto yyc_n; }
+    <n> n9 { out.prt('9'); goto yyc_n; }
+    <n> n0 { out.prt('0'); goto yyc_n; }
+
+    <*> pcom { out.prt(','); goto yyc_l; }
+    <*> psem { out.prt(';'); goto yyc_l; }
+    <*> pcln { out.prt(':'); goto yyc_l; }
+    <*> pdot { out.prt('.'); goto yyc_l; }
+    <*> pxcl { out.prt('!'); goto yyc_l; }
+    <*> pqst { out.prt('?'); goto yyc_l; }
+    <*> past { out.prt('*'); goto yyc_l; }
+    <*> pdsh { out.prt('\''); goto yyc_l; }
+    <*> phyp { out.prt('-'); goto yyc_l; }
+
+    <*> fcp { out.caps = true; goto yyc_l; }
+    <*> fsp { out.prt(' '); goto yyc_l; }
+    <*> fnl { out.prt('\n'); goto yyc_l; }
+*/
+
+/*!types:re2c*/
+
+static void lex_utf8(const iutf8_t & in)
+{
+    const unsigned char *YYCURSOR = in.str;
+    const unsigned char *YYMARKER;
+    int c = yycl;
+    out_t out;
+    /*!use:re2c
+        re2c:define:YYCTYPE = "unsigned char";
+        re2c:define:YYGETCONDITION = "c";
+        re2c:define:YYGETCONDITION:naked = 1;
+        re2c:define:YYSETCONDITION = "c = @@;";
+        re2c:define:YYSETCONDITION:naked = 1;
+    */
+}
+
+static void lex_utf16(const iutf16_t & in)
+{
+    const unsigned short *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    /*!use:re2c
+        re2c:define:YYCTYPE = "unsigned int";
+        re2c:define:YYGETCONDITION = "c";
+        re2c:define:YYGETCONDITION:naked = 1;
+        re2c:define:YYSETCONDITION = "c = @@;";
+        re2c:define:YYSETCONDITION:naked = 1;
+        re2c:flags:8 = 0;
+        re2c:flags:x = 1;
+    */
+}
+
+static void lex_utf32(const iutf32_t & in)
+{
+    const unsigned int *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    /*!use:re2c
+        re2c:define:YYCTYPE = "unsigned int";
+        re2c:define:YYGETCONDITION = "c";
+        re2c:define:YYGETCONDITION:naked = 1;
+        re2c:define:YYSETCONDITION = "c = @@;";
+        re2c:define:YYSETCONDITION:naked = 1;
+        re2c:flags:x = 0;
+        re2c:flags:u = 1;
+    */
+}
+
+static void lex_ucs2(const iucs2_t & in)
+{
+    const unsigned short *YYCURSOR = in.str;
+    int c = yycl;
+    out_t out;
+    /*!use:re2c
+        re2c:define:YYCTYPE = "unsigned int";
+        re2c:define:YYGETCONDITION = "c";
+        re2c:define:YYGETCONDITION:naked = 1;
+        re2c:define:YYSETCONDITION = "c = @@;";
+        re2c:define:YYSETCONDITION:naked = 1;
+        re2c:flags:u = 0;
+        re2c:flags:w = 1;
+    */
+}
+
+int main()
+{
+    FILE *f;
+
+    f = fopen("06_braille.utf8.txt", "rb");
+    if (f) {
+        printf("utf8:\n");
+        iutf8_t in(f);
+        lex_utf8(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.utf16.txt", "rb");
+    if (f) {
+        printf("utf16:\n");
+        iutf16_t in(f);
+        lex_utf16(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.utf32.txt", "rb");
+    if (f) {
+        printf("utf32:\n");
+        iutf32_t in(f);
+        lex_utf32(in);
+        fclose(f);
+    }
+
+    f = fopen("06_braille.ucs2.txt", "rb");
+    if (f) {
+        printf("ucs2:\n");
+        iucs2_t in(f);
+        lex_ucs2(in);
+        fclose(f);
+    }
+
+    return 0;
+}
diff --git a/re2c/test/examples/07_cxx98.i--tags.c b/re2c/test/examples/07_cxx98.i--tags.c
new file mode 100644 (file)
index 0000000..c5f088c
--- /dev/null
@@ -0,0 +1,8332 @@
+/* Generated by re2c */
+#include <float.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+
+#define YYMAXFILL 17
+
+static const size_t SIZE = 64 * 1024;
+
+struct input_t {
+    unsigned char buf[SIZE + YYMAXFILL];
+    unsigned char *lim;
+    unsigned char *cur;
+    unsigned char *mar;
+    unsigned char *tok;
+    bool eof;
+
+    FILE *const file;
+
+    input_t(FILE *f)
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        , eof(false)
+        , file(f)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, file);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned long d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+static bool lex_oct(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0, ++s; s < e; ++s) {
+        if (!adddgt<8>(u, *s - 0x30u)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+static bool lex_dec(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0; s < e; ++s) {
+        if (!adddgt<10>(u, *s - 0x30u)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+static bool lex_hex(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0, s += 2; s < e;) {
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':       goto yy4;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy6;
+       default:        goto yy2;
+       }
+yy2:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 0x30u))      return false; continue; }
+yy4:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 0x41u + 10)) return false; continue; }
+yy6:
+       ++s;
+       { if (!adddgt<16>(u, s[-1] - 0x61u + 10)) return false; continue; }
+}
+
+    }
+    return true;
+}
+
+static bool lex_str(input_t &in, unsigned char q)
+{
+    printf("%c", q);
+    for (unsigned long u = q;; printf("\\x%lx", u)) {
+        in.tok = in.cur;
+        
+{
+       unsigned char yych;
+       if ((in.lim - in.cur) < 10) if (!in.fill(10)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\n':      goto yy12;
+       case '\\':      goto yy14;
+       default:        goto yy10;
+       }
+yy10:
+       ++in.cur;
+       { u = in.tok[0]; if (u == q) break; continue; }
+yy12:
+       ++in.cur;
+yy13:
+       { return false; }
+yy14:
+       yych = *(in.mar = ++in.cur);
+       switch (yych) {
+       case '"':       goto yy15;
+       case '\'':      goto yy17;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy19;
+       case '?':       goto yy21;
+       case 'U':       goto yy23;
+       case '\\':      goto yy25;
+       case 'a':       goto yy27;
+       case 'b':       goto yy29;
+       case 'f':       goto yy31;
+       case 'n':       goto yy33;
+       case 'r':       goto yy35;
+       case 't':       goto yy37;
+       case 'u':       goto yy39;
+       case 'v':       goto yy40;
+       case 'x':       goto yy42;
+       default:        goto yy13;
+       }
+yy15:
+       ++in.cur;
+       { u = '"';  continue; }
+yy17:
+       ++in.cur;
+       { u = '\''; continue; }
+yy19:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy43;
+       default:        goto yy20;
+       }
+yy20:
+       { lex_oct(in.tok, in.cur, u); continue; }
+yy21:
+       ++in.cur;
+       { u = '?';  continue; }
+yy23:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy44;
+       default:        goto yy24;
+       }
+yy24:
+       in.cur = in.mar;
+       goto yy13;
+yy25:
+       ++in.cur;
+       { u = '\\'; continue; }
+yy27:
+       ++in.cur;
+       { u = '\a'; continue; }
+yy29:
+       ++in.cur;
+       { u = '\b'; continue; }
+yy31:
+       ++in.cur;
+       { u = '\f'; continue; }
+yy33:
+       ++in.cur;
+       { u = '\n'; continue; }
+yy35:
+       ++in.cur;
+       { u = '\r'; continue; }
+yy37:
+       ++in.cur;
+       { u = '\t'; continue; }
+yy39:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy45;
+       default:        goto yy24;
+       }
+yy40:
+       ++in.cur;
+       { u = '\v'; continue; }
+yy42:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy46;
+       default:        goto yy24;
+       }
+yy43:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy49;
+       default:        goto yy20;
+       }
+yy44:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy50;
+       default:        goto yy24;
+       }
+yy45:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy51;
+       default:        goto yy24;
+       }
+yy46:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy46;
+       default:        goto yy48;
+       }
+yy48:
+       { if (!lex_hex(in.tok, in.cur, u)) return false; continue; }
+yy49:
+       ++in.cur;
+       goto yy20;
+yy50:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy52;
+       default:        goto yy24;
+       }
+yy51:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy53;
+       default:        goto yy24;
+       }
+yy52:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy54;
+       default:        goto yy24;
+       }
+yy53:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy55;
+       default:        goto yy24;
+       }
+yy54:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy57;
+       default:        goto yy24;
+       }
+yy55:
+       ++in.cur;
+       { lex_hex(in.tok, in.cur, u); continue; }
+yy57:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy58;
+       default:        goto yy24;
+       }
+yy58:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy59;
+       default:        goto yy24;
+       }
+yy59:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy60;
+       default:        goto yy24;
+       }
+yy60:
+       ++in.cur;
+       { lex_hex(in.tok, in.cur, u); continue; }
+}
+
+    }
+    printf("%c", q);
+    return true;
+}
+
+static bool lex_flt(const unsigned char *s)
+{
+    double d = 0;
+    double x = 1;
+    int e = 0;
+    
+mant_int:
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case '.':       goto yy66;
+       case 'E':
+       case 'e':       goto yy68;
+       default:        goto yy64;
+       }
+yy64:
+       ++s;
+       { d = (d * 10) + (s[-1] - '0'); goto mant_int; }
+yy66:
+       ++s;
+       { goto mant_frac; }
+yy68:
+       ++s;
+       { goto exp_sign; }
+}
+
+mant_frac:
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy73;
+       case 'E':
+       case 'e':       goto yy75;
+       default:        goto yy72;
+       }
+yy72:
+       { goto sfx; }
+yy73:
+       ++s;
+       { d += (x /= 10) * (s[-1] - '0'); goto mant_frac; }
+yy75:
+       ++s;
+       { goto exp_sign; }
+}
+
+exp_sign:
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case '+':       goto yy80;
+       case '-':       goto yy81;
+       default:        goto yy79;
+       }
+yy79:
+       { x = 1e+1; goto exp; }
+yy80:
+       ++s;
+       goto yy79;
+yy81:
+       ++s;
+       { x = 1e-1; goto exp; }
+}
+
+exp:
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy86;
+       default:        goto yy85;
+       }
+yy85:
+       { for (; e > 0; --e) d *= x;    goto sfx; }
+yy86:
+       ++s;
+       { e = (e * 10) + (s[-1] - '0'); goto exp; }
+}
+
+sfx:
+    
+{
+       unsigned char yych;
+       yych = *s;
+       switch (yych) {
+       case 'F':
+       case 'f':       goto yy92;
+       default:        goto yy90;
+       }
+yy90:
+       ++s;
+       { goto end; }
+yy92:
+       ++s;
+       { if (d > FLT_MAX) return false; goto end; }
+}
+
+end:
+    printf("%g", d);
+    return true;
+}
+
+static bool lex(input_t &in)
+{
+    unsigned long u;
+    for (;;) {
+        in.tok = in.cur;
+        
+{
+       unsigned char yych;
+       unsigned int yyaccept = 0;
+       if ((in.lim - in.cur) < 17) if (!in.fill(17)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case 0x00:      goto yy96;
+       case '\t':
+       case '\n':
+       case '\v':
+       case '\r':
+       case ' ':       goto yy100;
+       case '!':       goto yy103;
+       case '"':       goto yy105;
+       case '#':       goto yy107;
+       case '%':       goto yy109;
+       case '&':       goto yy111;
+       case '\'':      goto yy113;
+       case '(':       goto yy114;
+       case ')':       goto yy116;
+       case '*':       goto yy118;
+       case '+':       goto yy120;
+       case ',':       goto yy122;
+       case '-':       goto yy124;
+       case '.':       goto yy126;
+       case '/':       goto yy128;
+       case '0':       goto yy130;
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy132;
+       case ':':       goto yy135;
+       case ';':       goto yy137;
+       case '<':       goto yy139;
+       case '=':       goto yy141;
+       case '>':       goto yy143;
+       case '?':       goto yy145;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'h':
+       case 'j':
+       case 'k':
+       case 'q':
+       case 'y':
+       case 'z':       goto yy147;
+       case 'L':       goto yy150;
+       case '[':       goto yy151;
+       case ']':       goto yy153;
+       case '^':       goto yy155;
+       case 'a':       goto yy157;
+       case 'b':       goto yy158;
+       case 'c':       goto yy159;
+       case 'd':       goto yy160;
+       case 'e':       goto yy161;
+       case 'f':       goto yy162;
+       case 'g':       goto yy163;
+       case 'i':       goto yy164;
+       case 'l':       goto yy165;
+       case 'm':       goto yy166;
+       case 'n':       goto yy167;
+       case 'o':       goto yy168;
+       case 'p':       goto yy169;
+       case 'r':       goto yy170;
+       case 's':       goto yy171;
+       case 't':       goto yy172;
+       case 'u':       goto yy173;
+       case 'v':       goto yy174;
+       case 'w':       goto yy175;
+       case 'x':       goto yy176;
+       case '{':       goto yy177;
+       case '|':       goto yy179;
+       case '}':       goto yy181;
+       case '~':       goto yy183;
+       default:        goto yy98;
+       }
+yy96:
+       ++in.cur;
+       { return in.lim - in.tok == YYMAXFILL; }
+yy98:
+       ++in.cur;
+       { return false; }
+yy100:
+       yyaccept = 0;
+       in.mar = ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\t':
+       case '\n':
+       case '\v':
+       case '\r':
+       case ' ':       goto yy100;
+       case '/':       goto yy185;
+       default:        goto yy102;
+       }
+yy102:
+       { printf(" "); continue; }
+yy103:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy187;
+       default:        goto yy104;
+       }
+yy104:
+       { printf("!");      continue; }
+yy105:
+       ++in.cur;
+yy106:
+       { if (!lex_str(in, in.cur[-1])) return false; continue; }
+yy107:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\n':      goto yy189;
+       case '\\':      goto yy191;
+       default:        goto yy107;
+       }
+yy109:
+       yych = *++in.cur;
+       switch (yych) {
+       case ':':       goto yy107;
+       case '=':       goto yy193;
+       case '>':       goto yy181;
+       default:        goto yy110;
+       }
+yy110:
+       { printf("%%");     continue; }
+yy111:
+       yych = *++in.cur;
+       switch (yych) {
+       case '&':       goto yy195;
+       case '=':       goto yy197;
+       default:        goto yy112;
+       }
+yy112:
+       { printf("&");      continue; }
+yy113:
+       yych = *++in.cur;
+       switch (yych) {
+       case '\'':      goto yy199;
+       default:        goto yy106;
+       }
+yy114:
+       ++in.cur;
+       { printf("(");      continue; }
+yy116:
+       ++in.cur;
+       { printf(")");      continue; }
+yy118:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy201;
+       default:        goto yy119;
+       }
+yy119:
+       { printf("*");      continue; }
+yy120:
+       yych = *++in.cur;
+       switch (yych) {
+       case '+':       goto yy203;
+       case '=':       goto yy205;
+       default:        goto yy121;
+       }
+yy121:
+       { printf("+");      continue; }
+yy122:
+       ++in.cur;
+       { printf(",");      continue; }
+yy124:
+       yych = *++in.cur;
+       switch (yych) {
+       case '-':       goto yy207;
+       case '=':       goto yy209;
+       case '>':       goto yy211;
+       default:        goto yy125;
+       }
+yy125:
+       { printf("-");      continue; }
+yy126:
+       yyaccept = 1;
+       yych = *(in.mar = ++in.cur);
+       switch (yych) {
+       case '*':       goto yy213;
+       case '.':       goto yy215;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy216;
+       default:        goto yy127;
+       }
+yy127:
+       { printf(".");      continue; }
+yy128:
+       yych = *++in.cur;
+       switch (yych) {
+       case '*':       goto yy219;
+       case '/':       goto yy221;
+       case '=':       goto yy223;
+       default:        goto yy129;
+       }
+yy129:
+       { printf("/");      continue; }
+yy130:
+       yyaccept = 2;
+       yych = *(in.mar = ++in.cur);
+       switch (yych) {
+       case 'X':
+       case 'x':       goto yy230;
+       default:        goto yy226;
+       }
+yy131:
+       { if (!lex_oct(in.tok, in.cur, u)) return false; goto sfx; }
+yy132:
+       yyaccept = 3;
+       in.mar = ++in.cur;
+       if ((in.lim - in.cur) < 3) if (!in.fill(3)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '.':       goto yy216;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy132;
+       case 'E':
+       case 'e':       goto yy229;
+       default:        goto yy134;
+       }
+yy134:
+       { if (!lex_dec(in.tok, in.cur, u)) return false; goto sfx; }
+yy135:
+       yych = *++in.cur;
+       switch (yych) {
+       case ':':       goto yy231;
+       case '>':       goto yy153;
+       default:        goto yy136;
+       }
+yy136:
+       { printf(":");      continue; }
+yy137:
+       ++in.cur;
+       { printf(";");      continue; }
+yy139:
+       yych = *++in.cur;
+       switch (yych) {
+       case '%':       goto yy177;
+       case ':':       goto yy151;
+       case '<':       goto yy233;
+       case '=':       goto yy235;
+       default:        goto yy140;
+       }
+yy140:
+       { printf("<");      continue; }
+yy141:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy237;
+       default:        goto yy142;
+       }
+yy142:
+       { printf("=");      continue; }
+yy143:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy239;
+       case '>':       goto yy241;
+       default:        goto yy144;
+       }
+yy144:
+       { printf(">");      continue; }
+yy145:
+       ++in.cur;
+       { printf("?");      continue; }
+yy147:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+yy148:
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy149;
+       }
+yy149:
+       { printf("%.*s", in.cur - in.tok, in.tok); continue; }
+yy150:
+       yych = *++in.cur;
+       switch (yych) {
+       case '"':       goto yy105;
+       case '\'':      goto yy113;
+       default:        goto yy148;
+       }
+yy151:
+       ++in.cur;
+       { printf("[");      continue; }
+yy153:
+       ++in.cur;
+       { printf("]");      continue; }
+yy155:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy243;
+       default:        goto yy156;
+       }
+yy156:
+       { printf("^");      continue; }
+yy157:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy245;
+       case 's':       goto yy246;
+       case 'u':       goto yy247;
+       default:        goto yy148;
+       }
+yy158:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy248;
+       case 'o':       goto yy249;
+       case 'r':       goto yy250;
+       default:        goto yy148;
+       }
+yy159:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy251;
+       case 'h':       goto yy252;
+       case 'l':       goto yy253;
+       case 'o':       goto yy254;
+       default:        goto yy148;
+       }
+yy160:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy255;
+       case 'o':       goto yy256;
+       case 'y':       goto yy258;
+       default:        goto yy148;
+       }
+yy161:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy259;
+       case 'n':       goto yy260;
+       case 'x':       goto yy261;
+       default:        goto yy148;
+       }
+yy162:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy262;
+       case 'l':       goto yy263;
+       case 'o':       goto yy264;
+       case 'r':       goto yy265;
+       default:        goto yy148;
+       }
+yy163:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy266;
+       default:        goto yy148;
+       }
+yy164:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'f':       goto yy267;
+       case 'n':       goto yy269;
+       default:        goto yy148;
+       }
+yy165:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy270;
+       default:        goto yy148;
+       }
+yy166:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy271;
+       default:        goto yy148;
+       }
+yy167:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy272;
+       case 'e':       goto yy273;
+       case 'o':       goto yy274;
+       default:        goto yy148;
+       }
+yy168:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy275;
+       case 'r':       goto yy276;
+       default:        goto yy148;
+       }
+yy169:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy278;
+       case 'u':       goto yy279;
+       default:        goto yy148;
+       }
+yy170:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy280;
+       default:        goto yy148;
+       }
+yy171:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'h':       goto yy281;
+       case 'i':       goto yy282;
+       case 't':       goto yy283;
+       case 'w':       goto yy284;
+       default:        goto yy148;
+       }
+yy172:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy285;
+       case 'h':       goto yy286;
+       case 'r':       goto yy287;
+       case 'y':       goto yy288;
+       default:        goto yy148;
+       }
+yy173:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy289;
+       case 's':       goto yy290;
+       default:        goto yy148;
+       }
+yy174:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy291;
+       case 'o':       goto yy292;
+       default:        goto yy148;
+       }
+yy175:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy293;
+       case 'h':       goto yy294;
+       default:        goto yy148;
+       }
+yy176:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy295;
+       default:        goto yy148;
+       }
+yy177:
+       ++in.cur;
+       { printf("{");      continue; }
+yy179:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy296;
+       case '|':       goto yy298;
+       default:        goto yy180;
+       }
+yy180:
+       { printf("|");      continue; }
+yy181:
+       ++in.cur;
+       { printf("}");      continue; }
+yy183:
+       ++in.cur;
+yy184:
+       { printf("~");      continue; }
+yy185:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '*':       goto yy219;
+       case '/':       goto yy221;
+       default:        goto yy186;
+       }
+yy186:
+       in.cur = in.mar;
+       switch (yyaccept) {
+       case 0:         goto yy102;
+       case 1:         goto yy127;
+       case 2:         goto yy131;
+       case 3:         goto yy134;
+       default:        goto yy218;
+       }
+yy187:
+       ++in.cur;
+yy188:
+       { printf("!=");     continue; }
+yy189:
+       ++in.cur;
+       { continue; }
+yy191:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\\':      goto yy191;
+       default:        goto yy107;
+       }
+yy193:
+       ++in.cur;
+       { printf("%%=");    continue; }
+yy195:
+       ++in.cur;
+yy196:
+       { printf("&&");     continue; }
+yy197:
+       ++in.cur;
+yy198:
+       { printf("&=");     continue; }
+yy199:
+       ++in.cur;
+       { return false; }
+yy201:
+       ++in.cur;
+       { printf("*=");     continue; }
+yy203:
+       ++in.cur;
+       { printf("++");     continue; }
+yy205:
+       ++in.cur;
+       { printf("+=");     continue; }
+yy207:
+       ++in.cur;
+       { printf("--");     continue; }
+yy209:
+       ++in.cur;
+       { printf("-=");     continue; }
+yy211:
+       yych = *++in.cur;
+       switch (yych) {
+       case '*':       goto yy299;
+       default:        goto yy212;
+       }
+yy212:
+       { printf("->");     continue; }
+yy213:
+       ++in.cur;
+       { printf(".");      continue; }
+yy215:
+       yych = *++in.cur;
+       switch (yych) {
+       case '.':       goto yy301;
+       default:        goto yy186;
+       }
+yy216:
+       yyaccept = 4;
+       in.mar = ++in.cur;
+       if ((in.lim - in.cur) < 3) if (!in.fill(3)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy216;
+       case 'E':
+       case 'e':       goto yy229;
+       case 'F':
+       case 'L':
+       case 'f':
+       case 'l':       goto yy303;
+       default:        goto yy218;
+       }
+yy218:
+       { if (lex_flt(in.tok)) continue; return false; }
+yy219:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '*':       goto yy304;
+       default:        goto yy219;
+       }
+yy221:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '\n':      goto yy100;
+       default:        goto yy221;
+       }
+yy223:
+       ++in.cur;
+       { printf("/=");     continue; }
+yy225:
+       yyaccept = 2;
+       in.mar = ++in.cur;
+       if ((in.lim - in.cur) < 3) if (!in.fill(3)) return false;
+       yych = *in.cur;
+yy226:
+       switch (yych) {
+       case '.':       goto yy216;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':       goto yy225;
+       case '8':
+       case '9':       goto yy227;
+       case 'E':
+       case 'e':       goto yy229;
+       default:        goto yy131;
+       }
+yy227:
+       ++in.cur;
+       if ((in.lim - in.cur) < 3) if (!in.fill(3)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '.':       goto yy216;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy227;
+       case 'E':
+       case 'e':       goto yy229;
+       default:        goto yy186;
+       }
+yy229:
+       yych = *++in.cur;
+       switch (yych) {
+       case '+':
+       case '-':       goto yy305;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy306;
+       default:        goto yy186;
+       }
+yy230:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy308;
+       default:        goto yy186;
+       }
+yy231:
+       ++in.cur;
+       { printf("::");     continue; }
+yy233:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy311;
+       default:        goto yy234;
+       }
+yy234:
+       { printf("<<");     continue; }
+yy235:
+       ++in.cur;
+       { printf("<=");     continue; }
+yy237:
+       ++in.cur;
+       { printf("==");     continue; }
+yy239:
+       ++in.cur;
+       { printf(">=");     continue; }
+yy241:
+       yych = *++in.cur;
+       switch (yych) {
+       case '=':       goto yy313;
+       default:        goto yy242;
+       }
+yy242:
+       { printf(">>");     continue; }
+yy243:
+       ++in.cur;
+yy244:
+       { printf("^=");     continue; }
+yy245:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy315;
+       default:        goto yy148;
+       }
+yy246:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy316;
+       default:        goto yy148;
+       }
+yy247:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy318;
+       default:        goto yy148;
+       }
+yy248:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy319;
+       default:        goto yy148;
+       }
+yy249:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy320;
+       default:        goto yy148;
+       }
+yy250:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy321;
+       default:        goto yy148;
+       }
+yy251:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy322;
+       case 't':       goto yy323;
+       default:        goto yy148;
+       }
+yy252:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy324;
+       default:        goto yy148;
+       }
+yy253:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy325;
+       default:        goto yy148;
+       }
+yy254:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy326;
+       case 'n':       goto yy327;
+       default:        goto yy148;
+       }
+yy255:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'f':       goto yy328;
+       case 'l':       goto yy329;
+       default:        goto yy148;
+       }
+yy256:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case 'u':       goto yy330;
+       default:        goto yy257;
+       }
+yy257:
+       { printf("DO");               continue; }
+yy258:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy331;
+       default:        goto yy148;
+       }
+yy259:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy332;
+       default:        goto yy148;
+       }
+yy260:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy333;
+       default:        goto yy148;
+       }
+yy261:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy334;
+       case 't':       goto yy335;
+       default:        goto yy148;
+       }
+yy262:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy336;
+       default:        goto yy148;
+       }
+yy263:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy337;
+       default:        goto yy148;
+       }
+yy264:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy338;
+       default:        goto yy148;
+       }
+yy265:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy340;
+       default:        goto yy148;
+       }
+yy266:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy341;
+       default:        goto yy148;
+       }
+yy267:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy268;
+       }
+yy268:
+       { printf("IF");               continue; }
+yy269:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy342;
+       case 't':       goto yy343;
+       default:        goto yy148;
+       }
+yy270:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy345;
+       default:        goto yy148;
+       }
+yy271:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy346;
+       default:        goto yy148;
+       }
+yy272:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy347;
+       default:        goto yy148;
+       }
+yy273:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'w':       goto yy348;
+       default:        goto yy148;
+       }
+yy274:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy350;
+       default:        goto yy148;
+       }
+yy275:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy351;
+       default:        goto yy148;
+       }
+yy276:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy352;
+       default:        goto yy277;
+       }
+yy277:
+       { printf("||");     continue; }
+yy278:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy353;
+       case 'o':       goto yy354;
+       default:        goto yy148;
+       }
+yy279:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'b':       goto yy355;
+       default:        goto yy148;
+       }
+yy280:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'g':       goto yy356;
+       case 'i':       goto yy357;
+       case 't':       goto yy358;
+       default:        goto yy148;
+       }
+yy281:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy359;
+       default:        goto yy148;
+       }
+yy282:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'g':       goto yy360;
+       case 'z':       goto yy361;
+       default:        goto yy148;
+       }
+yy283:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy362;
+       case 'r':       goto yy363;
+       default:        goto yy148;
+       }
+yy284:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy364;
+       default:        goto yy148;
+       }
+yy285:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy365;
+       default:        goto yy148;
+       }
+yy286:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy366;
+       case 'r':       goto yy367;
+       default:        goto yy148;
+       }
+yy287:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy368;
+       case 'y':       goto yy369;
+       default:        goto yy148;
+       }
+yy288:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy371;
+       default:        goto yy148;
+       }
+yy289:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy372;
+       case 's':       goto yy373;
+       default:        goto yy148;
+       }
+yy290:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy374;
+       default:        goto yy148;
+       }
+yy291:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy375;
+       default:        goto yy148;
+       }
+yy292:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy376;
+       case 'l':       goto yy377;
+       default:        goto yy148;
+       }
+yy293:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'h':       goto yy378;
+       default:        goto yy148;
+       }
+yy294:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy379;
+       default:        goto yy148;
+       }
+yy295:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy380;
+       default:        goto yy148;
+       }
+yy296:
+       ++in.cur;
+yy297:
+       { printf("|=");     continue; }
+yy298:
+       ++in.cur;
+       goto yy277;
+yy299:
+       ++in.cur;
+       { printf("->*");    continue; }
+yy301:
+       ++in.cur;
+       { printf("...");    continue; }
+yy303:
+       ++in.cur;
+       goto yy218;
+yy304:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '/':       goto yy100;
+       default:        goto yy219;
+       }
+yy305:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy306;
+       default:        goto yy186;
+       }
+yy306:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy306;
+       case 'F':
+       case 'L':
+       case 'f':
+       case 'l':       goto yy303;
+       default:        goto yy218;
+       }
+yy308:
+       ++in.cur;
+       if (in.lim <= in.cur) if (!in.fill(1)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy308;
+       default:        goto yy310;
+       }
+yy310:
+       { if (!lex_hex(in.tok, in.cur, u)) return false; goto sfx; }
+yy311:
+       ++in.cur;
+       { printf("<<=");    continue; }
+yy313:
+       ++in.cur;
+       { printf(">>=");    continue; }
+yy315:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy381;
+       default:        goto yy196;
+       }
+yy316:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy317;
+       }
+yy317:
+       { printf("ASM");              continue; }
+yy318:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy382;
+       default:        goto yy148;
+       }
+yy319:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy384;
+       case 'o':       goto yy385;
+       default:        goto yy148;
+       }
+yy320:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy386;
+       default:        goto yy148;
+       }
+yy321:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy388;
+       default:        goto yy148;
+       }
+yy322:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy389;
+       default:        goto yy148;
+       }
+yy323:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy391;
+       default:        goto yy148;
+       }
+yy324:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy392;
+       default:        goto yy148;
+       }
+yy325:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy394;
+       default:        goto yy148;
+       }
+yy326:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy395;
+       default:        goto yy148;
+       }
+yy327:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy396;
+       case 't':       goto yy397;
+       default:        goto yy148;
+       }
+yy328:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy398;
+       default:        goto yy148;
+       }
+yy329:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy399;
+       default:        goto yy148;
+       }
+yy330:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'b':       goto yy400;
+       default:        goto yy148;
+       }
+yy331:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy401;
+       default:        goto yy148;
+       }
+yy332:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy402;
+       default:        goto yy148;
+       }
+yy333:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy404;
+       default:        goto yy148;
+       }
+yy334:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy406;
+       case 'o':       goto yy407;
+       default:        goto yy148;
+       }
+yy335:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy408;
+       default:        goto yy148;
+       }
+yy336:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy409;
+       default:        goto yy148;
+       }
+yy337:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy410;
+       default:        goto yy148;
+       }
+yy338:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy339;
+       }
+yy339:
+       { printf("FOR");              continue; }
+yy340:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy411;
+       default:        goto yy148;
+       }
+yy341:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy412;
+       default:        goto yy148;
+       }
+yy342:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy414;
+       default:        goto yy148;
+       }
+yy343:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy344;
+       }
+yy344:
+       { printf("INT");              continue; }
+yy345:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'g':       goto yy415;
+       default:        goto yy148;
+       }
+yy346:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy417;
+       default:        goto yy148;
+       }
+yy347:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy418;
+       default:        goto yy148;
+       }
+yy348:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy349;
+       }
+yy349:
+       { printf("new");    continue; }
+yy350:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy419;
+       default:        goto yy104;
+       }
+yy351:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy420;
+       default:        goto yy148;
+       }
+yy352:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy421;
+       default:        goto yy148;
+       }
+yy353:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'v':       goto yy422;
+       default:        goto yy148;
+       }
+yy354:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy423;
+       default:        goto yy148;
+       }
+yy355:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy424;
+       default:        goto yy148;
+       }
+yy356:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy425;
+       default:        goto yy148;
+       }
+yy357:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy426;
+       default:        goto yy148;
+       }
+yy358:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy427;
+       default:        goto yy148;
+       }
+yy359:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy428;
+       default:        goto yy148;
+       }
+yy360:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy429;
+       default:        goto yy148;
+       }
+yy361:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy430;
+       default:        goto yy148;
+       }
+yy362:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy431;
+       default:        goto yy148;
+       }
+yy363:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy432;
+       default:        goto yy148;
+       }
+yy364:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy433;
+       default:        goto yy148;
+       }
+yy365:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy434;
+       default:        goto yy148;
+       }
+yy366:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy435;
+       default:        goto yy148;
+       }
+yy367:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy437;
+       default:        goto yy148;
+       }
+yy368:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy438;
+       default:        goto yy148;
+       }
+yy369:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy370;
+       }
+yy370:
+       { printf("TRY");              continue; }
+yy371:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy440;
+       default:        goto yy148;
+       }
+yy372:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy441;
+       default:        goto yy148;
+       }
+yy373:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy442;
+       default:        goto yy148;
+       }
+yy374:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy443;
+       default:        goto yy148;
+       }
+yy375:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy444;
+       default:        goto yy148;
+       }
+yy376:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy445;
+       default:        goto yy148;
+       }
+yy377:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy447;
+       default:        goto yy148;
+       }
+yy378:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy448;
+       default:        goto yy148;
+       }
+yy379:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy449;
+       default:        goto yy148;
+       }
+yy380:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy450;
+       default:        goto yy156;
+       }
+yy381:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy451;
+       default:        goto yy148;
+       }
+yy382:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy383;
+       }
+yy383:
+       { printf("AUTO");             continue; }
+yy384:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy452;
+       default:        goto yy148;
+       }
+yy385:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy453;
+       default:        goto yy148;
+       }
+yy386:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy387;
+       }
+yy387:
+       { printf("BOOL");             continue; }
+yy388:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'k':       goto yy454;
+       default:        goto yy148;
+       }
+yy389:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy390;
+       }
+yy390:
+       { printf("CASE");             continue; }
+yy391:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'h':       goto yy456;
+       default:        goto yy148;
+       }
+yy392:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy393;
+       }
+yy393:
+       { printf("CHAR");             continue; }
+yy394:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy458;
+       default:        goto yy148;
+       }
+yy395:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy460;
+       default:        goto yy148;
+       }
+yy396:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy461;
+       default:        goto yy148;
+       }
+yy397:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy463;
+       default:        goto yy148;
+       }
+yy398:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy464;
+       default:        goto yy148;
+       }
+yy399:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy465;
+       default:        goto yy148;
+       }
+yy400:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy466;
+       default:        goto yy148;
+       }
+yy401:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy467;
+       default:        goto yy148;
+       }
+yy402:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy403;
+       }
+yy403:
+       { printf("ELSE");             continue; }
+yy404:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy405;
+       }
+yy405:
+       { printf("ENUM");             continue; }
+yy406:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy468;
+       default:        goto yy148;
+       }
+yy407:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy469;
+       default:        goto yy148;
+       }
+yy408:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy470;
+       default:        goto yy148;
+       }
+yy409:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy471;
+       default:        goto yy148;
+       }
+yy410:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy473;
+       default:        goto yy148;
+       }
+yy411:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy475;
+       default:        goto yy148;
+       }
+yy412:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy413;
+       }
+yy413:
+       { printf("GOTO");             continue; }
+yy414:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy476;
+       default:        goto yy148;
+       }
+yy415:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy416;
+       }
+yy416:
+       { printf("LONG");             continue; }
+yy417:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'b':       goto yy477;
+       default:        goto yy148;
+       }
+yy418:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy478;
+       default:        goto yy148;
+       }
+yy419:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy479;
+       default:        goto yy148;
+       }
+yy420:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy480;
+       default:        goto yy148;
+       }
+yy421:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'q':       goto yy481;
+       default:        goto yy148;
+       }
+yy422:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy482;
+       default:        goto yy148;
+       }
+yy423:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy483;
+       default:        goto yy148;
+       }
+yy424:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy484;
+       default:        goto yy148;
+       }
+yy425:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy485;
+       default:        goto yy148;
+       }
+yy426:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy486;
+       default:        goto yy148;
+       }
+yy427:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy487;
+       default:        goto yy148;
+       }
+yy428:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy488;
+       default:        goto yy148;
+       }
+yy429:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy490;
+       default:        goto yy148;
+       }
+yy430:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy491;
+       default:        goto yy148;
+       }
+yy431:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy492;
+       default:        goto yy148;
+       }
+yy432:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy493;
+       default:        goto yy148;
+       }
+yy433:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy494;
+       default:        goto yy148;
+       }
+yy434:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy495;
+       default:        goto yy148;
+       }
+yy435:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy436;
+       }
+yy436:
+       { printf("THIS");             continue; }
+yy437:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'w':       goto yy496;
+       default:        goto yy148;
+       }
+yy438:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy439;
+       }
+yy439:
+       { printf("true");  continue; }
+yy440:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy498;
+       case 'i':       goto yy499;
+       case 'n':       goto yy500;
+       default:        goto yy148;
+       }
+yy441:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy501;
+       default:        goto yy148;
+       }
+yy442:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'g':       goto yy503;
+       default:        goto yy148;
+       }
+yy443:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'g':       goto yy504;
+       default:        goto yy148;
+       }
+yy444:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy506;
+       default:        goto yy148;
+       }
+yy445:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy446;
+       }
+yy446:
+       { printf("VOID");             continue; }
+yy447:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy507;
+       default:        goto yy148;
+       }
+yy448:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy508;
+       default:        goto yy148;
+       }
+yy449:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy509;
+       default:        goto yy148;
+       }
+yy450:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy511;
+       default:        goto yy148;
+       }
+yy451:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'q':       goto yy512;
+       default:        goto yy148;
+       }
+yy452:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy513;
+       default:        goto yy148;
+       }
+yy453:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy180;
+       }
+yy454:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy455;
+       }
+yy455:
+       { printf("BREAK");            continue; }
+yy456:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy457;
+       }
+yy457:
+       { printf("CATCH");            continue; }
+yy458:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy459;
+       }
+yy459:
+       { printf("CLASS");            continue; }
+yy460:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy184;
+       }
+yy461:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy514;
+       default:        goto yy462;
+       }
+yy462:
+       { printf("CONST");            continue; }
+yy463:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy515;
+       default:        goto yy148;
+       }
+yy464:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy516;
+       default:        goto yy148;
+       }
+yy465:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy517;
+       default:        goto yy148;
+       }
+yy466:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy519;
+       default:        goto yy148;
+       }
+yy467:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy521;
+       default:        goto yy148;
+       }
+yy468:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy522;
+       default:        goto yy148;
+       }
+yy469:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy523;
+       default:        goto yy148;
+       }
+yy470:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy525;
+       default:        goto yy148;
+       }
+yy471:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy472;
+       }
+yy472:
+       { printf("false"); continue; }
+yy473:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy474;
+       }
+yy474:
+       { printf("FLOAT");            continue; }
+yy475:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy527;
+       default:        goto yy148;
+       }
+yy476:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy529;
+       default:        goto yy148;
+       }
+yy477:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy531;
+       default:        goto yy148;
+       }
+yy478:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy532;
+       default:        goto yy148;
+       }
+yy479:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'q':       goto yy533;
+       default:        goto yy148;
+       }
+yy480:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy534;
+       default:        goto yy148;
+       }
+yy481:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy297;
+       }
+yy482:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy535;
+       default:        goto yy148;
+       }
+yy483:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy536;
+       default:        goto yy148;
+       }
+yy484:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy537;
+       default:        goto yy148;
+       }
+yy485:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy539;
+       default:        goto yy148;
+       }
+yy486:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy540;
+       default:        goto yy148;
+       }
+yy487:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy541;
+       default:        goto yy148;
+       }
+yy488:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy489;
+       }
+yy489:
+       { printf("SHORT");            continue; }
+yy490:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy543;
+       default:        goto yy148;
+       }
+yy491:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'f':       goto yy545;
+       default:        goto yy148;
+       }
+yy492:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy547;
+       default:        goto yy148;
+       }
+yy493:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy549;
+       default:        goto yy148;
+       }
+yy494:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'h':       goto yy551;
+       default:        goto yy148;
+       }
+yy495:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy553;
+       default:        goto yy148;
+       }
+yy496:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy497;
+       }
+yy497:
+       { printf("THROW");            continue; }
+yy498:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy554;
+       default:        goto yy148;
+       }
+yy499:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy555;
+       default:        goto yy148;
+       }
+yy500:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy557;
+       default:        goto yy148;
+       }
+yy501:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy502;
+       }
+yy502:
+       { printf("UNION");            continue; }
+yy503:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'n':       goto yy558;
+       default:        goto yy148;
+       }
+yy504:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy505;
+       }
+yy505:
+       { printf("USING");            continue; }
+yy506:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy559;
+       default:        goto yy148;
+       }
+yy507:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy560;
+       default:        goto yy148;
+       }
+yy508:
+       yych = *++in.cur;
+       switch (yych) {
+       case '_':       goto yy561;
+       default:        goto yy148;
+       }
+yy509:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy510;
+       }
+yy510:
+       { printf("WHILE");            continue; }
+yy511:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'q':       goto yy562;
+       default:        goto yy148;
+       }
+yy512:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy198;
+       }
+yy513:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy112;
+       }
+yy514:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy563;
+       default:        goto yy148;
+       }
+yy515:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'u':       goto yy564;
+       default:        goto yy148;
+       }
+yy516:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy565;
+       default:        goto yy148;
+       }
+yy517:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy518;
+       }
+yy518:
+       { printf("delete"); continue; }
+yy519:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy520;
+       }
+yy520:
+       { printf("DOUBLE");           continue; }
+yy521:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy567;
+       default:        goto yy148;
+       }
+yy522:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'i':       goto yy568;
+       default:        goto yy148;
+       }
+yy523:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy524;
+       }
+yy524:
+       { printf("EXPORT");           continue; }
+yy525:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy526;
+       }
+yy526:
+       { printf("EXTERN");           continue; }
+yy527:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy528;
+       }
+yy528:
+       { printf("FRIEND");           continue; }
+yy529:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy530;
+       }
+yy530:
+       { printf("INLINE");           continue; }
+yy531:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy569;
+       default:        goto yy148;
+       }
+yy532:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy571;
+       default:        goto yy148;
+       }
+yy533:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy188;
+       }
+yy534:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'o':       goto yy572;
+       default:        goto yy148;
+       }
+yy535:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy573;
+       default:        goto yy148;
+       }
+yy536:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy575;
+       default:        goto yy148;
+       }
+yy537:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy538;
+       }
+yy538:
+       { printf("PUBLIC");           continue; }
+yy539:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy576;
+       default:        goto yy148;
+       }
+yy540:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy577;
+       default:        goto yy148;
+       }
+yy541:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy542;
+       }
+yy542:
+       { printf("RETURN");           continue; }
+yy543:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy544;
+       }
+yy544:
+       { printf("SIGNED");           continue; }
+yy545:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy546;
+       }
+yy546:
+       { printf("SIZEOF");           continue; }
+yy547:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       case '_':       goto yy578;
+       default:        goto yy548;
+       }
+yy548:
+       { printf("STATIC");           continue; }
+yy549:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy550;
+       }
+yy550:
+       { printf("STRUCT");           continue; }
+yy551:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy552;
+       }
+yy552:
+       { printf("SWITCH");           continue; }
+yy553:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy579;
+       default:        goto yy148;
+       }
+yy554:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'f':       goto yy580;
+       default:        goto yy148;
+       }
+yy555:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy556;
+       }
+yy556:
+       { printf("TYPEID");           continue; }
+yy557:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'm':       goto yy582;
+       default:        goto yy148;
+       }
+yy558:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy583;
+       default:        goto yy148;
+       }
+yy559:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy584;
+       default:        goto yy148;
+       }
+yy560:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'l':       goto yy586;
+       default:        goto yy148;
+       }
+yy561:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy587;
+       default:        goto yy148;
+       }
+yy562:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy244;
+       }
+yy563:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy589;
+       default:        goto yy148;
+       }
+yy564:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy590;
+       default:        goto yy148;
+       }
+yy565:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy566;
+       }
+yy566:
+       { printf("DEFAULT");          continue; }
+yy567:
+       yych = *++in.cur;
+       switch (yych) {
+       case '_':       goto yy592;
+       default:        goto yy148;
+       }
+yy568:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy593;
+       default:        goto yy148;
+       }
+yy569:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy570;
+       }
+yy570:
+       { printf("MUTABLE");          continue; }
+yy571:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy595;
+       default:        goto yy148;
+       }
+yy572:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy596;
+       default:        goto yy148;
+       }
+yy573:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy574;
+       }
+yy574:
+       { printf("PRIVATE");          continue; }
+yy575:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy598;
+       default:        goto yy148;
+       }
+yy576:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy599;
+       default:        goto yy148;
+       }
+yy577:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'p':       goto yy601;
+       default:        goto yy148;
+       }
+yy578:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy602;
+       default:        goto yy148;
+       }
+yy579:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy603;
+       default:        goto yy148;
+       }
+yy580:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy581;
+       }
+yy581:
+       { printf("TYPEDEF");          continue; }
+yy582:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy605;
+       default:        goto yy148;
+       }
+yy583:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy607;
+       default:        goto yy148;
+       }
+yy584:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy585;
+       }
+yy585:
+       { printf("VIRTUAL");          continue; }
+yy586:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy609;
+       default:        goto yy148;
+       }
+yy587:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy588;
+       }
+yy588:
+       { printf("WCHAR_T");          continue; }
+yy589:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy611;
+       default:        goto yy148;
+       }
+yy590:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy591;
+       }
+yy591:
+       { printf("CONTINUE");         continue; }
+yy592:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy612;
+       default:        goto yy148;
+       }
+yy593:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy594;
+       }
+yy594:
+       { printf("EXPLICIT");         continue; }
+yy595:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy613;
+       default:        goto yy148;
+       }
+yy596:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy597;
+       }
+yy597:
+       { printf("OPERATOR");         continue; }
+yy598:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'd':       goto yy615;
+       default:        goto yy148;
+       }
+yy599:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy600;
+       }
+yy600:
+       { printf("REGISTER");         continue; }
+yy601:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'r':       goto yy617;
+       default:        goto yy148;
+       }
+yy602:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy618;
+       default:        goto yy148;
+       }
+yy603:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy604;
+       }
+yy604:
+       { printf("TEMPLATE");         continue; }
+yy605:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy606;
+       }
+yy606:
+       { printf("TYPENAME");         continue; }
+yy607:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy608;
+       }
+yy608:
+       { printf("UNSIGNED");         continue; }
+yy609:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy610;
+       }
+yy610:
+       { printf("VOLATILE");         continue; }
+yy611:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy619;
+       default:        goto yy148;
+       }
+yy612:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy621;
+       default:        goto yy148;
+       }
+yy613:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy614;
+       }
+yy614:
+       { printf("NAMESPACE");        continue; }
+yy615:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy616;
+       }
+yy616:
+       { printf("PROTECTED");        continue; }
+yy617:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'e':       goto yy622;
+       default:        goto yy148;
+       }
+yy618:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy623;
+       default:        goto yy148;
+       }
+yy619:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy620;
+       }
+yy620:
+       { printf("CONST_CAST");       continue; }
+yy621:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy624;
+       default:        goto yy148;
+       }
+yy622:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy625;
+       default:        goto yy148;
+       }
+yy623:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy626;
+       default:        goto yy148;
+       }
+yy624:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy628;
+       default:        goto yy148;
+       }
+yy625:
+       yych = *++in.cur;
+       switch (yych) {
+       case '_':       goto yy630;
+       default:        goto yy148;
+       }
+yy626:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy627;
+       }
+yy627:
+       { printf("STATIC_CAST");      continue; }
+yy628:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy629;
+       }
+yy629:
+       { printf("DYNAMIC_CAST");     continue; }
+yy630:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'c':       goto yy631;
+       default:        goto yy148;
+       }
+yy631:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'a':       goto yy632;
+       default:        goto yy148;
+       }
+yy632:
+       yych = *++in.cur;
+       switch (yych) {
+       case 's':       goto yy633;
+       default:        goto yy148;
+       }
+yy633:
+       yych = *++in.cur;
+       switch (yych) {
+       case 't':       goto yy634;
+       default:        goto yy148;
+       }
+yy634:
+       yych = *++in.cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy147;
+       default:        goto yy635;
+       }
+yy635:
+       { printf("REINTERPRET_CAST"); continue; }
+}
+
+sfx:
+        
+{
+       unsigned char yych;
+       if ((in.lim - in.cur) < 2) if (!in.fill(2)) return false;
+       yych = *in.cur;
+       switch (yych) {
+       case 'L':
+       case 'l':       goto yy639;
+       case 'U':
+       case 'u':       goto yy641;
+       default:        goto yy638;
+       }
+yy638:
+       { if (u > INT_MAX)  return false; printf("%d",  static_cast<int>(u));      continue; }
+yy639:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'U':
+       case 'u':       goto yy643;
+       default:        goto yy640;
+       }
+yy640:
+       { if (u > LONG_MAX) return false; printf("%ld", static_cast<long>(u));     continue; }
+yy641:
+       yych = *++in.cur;
+       switch (yych) {
+       case 'L':
+       case 'l':       goto yy643;
+       default:        goto yy642;
+       }
+yy642:
+       { if (u > UINT_MAX) return false; printf("%u",  static_cast<unsigned>(u)); continue; }
+yy643:
+       ++in.cur;
+       { printf("%lu", u); continue; }
+}
+
+    }
+}
+
+int main(int argc, char **argv)
+{
+    if (argc != 2) {
+        printf ("usage: ./example <filename>\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "rb");
+    if (!file) {
+        printf("error: cannot open file: %s\n", argv[1]);
+        return 1;
+    }
+
+    input_t in(file);
+    if (!lex(in)) {
+        printf("... error\n");
+    } else {
+        printf("\n");
+    }
+
+    fclose(file);
+    return 0;
+}
+re2c: warning: line 150: rule matches empty string [-Wmatch-empty-string]
+re2c: warning: line 156: rule matches empty string [-Wmatch-empty-string]
+re2c: warning: line 161: rule matches empty string [-Wmatch-empty-string]
+re2c: warning: line 344: rule matches empty string [-Wmatch-empty-string]
diff --git a/re2c/test/examples/07_cxx98.i--tags.re b/re2c/test/examples/07_cxx98.i--tags.re
new file mode 100644 (file)
index 0000000..ac2e352
--- /dev/null
@@ -0,0 +1,374 @@
+#include <float.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+
+/*!max:re2c*/
+static const size_t SIZE = 64 * 1024;
+
+struct input_t {
+    unsigned char buf[SIZE + YYMAXFILL];
+    unsigned char *lim;
+    unsigned char *cur;
+    unsigned char *mar;
+    unsigned char *tok;
+    bool eof;
+
+    FILE *const file;
+
+    input_t(FILE *f)
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        , eof(false)
+        , file(f)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, file);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+/*!re2c re2c:define:YYCTYPE = "unsigned char"; */
+
+template<int base>
+static bool adddgt(unsigned long &u, unsigned long d)
+{
+    if (u > (ULONG_MAX - d) / base) {
+        return false;
+    }
+    u = u * base + d;
+    return true;
+}
+
+static bool lex_oct(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0, ++s; s < e; ++s) {
+        if (!adddgt<8>(u, *s - 0x30u)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+static bool lex_dec(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0; s < e; ++s) {
+        if (!adddgt<10>(u, *s - 0x30u)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+static bool lex_hex(const unsigned char *s, const unsigned char *e, unsigned long &u)
+{
+    for (u = 0, s += 2; s < e;) {
+    /*!re2c
+        re2c:yyfill:enable = 0;
+        re2c:define:YYCURSOR = s;
+        *     { if (!adddgt<16>(u, s[-1] - 0x30u))      return false; continue; }
+        [a-f] { if (!adddgt<16>(u, s[-1] - 0x61u + 10)) return false; continue; }
+        [A-F] { if (!adddgt<16>(u, s[-1] - 0x41u + 10)) return false; continue; }
+    */
+    }
+    return true;
+}
+
+static bool lex_str(input_t &in, unsigned char q)
+{
+    printf("%c", q);
+    for (unsigned long u = q;; printf("\\x%lx", u)) {
+        in.tok = in.cur;
+        /*!re2c
+            re2c:define:YYCURSOR = in.cur;
+            re2c:define:YYMARKER = in.mar;
+            re2c:define:YYLIMIT = in.lim;
+            re2c:yyfill:enable = 1;
+            re2c:define:YYFILL = "if (!in.fill(@@)) return false;";
+            re2c:define:YYFILL:naked = 1;
+            *                    { return false; }
+            [^\n\\]              { u = in.tok[0]; if (u == q) break; continue; }
+            "\\a"                { u = '\a'; continue; }
+            "\\b"                { u = '\b'; continue; }
+            "\\f"                { u = '\f'; continue; }
+            "\\n"                { u = '\n'; continue; }
+            "\\r"                { u = '\r'; continue; }
+            "\\t"                { u = '\t'; continue; }
+            "\\v"                { u = '\v'; continue; }
+            "\\\\"               { u = '\\'; continue; }
+            "\\'"                { u = '\''; continue; }
+            "\\\""               { u = '"';  continue; }
+            "\\?"                { u = '?';  continue; }
+            "\\" [0-7]{1,3}      { lex_oct(in.tok, in.cur, u); continue; }
+            "\\u" [0-9a-fA-F]{4} { lex_hex(in.tok, in.cur, u); continue; }
+            "\\U" [0-9a-fA-F]{8} { lex_hex(in.tok, in.cur, u); continue; }
+            "\\x" [0-9a-fA-F]+   { if (!lex_hex(in.tok, in.cur, u)) return false; continue; }
+        */
+    }
+    printf("%c", q);
+    return true;
+}
+
+static bool lex_flt(const unsigned char *s)
+{
+    double d = 0;
+    double x = 1;
+    int e = 0;
+    /*!re2c
+        re2c:yyfill:enable = 0;
+        re2c:define:YYCURSOR = s;
+    */
+mant_int:
+    /*!re2c
+        "."   { goto mant_frac; }
+        [eE]  { goto exp_sign; }
+        *     { d = (d * 10) + (s[-1] - '0'); goto mant_int; }
+    */
+mant_frac:
+    /*!re2c
+        ""    { goto sfx; }
+        [eE]  { goto exp_sign; }
+        [0-9] { d += (x /= 10) * (s[-1] - '0'); goto mant_frac; }
+    */
+exp_sign:
+    /*!re2c
+        "+"?  { x = 1e+1; goto exp; }
+        "-"   { x = 1e-1; goto exp; }
+    */
+exp:
+    /*!re2c
+        ""    { for (; e > 0; --e) d *= x;    goto sfx; }
+        [0-9] { e = (e * 10) + (s[-1] - '0'); goto exp; }
+    */
+sfx:
+    /*!re2c
+        *     { goto end; }
+        [fF]  { if (d > FLT_MAX) return false; goto end; }
+    */
+end:
+    printf("%g", d);
+    return true;
+}
+
+static bool lex(input_t &in)
+{
+    unsigned long u;
+    for (;;) {
+        in.tok = in.cur;
+        /*!re2c
+            re2c:define:YYCURSOR = in.cur;
+            re2c:define:YYMARKER = in.mar;
+            re2c:define:YYLIMIT = in.lim;
+            re2c:yyfill:enable = 1;
+            re2c:define:YYFILL = "if (!in.fill(@@)) return false;";
+            re2c:define:YYFILL:naked = 1;
+
+            end = "\x00";
+
+            *   { return false; }
+            end { return in.lim - in.tok == YYMAXFILL; }
+
+            // macros
+            macro = ("#" | "%:") ([^\n] | "\\\n")* "\n";
+            macro { continue; }
+
+            // whitespaces
+            mcm = "/*" ([^*] | ("*" [^/]))* "*""/";
+            scm = "//" [^\n]* "\n";
+            wsp = ([ \t\v\n\r] | scm | mcm)+;
+            wsp { printf(" "); continue; }
+
+            // character and string literals
+            "L"? ['"] { if (!lex_str(in, in.cur[-1])) return false; continue; }
+            "L"? "''" { return false; }
+
+            // integer literals
+            oct = "0" [0-7]*;
+            dec = [1-9][0-9]*;
+            hex = '0x' [0-9a-fA-F]+;
+            oct { if (!lex_oct(in.tok, in.cur, u)) return false; goto sfx; }
+            dec { if (!lex_dec(in.tok, in.cur, u)) return false; goto sfx; }
+            hex { if (!lex_hex(in.tok, in.cur, u)) return false; goto sfx; }
+
+            // floating literals
+            frc = [0-9]* "." [0-9]+ | [0-9]+ ".";
+            exp = 'e' [+-]? [0-9]+;
+            flt = (frc exp? | [0-9]+ exp) [fFlL]?;
+            flt { if (lex_flt(in.tok)) continue; return false; }
+
+            // boolean literals
+            "false" { printf("false"); continue; }
+            "true"  { printf("true");  continue; }
+
+            // keywords
+            "asm"              { printf("ASM");              continue; }
+            "auto"             { printf("AUTO");             continue; }
+            "bool"             { printf("BOOL");             continue; }
+            "break"            { printf("BREAK");            continue; }
+            "case"             { printf("CASE");             continue; }
+            "catch"            { printf("CATCH");            continue; }
+            "char"             { printf("CHAR");             continue; }
+            "class"            { printf("CLASS");            continue; }
+            "const"            { printf("CONST");            continue; }
+            "const_cast"       { printf("CONST_CAST");       continue; }
+            "continue"         { printf("CONTINUE");         continue; }
+            "default"          { printf("DEFAULT");          continue; }
+            "do"               { printf("DO");               continue; }
+            "double"           { printf("DOUBLE");           continue; }
+            "dynamic_cast"     { printf("DYNAMIC_CAST");     continue; }
+            "else"             { printf("ELSE");             continue; }
+            "enum"             { printf("ENUM");             continue; }
+            "explicit"         { printf("EXPLICIT");         continue; }
+            "export"           { printf("EXPORT");           continue; }
+            "extern"           { printf("EXTERN");           continue; }
+            "float"            { printf("FLOAT");            continue; }
+            "for"              { printf("FOR");              continue; }
+            "friend"           { printf("FRIEND");           continue; }
+            "goto"             { printf("GOTO");             continue; }
+            "if"               { printf("IF");               continue; }
+            "inline"           { printf("INLINE");           continue; }
+            "int"              { printf("INT");              continue; }
+            "long"             { printf("LONG");             continue; }
+            "mutable"          { printf("MUTABLE");          continue; }
+            "namespace"        { printf("NAMESPACE");        continue; }
+            "operator"         { printf("OPERATOR");         continue; }
+            "private"          { printf("PRIVATE");          continue; }
+            "protected"        { printf("PROTECTED");        continue; }
+            "public"           { printf("PUBLIC");           continue; }
+            "register"         { printf("REGISTER");         continue; }
+            "reinterpret_cast" { printf("REINTERPRET_CAST"); continue; }
+            "return"           { printf("RETURN");           continue; }
+            "short"            { printf("SHORT");            continue; }
+            "signed"           { printf("SIGNED");           continue; }
+            "sizeof"           { printf("SIZEOF");           continue; }
+            "static"           { printf("STATIC");           continue; }
+            "static_cast"      { printf("STATIC_CAST");      continue; }
+            "struct"           { printf("STRUCT");           continue; }
+            "switch"           { printf("SWITCH");           continue; }
+            "template"         { printf("TEMPLATE");         continue; }
+            "this"             { printf("THIS");             continue; }
+            "throw"            { printf("THROW");            continue; }
+            "try"              { printf("TRY");              continue; }
+            "typedef"          { printf("TYPEDEF");          continue; }
+            "typeid"           { printf("TYPEID");           continue; }
+            "typename"         { printf("TYPENAME");         continue; }
+            "union"            { printf("UNION");            continue; }
+            "unsigned"         { printf("UNSIGNED");         continue; }
+            "using"            { printf("USING");            continue; }
+            "virtual"          { printf("VIRTUAL");          continue; }
+            "void"             { printf("VOID");             continue; }
+            "volatile"         { printf("VOLATILE");         continue; }
+            "wchar_t"          { printf("WCHAR_T");          continue; }
+            "while"            { printf("WHILE");            continue; }
+
+            // operators and punctuation (including preprocessor)
+            ("{" | "<%")      { printf("{");      continue; }
+            ("}" | "%>")      { printf("}");      continue; }
+            ("[" | "<:")      { printf("[");      continue; }
+            ("]" | ":>")      { printf("]");      continue; }
+            "("               { printf("(");      continue; }
+            ")"               { printf(")");      continue; }
+            ";"               { printf(";");      continue; }
+            ":"               { printf(":");      continue; }
+            "..."             { printf("...");    continue; }
+            "new"             { printf("new");    continue; }
+            "delete"          { printf("delete"); continue; }
+            "?"               { printf("?");      continue; }
+            "::"              { printf("::");     continue; }
+            "."               { printf(".");      continue; }
+            ".*"              { printf(".");      continue; }
+            "+"               { printf("+");      continue; }
+            "-"               { printf("-");      continue; }
+            "*"               { printf("*");      continue; }
+            "/"               { printf("/");      continue; }
+            "%"               { printf("%%");     continue; }
+            ("^" | "xor")     { printf("^");      continue; }
+            ("&" | "bitand")  { printf("&");      continue; }
+            ("|" | "bitor")   { printf("|");      continue; }
+            ("~" | "compl")   { printf("~");      continue; }
+            ("!" | "not")     { printf("!");      continue; }
+            "="               { printf("=");      continue; }
+            "<"               { printf("<");      continue; }
+            ">"               { printf(">");      continue; }
+            "+="              { printf("+=");     continue; }
+            "-="              { printf("-=");     continue; }
+            "*="              { printf("*=");     continue; }
+            "/="              { printf("/=");     continue; }
+            "%="              { printf("%%=");    continue; }
+            ("^=" | "xor_eq") { printf("^=");     continue; }
+            ("&=" | "and_eq") { printf("&=");     continue; }
+            ("|=" | "or_eq")  { printf("|=");     continue; }
+            "<<"              { printf("<<");     continue; }
+            ">>"              { printf(">>");     continue; }
+            ">>="             { printf(">>=");    continue; }
+            "<<="             { printf("<<=");    continue; }
+            "=="              { printf("==");     continue; }
+            ("!=" | "not_eq") { printf("!=");     continue; }
+            "<="              { printf("<=");     continue; }
+            ">="              { printf(">=");     continue; }
+            ("&&" | "and")    { printf("&&");     continue; }
+            ("||" | "or")     { printf("||");     continue; }
+            "++"              { printf("++");     continue; }
+            "--"              { printf("--");     continue; }
+            ","               { printf(",");      continue; }
+            "->*"             { printf("->*");    continue; }
+            "->"              { printf("->");     continue; }
+
+            // identifiers
+            id = [a-zA-Z_][a-zA-Z_0-9]*;
+            id { printf("%.*s", in.cur - in.tok, in.tok); continue; }
+        */
+sfx:
+        /*!re2c
+            ""          { if (u > INT_MAX)  return false; printf("%d",  static_cast<int>(u));      continue; }
+            'u'         { if (u > UINT_MAX) return false; printf("%u",  static_cast<unsigned>(u)); continue; }
+            'l'         { if (u > LONG_MAX) return false; printf("%ld", static_cast<long>(u));     continue; }
+            'ul' | 'lu' { printf("%lu", u); continue; }
+        */
+    }
+}
+
+int main(int argc, char **argv)
+{
+    if (argc != 2) {
+        printf ("usage: ./example <filename>\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "rb");
+    if (!file) {
+        printf("error: cannot open file: %s\n", argv[1]);
+        return 1;
+    }
+
+    input_t in(file);
+    if (!lex(in)) {
+        printf("... error\n");
+    } else {
+        printf("\n");
+    }
+
+    fclose(file);
+    return 0;
+}
diff --git a/re2c/test/examples/08_ipv4.i--tags.c b/re2c/test/examples/08_ipv4.i--tags.c
new file mode 100644 (file)
index 0000000..e0812e5
--- /dev/null
@@ -0,0 +1,253 @@
+/* Generated by re2c */
+#include <stdio.h>
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *o1, *o2, *o3, *o4;
+    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;
+    
+{
+       char yych;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = YYCURSOR;
+               goto yy4;
+       default:        goto yy2;
+       }
+yy2:
+       ++YYCURSOR;
+yy3:
+       { printf("error\n"); return 1; }
+yy4:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '.':       goto yy5;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy7;
+       default:        goto yy3;
+       }
+yy5:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt2 = YYCURSOR;
+               goto yy8;
+       default:        goto yy6;
+       }
+yy6:
+       YYCURSOR = YYMARKER;
+       goto yy3;
+yy7:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy5;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy9;
+       default:        goto yy6;
+       }
+yy8:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy10;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy11;
+       default:        goto yy6;
+       }
+yy9:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy5;
+       default:        goto yy6;
+       }
+yy10:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt3 = YYCURSOR;
+               goto yy12;
+       default:        goto yy6;
+       }
+yy11:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy10;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy13;
+       default:        goto yy6;
+       }
+yy12:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy14;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy15;
+       default:        goto yy6;
+       }
+yy13:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy10;
+       default:        goto yy6;
+       }
+yy14:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt4 = YYCURSOR;
+               goto yy16;
+       default:        goto yy6;
+       }
+yy15:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy14;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy18;
+       default:        goto yy6;
+       }
+yy16:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy19;
+       default:        goto yy17;
+       }
+yy17:
+       o1 = yyt1;
+       o2 = yyt2;
+       o3 = yyt3;
+       o4 = yyt4;
+       {
+            printf("parsed: %.*s, %.*s, %.*s, %*s!\n",
+                (int)(o2 - o1 - 1), o1,
+                (int)(o3 - o2 - 1), o2,
+                (int)(o4 - o3 - 1), o3,
+                (int)(YYCURSOR - o4), o4);
+            return 0;
+        }
+yy18:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy14;
+       default:        goto yy6;
+       }
+yy19:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy20;
+       default:        goto yy17;
+       }
+yy20:
+       ++YYCURSOR;
+       goto yy17;
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) lex(argv[i]);
+    return 0;
+}
diff --git a/re2c/test/examples/08_ipv4.i--tags.re b/re2c/test/examples/08_ipv4.i--tags.re
new file mode 100644 (file)
index 0000000..c9e5c19
--- /dev/null
@@ -0,0 +1,32 @@
+#include <stdio.h>
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *o1, *o2, *o3, *o4;
+    /*!stags:re2c format = 'const char *@@;'; */
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:yyfill:enable = 0;
+
+        end = "\x00";
+        oct = [0-9]{1,3};
+        dot = ".";
+
+        * { printf("error\n"); return 1; }
+
+        @o1 oct dot @o2 oct dot @o3 oct dot @o4 oct {
+            printf("parsed: %.*s, %.*s, %.*s, %*s!\n",
+                (int)(o2 - o1 - 1), o1,
+                (int)(o3 - o2 - 1), o2,
+                (int)(o4 - o3 - 1), o3,
+                (int)(YYCURSOR - o4), o4);
+            return 0;
+        }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) lex(argv[i]);
+    return 0;
+}
diff --git a/re2c/test/examples/09_etc_passwd.i--tags.c b/re2c/test/examples/09_etc_passwd.i--tags.c
new file mode 100644 (file)
index 0000000..20f3adf
--- /dev/null
@@ -0,0 +1,238 @@
+/* Generated by re2c */
+#include <stdio.h>
+#include <stdlib.h>
+
+#define YYMAXFILL 4
+
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *n, *p, *u, *g, *i, *h, *c;
+    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;const char *yyt6;const char *yyt7;
+loop:
+    
+{
+       char yych;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\n':
+       case ':':       goto yy6;
+       default:
+               yyt1 = YYCURSOR;
+               goto yy4;
+       }
+yy2:
+       ++YYCURSOR;
+       { return 0; }
+yy4:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy5;
+       default:        goto yy8;
+       }
+yy5:
+       { printf("error\n"); return 1; }
+yy6:
+       ++YYCURSOR;
+       goto yy5;
+yy7:
+       yych = *++YYCURSOR;
+yy8:
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':       goto yy10;
+       default:        goto yy7;
+       }
+yy9:
+       YYCURSOR = YYMARKER;
+       goto yy5;
+yy10:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':
+               yyt2 = YYCURSOR;
+               goto yy13;
+       default:
+               yyt2 = YYCURSOR;
+               goto yy11;
+       }
+yy11:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':       goto yy13;
+       default:        goto yy11;
+       }
+yy13:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt3 = YYCURSOR;
+               goto yy14;
+       default:        goto yy9;
+       }
+yy14:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy14;
+       case ':':       goto yy16;
+       default:        goto yy9;
+       }
+yy16:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt4 = YYCURSOR;
+               goto yy17;
+       default:        goto yy9;
+       }
+yy17:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy17;
+       case ':':       goto yy19;
+       default:        goto yy9;
+       }
+yy19:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':
+               yyt5 = YYCURSOR;
+               goto yy22;
+       default:
+               yyt5 = YYCURSOR;
+               goto yy20;
+       }
+yy20:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':       goto yy22;
+       default:        goto yy20;
+       }
+yy22:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '/':
+               yyt6 = YYCURSOR;
+               goto yy23;
+       default:        goto yy9;
+       }
+yy23:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy9;
+       case ':':       goto yy25;
+       default:        goto yy23;
+       }
+yy25:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '/':
+               yyt7 = YYCURSOR;
+               goto yy26;
+       default:        goto yy9;
+       }
+yy26:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case ':':       goto yy9;
+       case '\n':      goto yy28;
+       default:        goto yy26;
+       }
+yy28:
+       ++YYCURSOR;
+       n = yyt1;
+       p = yyt2;
+       u = yyt3;
+       g = yyt4;
+       i = yyt5;
+       h = yyt6;
+       c = yyt7;
+       {
+            printf("user:     %.*s\n", (int)(p - n) - 1, n);
+            printf("password: %.*s\n", (int)(u - p) - 1, p);
+            printf("UID:      %.*s\n", (int)(g - u) - 1, u);
+            printf("GID:      %.*s\n", (int)(i - g) - 1, g);
+            printf("info:     %.*s\n", (int)(h - i) - 1, i);
+            printf("home:     %.*s\n", (int)(c - h) - 1, h);
+            printf("command:  %.*s\n", (int)(YYCURSOR - c - 1), c);
+            printf("\n");
+            goto loop;
+        }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    if (argc < 2) {
+        fprintf(stderr, "no input files\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "r");
+
+    fseek(file, 0, SEEK_END);
+    const size_t fsize = (size_t) ftell(file);
+    fseek(file, 0, SEEK_SET);
+
+    char *buffer = (char*) malloc(fsize + 1);
+
+    fread(buffer, 1, fsize, file);
+    buffer[fsize] = 0;
+
+    const int status = lex(buffer);
+
+    fclose(file);
+    free(buffer);
+
+    return status;
+}
diff --git a/re2c/test/examples/09_etc_passwd.i--tags.re b/re2c/test/examples/09_etc_passwd.i--tags.re
new file mode 100644 (file)
index 0000000..6564110
--- /dev/null
@@ -0,0 +1,74 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/*!max:re2c*/
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *n, *p, *u, *g, *i, *h, *c;
+    /*!stags:re2c format = 'const char *@@;'; */
+loop:
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:yyfill:enable = 0;
+
+        end  = "\x00";
+        eol  = "\n";
+        sep  = [:];
+        char = [^] \ (end | eol | sep);
+        user = char+;
+        pass = char*;
+        uid  = [0-9]+;
+        gid  = [0-9]+;
+        info = char*;
+        home = "/" char*;
+        cmd  = "/" char*;
+
+        *   { printf("error\n"); return 1; }
+        end { return 0; }
+
+        @n user sep
+        @p pass sep
+        @u uid  sep
+        @g gid  sep
+        @i info sep
+        @h home sep
+        @c cmd  eol {
+            printf("user:     %.*s\n", (int)(p - n) - 1, n);
+            printf("password: %.*s\n", (int)(u - p) - 1, p);
+            printf("UID:      %.*s\n", (int)(g - u) - 1, u);
+            printf("GID:      %.*s\n", (int)(i - g) - 1, g);
+            printf("info:     %.*s\n", (int)(h - i) - 1, i);
+            printf("home:     %.*s\n", (int)(c - h) - 1, h);
+            printf("command:  %.*s\n", (int)(YYCURSOR - c - 1), c);
+            printf("\n");
+            goto loop;
+        }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    if (argc < 2) {
+        fprintf(stderr, "no input files\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "r");
+
+    fseek(file, 0, SEEK_END);
+    const size_t fsize = (size_t) ftell(file);
+    fseek(file, 0, SEEK_SET);
+
+    char *buffer = (char*) malloc(fsize + 1);
+
+    fread(buffer, 1, fsize, file);
+    buffer[fsize] = 0;
+
+    const int status = lex(buffer);
+
+    fclose(file);
+    free(buffer);
+
+    return status;
+}
diff --git a/re2c/test/examples/10_uri_rfc3986.i--tags.c b/re2c/test/examples/10_uri_rfc3986.i--tags.c
new file mode 100644 (file)
index 0000000..7ceaac3
--- /dev/null
@@ -0,0 +1,7935 @@
+/* Generated by re2c */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define YYMAXFILL 72
+
+static const size_t SIZE = 4096;
+
+typedef struct {
+    FILE *file;
+    char *buf;
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    char *yyt1;
+char *yyt10;
+char *yyt11;
+char *yyt12;
+char *yyt13;
+char *yyt14;
+char *yyt15;
+char *yyt16;
+char *yyt17;
+char *yyt18;
+char *yyt19;
+char *yyt2;
+char *yyt20;
+char *yyt3;
+char *yyt4;
+char *yyt5;
+char *yyt6;
+char *yyt7;
+char *yyt8;
+char *yyt9;
+
+    int eof;
+} input_t;
+
+static void init_input(input_t *in, const char *fname)
+{
+    in->file = fopen(fname, "r");
+    in->buf = (char*) malloc(SIZE + YYMAXFILL);
+    in->lim = in->buf + SIZE;
+    in->cur = in->lim;
+    in->mar = in->lim;
+    in->tok = in->lim;
+    in->yyt1 = 0;
+in->yyt10 = 0;
+in->yyt11 = 0;
+in->yyt12 = 0;
+in->yyt13 = 0;
+in->yyt14 = 0;
+in->yyt15 = 0;
+in->yyt16 = 0;
+in->yyt17 = 0;
+in->yyt18 = 0;
+in->yyt19 = 0;
+in->yyt2 = 0;
+in->yyt20 = 0;
+in->yyt3 = 0;
+in->yyt4 = 0;
+in->yyt5 = 0;
+in->yyt6 = 0;
+in->yyt7 = 0;
+in->yyt8 = 0;
+in->yyt9 = 0;
+
+    in->eof = 0;
+}
+
+static void free_input(input_t *in)
+{
+    free(in->buf);
+    fclose(in->file);
+}
+
+static int fill(input_t *in, size_t need)
+{
+    size_t free;
+    if (in->eof) return 1;
+
+    free = in->tok - in->buf;
+    if (free < need) return 2;
+
+    memmove(in->buf, in->tok, in->lim - in->tok);
+    in->lim -= free;
+    in->cur -= free;
+    in->mar -= free;
+    in->tok -= free;
+    if (in->yyt1) in->yyt1 -= free;
+if (in->yyt10) in->yyt10 -= free;
+if (in->yyt11) in->yyt11 -= free;
+if (in->yyt12) in->yyt12 -= free;
+if (in->yyt13) in->yyt13 -= free;
+if (in->yyt14) in->yyt14 -= free;
+if (in->yyt15) in->yyt15 -= free;
+if (in->yyt16) in->yyt16 -= free;
+if (in->yyt17) in->yyt17 -= free;
+if (in->yyt18) in->yyt18 -= free;
+if (in->yyt19) in->yyt19 -= free;
+if (in->yyt2) in->yyt2 -= free;
+if (in->yyt20) in->yyt20 -= free;
+if (in->yyt3) in->yyt3 -= free;
+if (in->yyt4) in->yyt4 -= free;
+if (in->yyt5) in->yyt5 -= free;
+if (in->yyt6) in->yyt6 -= free;
+if (in->yyt7) in->yyt7 -= free;
+if (in->yyt8) in->yyt8 -= free;
+if (in->yyt9) in->yyt9 -= free;
+
+    in->lim += fread(in->lim, 1, free, in->file);
+    if (in->lim < in->buf + SIZE) {
+        in->eof = 1;
+        memset(in->lim, 0, YYMAXFILL);
+        in->lim += YYMAXFILL;
+    }
+    return 0;
+}
+
+static int lex(input_t *in, long *count)
+{
+    const char
+        *s1, *u1, *h1, *h3, *h5, *r1, *p1, *p3, *q1, *f1,
+        *s2, *u2, *h2, *h4, *h6, *r2, *p2, *p4, *q2, *f2;
+    long c;
+
+    c = 0;
+loop:
+    in->tok = in->cur;
+
+{
+       char yych;
+       unsigned int yyaccept = 0;
+       if ((in->lim - in->cur) < 72) if (fill(in, 72) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\n':      goto yy6;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               in->yyt1 = in->cur;
+               goto yy8;
+       default:        goto yy4;
+       }
+yy2:
+       ++in->cur;
+       { *count = c; return 0; }
+yy4:
+       ++in->cur;
+yy5:
+       { return 1; }
+yy6:
+       ++in->cur;
+       { goto loop; }
+yy8:
+       yyaccept = 0;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy10;
+       default:        goto yy5;
+       }
+yy9:
+       ++in->cur;
+       if ((in->lim - in->cur) < 71) if (fill(in, 71) != 0) return 2;
+       yych = *in->cur;
+yy10:
+       switch (yych) {
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy9;
+       case ':':
+               in->yyt2 = in->cur;
+               goto yy12;
+       default:        goto yy11;
+       }
+yy11:
+       in->cur = in->mar;
+       switch (yyaccept) {
+       case 0:         goto yy5;
+       case 1: 
+               in->yyt3 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt4 = in->yyt5 = in->cur;
+               goto yy13;
+       case 2: 
+               in->yyt3 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt5 = in->cur;
+               goto yy13;
+       case 3: 
+               in->yyt7 = in->yyt8 = in->cur;
+               goto yy13;
+       case 4: 
+               in->yyt7 = in->yyt8 = NULL;
+               in->yyt6 = in->yyt20 = in->cur;
+               goto yy13;
+       case 5: 
+               in->yyt8 = in->cur;
+               goto yy13;
+       case 6: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       case 7: 
+               in->yyt7 = in->yyt8 = NULL;
+               in->yyt6 = in->cur;
+               goto yy13;
+       case 8: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       case 9: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->cur;
+               goto yy13;
+       case 10: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       case 11: 
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       case 12: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       case 13: 
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       case 14: 
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy12:
+       yyaccept = 1;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt4 = in->cur;
+               goto yy14;
+       case '#':
+               in->yyt3 = in->yyt6 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt4 = in->yyt5 = in->cur;
+               goto yy16;
+       case '%':
+               in->yyt4 = in->cur;
+               goto yy17;
+       case '/':
+               in->yyt4 = in->cur;
+               goto yy18;
+       case '?':
+               in->yyt3 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = NULL;
+               in->yyt4 = in->yyt5 = in->cur;
+               goto yy19;
+       default:
+               in->yyt3 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt4 = in->yyt5 = in->cur;
+               goto yy13;
+       }
+yy13:
+       s1 = in->yyt1;
+       s2 = in->yyt2;
+       u1 = in->yyt9;
+       u2 = in->yyt10;
+       h1 = in->yyt11;
+       h2 = in->yyt12;
+       h3 = in->yyt13;
+       h4 = in->yyt14;
+       h5 = in->yyt15;
+       h6 = in->yyt16;
+       r1 = in->yyt17;
+       r2 = in->yyt18;
+       p1 = in->yyt19;
+       p2 = in->yyt3;
+       p3 = in->yyt4;
+       p4 = in->yyt5;
+       q1 = in->yyt20;
+       q2 = in->yyt6;
+       f1 = in->yyt7;
+       f2 = in->yyt8;
+       {
+        ++c;
+        printf("URI %ld:\n", c);
+        printf("  scheme:   %.*s\n", (int)(s2 - s1), s1);
+        if (u1) printf("  userinfo: %.*s\n", (int)(u2 - u1), u1);
+        if (h1) printf("  host:     %.*s (IP literal)\n", (int)(h2 - h1), h1);
+        if (h3) printf("  host:     %.*s (IPv4)\n", (int)(h4 - h3), h3);
+        if (h5) printf("  host:     %.*s (name)\n", (int)(h6 - h5), h5);
+        if (r1) printf("  port:     %.*s\n", (int)(r2 - r1), r1);
+        if (p1) printf("  path:     %.*s\n", (int)(p2 - p1), p1);
+        if (p3) printf("  path:     %.*s\n", (int)(p4 - p3), p3);
+        if (q1) printf("  query:    %.*s\n", (int)(q2 - q1), q1);
+        if (f1) printf("  fragment: %.*s\n", (int)(f2 - f1), f1);
+        printf("\n");
+        goto loop;
+    }
+yy14:
+       yyaccept = 2;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 3) if (fill(in, 3) != 0) return 2;
+       yych = *in->cur;
+yy15:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy14;
+       case '#':
+               in->yyt3 = in->yyt6 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt5 = in->cur;
+               goto yy16;
+       case '%':       goto yy17;
+       case '?':
+               in->yyt3 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = NULL;
+               in->yyt5 = in->cur;
+               goto yy19;
+       default:
+               in->yyt3 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = NULL;
+               in->yyt5 = in->cur;
+               goto yy13;
+       }
+yy16:
+       yyaccept = 3;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt7 = in->cur;
+               goto yy20;
+       case '%':
+               in->yyt7 = in->cur;
+               goto yy22;
+       default:
+               in->yyt7 = in->yyt8 = in->cur;
+               goto yy13;
+       }
+yy17:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy23;
+       default:        goto yy11;
+       }
+yy18:
+       yyaccept = 2;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '/':       goto yy24;
+       default:        goto yy15;
+       }
+yy19:
+       yyaccept = 4;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt20 = in->cur;
+               goto yy25;
+       case '#':
+               in->yyt6 = in->yyt20 = in->cur;
+               goto yy16;
+       case '%':
+               in->yyt20 = in->cur;
+               goto yy27;
+       default:
+               in->yyt7 = in->yyt8 = NULL;
+               in->yyt6 = in->yyt20 = in->cur;
+               goto yy13;
+       }
+yy20:
+       yyaccept = 5;
+       in->mar = ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy20;
+       case '%':       goto yy22;
+       default:
+               in->yyt8 = in->cur;
+               goto yy13;
+       }
+yy22:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy28;
+       default:        goto yy11;
+       }
+yy23:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy14;
+       default:        goto yy11;
+       }
+yy24:
+       yyaccept = 6;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt15 = in->cur;
+               goto yy29;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy16;
+       case '%':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt15 = in->cur;
+               goto yy31;
+       case '/':
+               in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt13 = in->yyt15 = in->cur;
+               goto yy34;
+       case '1':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt13 = in->yyt15 = in->cur;
+               goto yy35;
+       case '2':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt13 = in->yyt15 = in->cur;
+               goto yy36;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt13 = in->yyt15 = in->cur;
+               goto yy37;
+       case ':':
+               in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy19;
+       case '@':
+               in->yyt3 = in->yyt10 = in->cur;
+               goto yy39;
+       case '[':
+               in->yyt9 = in->yyt10 = NULL;
+               in->yyt11 = in->cur;
+               goto yy40;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy25:
+       yyaccept = 7;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 2) if (fill(in, 2) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy25;
+       case '#':
+               in->yyt6 = in->cur;
+               goto yy16;
+       case '%':       goto yy27;
+       default:
+               in->yyt7 = in->yyt8 = NULL;
+               in->yyt6 = in->cur;
+               goto yy13;
+       }
+yy27:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy41;
+       default:        goto yy11;
+       }
+yy28:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy20;
+       default:        goto yy11;
+       }
+yy29:
+       yyaccept = 8;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 53) if (fill(in, 53) != 0) return 2;
+       yych = *in->cur;
+yy30:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy29;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy16;
+       case '%':       goto yy31;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt16 = in->yyt19 = in->cur;
+               goto yy32;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = NULL;
+               in->yyt16 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy19;
+       case '@':
+               in->yyt10 = in->cur;
+               goto yy39;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy31:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy42;
+       default:        goto yy11;
+       }
+yy32:
+       yyaccept = 9;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 3) if (fill(in, 3) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy32;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt20 = NULL;
+               in->yyt3 = in->cur;
+               goto yy16;
+       case '%':       goto yy43;
+       case '?':
+               in->yyt4 = in->yyt5 = NULL;
+               in->yyt3 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->cur;
+               goto yy13;
+       }
+yy34:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy44;
+       default:        goto yy30;
+       }
+yy35:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy44;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy37;
+       default:        goto yy30;
+       }
+yy36:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy44;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy37;
+       case '5':       goto yy45;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy34;
+       default:        goto yy30;
+       }
+yy37:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy44;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy34;
+       default:        goto yy30;
+       }
+yy38:
+       yyaccept = 10;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy47;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt17 = in->cur;
+               goto yy49;
+       case '?':
+               in->yyt4 = in->yyt5 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy39:
+       yyaccept = 11;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt15 = in->cur;
+               goto yy51;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy16;
+       case '%':
+               in->yyt15 = in->cur;
+               goto yy53;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+               in->yyt13 = in->yyt15 = in->cur;
+               goto yy54;
+       case '1':
+               in->yyt13 = in->yyt15 = in->cur;
+               goto yy55;
+       case '2':
+               in->yyt13 = in->yyt15 = in->cur;
+               goto yy56;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt13 = in->yyt15 = in->cur;
+               goto yy57;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = NULL;
+               in->yyt15 = in->yyt16 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy19;
+       case '[':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->cur;
+               goto yy40;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt15 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy40:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy59;
+       case ':':       goto yy60;
+       case 'v':       goto yy61;
+       default:        goto yy11;
+       }
+yy41:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy25;
+       default:        goto yy11;
+       }
+yy42:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy29;
+       default:        goto yy11;
+       }
+yy43:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy62;
+       default:        goto yy11;
+       }
+yy44:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy63;
+       case '1':       goto yy64;
+       case '2':       goto yy65;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy66;
+       default:        goto yy30;
+       }
+yy45:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy44;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy34;
+       default:        goto yy30;
+       }
+yy46:
+       ++in->cur;
+       if ((in->lim - in->cur) < 52) if (fill(in, 52) != 0) return 2;
+       yych = *in->cur;
+yy47:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy46;
+       case '%':       goto yy48;
+       case '@':
+               in->yyt10 = in->cur;
+               goto yy39;
+       default:        goto yy11;
+       }
+yy48:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy67;
+       default:        goto yy11;
+       }
+yy49:
+       yyaccept = 12;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 52) if (fill(in, 52) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy46;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy16;
+       case '%':       goto yy48;
+       case '/':
+               in->yyt18 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy49;
+       case '?':
+               in->yyt4 = in->yyt5 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy19;
+       case '@':
+               in->yyt10 = in->cur;
+               goto yy39;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy51:
+       yyaccept = 13;
+       in->mar = ++in->cur;
+       if ((in->lim - in->cur) < 4) if (fill(in, 4) != 0) return 2;
+       yych = *in->cur;
+yy52:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy51;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy16;
+       case '%':       goto yy53;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt16 = in->yyt19 = in->cur;
+               goto yy32;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = NULL;
+               in->yyt16 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt16 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy53:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy68;
+       default:        goto yy11;
+       }
+yy54:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy69;
+       default:        goto yy52;
+       }
+yy55:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy69;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy57;
+       default:        goto yy52;
+       }
+yy56:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy69;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy57;
+       case '5':       goto yy70;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy54;
+       default:        goto yy52;
+       }
+yy57:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy69;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy54;
+       default:        goto yy52;
+       }
+yy58:
+       yych = *++in->cur;
+       switch (yych) {
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt17 = in->cur;
+               goto yy71;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt17 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy59:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy73;
+       case ':':       goto yy74;
+       default:        goto yy11;
+       }
+yy60:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy75;
+       default:        goto yy11;
+       }
+yy61:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy11;
+       default:        goto yy77;
+       }
+yy62:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy32;
+       default:        goto yy11;
+       }
+yy63:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy78;
+       default:        goto yy30;
+       }
+yy64:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy78;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy66;
+       default:        goto yy30;
+       }
+yy65:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy78;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy66;
+       case '5':       goto yy79;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy63;
+       default:        goto yy30;
+       }
+yy66:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy78;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy63;
+       default:        goto yy30;
+       }
+yy67:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy46;
+       default:        goto yy11;
+       }
+yy68:
+       ++in->cur;
+       if (in->lim <= in->cur) if (fill(in, 1) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy51;
+       default:        goto yy11;
+       }
+yy69:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy80;
+       case '1':       goto yy81;
+       case '2':       goto yy82;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy83;
+       default:        goto yy52;
+       }
+yy70:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy69;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy54;
+       default:        goto yy52;
+       }
+yy71:
+       ++in->cur;
+       if ((in->lim - in->cur) < 3) if (fill(in, 3) != 0) return 2;
+       yych = *in->cur;
+       switch (yych) {
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt18 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy71;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy73:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy84;
+       case ':':       goto yy74;
+       default:        goto yy11;
+       }
+yy74:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy85;
+       case ':':       goto yy86;
+       default:        goto yy11;
+       }
+yy75:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy87;
+       case '1':       goto yy88;
+       case '2':       goto yy89;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy90;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy91;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy76:
+       ++in->cur;
+       if ((in->lim - in->cur) < 2) if (fill(in, 2) != 0) return 2;
+       yych = *in->cur;
+yy77:
+       switch (yych) {
+       case '.':       goto yy93;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy76;
+       default:        goto yy11;
+       }
+yy78:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy94;
+       case '1':       goto yy95;
+       case '2':       goto yy96;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy97;
+       default:        goto yy30;
+       }
+yy79:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy78;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy63;
+       default:        goto yy30;
+       }
+yy80:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy98;
+       default:        goto yy52;
+       }
+yy81:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy83;
+       default:        goto yy52;
+       }
+yy82:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy83;
+       case '5':       goto yy99;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy80;
+       default:        goto yy52;
+       }
+yy83:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy80;
+       default:        goto yy52;
+       }
+yy84:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy100;
+       case ':':       goto yy74;
+       default:        goto yy11;
+       }
+yy85:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy101;
+       case ':':       goto yy102;
+       default:        goto yy11;
+       }
+yy86:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy103;
+       case '1':       goto yy104;
+       case '2':       goto yy105;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy106;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy107;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy87:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy109;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy88:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy111;
+       case ':':       goto yy110;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy109;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy89:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy111;
+       case '5':       goto yy112;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy113;
+       case ':':       goto yy110;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy109;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy90:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy113;
+       case ':':       goto yy110;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy109;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy91:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy109;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy92:
+       yych = *++in->cur;
+       switch (yych) {
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt12 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt12 = in->yyt19 = in->cur;
+               goto yy32;
+       case ':':
+               in->yyt3 = in->yyt9;
+               in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt12 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt12 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt12 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy93:
+       yych = *++in->cur;
+       switch (yych) {
+       case ']':       goto yy11;
+       default:        goto yy115;
+       }
+yy94:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy116;
+       default:        goto yy30;
+       }
+yy95:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy116;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy97;
+       default:        goto yy30;
+       }
+yy96:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy116;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy97;
+       case '5':       goto yy117;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy94;
+       default:        goto yy30;
+       }
+yy97:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy116;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy94;
+       default:        goto yy30;
+       }
+yy98:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy118;
+       case '1':       goto yy119;
+       case '2':       goto yy120;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy121;
+       default:        goto yy52;
+       }
+yy99:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy80;
+       default:        goto yy52;
+       }
+yy100:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy74;
+       default:        goto yy11;
+       }
+yy101:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy122;
+       case ':':       goto yy102;
+       default:        goto yy11;
+       }
+yy102:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy123;
+       case ':':       goto yy124;
+       default:        goto yy11;
+       }
+yy103:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy104:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy127;
+       case ':':       goto yy126;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy105:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy127;
+       case '5':       goto yy128;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy129;
+       case ':':       goto yy126;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy106:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy129;
+       case ':':       goto yy126;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy107:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy108:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy130;
+       case '1':       goto yy131;
+       case '2':       goto yy132;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy133;
+       default:        goto yy11;
+       }
+yy109:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy134;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy110:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy103;
+       case '1':       goto yy104;
+       case '2':       goto yy105;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy106;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy107;
+       default:        goto yy11;
+       }
+yy111:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy135;
+       case ':':       goto yy110;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy134;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy112:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy135;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy134;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy113:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy134;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy114:
+       ++in->cur;
+       if ((in->lim - in->cur) < 5) if (fill(in, 5) != 0) return 2;
+       yych = *in->cur;
+yy115:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy114;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy116:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy136;
+       case '1':       goto yy137;
+       case '2':       goto yy138;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy139;
+       default:        goto yy30;
+       }
+yy117:
+       yyaccept = 8;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy116;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy94;
+       default:        goto yy30;
+       }
+yy118:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy140;
+       default:        goto yy52;
+       }
+yy119:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy140;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy121;
+       default:        goto yy52;
+       }
+yy120:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy140;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy121;
+       case '5':       goto yy141;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy118;
+       default:        goto yy52;
+       }
+yy121:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy140;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy118;
+       default:        goto yy52;
+       }
+yy122:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ':':       goto yy102;
+       default:        goto yy11;
+       }
+yy123:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy143;
+       case ':':       goto yy144;
+       default:        goto yy11;
+       }
+yy124:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy145;
+       case '1':       goto yy146;
+       case '2':       goto yy147;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy148;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy149;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy125:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy150;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy126:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy145;
+       case '1':       goto yy146;
+       case '2':       goto yy147;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy148;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy149;
+       default:        goto yy11;
+       }
+yy127:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy151;
+       case ':':       goto yy126;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy150;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy128:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy151;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy150;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy129:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy150;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy130:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy152;
+       default:        goto yy11;
+       }
+yy131:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy152;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy133;
+       default:        goto yy11;
+       }
+yy132:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy152;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy133;
+       case '5':       goto yy153;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy130;
+       default:        goto yy11;
+       }
+yy133:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy152;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy130;
+       default:        goto yy11;
+       }
+yy134:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy154;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy135:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy154;
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy136:
+       yyaccept = 14;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy30;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy137:
+       yyaccept = 14;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy30;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy139;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy138:
+       yyaccept = 14;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy30;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy139;
+       case '5':       goto yy155;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy136;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy139:
+       yyaccept = 14;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy30;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy136;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy140:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '0':       goto yy156;
+       case '1':       goto yy157;
+       case '2':       goto yy158;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy159;
+       default:        goto yy52;
+       }
+yy141:
+       yyaccept = 13;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '.':       goto yy140;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy118;
+       default:        goto yy52;
+       }
+yy142:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy102;
+       default:        goto yy11;
+       }
+yy143:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy160;
+       case ':':       goto yy144;
+       default:        goto yy11;
+       }
+yy144:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy161;
+       case ':':       goto yy162;
+       default:        goto yy11;
+       }
+yy145:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy146:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy165;
+       case ':':       goto yy164;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy147:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy165;
+       case '5':       goto yy166;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy167;
+       case ':':       goto yy164;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy148:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy167;
+       case ':':       goto yy164;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy149:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy150:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy168;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy151:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy168;
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy152:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy169;
+       case '1':       goto yy170;
+       case '2':       goto yy171;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy172;
+       default:        goto yy11;
+       }
+yy153:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy152;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy130;
+       default:        goto yy11;
+       }
+yy154:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy110;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy155:
+       yyaccept = 14;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy30;
+       case '#':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy136;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy38;
+       case '?':
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy156:
+       yyaccept = 15;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy52;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy157:
+       yyaccept = 15;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy52;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy159;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy158:
+       yyaccept = 15;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy52;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy159;
+       case '5':       goto yy173;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy156;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy159:
+       yyaccept = 15;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy52;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy156;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy160:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy174;
+       case ':':       goto yy144;
+       default:        goto yy11;
+       }
+yy161:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy175;
+       case ':':       goto yy176;
+       default:        goto yy11;
+       }
+yy162:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy177;
+       case '1':       goto yy178;
+       case '2':       goto yy179;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy180;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy181;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy163:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy182;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy164:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy177;
+       case '1':       goto yy178;
+       case '2':       goto yy179;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy180;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy181;
+       default:        goto yy11;
+       }
+yy165:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy183;
+       case ':':       goto yy164;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy182;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy166:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy183;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy182;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy167:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy182;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy168:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy126;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy169:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy184;
+       default:        goto yy11;
+       }
+yy170:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy184;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy172;
+       default:        goto yy11;
+       }
+yy171:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy184;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy172;
+       case '5':       goto yy185;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy169;
+       default:        goto yy11;
+       }
+yy172:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy184;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy169;
+       default:        goto yy11;
+       }
+yy173:
+       yyaccept = 15;
+       yych = *(in->mar = ++in->cur);
+       switch (yych) {
+       case '!':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy52;
+       case '#':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy16;
+       case '/':
+               in->yyt9 = in->yyt3;
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt14 = in->yyt19 = in->cur;
+               goto yy32;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy156;
+       case ':':
+               in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = NULL;
+               in->yyt14 = in->cur;
+               goto yy58;
+       case '?':
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy19;
+       default:
+               in->yyt9 = in->yyt3;
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt11 = in->yyt12 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt20 = NULL;
+               in->yyt3 = in->yyt14 = in->yyt19 = in->cur;
+               goto yy13;
+       }
+yy174:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy144;
+       default:        goto yy11;
+       }
+yy175:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy186;
+       case ':':       goto yy176;
+       default:        goto yy11;
+       }
+yy176:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy187;
+       case ':':       goto yy188;
+       default:        goto yy11;
+       }
+yy177:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy189;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy178:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy191;
+       case ':':       goto yy190;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy189;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy179:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy191;
+       case '5':       goto yy192;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy193;
+       case ':':       goto yy190;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy189;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy180:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy193;
+       case ':':       goto yy190;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy189;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy181:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy189;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy182:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy194;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy183:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy194;
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy184:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy195;
+       case '1':       goto yy196;
+       case '2':       goto yy197;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy198;
+       default:        goto yy11;
+       }
+yy185:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy184;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy169;
+       default:        goto yy11;
+       }
+yy186:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy199;
+       case ':':       goto yy176;
+       default:        goto yy11;
+       }
+yy187:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy200;
+       case ':':       goto yy201;
+       default:        goto yy11;
+       }
+yy188:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy202;
+       case '1':       goto yy203;
+       case '2':       goto yy204;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy205;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy206;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy189:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy207;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy190:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy202;
+       case '1':       goto yy203;
+       case '2':       goto yy204;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy205;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy206;
+       default:        goto yy11;
+       }
+yy191:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy208;
+       case ':':       goto yy190;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy207;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy192:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy208;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy207;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy193:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy207;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy194:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy164;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy195:
+       yych = *++in->cur;
+       switch (yych) {
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy196:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy198;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy197:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy198;
+       case '5':       goto yy209;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy195;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy198:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy195;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy199:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy176;
+       default:        goto yy11;
+       }
+yy200:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy210;
+       case ':':       goto yy201;
+       default:        goto yy11;
+       }
+yy201:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy211;
+       case ':':       goto yy212;
+       default:        goto yy11;
+       }
+yy202:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy213;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy203:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy215;
+       case ':':       goto yy214;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy213;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy204:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy215;
+       case '5':       goto yy216;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy217;
+       case ':':       goto yy214;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy213;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy205:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy217;
+       case ':':       goto yy214;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy213;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy206:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy213;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy207:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy218;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy208:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy218;
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy209:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy195;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy210:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy219;
+       case ':':       goto yy201;
+       default:        goto yy11;
+       }
+yy211:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy220;
+       case ':':       goto yy221;
+       default:        goto yy11;
+       }
+yy212:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy222;
+       case '1':       goto yy223;
+       case '2':       goto yy224;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy225;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy226;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy213:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy227;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy214:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy222;
+       case '1':       goto yy223;
+       case '2':       goto yy224;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy225;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy226;
+       default:        goto yy11;
+       }
+yy215:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy228;
+       case ':':       goto yy214;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy227;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy216:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy228;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy227;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy217:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy227;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy218:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy190;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy219:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy201;
+       default:        goto yy11;
+       }
+yy220:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy229;
+       case ':':       goto yy221;
+       default:        goto yy11;
+       }
+yy221:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':       goto yy230;
+       case '1':       goto yy231;
+       case '2':       goto yy232;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy233;
+       case ':':       goto yy234;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy235;
+       default:        goto yy11;
+       }
+yy222:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy223:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy238;
+       case ':':       goto yy237;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy224:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy238;
+       case '5':       goto yy239;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy240;
+       case ':':       goto yy237;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy225:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy240;
+       case ':':       goto yy237;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy226:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy227:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy241;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy228:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy241;
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy229:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy242;
+       case ':':       goto yy221;
+       default:        goto yy11;
+       }
+yy230:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy243;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy231:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy245;
+       case ':':       goto yy244;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy243;
+       default:        goto yy11;
+       }
+yy232:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy245;
+       case '5':       goto yy246;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy247;
+       case ':':       goto yy244;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy243;
+       default:        goto yy11;
+       }
+yy233:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy247;
+       case ':':       goto yy244;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy243;
+       default:        goto yy11;
+       }
+yy234:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy248;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy235:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy243;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy236:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy249;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy237:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy248;
+       default:        goto yy11;
+       }
+yy238:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy250;
+       case ':':       goto yy237;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy249;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy239:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy250;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy249;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy240:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy249;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy241:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy214;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy242:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy221;
+       default:        goto yy11;
+       }
+yy243:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy251;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy244:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy248;
+       case ':':       goto yy195;
+       default:        goto yy11;
+       }
+yy245:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy252;
+       case ':':       goto yy244;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy251;
+       default:        goto yy11;
+       }
+yy246:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy252;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy251;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy247:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy251;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy248:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy253;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy249:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy254;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy250:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy254;
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy251:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy255;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy252:
+       yych = *++in->cur;
+       switch (yych) {
+       case '.':       goto yy108;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy255;
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy253:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy256;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy254:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy237;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+yy255:
+       yych = *++in->cur;
+       switch (yych) {
+       case ':':       goto yy244;
+       default:        goto yy11;
+       }
+yy256:
+       yych = *++in->cur;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy195;
+       case ']':       goto yy92;
+       default:        goto yy11;
+       }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    long count;
+    input_t in;
+    init_input(&in, argv[1]);
+
+    switch (lex(&in, &count)) {
+        case 0:  fprintf(stderr, "ok, parsed %ld URIs\n", count); break;
+        case 1:  fprintf(stderr, "syntax error\n"); break;
+        case 2:  fprintf(stderr, "yyfill error\n"); break;
+        default: fprintf(stderr, "panic\n"); break;
+    }
+
+    free_input(&in);
+    return 0;
+}
+re2c: warning: line 135: tag 'u1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'u2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h3' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h4' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h5' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'h6' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'r1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 135: tag 'p3' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
diff --git a/re2c/test/examples/10_uri_rfc3986.i--tags.re b/re2c/test/examples/10_uri_rfc3986.i--tags.re
new file mode 100644 (file)
index 0000000..c143813
--- /dev/null
@@ -0,0 +1,169 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/*!max:re2c*/
+static const size_t SIZE = 4096;
+
+typedef struct {
+    FILE *file;
+    char *buf;
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    /*!stags:re2c format = "char *@@;\n"; */
+    int eof;
+} input_t;
+
+static void init_input(input_t *in, const char *fname)
+{
+    in->file = fopen(fname, "r");
+    in->buf = (char*) malloc(SIZE + YYMAXFILL);
+    in->lim = in->buf + SIZE;
+    in->cur = in->lim;
+    in->mar = in->lim;
+    in->tok = in->lim;
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
+    in->eof = 0;
+}
+
+static void free_input(input_t *in)
+{
+    free(in->buf);
+    fclose(in->file);
+}
+
+static int fill(input_t *in, size_t need)
+{
+    size_t free;
+    if (in->eof) return 1;
+
+    free = in->tok - in->buf;
+    if (free < need) return 2;
+
+    memmove(in->buf, in->tok, in->lim - in->tok);
+    in->lim -= free;
+    in->cur -= free;
+    in->mar -= free;
+    in->tok -= free;
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    in->lim += fread(in->lim, 1, free, in->file);
+    if (in->lim < in->buf + SIZE) {
+        in->eof = 1;
+        memset(in->lim, 0, YYMAXFILL);
+        in->lim += YYMAXFILL;
+    }
+    return 0;
+}
+
+static int lex(input_t *in, long *count)
+{
+    const char
+        *s1, *u1, *h1, *h3, *h5, *r1, *p1, *p3, *q1, *f1,
+        *s2, *u2, *h2, *h4, *h6, *r2, *p2, *p4, *q2, *f2;
+    long c;
+
+    c = 0;
+loop:
+    in->tok = in->cur;
+/*!re2c
+
+    re2c:define:YYCTYPE      = char;
+    re2c:define:YYCURSOR     = in->cur;
+    re2c:define:YYMARKER     = in->mar;
+    re2c:define:YYLIMIT      = in->lim;
+    re2c:define:YYFILL       = "if (fill(in, @@) != 0) return 2;";
+    re2c:define:YYFILL:naked = 1;
+    re2c:tags:expression     = "in->@@";
+
+    end = "\x00";
+    eol = "\n";
+
+    alpha       = [a-zA-Z];
+    digit       = [0-9];
+    hexdigit    = [0-9a-fA-F];
+    unreserved  = alpha | digit | [-._~];
+    pct_encoded = "%" hexdigit{2};
+    sub_delims  = [!$&'()*+,;=];
+    pchar       = unreserved | pct_encoded | sub_delims | [:@];
+
+    scheme = @s1 alpha (alpha | digit | [-+.])* @s2;
+    userinfo = @u1 (unreserved | pct_encoded | sub_delims | ":")* @u2;
+    dec_octet
+        = digit
+        | [\x31-\x39] digit
+        | "1" digit{2}
+        | "2" [\x30-\x34] digit
+        | "25" [\x30-\x35];
+    ipv4address = dec_octet "." dec_octet "." dec_octet "." dec_octet;
+    h16         = hexdigit{1,4};
+    ls32        = h16 ":" h16 | ipv4address;
+    ipv6address
+        =                            (h16 ":"){6} ls32
+        |                       "::" (h16 ":"){5} ls32
+        | (               h16)? "::" (h16 ":"){4} ls32
+        | ((h16 ":"){0,1} h16)? "::" (h16 ":"){3} ls32
+        | ((h16 ":"){0,2} h16)? "::" (h16 ":"){2} ls32
+        | ((h16 ":"){0,3} h16)? "::"  h16 ":"     ls32
+        | ((h16 ":"){0,4} h16)? "::"              ls32
+        | ((h16 ":"){0,5} h16)? "::"              h16
+        | ((h16 ":"){0,6} h16)? "::";
+    ipvfuture   = "v" hexdigit+ "." (unreserved | sub_delims | ":" )+;
+    ip_literal  = "[" ( ipv6address | ipvfuture ) "]";
+    reg_name    = (unreserved | pct_encoded | sub_delims)*;
+    host
+        = @h1 ip_literal  @h2
+        | @h3 ipv4address @h4
+        | @h5 reg_name    @h6;
+    port      = @r1 digit* @r2;
+    authority = (userinfo "@")? host (":" port)?;
+    path_abempty  = ("/" pchar*)*;
+    path_absolute = "/" (pchar+ ("/" pchar*)*)?;
+    path_rootless = pchar+ ("/" pchar*)*;
+    path_empty    = "";
+    hier_part
+        = "//" authority @p1 path_abempty @p2
+        | @p3 (path_absolute | path_rootless | path_empty) @p4;
+    query    = @q1 (pchar | [/?])* @q2;
+    fragment = @f1 (pchar | [/?])* @f2;
+    uri = scheme ":" hier_part ("?" query)? ("#" fragment)?;
+
+    *   { return 1; }
+    end { *count = c; return 0; }
+    eol { goto loop; }
+    uri {
+        ++c;
+        printf("URI %ld:\n", c);
+        printf("  scheme:   %.*s\n", (int)(s2 - s1), s1);
+        if (u1) printf("  userinfo: %.*s\n", (int)(u2 - u1), u1);
+        if (h1) printf("  host:     %.*s (IP literal)\n", (int)(h2 - h1), h1);
+        if (h3) printf("  host:     %.*s (IPv4)\n", (int)(h4 - h3), h3);
+        if (h5) printf("  host:     %.*s (name)\n", (int)(h6 - h5), h5);
+        if (r1) printf("  port:     %.*s\n", (int)(r2 - r1), r1);
+        if (p1) printf("  path:     %.*s\n", (int)(p2 - p1), p1);
+        if (p3) printf("  path:     %.*s\n", (int)(p4 - p3), p3);
+        if (q1) printf("  query:    %.*s\n", (int)(q2 - q1), q1);
+        if (f1) printf("  fragment: %.*s\n", (int)(f2 - f1), f1);
+        printf("\n");
+        goto loop;
+    }
+*/
+}
+
+int main(int argc, char **argv)
+{
+    long count;
+    input_t in;
+    init_input(&in, argv[1]);
+
+    switch (lex(&in, &count)) {
+        case 0:  fprintf(stderr, "ok, parsed %ld URIs\n", count); break;
+        case 1:  fprintf(stderr, "syntax error\n"); break;
+        case 2:  fprintf(stderr, "yyfill error\n"); break;
+        default: fprintf(stderr, "panic\n"); break;
+    }
+
+    free_input(&in);
+    return 0;
+}
diff --git a/re2c/test/examples/11_http_rfc7230.i--tags.c b/re2c/test/examples/11_http_rfc7230.i--tags.c
new file mode 100644 (file)
index 0000000..0d0c8a5
--- /dev/null
@@ -0,0 +1,13267 @@
+/* Generated by re2c */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct mtag_t {
+    struct mtag_t *pred;
+    long dist;
+} mtag_t;
+
+typedef struct mtagpool_t {
+    mtag_t *head;
+    mtag_t *next;
+    mtag_t *last;
+} mtagpool_t;
+
+typedef struct {
+    FILE *file;
+    char *buf;
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    char *yyt1;
+char *yyt10;
+char *yyt11;
+char *yyt12;
+char *yyt13;
+char *yyt14;
+char *yyt15;
+char *yyt16;
+char *yyt17;
+char *yyt18;
+char *yyt19;
+char *yyt2;
+char *yyt20;
+char *yyt21;
+char *yyt22;
+char *yyt23;
+char *yyt24;
+char *yyt25;
+char *yyt26;
+char *yyt27;
+char *yyt28;
+char *yyt29;
+char *yyt3;
+char *yyt30;
+char *yyt31;
+char *yyt32;
+char *yyt33;
+char *yyt34;
+char *yyt35;
+char *yyt4;
+char *yyt5;
+char *yyt6;
+char *yyt7;
+char *yyt8;
+char *yyt9;
+
+    mtag_t *yyt36;
+mtag_t *yyt37;
+mtag_t *yyt38;
+mtag_t *yyt39;
+mtag_t *yyt40;
+mtag_t *yyt41;
+mtag_t *yyt42;
+
+    mtagpool_t mtp;
+    int eof;
+} input_t;
+
+static void mtagpool_clear(mtagpool_t *mtp, input_t *in)
+{
+    mtp->next = mtp->head;
+    in->yyt36 = 0;
+in->yyt37 = 0;
+in->yyt38 = 0;
+in->yyt39 = 0;
+in->yyt40 = 0;
+in->yyt41 = 0;
+in->yyt42 = 0;
+
+}
+
+static void mtagpool_init(mtagpool_t *mtp)
+{
+    static const unsigned size = 1024 * 1024;
+    mtp->head = (mtag_t*)malloc(size * sizeof(mtag_t));
+    mtp->next = mtp->head;
+    mtp->last = mtp->head + size;
+}
+
+static void mtagpool_free(mtagpool_t *mtp)
+{
+    free(mtp->head);
+    mtp->head = mtp->next = mtp->last = NULL;
+}
+
+static mtag_t *mtagpool_next(mtagpool_t *mtp)
+{
+    unsigned size;
+    mtag_t *head;
+
+    if (mtp->next < mtp->last) return mtp->next++;
+
+    size = mtp->last - mtp->head;
+    head = (mtag_t*)malloc(2 * size * sizeof(mtag_t));
+    memcpy(head, mtp->head, size * sizeof(mtag_t));
+    free(mtp->head);
+    mtp->head = head;
+    mtp->next = head + size;
+    mtp->last = head + size * 2;
+    return mtp->next++;
+}
+
+static void mtag(mtag_t **pmt, const char *b, const char *t, mtagpool_t *mtp)
+{
+    mtag_t *mt = mtagpool_next(mtp);
+    mt->pred = *pmt;
+    mt->dist = t - b;
+    *pmt = mt;
+}
+
+#define YYMAXFILL 66
+
+static const size_t SIZE = 4096;
+
+static void init_input(input_t *in, const char *fname)
+{
+    in->file = fopen(fname, "r");
+    in->buf = (char*) malloc(SIZE + YYMAXFILL);
+    in->lim = in->buf + SIZE;
+    in->cur = in->lim;
+    in->mar = in->lim;
+    in->tok = in->lim;
+    in->yyt1 = 0;
+in->yyt10 = 0;
+in->yyt11 = 0;
+in->yyt12 = 0;
+in->yyt13 = 0;
+in->yyt14 = 0;
+in->yyt15 = 0;
+in->yyt16 = 0;
+in->yyt17 = 0;
+in->yyt18 = 0;
+in->yyt19 = 0;
+in->yyt2 = 0;
+in->yyt20 = 0;
+in->yyt21 = 0;
+in->yyt22 = 0;
+in->yyt23 = 0;
+in->yyt24 = 0;
+in->yyt25 = 0;
+in->yyt26 = 0;
+in->yyt27 = 0;
+in->yyt28 = 0;
+in->yyt29 = 0;
+in->yyt3 = 0;
+in->yyt30 = 0;
+in->yyt31 = 0;
+in->yyt32 = 0;
+in->yyt33 = 0;
+in->yyt34 = 0;
+in->yyt35 = 0;
+in->yyt4 = 0;
+in->yyt5 = 0;
+in->yyt6 = 0;
+in->yyt7 = 0;
+in->yyt8 = 0;
+in->yyt9 = 0;
+
+    in->yyt36 = 0;
+in->yyt37 = 0;
+in->yyt38 = 0;
+in->yyt39 = 0;
+in->yyt40 = 0;
+in->yyt41 = 0;
+in->yyt42 = 0;
+
+    mtagpool_init(&in->mtp);
+    in->eof = 0;
+}
+
+static void free_input(input_t *in)
+{
+    fclose(in->file);
+    free(in->buf);
+    mtagpool_free(&in->mtp);
+}
+
+static int fill(input_t *in, size_t need)
+{
+    size_t free;
+    if (in->eof) return 1;
+
+    free = in->tok - in->buf;
+    if (free < need) return 2;
+
+    memmove(in->buf, in->tok, in->lim - in->tok);
+    in->lim -= free;
+    in->cur -= free;
+    in->mar -= free;
+    in->tok -= free;
+    if (in->yyt1) in->yyt1 -= free;
+if (in->yyt10) in->yyt10 -= free;
+if (in->yyt11) in->yyt11 -= free;
+if (in->yyt12) in->yyt12 -= free;
+if (in->yyt13) in->yyt13 -= free;
+if (in->yyt14) in->yyt14 -= free;
+if (in->yyt15) in->yyt15 -= free;
+if (in->yyt16) in->yyt16 -= free;
+if (in->yyt17) in->yyt17 -= free;
+if (in->yyt18) in->yyt18 -= free;
+if (in->yyt19) in->yyt19 -= free;
+if (in->yyt2) in->yyt2 -= free;
+if (in->yyt20) in->yyt20 -= free;
+if (in->yyt21) in->yyt21 -= free;
+if (in->yyt22) in->yyt22 -= free;
+if (in->yyt23) in->yyt23 -= free;
+if (in->yyt24) in->yyt24 -= free;
+if (in->yyt25) in->yyt25 -= free;
+if (in->yyt26) in->yyt26 -= free;
+if (in->yyt27) in->yyt27 -= free;
+if (in->yyt28) in->yyt28 -= free;
+if (in->yyt29) in->yyt29 -= free;
+if (in->yyt3) in->yyt3 -= free;
+if (in->yyt30) in->yyt30 -= free;
+if (in->yyt31) in->yyt31 -= free;
+if (in->yyt32) in->yyt32 -= free;
+if (in->yyt33) in->yyt33 -= free;
+if (in->yyt34) in->yyt34 -= free;
+if (in->yyt35) in->yyt35 -= free;
+if (in->yyt4) in->yyt4 -= free;
+if (in->yyt5) in->yyt5 -= free;
+if (in->yyt6) in->yyt6 -= free;
+if (in->yyt7) in->yyt7 -= free;
+if (in->yyt8) in->yyt8 -= free;
+if (in->yyt9) in->yyt9 -= free;
+
+    in->lim += fread(in->lim, 1, free, in->file);
+    if (in->lim < in->buf + SIZE) {
+        in->eof = 1;
+        memset(in->lim, 0, YYMAXFILL);
+        in->lim += YYMAXFILL;
+    }
+    return 0;
+}
+
+static void print_headers(const char *tok,
+    const mtag_t *h1, const mtag_t *h2,
+    const mtag_t *h3, const mtag_t *h4,
+    const mtag_t *h5)
+{
+    if (!h1) return;
+    print_headers(tok, h1->pred, h2->pred, h3->pred, h4->pred, h5->pred);
+    printf("%.*s%.*s%.*s%.*s\n",
+        (int)(h2->dist - h1->dist), tok + h1->dist,
+        (int)(h3->dist - h2->dist), tok + h2->dist,
+        (int)(h4->dist - h3->dist), tok + h3->dist,
+        (int)(h5->dist - h4->dist), tok + h4->dist);
+}
+
+#define YYCTYPE        char
+#define YYCURSOR       in->cur
+#define YYMARKER       in->mar
+#define YYLIMIT        in->lim
+#define YYMTAGP(mt)    mtag(&mt, in->tok, in->cur, &in->mtp)
+#define YYMTAGN(mt)    mtag(&mt, in->tok, NULL, &in->mtp)
+#define YYFILL(n)      if (fill(in, n) != 0) return 2;
+
+static int lex(input_t *in, long *count)
+{
+    const char *of, *au, *at,
+        *hs1, *hs3, *m1, *p1, *p3, *p5, *q1, *q3,
+        *hs2, *hs4, *m2, *p2, *p4, *p6, *q2, *q4,
+        *r1, *r3, *rp1, *s1, *st1, *u1, *u3, *v1, *v3,
+        *r2, *r4, *rp2, *s2, *st2, *u2, *u4, *v2, *v4;
+    mtag_t *h1, *h2, *h3, *h4, *h5;
+    long c;
+
+    c = 0;;
+    of = au = at
+        = hs1 = hs3 = m1 = p1 = p3 = p5 = q1 = q3
+        = hs2 = hs4 = m2 = p2 = p4 = p6 = q2 = q4
+        = r1 = r3 = rp1 = s1 = st1 = u1 = u3 = v1 = v3
+        = r2 = r4 = rp2 = s2 = st2 = u2 = u4 = v2 = v4 = NULL;
+loop:
+    in->tok = in->cur;
+
+{
+       YYCTYPE yych;
+       if ((YYLIMIT - YYCURSOR) < 66) YYFILL(66);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\n':      goto yy6;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':
+               in->yyt1 = YYCURSOR;
+               goto yy8;
+       case 'H':
+               in->yyt1 = in->yyt30 = YYCURSOR;
+               goto yy9;
+       default:        goto yy4;
+       }
+yy2:
+       ++YYCURSOR;
+       { *count = c; return 0; }
+yy4:
+       ++YYCURSOR;
+yy5:
+       { return 1; }
+yy6:
+       ++YYCURSOR;
+       { goto loop; }
+yy8:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case ' ':
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':       goto yy13;
+       default:        goto yy5;
+       }
+yy9:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case ' ':
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':       goto yy13;
+       case 'T':       goto yy14;
+       default:        goto yy5;
+       }
+yy10:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt3 = in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case '_':
+       case '~':
+               in->yyt4 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt5 = in->yyt11 = YYCURSOR;
+               goto yy16;
+       case '%':
+               in->yyt4 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt5 = in->yyt11 = YYCURSOR;
+               goto yy18;
+       case '/':
+               in->yyt27 = YYCURSOR;
+               goto yy19;
+       case ':':
+               in->yyt4 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt5 = in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy21;
+       case '?':
+               in->yyt27 = in->yyt28 = YYCURSOR;
+               goto yy22;
+       case '@':
+               in->yyt3 = in->yyt5 = in->yyt10 = YYCURSOR;
+               goto yy23;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               in->yyt4 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt5 = in->yyt11 = in->yyt14 = YYCURSOR;
+               goto yy24;
+       case '[':
+               in->yyt4 = in->yyt10 = NULL;
+               in->yyt3 = in->yyt11 = YYCURSOR;
+               goto yy26;
+       default:        goto yy11;
+       }
+yy11:
+       YYCURSOR = YYMARKER;
+       goto yy5;
+yy12:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 62) YYFILL(62);
+       yych = *YYCURSOR;
+yy13:
+       switch (yych) {
+       case ' ':
+               in->yyt2 = YYCURSOR;
+               goto yy10;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':       goto yy12;
+       default:        goto yy11;
+       }
+yy14:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'T':       goto yy27;
+       default:        goto yy13;
+       }
+yy15:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'H':
+               in->yyt8 = YYCURSOR;
+               goto yy28;
+       default:        goto yy11;
+       }
+yy16:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 61) YYFILL(61);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy16;
+       case '%':       goto yy18;
+       case ':':
+               in->yyt12 = YYCURSOR;
+               goto yy21;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy23;
+       default:        goto yy11;
+       }
+yy18:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy29;
+       default:        goto yy11;
+       }
+yy19:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt29 = NULL;
+               in->yyt28 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy19;
+       case '%':       goto yy30;
+       case '?':
+               in->yyt28 = YYCURSOR;
+               goto yy22;
+       default:        goto yy11;
+       }
+yy21:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = in->yyt13 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt13 = YYCURSOR;
+               goto yy34;
+       default:        goto yy32;
+       }
+yy22:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = NULL;
+               in->yyt7 = in->yyt29 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt29 = YYCURSOR;
+               goto yy36;
+       case '%':
+               in->yyt29 = YYCURSOR;
+               goto yy38;
+       default:        goto yy11;
+       }
+yy23:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt11 = YYCURSOR;
+               goto yy39;
+       case '%':
+               in->yyt11 = YYCURSOR;
+               goto yy41;
+       case ':':
+               in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy42;
+       case '[':
+               in->yyt4 = in->yyt5;
+               in->yyt11 = YYCURSOR;
+               goto yy26;
+       default:        goto yy11;
+       }
+yy24:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 65) YYFILL(65);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case ',':
+       case ';':
+       case '=':
+       case '_':
+       case '~':       goto yy16;
+       case '%':       goto yy18;
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy24;
+       case ':':
+               in->yyt12 = in->yyt15 = YYCURSOR;
+               goto yy43;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy23;
+       default:        goto yy11;
+       }
+yy26:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy44;
+       case ':':       goto yy45;
+       case 'v':       goto yy46;
+       default:        goto yy11;
+       }
+yy27:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'P':       goto yy47;
+       default:        goto yy13;
+       }
+yy28:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'T':       goto yy48;
+       default:        goto yy11;
+       }
+yy29:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy16;
+       default:        goto yy11;
+       }
+yy30:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy49;
+       default:        goto yy11;
+       }
+yy31:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 60) YYFILL(60);
+       yych = *YYCURSOR;
+yy32:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy31;
+       case '%':       goto yy33;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy23;
+       default:        goto yy11;
+       }
+yy33:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy50;
+       default:        goto yy11;
+       }
+yy34:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 60) YYFILL(60);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy31;
+       case '%':       goto yy33;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy34;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy23;
+       default:        goto yy11;
+       }
+yy36:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = NULL;
+               in->yyt7 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy36;
+       case '%':       goto yy38;
+       default:        goto yy11;
+       }
+yy38:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy51;
+       default:        goto yy11;
+       }
+yy39:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy39;
+       case '%':       goto yy41;
+       case ':':
+               in->yyt12 = YYCURSOR;
+               goto yy42;
+       default:        goto yy11;
+       }
+yy41:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy52;
+       default:        goto yy11;
+       }
+yy42:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = in->yyt13 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt13 = YYCURSOR;
+               goto yy53;
+       default:        goto yy11;
+       }
+yy43:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = in->yyt13 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt24 = YYCURSOR;
+               goto yy55;
+       case '%':
+               in->yyt24 = YYCURSOR;
+               goto yy57;
+       case '/':
+               in->yyt24 = YYCURSOR;
+               goto yy58;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt13 = in->yyt24 = YYCURSOR;
+               goto yy59;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt24 = in->yyt25 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt10 = in->yyt24 = YYCURSOR;
+               goto yy62;
+       default:        goto yy11;
+       }
+yy44:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy63;
+       case ':':       goto yy64;
+       default:        goto yy11;
+       }
+yy45:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy65;
+       default:        goto yy11;
+       }
+yy46:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy11;
+       default:        goto yy67;
+       }
+yy47:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '/':       goto yy68;
+       default:        goto yy13;
+       }
+yy48:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'T':       goto yy69;
+       default:        goto yy11;
+       }
+yy49:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy19;
+       default:        goto yy11;
+       }
+yy50:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy31;
+       default:        goto yy11;
+       }
+yy51:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy36;
+       default:        goto yy11;
+       }
+yy52:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy39;
+       default:        goto yy11;
+       }
+yy53:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy53;
+       default:        goto yy11;
+       }
+yy55:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 60) YYFILL(60);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy55;
+       case '%':       goto yy57;
+       case '/':       goto yy70;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy62;
+       default:        goto yy11;
+       }
+yy57:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy72;
+       default:        goto yy11;
+       }
+yy58:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '/':       goto yy74;
+       default:        goto yy71;
+       }
+yy59:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 60) YYFILL(60);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy55;
+       case '%':       goto yy57;
+       case '/':       goto yy70;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy59;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt10 = YYCURSOR;
+               goto yy62;
+       default:        goto yy11;
+       }
+yy61:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt6 = in->yyt26 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt26 = YYCURSOR;
+               goto yy75;
+       case '%':
+               in->yyt26 = YYCURSOR;
+               goto yy77;
+       default:        goto yy11;
+       }
+yy62:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt11 = YYCURSOR;
+               goto yy78;
+       case '%':
+               in->yyt11 = YYCURSOR;
+               goto yy80;
+       case ':':
+               in->yyt11 = in->yyt12 = YYCURSOR;
+               goto yy81;
+       case '[':
+               in->yyt4 = in->yyt5;
+               in->yyt11 = YYCURSOR;
+               goto yy26;
+       default:        goto yy79;
+       }
+yy63:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy82;
+       case ':':       goto yy64;
+       default:        goto yy11;
+       }
+yy64:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy83;
+       case ':':       goto yy84;
+       default:        goto yy11;
+       }
+yy65:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy85;
+       case '1':       goto yy86;
+       case '2':       goto yy87;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy88;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy89;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy66:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+yy67:
+       switch (yych) {
+       case '.':       goto yy91;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy66;
+       default:        goto yy11;
+       }
+yy68:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy92;
+       default:        goto yy11;
+       }
+yy69:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'P':       goto yy93;
+       default:        goto yy11;
+       }
+yy70:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+yy71:
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy70;
+       case '%':       goto yy73;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy72:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy55;
+       default:        goto yy11;
+       }
+yy73:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy94;
+       default:        goto yy11;
+       }
+yy74:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt16 = in->yyt17 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt16 = in->yyt17 = NULL;
+               in->yyt3 = in->yyt18 = YYCURSOR;
+               goto yy95;
+       case '%':
+               in->yyt16 = in->yyt17 = NULL;
+               in->yyt3 = in->yyt18 = YYCURSOR;
+               goto yy97;
+       case '/':
+               in->yyt16 = in->yyt17 = in->yyt20 = in->yyt21 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case ':':
+               in->yyt16 = in->yyt17 = NULL;
+               in->yyt3 = in->yyt18 = in->yyt19 = YYCURSOR;
+               goto yy100;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt3 = in->yyt17 = YYCURSOR;
+               goto yy101;
+       case '[':
+               in->yyt16 = in->yyt17 = NULL;
+               in->yyt18 = YYCURSOR;
+               goto yy102;
+       default:        goto yy11;
+       }
+yy75:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt6 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '?':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy75;
+       case '%':       goto yy77;
+       default:        goto yy11;
+       }
+yy77:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy103;
+       default:        goto yy11;
+       }
+yy78:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+yy79:
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt12 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy78;
+       case '%':       goto yy80;
+       case '/':
+       case '@':       goto yy70;
+       case ':':
+               in->yyt12 = YYCURSOR;
+               goto yy81;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy80:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy104;
+       default:        goto yy11;
+       }
+yy81:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = in->yyt13 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt13 = YYCURSOR;
+               goto yy105;
+       default:        goto yy71;
+       }
+yy82:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy107;
+       case ':':       goto yy64;
+       default:        goto yy11;
+       }
+yy83:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy108;
+       case ':':       goto yy109;
+       default:        goto yy11;
+       }
+yy84:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy110;
+       case '1':       goto yy111;
+       case '2':       goto yy112;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy113;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy114;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy85:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy116;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy86:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy118;
+       case ':':       goto yy117;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy116;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy87:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy118;
+       case '5':       goto yy119;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy120;
+       case ':':       goto yy117;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy116;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy88:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy120;
+       case ':':       goto yy117;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy116;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy89:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy116;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy90:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt5 = in->yyt6 = in->yyt7 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt12 = YYCURSOR;
+               goto yy15;
+       case ':':
+               in->yyt5 = in->yyt4;
+               in->yyt12 = YYCURSOR;
+               goto yy42;
+       default:        goto yy11;
+       }
+yy91:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ']':       goto yy11;
+       default:        goto yy122;
+       }
+yy92:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy123;
+       default:        goto yy11;
+       }
+yy93:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '/':       goto yy124;
+       default:        goto yy11;
+       }
+yy94:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy70;
+       default:        goto yy11;
+       }
+yy95:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 62) YYFILL(62);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy95;
+       case '%':       goto yy97;
+       case '/':
+               in->yyt20 = in->yyt21 = NULL;
+               in->yyt19 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case ':':
+               in->yyt19 = YYCURSOR;
+               goto yy100;
+       case '?':
+               in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt17 = YYCURSOR;
+               goto yy101;
+       default:        goto yy11;
+       }
+yy97:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy125;
+       default:        goto yy11;
+       }
+yy98:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy98;
+       case '%':       goto yy126;
+       case '?':
+               in->yyt24 = in->yyt25 = NULL;
+               in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy100:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '/':
+               in->yyt20 = in->yyt21 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt20 = YYCURSOR;
+               goto yy130;
+       case '?':
+               in->yyt24 = in->yyt25 = NULL;
+               in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy128;
+       }
+yy101:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt16 = in->yyt3;
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':
+               in->yyt18 = YYCURSOR;
+               goto yy132;
+       case '%':
+               in->yyt18 = YYCURSOR;
+               goto yy134;
+       case '/':
+               in->yyt16 = in->yyt3;
+               in->yyt20 = in->yyt21 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case ':':
+               in->yyt18 = in->yyt19 = YYCURSOR;
+               goto yy135;
+       case '?':
+               in->yyt16 = in->yyt3;
+               in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = NULL;
+               in->yyt18 = in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       case '[':
+               in->yyt16 = in->yyt3;
+               in->yyt18 = YYCURSOR;
+               goto yy102;
+       default:        goto yy11;
+       }
+yy102:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy136;
+       case ':':       goto yy137;
+       case 'v':       goto yy138;
+       default:        goto yy11;
+       }
+yy103:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy75;
+       default:        goto yy11;
+       }
+yy104:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy78;
+       default:        goto yy11;
+       }
+yy105:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt4 = in->yyt5;
+               in->yyt6 = in->yyt7 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt5 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '/':
+       case ':':
+       case ';':
+       case '=':
+       case '@':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy70;
+       case '%':       goto yy73;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy105;
+       case '?':
+               in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = NULL;
+               in->yyt25 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy107:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy64;
+       default:        goto yy11;
+       }
+yy108:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy139;
+       case ':':       goto yy109;
+       default:        goto yy11;
+       }
+yy109:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy140;
+       case ':':       goto yy141;
+       default:        goto yy11;
+       }
+yy110:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy111:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy144;
+       case ':':       goto yy143;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy112:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy144;
+       case '5':       goto yy145;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy146;
+       case ':':       goto yy143;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy113:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy146;
+       case ':':       goto yy143;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy114:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy142;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy115:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy147;
+       case '1':       goto yy148;
+       case '2':       goto yy149;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy150;
+       default:        goto yy11;
+       }
+yy116:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy151;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy117:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy110;
+       case '1':       goto yy111;
+       case '2':       goto yy112;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy113;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy114;
+       default:        goto yy11;
+       }
+yy118:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy152;
+       case ':':       goto yy117;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy151;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy119:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy152;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy151;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy120:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy151;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy121:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+yy122:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy121;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy123:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy153;
+       default:        goto yy11;
+       }
+yy124:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy154;
+       default:        goto yy11;
+       }
+yy125:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy95;
+       default:        goto yy11;
+       }
+yy126:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy155;
+       default:        goto yy11;
+       }
+yy127:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 61) YYFILL(61);
+       yych = *YYCURSOR;
+yy128:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy127;
+       case '%':       goto yy129;
+       case '@':
+               in->yyt17 = YYCURSOR;
+               goto yy101;
+       default:        goto yy11;
+       }
+yy129:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy156;
+       default:        goto yy11;
+       }
+yy130:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 61) YYFILL(61);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy127;
+       case '%':       goto yy129;
+       case '/':
+               in->yyt21 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy130;
+       case '?':
+               in->yyt24 = in->yyt25 = NULL;
+               in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       case '@':
+               in->yyt17 = YYCURSOR;
+               goto yy101;
+       default:        goto yy11;
+       }
+yy132:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt16 = in->yyt3;
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy132;
+       case '%':       goto yy134;
+       case '/':
+               in->yyt16 = in->yyt3;
+               in->yyt20 = in->yyt21 = NULL;
+               in->yyt19 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case ':':
+               in->yyt19 = YYCURSOR;
+               goto yy135;
+       case '?':
+               in->yyt16 = in->yyt3;
+               in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy134:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy157;
+       default:        goto yy11;
+       }
+yy135:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt16 = in->yyt3;
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '/':
+               in->yyt16 = in->yyt3;
+               in->yyt20 = in->yyt21 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt20 = YYCURSOR;
+               goto yy158;
+       case '?':
+               in->yyt16 = in->yyt3;
+               in->yyt24 = in->yyt25 = NULL;
+               in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy136:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy160;
+       case ':':       goto yy161;
+       default:        goto yy11;
+       }
+yy137:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy162;
+       default:        goto yy11;
+       }
+yy138:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy11;
+       default:        goto yy164;
+       }
+yy139:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy165;
+       case ':':       goto yy109;
+       default:        goto yy11;
+       }
+yy140:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy166;
+       case ':':       goto yy167;
+       default:        goto yy11;
+       }
+yy141:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy168;
+       case '1':       goto yy169;
+       case '2':       goto yy170;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy171;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy172;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy142:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy173;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy143:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy168;
+       case '1':       goto yy169;
+       case '2':       goto yy170;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy171;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy172;
+       default:        goto yy11;
+       }
+yy144:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy174;
+       case ':':       goto yy143;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy173;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy145:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy174;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy173;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy146:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy173;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy147:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy175;
+       default:        goto yy11;
+       }
+yy148:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy175;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy150;
+       default:        goto yy11;
+       }
+yy149:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy175;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy150;
+       case '5':       goto yy176;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy147;
+       default:        goto yy11;
+       }
+yy150:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy175;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy147;
+       default:        goto yy11;
+       }
+yy151:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy177;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy152:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy177;
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy153:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt31 = YYCURSOR;
+               goto yy178;
+       default:        goto yy11;
+       }
+yy154:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy179;
+       default:        goto yy11;
+       }
+yy155:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy98;
+       default:        goto yy11;
+       }
+yy156:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy127;
+       default:        goto yy11;
+       }
+yy157:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy132;
+       default:        goto yy11;
+       }
+yy158:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt16 = in->yyt3;
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '/':
+               in->yyt16 = in->yyt3;
+               in->yyt21 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy158;
+       case '?':
+               in->yyt16 = in->yyt3;
+               in->yyt24 = in->yyt25 = NULL;
+               in->yyt21 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy160:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy180;
+       case ':':       goto yy161;
+       default:        goto yy11;
+       }
+yy161:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy181;
+       case ':':       goto yy182;
+       default:        goto yy11;
+       }
+yy162:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy183;
+       case '1':       goto yy184;
+       case '2':       goto yy185;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy186;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy187;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy163:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+yy164:
+       switch (yych) {
+       case '.':       goto yy189;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy163;
+       default:        goto yy11;
+       }
+yy165:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy109;
+       default:        goto yy11;
+       }
+yy166:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy190;
+       case ':':       goto yy167;
+       default:        goto yy11;
+       }
+yy167:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy191;
+       case ':':       goto yy192;
+       default:        goto yy11;
+       }
+yy168:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy193;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy169:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy195;
+       case ':':       goto yy194;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy193;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy170:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy195;
+       case '5':       goto yy196;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy197;
+       case ':':       goto yy194;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy193;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy171:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy197;
+       case ':':       goto yy194;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy193;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy172:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy193;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy173:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy198;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy174:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy198;
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy175:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy199;
+       case '1':       goto yy200;
+       case '2':       goto yy201;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy202;
+       default:        goto yy11;
+       }
+yy176:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy175;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy147;
+       default:        goto yy11;
+       }
+yy177:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy117;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy178:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               in->yyt32 = YYCURSOR;
+               goto yy203;
+       default:        goto yy11;
+       }
+yy179:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy204;
+       default:        goto yy11;
+       }
+yy180:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy205;
+       case ':':       goto yy161;
+       default:        goto yy11;
+       }
+yy181:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy206;
+       case ':':       goto yy207;
+       default:        goto yy11;
+       }
+yy182:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy208;
+       case '1':       goto yy209;
+       case '2':       goto yy210;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy211;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy212;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy183:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy214;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy184:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy216;
+       case ':':       goto yy215;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy214;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy185:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy216;
+       case '5':       goto yy217;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy218;
+       case ':':       goto yy215;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy214;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy186:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy218;
+       case ':':       goto yy215;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy214;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy187:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy214;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy188:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy15;
+       case '/':
+               in->yyt20 = in->yyt21 = NULL;
+               in->yyt19 = in->yyt22 = YYCURSOR;
+               goto yy98;
+       case ':':
+               in->yyt3 = in->yyt16;
+               in->yyt19 = YYCURSOR;
+               goto yy135;
+       case '?':
+               in->yyt20 = in->yyt21 = in->yyt24 = in->yyt25 = NULL;
+               in->yyt19 = in->yyt22 = in->yyt23 = YYCURSOR;
+               goto yy61;
+       default:        goto yy11;
+       }
+yy189:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ']':       goto yy11;
+       default:        goto yy220;
+       }
+yy190:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy221;
+       case ':':       goto yy167;
+       default:        goto yy11;
+       }
+yy191:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy222;
+       case ':':       goto yy223;
+       default:        goto yy11;
+       }
+yy192:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy224;
+       case '1':       goto yy225;
+       case '2':       goto yy226;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy227;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy228;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy193:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy229;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy194:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy224;
+       case '1':       goto yy225;
+       case '2':       goto yy226;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy227;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy228;
+       default:        goto yy11;
+       }
+yy195:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy230;
+       case ':':       goto yy194;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy229;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy196:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy230;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy229;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy197:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy229;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy198:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy143;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy199:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy231;
+       default:        goto yy11;
+       }
+yy200:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy231;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy202;
+       default:        goto yy11;
+       }
+yy201:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy231;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy202;
+       case '5':       goto yy232;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy199;
+       default:        goto yy11;
+       }
+yy202:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy231;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy199;
+       default:        goto yy11;
+       }
+yy203:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy233;
+       default:        goto yy11;
+       }
+yy204:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\n':
+               in->yyt9 = YYCURSOR;
+               goto yy234;
+       default:        goto yy11;
+       }
+yy205:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy161;
+       default:        goto yy11;
+       }
+yy206:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy235;
+       case ':':       goto yy207;
+       default:        goto yy11;
+       }
+yy207:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy236;
+       case ':':       goto yy237;
+       default:        goto yy11;
+       }
+yy208:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy238;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy209:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy240;
+       case ':':       goto yy239;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy238;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy210:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy240;
+       case '5':       goto yy241;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy242;
+       case ':':       goto yy239;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy238;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy211:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy242;
+       case ':':       goto yy239;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy238;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy212:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy238;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy213:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy243;
+       case '1':       goto yy244;
+       case '2':       goto yy245;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy246;
+       default:        goto yy11;
+       }
+yy214:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy247;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy215:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy208;
+       case '1':       goto yy209;
+       case '2':       goto yy210;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy211;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy212;
+       default:        goto yy11;
+       }
+yy216:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy248;
+       case ':':       goto yy215;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy247;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy217:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy248;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy247;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy218:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy247;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy219:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 14) YYFILL(14);
+       yych = *YYCURSOR;
+yy220:
+       switch (yych) {
+       case '!':
+       case '$':
+       case '&':
+       case '\'':
+       case '(':
+       case ')':
+       case '*':
+       case '+':
+       case ',':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case ':':
+       case ';':
+       case '=':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '~':       goto yy219;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy221:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy167;
+       default:        goto yy11;
+       }
+yy222:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy249;
+       case ':':       goto yy223;
+       default:        goto yy11;
+       }
+yy223:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy250;
+       case ':':       goto yy251;
+       default:        goto yy11;
+       }
+yy224:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy252;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy225:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy254;
+       case ':':       goto yy253;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy252;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy226:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy254;
+       case '5':       goto yy255;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy256;
+       case ':':       goto yy253;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy252;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy227:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy256;
+       case ':':       goto yy253;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy252;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy228:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy252;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy229:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy257;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy230:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy257;
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy231:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy258;
+       case '1':       goto yy259;
+       case '2':       goto yy260;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy261;
+       default:        goto yy11;
+       }
+yy232:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy231;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy199;
+       default:        goto yy11;
+       }
+yy233:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy262;
+       default:        goto yy11;
+       }
+yy234:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\n':
+               YYMTAGN (in->yyt40);
+               YYMTAGN (in->yyt39);
+               YYMTAGN (in->yyt38);
+               YYMTAGN (in->yyt37);
+               YYMTAGN (in->yyt36);
+               in->yyt30 = in->yyt31 = in->yyt32 = in->yyt33 = in->yyt34 = in->yyt35 = NULL;
+               goto yy263;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':
+               YYMTAGP (in->yyt36);
+               in->yyt30 = in->yyt31 = in->yyt32 = in->yyt33 = in->yyt34 = in->yyt35 = NULL;
+               goto yy265;
+       default:        goto yy11;
+       }
+yy235:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy267;
+       case ':':       goto yy207;
+       default:        goto yy11;
+       }
+yy236:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy268;
+       case ':':       goto yy269;
+       default:        goto yy11;
+       }
+yy237:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy270;
+       case '1':       goto yy271;
+       case '2':       goto yy272;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy273;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy274;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy238:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy275;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy239:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy270;
+       case '1':       goto yy271;
+       case '2':       goto yy272;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy273;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy274;
+       default:        goto yy11;
+       }
+yy240:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy276;
+       case ':':       goto yy239;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy275;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy241:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy276;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy275;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy242:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy275;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy243:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy277;
+       default:        goto yy11;
+       }
+yy244:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy277;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy246;
+       default:        goto yy11;
+       }
+yy245:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy277;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy246;
+       case '5':       goto yy278;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy243;
+       default:        goto yy11;
+       }
+yy246:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy277;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy243;
+       default:        goto yy11;
+       }
+yy247:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy279;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy248:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy279;
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy249:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy280;
+       case ':':       goto yy223;
+       default:        goto yy11;
+       }
+yy250:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy281;
+       case ':':       goto yy282;
+       default:        goto yy11;
+       }
+yy251:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy283;
+       case '1':       goto yy284;
+       case '2':       goto yy285;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy286;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy287;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy252:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy288;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy253:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy283;
+       case '1':       goto yy284;
+       case '2':       goto yy285;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy286;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy287;
+       default:        goto yy11;
+       }
+yy254:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy289;
+       case ':':       goto yy253;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy288;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy255:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy289;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy288;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy256:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy288;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy257:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy194;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy258:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy259:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy261;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy260:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy261;
+       case '5':       goto yy290;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy258;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy261:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy258;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy262:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ' ':
+               in->yyt33 = YYCURSOR;
+               goto yy291;
+       default:        goto yy11;
+       }
+yy263:
+       ++YYCURSOR;
+       m1 = in->yyt1;
+       m2 = in->yyt2;
+       at = in->yyt3;
+       u3 = in->yyt4;
+       u4 = in->yyt10;
+       hs3 = in->yyt11;
+       hs4 = in->yyt12;
+       r3 = in->yyt13;
+       r4 = in->yyt5;
+       au = in->yyt14;
+       s1 = in->yyt14;
+       s2 = in->yyt15;
+       u1 = in->yyt16;
+       u2 = in->yyt17;
+       hs1 = in->yyt18;
+       hs2 = in->yyt19;
+       r1 = in->yyt20;
+       r2 = in->yyt21;
+       p1 = in->yyt22;
+       p2 = in->yyt23;
+       p3 = in->yyt24;
+       p4 = in->yyt25;
+       q1 = in->yyt26;
+       q2 = in->yyt6;
+       of = in->yyt27;
+       p5 = in->yyt27;
+       p6 = in->yyt28;
+       q3 = in->yyt29;
+       q4 = in->yyt7;
+       v3 = in->yyt8;
+       v4 = in->yyt9;
+       v1 = in->yyt30;
+       v2 = in->yyt31;
+       st1 = in->yyt32;
+       st2 = in->yyt33;
+       rp1 = in->yyt34;
+       rp2 = in->yyt35;
+       h1 = in->yyt36;
+       h2 = in->yyt37;
+       h3 = in->yyt38;
+       h4 = in->yyt39;
+       h5 = in->yyt40;
+       {
+        ++c;
+        if (st1) {
+            printf("%.*s %.*s %.*s\n",
+                (int)(v2 - v1), v1,
+                (int)(st2 - st1), st1,
+                (int)(rp2 - rp1), rp1);
+        } else if (m1) {
+            printf("%.*s ", (int)(m2 - m1), m1);
+            if (of) {
+                printf("%.*s", (int)(p6 - p5), p5);
+                if (q3) printf("?%.*s", (int)(q4 - q3), q3);
+            } else if (au) {
+                printf("%.*s:", (int)(s2 - s1), s1);
+                if (p1) printf("//");
+                if (u1) printf("%.*s@", (int)(u2 - u1), u1);
+                printf("%.*s", (int)(hs2 - hs1), hs1);
+                if (r1) printf(":%.*s", (int)(r2 - r1), r1);
+                if (p1) printf("%.*s",  (int)(p2 - p1), p1);
+                if (p3) printf("%.*s",  (int)(p4 - p3), p3);
+                if (q1) printf("?%.*s", (int)(q2 - q1), q1);
+            } else if (at) {
+                if (u3) printf("%.*s@", (int)(u4 - u3), u3);
+                printf("%.*s", (int)(hs4 - hs3), hs3);
+                if (r3) printf(":%.*s", (int)(r4 - r3), r3);
+            } else {
+                printf("*");
+            }
+            printf(" %.*s\n", (int)(v4 - v3), v3);
+        }
+        print_headers(in->tok, h1, h2, h3, h4, h5);
+        printf("\n");
+        mtagpool_clear(&in->mtp, in);
+        goto loop;
+    }
+yy265:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':       goto yy265;
+       case ':':
+               YYMTAGP (in->yyt37);
+               goto yy292;
+       default:        goto yy11;
+       }
+yy267:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy207;
+       default:        goto yy11;
+       }
+yy268:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy294;
+       case ':':       goto yy269;
+       default:        goto yy11;
+       }
+yy269:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy295;
+       case ':':       goto yy296;
+       default:        goto yy11;
+       }
+yy270:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy297;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy271:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy299;
+       case ':':       goto yy298;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy297;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy272:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy299;
+       case '5':       goto yy300;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy301;
+       case ':':       goto yy298;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy297;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy273:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy301;
+       case ':':       goto yy298;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy297;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy274:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy297;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy275:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy302;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy276:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy302;
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy277:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy303;
+       case '1':       goto yy304;
+       case '2':       goto yy305;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy306;
+       default:        goto yy11;
+       }
+yy278:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy277;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy243;
+       default:        goto yy11;
+       }
+yy279:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy215;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy280:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy223;
+       default:        goto yy11;
+       }
+yy281:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy307;
+       case ':':       goto yy282;
+       default:        goto yy11;
+       }
+yy282:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy308;
+       case ':':       goto yy309;
+       default:        goto yy11;
+       }
+yy283:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy310;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy284:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy312;
+       case ':':       goto yy311;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy310;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy285:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy312;
+       case '5':       goto yy313;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy314;
+       case ':':       goto yy311;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy310;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy286:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy314;
+       case ':':       goto yy311;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy310;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy287:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy310;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy288:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy315;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy289:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy315;
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy290:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy258;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy291:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\n':
+               in->yyt34 = in->yyt35 = YYCURSOR;
+               goto yy318;
+       default:
+               in->yyt34 = YYCURSOR;
+               goto yy316;
+       }
+yy292:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+       case ' ':       goto yy292;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               YYMTAGP (in->yyt38);
+               goto yy319;
+       default:
+               YYMTAGP (in->yyt38);
+               goto yy320;
+       }
+yy294:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy322;
+       case ':':       goto yy269;
+       default:        goto yy11;
+       }
+yy295:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy323;
+       case ':':       goto yy324;
+       default:        goto yy11;
+       }
+yy296:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy325;
+       case '1':       goto yy326;
+       case '2':       goto yy327;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy328;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy329;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy297:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy330;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy298:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy325;
+       case '1':       goto yy326;
+       case '2':       goto yy327;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy328;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy329;
+       default:        goto yy11;
+       }
+yy299:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy331;
+       case ':':       goto yy298;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy330;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy300:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy331;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy330;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy301:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy330;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy302:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy239;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy303:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy332;
+       default:        goto yy11;
+       }
+yy304:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy332;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy306;
+       default:        goto yy11;
+       }
+yy305:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy332;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy306;
+       case '5':       goto yy333;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy303;
+       default:        goto yy11;
+       }
+yy306:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy332;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy303;
+       default:        goto yy11;
+       }
+yy307:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy334;
+       case ':':       goto yy282;
+       default:        goto yy11;
+       }
+yy308:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy335;
+       case ':':       goto yy336;
+       default:        goto yy11;
+       }
+yy309:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy337;
+       case '1':       goto yy338;
+       case '2':       goto yy339;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy340;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy341;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy310:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy342;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy311:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy337;
+       case '1':       goto yy338;
+       case '2':       goto yy339;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy340;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy341;
+       default:        goto yy11;
+       }
+yy312:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy343;
+       case ':':       goto yy311;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy342;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy313:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy343;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy342;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy314:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy342;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy315:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy253;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy316:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\n':
+               in->yyt35 = YYCURSOR;
+               goto yy318;
+       default:        goto yy316;
+       }
+yy318:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\n':
+               YYMTAGN (in->yyt40);
+               YYMTAGN (in->yyt39);
+               YYMTAGN (in->yyt38);
+               YYMTAGN (in->yyt37);
+               YYMTAGN (in->yyt36);
+               in->yyt1 = in->yyt2 = in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               goto yy263;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':
+               YYMTAGP (in->yyt36);
+               in->yyt1 = in->yyt2 = in->yyt3 = in->yyt4 = in->yyt5 = in->yyt6 = in->yyt7 = in->yyt8 = in->yyt9 = in->yyt10 = in->yyt11 = in->yyt12 = in->yyt13 = in->yyt14 = in->yyt15 = in->yyt16 = in->yyt17 = in->yyt18 = in->yyt19 = in->yyt20 = in->yyt21 = in->yyt22 = in->yyt23 = in->yyt24 = in->yyt25 = in->yyt26 = in->yyt27 = in->yyt28 = in->yyt29 = NULL;
+               goto yy265;
+       default:        goto yy11;
+       }
+yy319:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy344;
+       case '\n':
+               in->yyt39 = in->yyt42;
+               in->yyt40 = in->yyt41;
+               goto yy263;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':
+               in->yyt39 = in->yyt42;
+               in->yyt40 = in->yyt41;
+               YYMTAGP (in->yyt36);
+               goto yy265;
+       default:        goto yy11;
+       }
+yy320:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy346;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy319;
+       case ' ':       goto yy348;
+       default:        goto yy320;
+       }
+yy322:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy269;
+       default:        goto yy11;
+       }
+yy323:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy350;
+       case ':':       goto yy324;
+       default:        goto yy11;
+       }
+yy324:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy351;
+       case ':':       goto yy352;
+       default:        goto yy11;
+       }
+yy325:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy353;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy326:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy355;
+       case ':':       goto yy354;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy353;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy327:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy355;
+       case '5':       goto yy356;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy357;
+       case ':':       goto yy354;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy353;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy328:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy357;
+       case ':':       goto yy354;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy353;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy329:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy353;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy330:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy358;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy331:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy358;
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy332:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy359;
+       case '1':       goto yy360;
+       case '2':       goto yy361;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy362;
+       default:        goto yy11;
+       }
+yy333:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy332;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy303;
+       default:        goto yy11;
+       }
+yy334:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy282;
+       default:        goto yy11;
+       }
+yy335:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy363;
+       case ':':       goto yy336;
+       default:        goto yy11;
+       }
+yy336:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy364;
+       case '1':       goto yy365;
+       case '2':       goto yy366;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy367;
+       case ':':       goto yy368;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy369;
+       default:        goto yy11;
+       }
+yy337:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy370;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy338:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy372;
+       case ':':       goto yy371;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy370;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy339:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy372;
+       case '5':       goto yy373;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy374;
+       case ':':       goto yy371;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy370;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy340:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy374;
+       case ':':       goto yy371;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy370;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy341:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy370;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy342:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy375;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy343:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy375;
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy344:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+       case ' ':       goto yy344;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy319;
+       default:        goto yy320;
+       }
+yy346:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':      goto yy346;
+       case '\n':
+               YYMTAGP (in->yyt40);
+               goto yy376;
+       case ' ':       goto yy348;
+       default:        goto yy377;
+       }
+yy348:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy346;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy319;
+       case ' ':       goto yy348;
+       default:        goto yy378;
+       }
+yy350:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy379;
+       case ':':       goto yy324;
+       default:        goto yy11;
+       }
+yy351:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy380;
+       case ':':       goto yy381;
+       default:        goto yy11;
+       }
+yy352:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy382;
+       case '1':       goto yy383;
+       case '2':       goto yy384;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy385;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy386;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy353:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy387;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy354:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy382;
+       case '1':       goto yy383;
+       case '2':       goto yy384;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy385;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy386;
+       default:        goto yy11;
+       }
+yy355:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy388;
+       case ':':       goto yy354;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy387;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy356:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy388;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy387;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy357:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy387;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy358:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy298;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy359:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy360:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy362;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy361:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy362;
+       case '5':       goto yy389;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy359;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy362:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy359;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy363:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy390;
+       case ':':       goto yy336;
+       default:        goto yy11;
+       }
+yy364:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy391;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy365:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy393;
+       case ':':       goto yy392;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy391;
+       default:        goto yy11;
+       }
+yy366:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy393;
+       case '5':       goto yy394;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy395;
+       case ':':       goto yy392;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy391;
+       default:        goto yy11;
+       }
+yy367:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy395;
+       case ':':       goto yy392;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy391;
+       default:        goto yy11;
+       }
+yy368:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy396;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy369:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy391;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy370:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy397;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy371:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy396;
+       default:        goto yy11;
+       }
+yy372:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy398;
+       case ':':       goto yy371;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy397;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy373:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy398;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy397;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy374:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy397;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy375:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy311;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy376:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\n':
+               in->yyt39 = in->yyt42;
+               goto yy263;
+       case '!':
+       case '#':
+       case '$':
+       case '%':
+       case '&':
+       case '\'':
+       case '*':
+       case '+':
+       case '-':
+       case '.':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '^':
+       case '_':
+       case '`':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '|':
+       case '~':
+               in->yyt39 = in->yyt42;
+               YYMTAGP (in->yyt36);
+               goto yy265;
+       default:        goto yy11;
+       }
+yy377:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+               YYMTAGP (in->yyt39);
+               goto yy399;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy319;
+       default:        goto yy320;
+       }
+yy378:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy401;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt42);
+               goto yy319;
+       default:        goto yy320;
+       }
+yy379:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy324;
+       default:        goto yy11;
+       }
+yy380:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy403;
+       case ':':       goto yy381;
+       default:        goto yy11;
+       }
+yy381:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy404;
+       case ':':       goto yy405;
+       default:        goto yy11;
+       }
+yy382:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy406;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy383:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy408;
+       case ':':       goto yy407;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy406;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy384:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy408;
+       case '5':       goto yy409;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy410;
+       case ':':       goto yy407;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy406;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy385:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy410;
+       case ':':       goto yy407;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy406;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy386:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy406;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy387:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy411;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy388:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy411;
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy389:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy359;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy390:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy336;
+       default:        goto yy11;
+       }
+yy391:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy412;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy392:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy396;
+       case ':':       goto yy258;
+       default:        goto yy11;
+       }
+yy393:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy413;
+       case ':':       goto yy392;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy412;
+       default:        goto yy11;
+       }
+yy394:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy413;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy412;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy395:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy412;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy396:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy414;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy397:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy415;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy398:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy415;
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy399:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy399;
+       case '\n':
+               in->yyt42 = in->yyt39;
+               YYMTAGP (in->yyt40);
+               goto yy376;
+       default:        goto yy11;
+       }
+yy401:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':      goto yy401;
+       case '\n':
+               YYMTAGP (in->yyt40);
+               goto yy376;
+       case ' ':       goto yy416;
+       default:        goto yy377;
+       }
+yy403:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy418;
+       case ':':       goto yy381;
+       default:        goto yy11;
+       }
+yy404:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy419;
+       case ':':       goto yy420;
+       default:        goto yy11;
+       }
+yy405:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy421;
+       case '1':       goto yy422;
+       case '2':       goto yy423;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy424;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy425;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy406:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy426;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy407:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy421;
+       case '1':       goto yy422;
+       case '2':       goto yy423;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy424;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy425;
+       default:        goto yy11;
+       }
+yy408:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy427;
+       case ':':       goto yy407;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy426;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy409:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy427;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy426;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy410:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy426;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy411:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy354;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy412:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy428;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy413:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy115;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy428;
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy414:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy429;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy415:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy371;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy416:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case 0x01:
+       case 0x02:
+       case 0x03:
+       case 0x04:
+       case 0x05:
+       case 0x06:
+       case 0x07:
+       case 0x08:
+       case '\v':
+       case '\f':
+       case '\r':
+       case 0x0E:
+       case 0x0F:
+       case 0x10:
+       case 0x11:
+       case 0x12:
+       case 0x13:
+       case 0x14:
+       case 0x15:
+       case 0x16:
+       case 0x17:
+       case 0x18:
+       case 0x19:
+       case 0x1A:
+       case 0x1B:
+       case 0x1C:
+       case 0x1D:
+       case 0x1E:
+       case 0x7F:      goto yy11;
+       case '\t':      goto yy401;
+       case '\n':
+               in->yyt41 = in->yyt40;
+               YYMTAGP (in->yyt41);
+               goto yy319;
+       case ' ':       goto yy416;
+       default:        goto yy378;
+       }
+yy418:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy381;
+       default:        goto yy11;
+       }
+yy419:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy430;
+       case ':':       goto yy420;
+       default:        goto yy11;
+       }
+yy420:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy431;
+       case '1':       goto yy432;
+       case '2':       goto yy433;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy434;
+       case ':':       goto yy435;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy436;
+       default:        goto yy11;
+       }
+yy421:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy437;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy422:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy439;
+       case ':':       goto yy438;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy437;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy423:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy439;
+       case '5':       goto yy440;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy441;
+       case ':':       goto yy438;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy437;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy424:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy441;
+       case ':':       goto yy438;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy437;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy425:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy437;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy426:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy442;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy427:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy442;
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy428:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy392;
+       default:        goto yy11;
+       }
+yy429:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy258;
+       case ']':       goto yy90;
+       default:        goto yy11;
+       }
+yy430:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy443;
+       case ':':       goto yy420;
+       default:        goto yy11;
+       }
+yy431:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy444;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy432:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy446;
+       case ':':       goto yy445;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy444;
+       default:        goto yy11;
+       }
+yy433:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':       goto yy446;
+       case '5':       goto yy447;
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy448;
+       case ':':       goto yy445;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy444;
+       default:        goto yy11;
+       }
+yy434:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy448;
+       case ':':       goto yy445;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy444;
+       default:        goto yy11;
+       }
+yy435:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy449;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy436:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy444;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy437:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy450;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy438:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy449;
+       default:        goto yy11;
+       }
+yy439:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy451;
+       case ':':       goto yy438;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy450;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy440:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy451;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy450;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy441:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy450;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy442:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy407;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy443:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy420;
+       default:        goto yy11;
+       }
+yy444:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy452;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy445:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy449;
+       case ':':       goto yy359;
+       default:        goto yy11;
+       }
+yy446:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy453;
+       case ':':       goto yy445;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy452;
+       default:        goto yy11;
+       }
+yy447:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':       goto yy453;
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy452;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy448:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy452;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy449:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy454;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy450:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy455;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy451:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy455;
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy452:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy456;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy453:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy213;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy456;
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy454:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy457;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy455:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy438;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+yy456:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case ':':       goto yy445;
+       default:        goto yy11;
+       }
+yy457:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':       goto yy359;
+       case ']':       goto yy188;
+       default:        goto yy11;
+       }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    long count;
+    input_t in;
+    init_input(&in, argv[1]);
+
+    switch (lex(&in, &count)) {
+        case 0:  fprintf(stderr, "ok, parsed %ld HTTPs\n", count); break;
+        case 1:  fprintf(stderr, "syntax error\n"); break;
+        case 2:  fprintf(stderr, "yyfill error\n"); break;
+        default: fprintf(stderr, "panic!\n"); break;
+    }
+
+    free_input(&in);
+    return 0;
+}
+re2c: warning: line 243: tag 'm1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'at' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'u3' has 3rd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'u4' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'hs3' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'hs4' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'r3' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'au' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 's1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 's2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'u1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'u2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'hs1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'hs2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'r1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'p3' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'v1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'h3' has 3rd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'h4' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 243: tag 'h5' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
diff --git a/re2c/test/examples/11_http_rfc7230.i--tags.re b/re2c/test/examples/11_http_rfc7230.i--tags.re
new file mode 100644 (file)
index 0000000..ed14b91
--- /dev/null
@@ -0,0 +1,296 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct mtag_t {
+    struct mtag_t *pred;
+    long dist;
+} mtag_t;
+
+typedef struct mtagpool_t {
+    mtag_t *head;
+    mtag_t *next;
+    mtag_t *last;
+} mtagpool_t;
+
+typedef struct {
+    FILE *file;
+    char *buf;
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    /*!stags:re2c format = "char *@@;\n"; */
+    /*!mtags:re2c format = "mtag_t *@@;\n"; */
+    mtagpool_t mtp;
+    int eof;
+} input_t;
+
+static void mtagpool_clear(mtagpool_t *mtp, input_t *in)
+{
+    mtp->next = mtp->head;
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
+}
+
+static void mtagpool_init(mtagpool_t *mtp)
+{
+    static const unsigned size = 1024 * 1024;
+    mtp->head = (mtag_t*)malloc(size * sizeof(mtag_t));
+    mtp->next = mtp->head;
+    mtp->last = mtp->head + size;
+}
+
+static void mtagpool_free(mtagpool_t *mtp)
+{
+    free(mtp->head);
+    mtp->head = mtp->next = mtp->last = NULL;
+}
+
+static mtag_t *mtagpool_next(mtagpool_t *mtp)
+{
+    unsigned size;
+    mtag_t *head;
+
+    if (mtp->next < mtp->last) return mtp->next++;
+
+    size = mtp->last - mtp->head;
+    head = (mtag_t*)malloc(2 * size * sizeof(mtag_t));
+    memcpy(head, mtp->head, size * sizeof(mtag_t));
+    free(mtp->head);
+    mtp->head = head;
+    mtp->next = head + size;
+    mtp->last = head + size * 2;
+    return mtp->next++;
+}
+
+static void mtag(mtag_t **pmt, const char *b, const char *t, mtagpool_t *mtp)
+{
+    mtag_t *mt = mtagpool_next(mtp);
+    mt->pred = *pmt;
+    mt->dist = t - b;
+    *pmt = mt;
+}
+
+/*!max:re2c*/
+static const size_t SIZE = 4096;
+
+static void init_input(input_t *in, const char *fname)
+{
+    in->file = fopen(fname, "r");
+    in->buf = (char*) malloc(SIZE + YYMAXFILL);
+    in->lim = in->buf + SIZE;
+    in->cur = in->lim;
+    in->mar = in->lim;
+    in->tok = in->lim;
+    /*!stags:re2c format = "in->@@ = 0;\n"; */
+    /*!mtags:re2c format = "in->@@ = 0;\n"; */
+    mtagpool_init(&in->mtp);
+    in->eof = 0;
+}
+
+static void free_input(input_t *in)
+{
+    fclose(in->file);
+    free(in->buf);
+    mtagpool_free(&in->mtp);
+}
+
+static int fill(input_t *in, size_t need)
+{
+    size_t free;
+    if (in->eof) return 1;
+
+    free = in->tok - in->buf;
+    if (free < need) return 2;
+
+    memmove(in->buf, in->tok, in->lim - in->tok);
+    in->lim -= free;
+    in->cur -= free;
+    in->mar -= free;
+    in->tok -= free;
+    /*!stags:re2c format = "if (in->@@) in->@@ -= free;\n"; */
+    in->lim += fread(in->lim, 1, free, in->file);
+    if (in->lim < in->buf + SIZE) {
+        in->eof = 1;
+        memset(in->lim, 0, YYMAXFILL);
+        in->lim += YYMAXFILL;
+    }
+    return 0;
+}
+
+static void print_headers(const char *tok,
+    const mtag_t *h1, const mtag_t *h2,
+    const mtag_t *h3, const mtag_t *h4,
+    const mtag_t *h5)
+{
+    if (!h1) return;
+    print_headers(tok, h1->pred, h2->pred, h3->pred, h4->pred, h5->pred);
+    printf("%.*s%.*s%.*s%.*s\n",
+        (int)(h2->dist - h1->dist), tok + h1->dist,
+        (int)(h3->dist - h2->dist), tok + h2->dist,
+        (int)(h4->dist - h3->dist), tok + h3->dist,
+        (int)(h5->dist - h4->dist), tok + h4->dist);
+}
+
+#define YYCTYPE        char
+#define YYCURSOR       in->cur
+#define YYMARKER       in->mar
+#define YYLIMIT        in->lim
+#define YYMTAGP(mt)    mtag(&mt, in->tok, in->cur, &in->mtp)
+#define YYMTAGN(mt)    mtag(&mt, in->tok, NULL, &in->mtp)
+#define YYFILL(n)      if (fill(in, n) != 0) return 2;
+
+static int lex(input_t *in, long *count)
+{
+    const char *of, *au, *at,
+        *hs1, *hs3, *m1, *p1, *p3, *p5, *q1, *q3,
+        *hs2, *hs4, *m2, *p2, *p4, *p6, *q2, *q4,
+        *r1, *r3, *rp1, *s1, *st1, *u1, *u3, *v1, *v3,
+        *r2, *r4, *rp2, *s2, *st2, *u2, *u4, *v2, *v4;
+    mtag_t *h1, *h2, *h3, *h4, *h5;
+    long c;
+
+    c = 0;;
+    of = au = at
+        = hs1 = hs3 = m1 = p1 = p3 = p5 = q1 = q3
+        = hs2 = hs4 = m2 = p2 = p4 = p6 = q2 = q4
+        = r1 = r3 = rp1 = s1 = st1 = u1 = u3 = v1 = v3
+        = r2 = r4 = rp2 = s2 = st2 = u2 = u4 = v2 = v4 = NULL;
+loop:
+    in->tok = in->cur;
+/*!re2c
+    re2c:tags:expression = "in->@@";
+
+    end = "\x00";
+    eol = "\n";
+
+    crlf        = eol;
+    sp          = " ";
+    htab        = "\t";
+    ows         = (sp | htab)*;
+    digit       = [0-9];
+    alpha       = [a-zA-Z];
+    hexdigit    = [0-9a-fA-F];
+    unreserved  = alpha | digit | [-._~];
+    pct_encoded = "%" hexdigit{2};
+    sub_delims  = [!$&'()*+,;=];
+    pchar       = unreserved | pct_encoded | sub_delims | [:@];
+    vchar       = [\x1f-\x7e];
+    tchar       = [-!#$%&'*+.^_`|~] | digit | alpha;
+
+    obs_fold       = crlf (sp | htab)+;
+    obs_text       = [\x80-\xff];
+    field_name     = tchar+;
+    field_vchar    = vchar | obs_text;
+    field_content  = field_vchar ((sp | htab)+ field_vchar)?;
+    field_value    = (field_content | obs_fold)*;
+    header_field   = #h1 field_name #h2 ":" ows #h3 field_value #h4 ows #h5;
+    scheme         = alpha (alpha | digit | [-+.])*;
+    userinfo       = (unreserved | pct_encoded | sub_delims | ":")*;
+    dec_octet
+        = digit
+        | [\x31-\x39] digit
+        | "1" digit{2}
+        | "2" [\x30-\x34] digit
+        | "25" [\x30-\x35];
+    ipv4address    = dec_octet "." dec_octet "." dec_octet "." dec_octet;
+    h16            = hexdigit{1,4};
+    ls32           = h16 ":" h16 | ipv4address;
+    ipv6address
+        =                            (h16 ":"){6} ls32
+        |                       "::" (h16 ":"){5} ls32
+        | (               h16)? "::" (h16 ":"){4} ls32
+        | ((h16 ":"){0,1} h16)? "::" (h16 ":"){3} ls32
+        | ((h16 ":"){0,2} h16)? "::" (h16 ":"){2} ls32
+        | ((h16 ":"){0,3} h16)? "::"  h16 ":"     ls32
+        | ((h16 ":"){0,4} h16)? "::"              ls32
+        | ((h16 ":"){0,5} h16)? "::"              h16
+        | ((h16 ":"){0,6} h16)? "::";
+    ipvfuture      = "v" hexdigit+ "." (unreserved | sub_delims | ":" )+;
+    ip_literal     = "[" ( ipv6address | ipvfuture ) "]";
+    reg_name       = (unreserved | pct_encoded | sub_delims)*;
+    path_abempty   = ("/" pchar*)*;
+    path_absolute  = "/" (pchar+ ("/" pchar*)*)?;
+    path_rootless  = pchar+ ("/" pchar*)*;
+    path_empty     = "";
+    host           = ip_literal | ipv4address | reg_name;
+    port           = digit*;
+    query          = (pchar | [/?])*;
+    absolute_uri   = @s1 scheme @s2 ":"
+        ( "//" (@u1 userinfo @u2 "@")? @hs1 host @hs2 (":" @r1 port @r2)? @p1 path_abempty @p2
+        | @p3 (path_absolute | path_rootless | path_empty) @p4
+        ) ("?" @q1 query @q2)?;
+    authority      = (@u3 userinfo @u4 "@")? @hs3 host @hs4 (":" @r3 port @r4)?;
+    origin_form    = @p5 path_abempty @p6 ("?" @q3 query @q4)?;
+    http_name      = "HTTP";
+    http_version   = http_name "/" digit "." digit;
+    request_target
+        = @at authority
+        | @au absolute_uri
+        | @of origin_form
+        | "*";
+    method         = tchar+;
+    request_line   = @m1 method @m2 sp request_target sp @v3 http_version @v4 crlf;
+    status_code    = digit{3};
+    reason_phrase  = (htab | sp | vchar | obs_text)*;
+    status_line    = @v1 http_version @v2 sp @st1 status_code @st2 sp @rp1 reason_phrase @rp2 crlf;
+    start_line     = (request_line | status_line);
+    message_head   = start_line (header_field crlf)* crlf;
+
+    *   { return 1; }
+    end { *count = c; return 0; }
+    eol { goto loop; }
+    message_head {
+        ++c;
+        if (st1) {
+            printf("%.*s %.*s %.*s\n",
+                (int)(v2 - v1), v1,
+                (int)(st2 - st1), st1,
+                (int)(rp2 - rp1), rp1);
+        } else if (m1) {
+            printf("%.*s ", (int)(m2 - m1), m1);
+            if (of) {
+                printf("%.*s", (int)(p6 - p5), p5);
+                if (q3) printf("?%.*s", (int)(q4 - q3), q3);
+            } else if (au) {
+                printf("%.*s:", (int)(s2 - s1), s1);
+                if (p1) printf("//");
+                if (u1) printf("%.*s@", (int)(u2 - u1), u1);
+                printf("%.*s", (int)(hs2 - hs1), hs1);
+                if (r1) printf(":%.*s", (int)(r2 - r1), r1);
+                if (p1) printf("%.*s",  (int)(p2 - p1), p1);
+                if (p3) printf("%.*s",  (int)(p4 - p3), p3);
+                if (q1) printf("?%.*s", (int)(q2 - q1), q1);
+            } else if (at) {
+                if (u3) printf("%.*s@", (int)(u4 - u3), u3);
+                printf("%.*s", (int)(hs4 - hs3), hs3);
+                if (r3) printf(":%.*s", (int)(r4 - r3), r3);
+            } else {
+                printf("*");
+            }
+            printf(" %.*s\n", (int)(v4 - v3), v3);
+        }
+        print_headers(in->tok, h1, h2, h3, h4, h5);
+        printf("\n");
+        mtagpool_clear(&in->mtp, in);
+        goto loop;
+    }
+*/
+}
+
+int main(int argc, char **argv)
+{
+    long count;
+    input_t in;
+    init_input(&in, argv[1]);
+
+    switch (lex(&in, &count)) {
+        case 0:  fprintf(stderr, "ok, parsed %ld HTTPs\n", count); break;
+        case 1:  fprintf(stderr, "syntax error\n"); break;
+        case 2:  fprintf(stderr, "yyfill error\n"); break;
+        default: fprintf(stderr, "panic!\n"); break;
+    }
+
+    free_input(&in);
+    return 0;
+}
diff --git a/re2c/test/examples/12_float.i--tags.c b/re2c/test/examples/12_float.i--tags.c
new file mode 100644 (file)
index 0000000..75f01f4
--- /dev/null
@@ -0,0 +1,356 @@
+/* Generated by re2c */
+#include <math.h>
+#include <stdio.h>
+
+static double lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *h1, *h2, *l1, *l2, *e1, *e2, *n;
+    long e = 0;
+    double d = 0;
+    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;const char *yyt6;const char *yyt7;
+    
+{
+       char yych;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
+               yyt1 = yyt3 = YYCURSOR;
+               goto yy2;
+       case '.':
+               yyt1 = yyt3 = YYCURSOR;
+               goto yy6;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = YYCURSOR;
+               goto yy7;
+       case 'E':
+       case 'e':       goto yy8;
+       default:        goto yy4;
+       }
+yy2:
+       ++YYCURSOR;
+       h1 = yyt1;
+       h2 = yyt3;
+       l1 = yyt4;
+       l2 = yyt5;
+       n = yyt7;
+       e1 = yyt6;
+       e2 = yyt2;
+       {
+            for (; e1 < e2; ++e1) e = e * 10 + *e1 - '0';
+            e = (n ? -e : e) - (l2 - l1);
+            for (; h1 < h2; ++h1) d = d * 10 + *h1 - '0';
+            for (; l1 < l2; ++l1) d = d * 10 + *l1 - '0';
+            for (; e < 0; ++e) d /= 10;
+            for (; e > 0; --e) d *= 10;
+            return d;
+        }
+yy4:
+       ++YYCURSOR;
+yy5:
+       { return NAN; }
+yy6:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0x00:
+               yyt1 = yyt2 = yyt3 = NULL;
+               goto yy9;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt4 = YYCURSOR;
+               goto yy11;
+       case 'E':
+       case 'e':
+               yyt4 = yyt5 = YYCURSOR;
+               goto yy14;
+       default:        goto yy5;
+       }
+yy7:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case 0x00:
+               yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
+               yyt3 = YYCURSOR;
+               goto yy2;
+       case '.':
+               yyt3 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy16;
+       case 'E':
+       case 'e':
+               yyt4 = yyt5 = NULL;
+               yyt3 = YYCURSOR;
+               goto yy14;
+       default:        goto yy5;
+       }
+yy8:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '+':       goto yy18;
+       case '-':
+               yyt3 = YYCURSOR;
+               goto yy19;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt3 = NULL;
+               yyt2 = YYCURSOR;
+               goto yy20;
+       default:        goto yy5;
+       }
+yy9:
+       ++YYCURSOR;
+       n = yyt3;
+       e1 = yyt2;
+       e2 = yyt1;
+       { return NAN; }
+yy11:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt2 = yyt6 = yyt7 = NULL;
+               yyt5 = YYCURSOR;
+               goto yy2;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy11;
+       case 'E':
+       case 'e':
+               yyt5 = YYCURSOR;
+               goto yy14;
+       default:        goto yy13;
+       }
+yy13:
+       YYCURSOR = YYMARKER;
+       goto yy5;
+yy14:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '+':       goto yy22;
+       case '-':
+               yyt7 = YYCURSOR;
+               goto yy23;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt7 = NULL;
+               yyt6 = YYCURSOR;
+               goto yy24;
+       default:        goto yy13;
+       }
+yy15:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt2 = yyt6 = yyt7 = NULL;
+               yyt4 = yyt5 = YYCURSOR;
+               goto yy2;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt4 = YYCURSOR;
+               goto yy11;
+       case 'E':
+       case 'e':
+               yyt4 = yyt5 = YYCURSOR;
+               goto yy14;
+       default:        goto yy13;
+       }
+yy16:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
+               yyt3 = YYCURSOR;
+               goto yy2;
+       case '.':
+               yyt3 = YYCURSOR;
+               goto yy15;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy16;
+       case 'E':
+       case 'e':
+               yyt4 = yyt5 = NULL;
+               yyt3 = YYCURSOR;
+               goto yy14;
+       default:        goto yy13;
+       }
+yy18:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt3 = NULL;
+               yyt2 = YYCURSOR;
+               goto yy20;
+       default:        goto yy13;
+       }
+yy19:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt2 = YYCURSOR;
+               goto yy20;
+       default:        goto yy13;
+       }
+yy20:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt1 = YYCURSOR;
+               goto yy9;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy20;
+       default:        goto yy13;
+       }
+yy22:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt7 = NULL;
+               yyt6 = YYCURSOR;
+               goto yy24;
+       default:        goto yy13;
+       }
+yy23:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt6 = YYCURSOR;
+               goto yy24;
+       default:        goto yy13;
+       }
+yy24:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 0x00:
+               yyt2 = YYCURSOR;
+               goto yy2;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy24;
+       default:        goto yy13;
+       }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        printf("%g\n", lex(argv[i]));
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/12_float.i--tags.re b/re2c/test/examples/12_float.i--tags.re
new file mode 100644 (file)
index 0000000..1b6920c
--- /dev/null
@@ -0,0 +1,41 @@
+#include <math.h>
+#include <stdio.h>
+
+static double lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *h1, *h2, *l1, *l2, *e1, *e2, *n;
+    long e = 0;
+    double d = 0;
+    /*!stags:re2c format = 'const char *@@;'; */
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:yyfill:enable = 0;
+
+        end  = [\x00];
+        dot  = ".";
+        high = @h1 [0-9]* @h2;
+        low  = @l1 [0-9]* @l2;
+        exp  = 'e' ([+]? | @n [-]) @e1 [0-9]+ @e2;
+
+        *               { return NAN; }
+        (exp | dot) end { return NAN; }
+
+        high (dot low)? exp? end {
+            for (; e1 < e2; ++e1) e = e * 10 + *e1 - '0';
+            e = (n ? -e : e) - (l2 - l1);
+            for (; h1 < h2; ++h1) d = d * 10 + *h1 - '0';
+            for (; l1 < l2; ++l1) d = d * 10 + *l1 - '0';
+            for (; e < 0; ++e) d /= 10;
+            for (; e > 0; --e) d *= 10;
+            return d;
+        }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) {
+        printf("%g\n", lex(argv[i]));
+    }
+    return 0;
+}
diff --git a/re2c/test/examples/13_records.i--tags.c b/re2c/test/examples/13_records.i--tags.c
new file mode 100644 (file)
index 0000000..b3b3426
--- /dev/null
@@ -0,0 +1,1226 @@
+/* Generated by re2c */
+#include <stdio.h>
+#include <stdlib.h>
+#include <vector>
+
+struct mtag_t
+{
+    int pred;
+    const char *tag;
+};
+
+typedef std::vector<mtag_t> mtagpool_t;
+
+static void mtag(int *pt, const char *t, mtagpool_t *tp)
+{
+    mtag_t l = {*pt, t};
+    *pt = (int) tp->size();
+    tp->push_back(l);
+}
+
+static void print_channels(const mtagpool_t &tp, int x, int y)
+{
+    if (x == -1) return;
+    print_channels(tp, tp[x].pred, tp[y].pred);
+    const char *px = tp[x].tag, *py = tp[y].tag;
+    printf("    %.*s\n", (int) (py - px), px);
+}
+
+#define YYMTAGP(t) mtag(&t, YYCURSOR, &tp)
+#define YYMTAGN(t) mtag(&t, NULL,     &tp)
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *n1, *n2, *a1, *a2, *c1, *c2;
+    mtagpool_t tp;
+    int h1, h2;
+    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;const char *yyt6;
+    int yyt7;int yyt8;
+loop:
+    tp.clear();
+    yyt7 = -1;yyt8 = -1;
+    
+{
+       char yych;
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\t':
+       case ' ':       goto yy6;
+       case '\n':      goto yy9;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               yyt1 = YYCURSOR;
+               goto yy10;
+       default:        goto yy4;
+       }
+yy2:
+       ++YYCURSOR;
+       { return 0; }
+yy4:
+       ++YYCURSOR;
+yy5:
+       { printf("error: %s\n", YYCURSOR); return 1; }
+yy6:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy6;
+       default:        goto yy8;
+       }
+yy8:
+       { goto loop; }
+yy9:
+       ++YYCURSOR;
+       goto yy8;
+yy10:
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case '\t':
+       case ' ':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+       case '{':       goto yy15;
+       default:        goto yy5;
+       }
+yy11:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy11;
+       case '{':       goto yy16;
+       default:        goto yy13;
+       }
+yy13:
+       YYCURSOR = YYMARKER;
+       goto yy5;
+yy14:
+       yych = *++YYCURSOR;
+yy15:
+       switch (yych) {
+       case '\t':
+       case ' ':
+               yyt2 = YYCURSOR;
+               goto yy11;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case '_':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy14;
+       case '{':
+               yyt2 = YYCURSOR;
+               goto yy16;
+       default:        goto yy13;
+       }
+yy16:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy16;
+       case '\n':      goto yy18;
+       default:        goto yy13;
+       }
+yy18:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy18;
+       case 'n':       goto yy20;
+       default:        goto yy13;
+       }
+yy20:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy21;
+       default:        goto yy13;
+       }
+yy21:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'm':       goto yy22;
+       default:        goto yy13;
+       }
+yy22:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'e':       goto yy23;
+       default:        goto yy13;
+       }
+yy23:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy23;
+       case '=':       goto yy25;
+       default:        goto yy13;
+       }
+yy25:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy25;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+               yyt3 = YYCURSOR;
+               goto yy27;
+       default:        goto yy13;
+       }
+yy27:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '.':       goto yy28;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy29;
+       default:        goto yy13;
+       }
+yy28:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':
+               yyt4 = YYCURSOR;
+               goto yy31;
+       case '\n':
+               yyt4 = YYCURSOR;
+               goto yy33;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':       goto yy27;
+       default:        goto yy13;
+       }
+yy29:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':
+               yyt4 = YYCURSOR;
+               goto yy31;
+       case '\n':
+               yyt4 = YYCURSOR;
+               goto yy33;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':       goto yy27;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy29;
+       default:        goto yy13;
+       }
+yy31:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy31;
+       case '\n':      goto yy33;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':       goto yy27;
+       default:        goto yy13;
+       }
+yy33:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy33;
+       case 'c':       goto yy35;
+       default:        goto yy13;
+       }
+yy35:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'o':       goto yy36;
+       default:        goto yy13;
+       }
+yy36:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'u':       goto yy37;
+       default:        goto yy13;
+       }
+yy37:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'n':       goto yy38;
+       default:        goto yy13;
+       }
+yy38:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 't':       goto yy39;
+       default:        goto yy13;
+       }
+yy39:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'r':       goto yy40;
+       default:        goto yy13;
+       }
+yy40:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'y':       goto yy41;
+       default:        goto yy13;
+       }
+yy41:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy41;
+       case '=':       goto yy43;
+       default:        goto yy13;
+       }
+yy43:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':      goto yy43;
+       case ' ':
+               yyt5 = YYCURSOR;
+               goto yy45;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               yyt5 = YYCURSOR;
+               goto yy47;
+       default:        goto yy13;
+       }
+yy45:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+               yyt6 = YYCURSOR;
+               goto yy49;
+       case '\n':
+               yyt6 = YYCURSOR;
+               goto yy51;
+       case ' ':
+               yyt5 = YYCURSOR;
+               goto yy45;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               yyt5 = YYCURSOR;
+               goto yy47;
+       default:        goto yy13;
+       }
+yy47:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+               yyt6 = YYCURSOR;
+               goto yy53;
+       case '\n':
+               yyt6 = YYCURSOR;
+               goto yy51;
+       case ' ':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy47;
+       default:        goto yy13;
+       }
+yy49:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':      goto yy49;
+       case '\n':      goto yy51;
+       case ' ':
+               yyt5 = YYCURSOR;
+               goto yy45;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               yyt5 = YYCURSOR;
+               goto yy47;
+       default:        goto yy13;
+       }
+yy51:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy51;
+       case 'c':       goto yy55;
+       default:        goto yy13;
+       }
+yy53:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy53;
+       case '\n':      goto yy51;
+       default:        goto yy13;
+       }
+yy55:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'h':       goto yy56;
+       default:        goto yy13;
+       }
+yy56:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'a':       goto yy57;
+       default:        goto yy13;
+       }
+yy57:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'n':       goto yy58;
+       default:        goto yy13;
+       }
+yy58:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'n':       goto yy59;
+       default:        goto yy13;
+       }
+yy59:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'e':       goto yy60;
+       default:        goto yy13;
+       }
+yy60:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'l':       goto yy61;
+       default:        goto yy13;
+       }
+yy61:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 's':       goto yy62;
+       default:        goto yy13;
+       }
+yy62:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy62;
+       case '=':       goto yy64;
+       default:        goto yy13;
+       }
+yy64:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy64;
+       case '\n':
+               YYMTAGN (yyt8);
+               YYMTAGN (yyt7);
+               goto yy66;
+       case '#':
+               YYMTAGP (yyt7);
+               goto yy68;
+       case '-':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               YYMTAGP (yyt7);
+               goto yy69;
+       default:        goto yy13;
+       }
+yy66:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy66;
+       case '}':       goto yy71;
+       default:        goto yy13;
+       }
+yy68:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '-':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy73;
+       default:        goto yy13;
+       }
+yy69:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '-':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy69;
+       case '/':       goto yy75;
+       default:        goto yy13;
+       }
+yy71:
+       ++YYCURSOR;
+       n1 = yyt1;
+       n2 = yyt2;
+       a1 = yyt3;
+       a2 = yyt4;
+       c1 = yyt5;
+       c2 = yyt6;
+       h1 = yyt7;
+       h2 = yyt8;
+       {
+            printf("\n%.*s\n", (int) (n2 - n1), n1);
+            printf("  name:     %.*s\n", (int) (a2 - a1), a1);
+            printf("  country:  %.*s\n", (int) (c2 - c1), c1);
+            printf("  channels:\n");
+            print_channels(tp, h1, h2);
+            goto loop;
+        }
+yy73:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':
+               YYMTAGP (yyt8);
+               goto yy76;
+       case '-':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy73;
+       case ';':
+               YYMTAGP (yyt8);
+               goto yy78;
+       default:        goto yy13;
+       }
+yy75:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '#':       goto yy68;
+       default:        goto yy13;
+       }
+yy76:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy76;
+       case ';':       goto yy78;
+       default:        goto yy13;
+       }
+yy78:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '\t':
+       case ' ':       goto yy78;
+       case '\n':      goto yy66;
+       case '#':
+               YYMTAGP (yyt7);
+               goto yy68;
+       case '-':
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':
+               YYMTAGP (yyt7);
+               goto yy69;
+       default:        goto yy13;
+       }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    if (argc < 2) {
+        fprintf(stderr, "no input files\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "r");
+
+    fseek(file, 0, SEEK_END);
+    const size_t fsize = (size_t) ftell(file);
+    fseek(file, 0, SEEK_SET);
+
+    char *buffer = (char*) malloc(fsize + 1);
+
+    fread(buffer, 1, fsize, file);
+    buffer[fsize] = 0;
+
+    const int status = lex(buffer);
+
+    fclose(file);
+    free(buffer);
+
+    return status;
+}
+re2c: warning: line 57: rule matches empty string [-Wmatch-empty-string]
+re2c: warning: line 63: tag 'a2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 63: tag 'c1' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 63: tag 'c2' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
diff --git a/re2c/test/examples/13_records.i--tags.re b/re2c/test/examples/13_records.i--tags.re
new file mode 100644 (file)
index 0000000..7b41ff5
--- /dev/null
@@ -0,0 +1,98 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <vector>
+
+struct mtag_t
+{
+    int pred;
+    const char *tag;
+};
+
+typedef std::vector<mtag_t> mtagpool_t;
+
+static void mtag(int *pt, const char *t, mtagpool_t *tp)
+{
+    mtag_t l = {*pt, t};
+    *pt = (int) tp->size();
+    tp->push_back(l);
+}
+
+static void print_channels(const mtagpool_t &tp, int x, int y)
+{
+    if (x == -1) return;
+    print_channels(tp, tp[x].pred, tp[y].pred);
+    const char *px = tp[x].tag, *py = tp[y].tag;
+    printf("    %.*s\n", (int) (py - px), px);
+}
+
+#define YYMTAGP(t) mtag(&t, YYCURSOR, &tp)
+#define YYMTAGN(t) mtag(&t, NULL,     &tp)
+
+static int lex(const char *YYCURSOR)
+{
+    const char *YYMARKER, *n1, *n2, *a1, *a2, *c1, *c2;
+    mtagpool_t tp;
+    int h1, h2;
+    /*!stags:re2c format = "const char *@@;"; */
+    /*!mtags:re2c format = "int @@;"; */
+loop:
+    tp.clear();
+    /*!mtags:re2c format = "@@ = -1;"; */
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:yyfill:enable = 0;
+
+        end     = "\x00";
+        eol     = "\n";
+        wsp     = [ \t]*;
+        eq      = wsp "=" wsp;
+        nick    = [a-zA-Z0-9_]+;
+        name    = [A-Z] ("." | [a-z]+);
+        names   = name (wsp name)*;
+        country = [A-Za-z ]+;
+        channel = ([a-z0-9-]+ "/")? "#" [a-z0-9-]+;
+
+        *         { printf("error: %s\n", YYCURSOR); return 1; }
+        end       { return 0; }
+        wsp | eol { goto loop; }
+
+        @n1 nick @n2 wsp "{" wsp eol
+            wsp "name"     eq @a1 names   @a2 wsp eol
+            wsp "country"  eq @c1 country @c2 wsp eol
+            wsp "channels" eq (wsp #h1 channel #h2 wsp ";")* wsp eol
+        wsp "}" {
+            printf("\n%.*s\n", (int) (n2 - n1), n1);
+            printf("  name:     %.*s\n", (int) (a2 - a1), a1);
+            printf("  country:  %.*s\n", (int) (c2 - c1), c1);
+            printf("  channels:\n");
+            print_channels(tp, h1, h2);
+            goto loop;
+        }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    if (argc < 2) {
+        fprintf(stderr, "no input files\n");
+        return 1;
+    }
+
+    FILE *file = fopen(argv[1], "r");
+
+    fseek(file, 0, SEEK_END);
+    const size_t fsize = (size_t) ftell(file);
+    fseek(file, 0, SEEK_SET);
+
+    char *buffer = (char*) malloc(fsize + 1);
+
+    fread(buffer, 1, fsize, file);
+    buffer[fsize] = 0;
+
+    const int status = lex(buffer);
+
+    fclose(file);
+    free(buffer);
+
+    return status;
+}
diff --git a/re2c/test/examples/14_options.i--tags.c b/re2c/test/examples/14_options.i--tags.c
new file mode 100644 (file)
index 0000000..228f9b3
--- /dev/null
@@ -0,0 +1,1636 @@
+/* Generated by re2c */
+#include <stdio.h>
+#include <string>
+#include <vector>
+
+typedef std::vector<std::pair<std::string, std::string> > unknown_t;
+
+struct options_t
+{
+    std::string date;
+    std::string path;
+    std::string format;
+    std::string limit;
+    bool verbose;
+};
+
+static void show(const options_t &o, const unknown_t &u)
+{
+    printf("\noptions:\n");
+    printf("  date:    %s\n", o.date.c_str());
+    printf("  path:    %s\n", o.path.c_str());
+    printf("  format:  %s\n", o.format.c_str());
+    printf("  limit:   %s\n", o.limit.c_str());
+    printf("  verbose: %s\n", o.verbose ? "yes" : "no");
+
+    printf("\nunknown:\n");
+    unknown_t::const_iterator i = u.begin(), e = u.end();
+    for (; i != e; ++i) {
+        printf("  %s: '%s'\n", i->first.c_str(), i->second.c_str());
+    }
+}
+
+static void bad_arg(const char *k, const char *v, const char *e)
+{
+    printf("bad argument '%.*s' to option %.*s\n",
+        (int) (e - v), v, (int) (v - k), k);
+}
+
+static int lex(const char *s)
+{
+    options_t o;
+    unknown_t u;
+    const char *m, *k, *v;
+    const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;
+loop:
+    
+{
+       char yych;
+       unsigned int yyaccept = 0;
+       yych = *s;
+       switch (yych) {
+       case 0x00:      goto yy2;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy6;
+       case '-':
+               yyt2 = s;
+               goto yy9;
+       default:        goto yy4;
+       }
+yy2:
+       ++s;
+       { show(o, u); return 0; }
+yy4:
+       ++s;
+yy5:
+       { printf("error: %s\n", s); return 1; }
+yy6:
+       yych = *++s;
+       switch (yych) {
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy6;
+       default:        goto yy8;
+       }
+yy8:
+       { goto loop; }
+yy9:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy5;
+       case '-':
+               yyt3 = s;
+               goto yy13;
+       case 'd':
+               yyt3 = s;
+               goto yy14;
+       case 'f':
+               yyt3 = s;
+               goto yy16;
+       case 'l':
+               yyt3 = s;
+               goto yy17;
+       case 'p':
+               yyt3 = s;
+               goto yy18;
+       case 'v':
+               yyt3 = s;
+               goto yy20;
+       default:
+               yyt3 = s;
+               goto yy10;
+       }
+yy10:
+       yych = *++s;
+yy11:
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy10;
+       }
+yy12:
+       k = yyt3;
+       v = yyt4;
+       {
+            u.push_back(std::make_pair(std::string(k, v), std::string(v, s)));
+            goto loop;
+        }
+yy13:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt1 = yyt4 = s;
+               goto yy25;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       case 'd':
+               yyt1 = s;
+               goto yy27;
+       case 'f':
+               yyt1 = s;
+               goto yy28;
+       case 'l':
+               yyt1 = s;
+               goto yy29;
+       case 'p':
+               yyt1 = s;
+               goto yy30;
+       case 'v':
+               yyt1 = s;
+               goto yy31;
+       default:
+               yyt3 = s;
+               goto yy10;
+       }
+yy14:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt5 = s;
+               goto yy34;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = yyt5 = s;
+               goto yy36;
+       case '=':
+               yyt5 = s;
+               goto yy37;
+       default:
+               yyt5 = s;
+               goto yy32;
+       }
+yy15:
+       k = yyt2;
+       v = yyt5;
+       {
+            bad_arg(k, v, s);
+            goto loop;
+        }
+yy16:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt1 = yyt5 = s;
+               goto yy38;
+       case '=':
+               yyt5 = s;
+               goto yy37;
+       default:
+               yyt5 = s;
+               goto yy32;
+       }
+yy17:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt5 = s;
+               goto yy34;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = yyt5 = s;
+               goto yy40;
+       case '=':
+               yyt5 = s;
+               goto yy37;
+       default:
+               yyt5 = s;
+               goto yy32;
+       }
+yy18:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt1 = s;
+               goto yy19;
+       case '"':
+               yyt1 = yyt5 = s;
+               goto yy45;
+       case '=':
+               yyt5 = s;
+               goto yy37;
+       default:
+               yyt1 = s;
+               goto yy43;
+       }
+yy19:
+       v = yyt1;
+       { o.path   = std::string(v, s); goto loop; }
+yy20:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy21;
+       default:        goto yy11;
+       }
+yy21:
+       { o.verbose = true; goto loop; }
+yy22:
+       yyaccept = 0;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+               yyt4 = s;
+               goto yy12;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy47;
+       case '"':
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy22;
+       }
+yy24:
+       yych = *++s;
+       switch (yych) {
+       case '"':       goto yy52;
+       default:        goto yy51;
+       }
+yy25:
+       yyaccept = 1;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy47;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy25;
+       }
+yy27:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'a':       goto yy54;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy28:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'o':       goto yy55;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy29:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'i':       goto yy56;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy30:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'a':       goto yy57;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy31:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'e':       goto yy58;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy32:
+       yych = *++s;
+yy33:
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy15;
+       case '"':
+               yyt4 = s;
+               goto yy59;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy32;
+       }
+yy34:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy15;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy61;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy34;
+       }
+yy36:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy63;
+       default:        goto yy33;
+       }
+yy37:
+       yych = *++s;
+       switch (yych) {
+       case '"':       goto yy66;
+       default:        goto yy65;
+       }
+yy38:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy15;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy68;
+       case '"':       goto yy70;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy38;
+       }
+yy40:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy42;
+       case '"':
+               yyt4 = s;
+               goto yy59;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy40;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       case 'B':
+       case 'G':
+       case 'K':
+       case 'M':       goto yy73;
+       default:        goto yy32;
+       }
+yy42:
+       v = yyt1;
+       { o.limit  = std::string(v, s); goto loop; }
+yy43:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy19;
+       case '"':
+               yyt4 = s;
+               goto yy74;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy43;
+       }
+yy45:
+       yyaccept = 3;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy19;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy61;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy45;
+       }
+yy47:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy49;
+       case '"':       goto yy76;
+       default:        goto yy47;
+       }
+yy49:
+       s = m;
+       switch (yyaccept) {
+       case 0: 
+               yyt4 = s;
+               goto yy12;
+       case 1: 
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case 2:         goto yy15;
+       case 3:         goto yy19;
+       case 4:         goto yy12;
+       default:        goto yy72;
+       }
+yy50:
+       yych = *++s;
+yy51:
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy12;
+       default:        goto yy50;
+       }
+yy52:
+       yyaccept = 4;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy12;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy47;
+       default:        goto yy52;
+       }
+yy54:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 't':       goto yy78;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy55:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'r':       goto yy79;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy56:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'm':       goto yy80;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy57:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 't':       goto yy81;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy58:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'r':       goto yy82;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy59:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy15;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy47;
+       case '"':
+               yyt4 = s;
+               goto yy59;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy59;
+       }
+yy61:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy49;
+       case '"':       goto yy83;
+       default:        goto yy61;
+       }
+yy63:
+       yych = *++s;
+       switch (yych) {
+       case '/':       goto yy85;
+       default:        goto yy33;
+       }
+yy64:
+       yych = *++s;
+yy65:
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy15;
+       default:        goto yy64;
+       }
+yy66:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy15;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy61;
+       default:        goto yy66;
+       }
+yy68:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy49;
+       case '"':       goto yy86;
+       default:        goto yy68;
+       }
+yy70:
+       yyaccept = 5;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy72;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy68;
+       case '"':       goto yy70;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy38;
+       }
+yy72:
+       v = yyt1;
+       { o.format = std::string(v, s); goto loop; }
+yy73:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy42;
+       default:        goto yy33;
+       }
+yy74:
+       yyaccept = 3;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:      goto yy19;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy47;
+       case '"':
+               yyt4 = s;
+               goto yy74;
+       case '=':
+               yyt4 = s;
+               goto yy24;
+       default:        goto yy74;
+       }
+yy76:
+       yyaccept = 4;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy12;
+       case '"':       goto yy76;
+       default:        goto yy47;
+       }
+yy78:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'e':       goto yy88;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy79:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'm':       goto yy89;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy80:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'i':       goto yy90;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy81:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'h':       goto yy91;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy82:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'b':       goto yy92;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy83:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy15;
+       case '"':       goto yy83;
+       default:        goto yy61;
+       }
+yy85:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy93;
+       default:        goto yy33;
+       }
+yy86:
+       yyaccept = 5;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy72;
+       case '"':       goto yy86;
+       default:        goto yy68;
+       }
+yy88:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy34;
+       case '=':
+               yyt5 = s;
+               goto yy94;
+       default:
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy32;
+       }
+yy89:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'a':       goto yy95;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy90:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 't':       goto yy96;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy91:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy34;
+       case '=':
+               yyt5 = s;
+               goto yy97;
+       default:
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy32;
+       }
+yy92:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'o':       goto yy98;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy93:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy99;
+       default:        goto yy33;
+       }
+yy94:
+       yych = *++s;
+       switch (yych) {
+       case '"':       goto yy66;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = s;
+               goto yy100;
+       default:        goto yy65;
+       }
+yy95:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 't':       goto yy101;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy96:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy34;
+       case '=':
+               yyt5 = s;
+               goto yy102;
+       default:
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy32;
+       }
+yy97:
+       yych = *++s;
+       yyt1 = s;
+       switch (yych) {
+       case '"':       goto yy105;
+       default:        goto yy104;
+       }
+yy98:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 's':       goto yy107;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy99:
+       yych = *++s;
+       switch (yych) {
+       case '/':       goto yy108;
+       default:        goto yy33;
+       }
+yy100:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy109;
+       default:        goto yy65;
+       }
+yy101:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt5 = s;
+               goto yy15;
+       case '"':
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy34;
+       case '=':
+               yyt5 = s;
+               goto yy110;
+       default:
+               yyt3 = yyt1;
+               yyt5 = s;
+               goto yy32;
+       }
+yy102:
+       yych = *++s;
+       switch (yych) {
+       case '"':       goto yy66;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+               yyt1 = s;
+               goto yy111;
+       default:        goto yy65;
+       }
+yy103:
+       yych = *++s;
+yy104:
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy19;
+       default:        goto yy103;
+       }
+yy105:
+       yyaccept = 3;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy19;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy61;
+       default:        goto yy105;
+       }
+yy107:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy12;
+       case '"':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy22;
+       case '=':
+               yyt3 = yyt1;
+               yyt4 = s;
+               goto yy24;
+       case 'e':
+               yyt3 = yyt1;
+               goto yy20;
+       default:
+               yyt3 = yyt1;
+               goto yy10;
+       }
+yy108:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy113;
+       default:        goto yy33;
+       }
+yy109:
+       yych = *++s;
+       switch (yych) {
+       case '/':       goto yy114;
+       default:        goto yy65;
+       }
+yy110:
+       yych = *++s;
+       switch (yych) {
+       case '"':
+               yyt1 = s;
+               goto yy115;
+       default:        goto yy65;
+       }
+yy111:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy42;
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy111;
+       case 'B':
+       case 'G':
+       case 'K':
+       case 'M':       goto yy117;
+       default:        goto yy64;
+       }
+yy113:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy118;
+       default:        goto yy33;
+       }
+yy114:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy119;
+       default:        goto yy65;
+       }
+yy115:
+       yyaccept = 2;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy15;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy68;
+       case '"':       goto yy120;
+       default:        goto yy115;
+       }
+yy117:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy42;
+       default:        goto yy64;
+       }
+yy118:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy122;
+       default:        goto yy33;
+       }
+yy119:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy123;
+       default:        goto yy65;
+       }
+yy120:
+       yyaccept = 5;
+       yych = *(m = ++s);
+       switch (yych) {
+       case 0x00:
+       case '=':       goto yy72;
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy68;
+       case '"':       goto yy120;
+       default:        goto yy115;
+       }
+yy122:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy124;
+       default:        goto yy33;
+       }
+yy123:
+       yych = *++s;
+       switch (yych) {
+       case '/':       goto yy126;
+       default:        goto yy65;
+       }
+yy124:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':       goto yy125;
+       default:        goto yy33;
+       }
+yy125:
+       v = yyt1;
+       { o.date   = std::string(v, s); goto loop; }
+yy126:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy127;
+       default:        goto yy65;
+       }
+yy127:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy128;
+       default:        goto yy65;
+       }
+yy128:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy129;
+       default:        goto yy65;
+       }
+yy129:
+       yych = *++s;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy130;
+       default:        goto yy65;
+       }
+yy130:
+       yych = *++s;
+       switch (yych) {
+       case 0x00:
+       case '\t':
+       case '\n':
+       case '\r':
+       case ' ':
+       case '=':       goto yy125;
+       default:        goto yy64;
+       }
+}
+
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) lex(argv[i]);
+    return 0;
+}
+re2c: warning: line 68: rule matches empty string [-Wmatch-empty-string]
+re2c: warning: line 80: tag 'k' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
+re2c: warning: line 80: tag 'v' has 2nd degree of nondeterminism [-Wnondeterministic-tags]
diff --git a/re2c/test/examples/14_options.i--tags.re b/re2c/test/examples/14_options.i--tags.re
new file mode 100644 (file)
index 0000000..2b9b1c4
--- /dev/null
@@ -0,0 +1,91 @@
+#include <stdio.h>
+#include <string>
+#include <vector>
+
+typedef std::vector<std::pair<std::string, std::string> > unknown_t;
+
+struct options_t
+{
+    std::string date;
+    std::string path;
+    std::string format;
+    std::string limit;
+    bool verbose;
+};
+
+static void show(const options_t &o, const unknown_t &u)
+{
+    printf("\noptions:\n");
+    printf("  date:    %s\n", o.date.c_str());
+    printf("  path:    %s\n", o.path.c_str());
+    printf("  format:  %s\n", o.format.c_str());
+    printf("  limit:   %s\n", o.limit.c_str());
+    printf("  verbose: %s\n", o.verbose ? "yes" : "no");
+
+    printf("\nunknown:\n");
+    unknown_t::const_iterator i = u.begin(), e = u.end();
+    for (; i != e; ++i) {
+        printf("  %s: '%s'\n", i->first.c_str(), i->second.c_str());
+    }
+}
+
+static void bad_arg(const char *k, const char *v, const char *e)
+{
+    printf("bad argument '%.*s' to option %.*s\n",
+        (int) (e - v), v, (int) (v - k), k);
+}
+
+static int lex(const char *s)
+{
+    options_t o;
+    unknown_t u;
+    const char *m, *k, *v;
+    /*!stags:re2c format = 'const char *@@;'; */
+loop:
+    /*!re2c
+        re2c:define:YYCTYPE = char;
+        re2c:define:YYCURSOR = s;
+        re2c:define:YYMARKER = m;
+        re2c:yyfill:enable = 0;
+
+        end    = "\x00";
+        sp     = [ \t\n\r];
+        eq     = "=";
+        wsp    = sp*;
+        char   = [^=] \ end;
+        ochar  = char \ sp;
+        pchar  = ochar \ [/];
+        str    = ["] (char \ ["] | [\]["])* ["];
+        opt    = ochar+;
+        arg    = ochar* | str;
+        date   = [0-9]{2} "/" [0-9]{2} "/" [0-9]{4};
+        path   = pchar* ("/" pchar*)*;
+        format = str;
+        limit  = [0-9]+ [BKMG]?;
+
+        *   { printf("error: %s\n", s); return 1; }
+        end { show(o, u); return 0; }
+        wsp { goto loop; }
+
+        "-v" | "--verbose"              { o.verbose = true; goto loop; }
+        ("-l" | "--limit"  eq) @v limit { o.limit  = std::string(v, s); goto loop; }
+        ("-f" | "--format" eq) @v str   { o.format = std::string(v, s); goto loop; }
+        ("-d" | "--date"   eq) @v date  { o.date   = std::string(v, s); goto loop; }
+        ("-p" | "--path"   eq) @v path  { o.path   = std::string(v, s); goto loop; }
+
+        @k ("--" ("limit" | "format" | "date" | "path") | "-" [lfdp]) @v eq? arg {
+            bad_arg(k, v, s);
+            goto loop;
+        }
+        [-]{1,2} @k opt @v eq? arg {
+            u.push_back(std::make_pair(std::string(k, v), std::string(v, s)));
+            goto loop;
+        }
+    */
+}
+
+int main(int argc, char **argv)
+{
+    for (int i = 1; i < argc; ++i) lex(argv[i]);
+    return 0;
+}