/* Generated by re2c 0.9.1-C on Mon Sep  9 22:26:18 2013
 */
#line 1 "./modules/parsers/nasm/nasm-token.re"
/*
 * NASM-compatible re2c lexer
 *
 *  Copyright (C) 2001-2007  Peter Johnson
 *
 *  Portions based on re2c's example code.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND OTHER CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
#include <util.h>

#include <libyasm.h>

#include "modules/parsers/nasm/nasm-parser.h"
#include "modules/preprocs/nasm/nasm.h"


#define YYCURSOR        cursor
#define YYLIMIT         (s->lim)
#define YYMARKER        (s->ptr)
#define YYFILL(n)       {}

#define RETURN(i)       {s->cur = cursor; parser_nasm->tokch = s->tok[0]; \
                         return i;}

#define SCANINIT()      {s->tok = cursor;}

#define TOK             ((char *)s->tok)
#define TOKLEN          (size_t)(cursor-s->tok)


/* starting size of string buffer */
#define STRBUF_ALLOC_SIZE       128

/* string buffer used when parsing strings/character constants */
static YYCTYPE *strbuf = NULL;

/* length of strbuf (including terminating NULL character) */
static size_t strbuf_size = 0;

static int linechg_numcount;

#line 71 "./modules/parsers/nasm/nasm-token.re"


static int
handle_dot_label(YYSTYPE *lvalp, char *tok, size_t toklen, size_t zeropos,
                 yasm_parser_nasm *parser_nasm)
{
    /* check for special non-local labels like ..start */
    if (tok[zeropos+1] == '.') {
        lvalp->str_val = yasm__xstrndup(tok+zeropos+(parser_nasm->tasm?2:0),
            toklen-zeropos-(parser_nasm->tasm?2:0));
        /* check for special non-local ..@label */
        if (lvalp->str_val[zeropos+2] == '@')
            return NONLOCAL_ID;
        return SPECIAL_ID;
    }
    if (parser_nasm->masm && tok[zeropos] == '.') {
        lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
        return SPECIAL_ID;
    }
    if (parser_nasm->tasm && (!tasm_locals || 
                (tok[zeropos] == '.' &&
                 tok[zeropos+1] != '@' && tok[zeropos+2] != '@'))) {
        /* no locals on Tasm without the 'locals' directive */
        /* .foo is never local either, but .@@foo may be (local structure
         * members) */
        lvalp->str_val = yasm__xstrndup(tok + zeropos, toklen - zeropos);
        return SPECIAL_ID;
    }
    if (!parser_nasm->locallabel_base) {
        lvalp->str_val = yasm__xstrndup(tok+zeropos, toklen-zeropos);
        yasm_warn_set(YASM_WARN_GENERAL,
                      N_("no non-local label before `%s'"),
                      lvalp->str_val);
    } else {
        size_t len = toklen - zeropos + parser_nasm->locallabel_base_len;
        lvalp->str_val = yasm_xmalloc(len + 1);
        strcpy(lvalp->str_val, parser_nasm->locallabel_base);
        strncat(lvalp->str_val, tok+zeropos, toklen-zeropos);
        lvalp->str_val[len] = '\0';
    }

    return LOCAL_ID;
}

int
nasm_parser_lex(YYSTYPE *lvalp, yasm_parser_nasm *parser_nasm)
{
    yasm_scanner *s = &parser_nasm->s;
    YYCTYPE *cursor = s->cur;
    YYCTYPE endch;
    size_t count;
    YYCTYPE savech;

    /* Handle one token of lookahead */
    if (parser_nasm->peek_token != NONE) {
        int tok = parser_nasm->peek_token;
        *lvalp = parser_nasm->peek_tokval;  /* structure copy */
        parser_nasm->tokch = parser_nasm->peek_tokch;
        parser_nasm->peek_token = NONE;
        return tok;
    }

    /* Catch EOL (EOF from the scanner perspective) */
    if (s->eof && cursor == s->eof)
        return 0;

    /* Jump to proper "exclusive" states */
    switch (parser_nasm->state) {
        case DIRECTIVE:
            goto directive;
        case SECTION_DIRECTIVE:
            goto section_directive;
        case DIRECTIVE2:
            goto directive2;
        case LINECHG:
            goto linechg;
        case LINECHG2:
            goto linechg2;
        default:
            break;
    }

scan:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   3,   3,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   3,   1, 
	255, 255,  63,  63,  63,  63,  63,  63, 
	 15,  15,   1,   1,   1,   1,   1,   3, 
	  3,   7,   7,   7,   7,   7,   7,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   1,   1,   1,   1, 167, 
	  1,   7,   7,   7,   7,   7,   7,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   1,   1,   1,   3,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0, 128,   0,   0,   0, 128,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	128,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	};

#line 221 "nasm-token.c"
{
	YYCTYPE yych;
	unsigned int yyaccept;
	goto yy0;
	++YYCURSOR;
yy0:
	if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
	yych = *YYCURSOR;
	switch(yych){
	case '\000':	goto yy43;
	case '\t':	case '\r':	case ' ':	goto yy41;
	case '"':	case '\'':	goto yy9;
	case '$':	goto yy7;
	case '%':	goto yy11;
	case '&':	case '(':
	case ')':
	case '*':
	case '+':
	case ',':
	case '-':	case ':':	case '=':	case '[':	case '^':	case '|':	case '~':	goto yy32;
	case '.':	goto yy36;
	case '/':	goto yy31;
	case '0':	goto yy2;
	case '1':	goto yy4;
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy5;
	case '8':
	case '9':	goto yy6;
	case ';':	goto yy39;
	case '<':	goto yy28;
	case '>':	goto yy30;
	case '?':	goto yy33;
	case '@':	goto yy37;
	case 'A':	case 'a':	goto yy26;
	case 'B':	case 'b':	goto yy12;
	case 'C':	case 'F':
	case 'G':	case 'J':
	case 'K':	case 'M':	case 'P':	case 'U':
	case 'V':	case 'X':	case 'Z':	case '_':	case 'c':	case 'f':
	case 'g':	case 'j':
	case 'k':	case 'm':	case 'p':	case 'u':
	case 'v':	case 'x':	case 'z':	goto yy38;
	case 'D':	case 'd':	goto yy16;
	case 'E':	case 'e':	goto yy24;
	case 'H':	case 'h':	goto yy14;
	case 'I':	case 'i':	goto yy23;
	case 'L':	case 'l':	goto yy17;
	case 'N':	case 'n':	goto yy27;
	case 'O':	case 'o':	goto yy20;
	case 'Q':	case 'q':	goto yy18;
	case 'R':	case 'r':	goto yy22;
	case 'S':	case 's':	goto yy25;
	case 'T':	case 't':	goto yy19;
	case 'W':	case 'w':	goto yy15;
	case 'Y':	case 'y':	goto yy21;
	case ']':	goto yy34;
	default:	goto yy45;
	}
yy2:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yybm[0+yych] & 64) {
		goto yy222;
	}
	switch(yych){
	case '.':	goto yy203;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy216;
	case '8':
	case '9':	goto yy206;
	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy208;
	case 'B':	case 'b':	goto yy224;
	case 'H':	case 'h':	goto yy210;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy220;
	case 'X':	case 'x':	goto yy228;
	case '_':	goto yy226;
	default:	goto yy3;
	}
yy3:
#line 160 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            lvalp->intn = yasm_intnum_create_dec(TOK);
            s->tok[TOKLEN] = savech;
            RETURN(INTNUM);
        }
#line 324 "nasm-token.c"
yy4:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yybm[0+yych] & 64) {
		goto yy222;
	}
	switch(yych){
	case '.':	goto yy203;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy216;
	case '8':
	case '9':	goto yy206;
	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy208;
	case 'B':	case 'b':	goto yy224;
	case 'H':	case 'h':	goto yy210;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy220;
	case '_':	goto yy226;
	default:	goto yy3;
	}
yy5:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yybm[0+yych] & 16) {
		goto yy216;
	}
	if(yych <= 'P'){
		if(yych <= '@'){
			if(yych <= '.'){
				if(yych <= '-')	goto yy3;
				goto yy203;
			} else {
				if(yych <= '/')	goto yy3;
				if(yych <= '9')	goto yy206;
				goto yy3;
			}
		} else {
			if(yych <= 'H'){
				if(yych <= 'F')	goto yy208;
				if(yych <= 'G')	goto yy3;
				goto yy210;
			} else {
				if(yych == 'O')	goto yy220;
				goto yy3;
			}
		}
	} else {
		if(yych <= 'g'){
			if(yych <= '_'){
				if(yych <= 'Q')	goto yy220;
				if(yych <= '^')	goto yy3;
				goto yy218;
			} else {
				if(yych <= '`')	goto yy3;
				if(yych <= 'f')	goto yy208;
				goto yy3;
			}
		} else {
			if(yych <= 'o'){
				if(yych <= 'h')	goto yy210;
				if(yych <= 'n')	goto yy3;
				goto yy220;
			} else {
				if(yych == 'q')	goto yy220;
				goto yy3;
			}
		}
	}
yy6:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych <= 'G'){
		if(yych <= '/'){
			if(yych == '.')	goto yy203;
			goto yy3;
		} else {
			if(yych <= '9')	goto yy206;
			if(yych <= '@')	goto yy3;
			if(yych <= 'F')	goto yy208;
			goto yy3;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'H')	goto yy210;
			if(yych == '_')	goto yy208;
			goto yy3;
		} else {
			if(yych <= 'f')	goto yy208;
			if(yych == 'h')	goto yy210;
			goto yy3;
		}
	}
yy7:	yych = *++YYCURSOR;
	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy8;
			if(yych <= '#')	goto yy194;
			if(yych <= '$')	goto yy197;
			goto yy8;
		} else {
			if(yych <= '.')	goto yy194;
			if(yych <= '/')	goto yy8;
			if(yych <= '9')	goto yy199;
			goto yy8;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy194;
			if(yych == '_')	goto yy194;
			goto yy8;
		} else {
			if(yych <= 'z')	goto yy194;
			if(yych == '~')	goto yy194;
			goto yy8;
		}
	}
yy8:
#line 371 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(s->tok[0]); }
#line 452 "nasm-token.c"
yy9:	yych = *++YYCURSOR;
	goto yy10;
yy10:
#line 213 "./modules/parsers/nasm/nasm-token.re"
{
            endch = s->tok[0];
            goto stringconst;
        }
#line 461 "nasm-token.c"
yy11:	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych == '%')	goto yy186;
	if(yych == 'l')	goto yy188;
	goto yy8;
yy12:	yych = *++YYCURSOR;
	if(yych == 'Y')	goto yy182;
	if(yych == 'y')	goto yy182;
	goto yy51;
yy13:
#line 391 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            if (parser_nasm->state != INSTRUCTION) {
                uintptr_t prefix;
                switch (yasm_arch_parse_check_insnprefix
                        (p_object->arch, TOK, TOKLEN, cur_line, &lvalp->bc,
                         &prefix)) {
                    case YASM_ARCH_INSN:
                        parser_nasm->state = INSTRUCTION;
                        s->tok[TOKLEN] = savech;
                        RETURN(INSN);
                    case YASM_ARCH_PREFIX:
                        lvalp->arch_data = prefix;
                        s->tok[TOKLEN] = savech;
                        RETURN(PREFIX);
                    default:
                        break;
                }
            }
            switch (yasm_arch_parse_check_regtmod
                    (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
                case YASM_ARCH_REG:
                    s->tok[TOKLEN] = savech;
                    RETURN(REG);
                case YASM_ARCH_SEGREG:
                    s->tok[TOKLEN] = savech;
                    RETURN(SEGREG);
                case YASM_ARCH_TARGETMOD:
                    s->tok[TOKLEN] = savech;
                    RETURN(TARGETMOD);
                case YASM_ARCH_REGGROUP:
                    if (parser_nasm->masm) {
                        s->tok[TOKLEN] = savech;
                        RETURN(REGGROUP);
                    }
                default:
                    break;
            }
            if (parser_nasm->masm) {
               if (!yasm__strcasecmp(TOK, "offset")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(OFFSET);
                }
            } else if (parser_nasm->tasm) {
                if (!yasm__strcasecmp(TOK, "shl")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(LEFT_OP);
                }
                if (!yasm__strcasecmp(TOK, "shr")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(RIGHT_OP);
                }
                if (!yasm__strcasecmp(TOK, "and")) {
                    s->tok[TOKLEN] = savech;
                    RETURN('&');
                }
                if (!yasm__strcasecmp(TOK, "or")) {
                    s->tok[TOKLEN] = savech;
                    RETURN('|');
                }
                if (!yasm__strcasecmp(TOK, "not")) {
                    s->tok[TOKLEN] = savech;
                    RETURN('~');
                }
                if (!yasm__strcasecmp(TOK, "low")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(LOW);
                }
                if (!yasm__strcasecmp(TOK, "high")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(HIGH);
                }
                if (!yasm__strcasecmp(TOK, "offset")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(OFFSET);
                }
                if (!yasm__strcasecmp(TOK, "fword")) {
                    s->tok[TOKLEN] = savech;
                    lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
                    RETURN(SIZE_OVERRIDE);
                }
                if (!yasm__strcasecmp(TOK, "df")) {
                    s->tok[TOKLEN] = savech;
                    lvalp->int_info = yasm_arch_wordsize(p_object->arch)*3;
                    parser_nasm->state = INSTRUCTION;
                    RETURN(DECLARE_DATA);
                }
                if (!yasm__strcasecmp(TOK, "label")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(LABEL);
                }
                if (!yasm__strcasecmp(TOK, "dup")) {
                    s->tok[TOKLEN] = savech;
                    RETURN(DUP);
                }
            }
            /* Propagate errors in case we got a warning from the arch */
            yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
            /* Just an identifier, return as such. */
            s->tok[TOKLEN] = savech;
            lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
            RETURN(ID);
        }
#line 577 "nasm-token.c"
yy14:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy177;
	if(yych == 'w')	goto yy177;
	goto yy51;
yy15:	yych = *++YYCURSOR;
	if(yych <= 'R'){
		if(yych == 'O')	goto yy170;
		if(yych <= 'Q')	goto yy51;
		goto yy171;
	} else {
		if(yych <= 'o'){
			if(yych <= 'n')	goto yy51;
			goto yy170;
		} else {
			if(yych == 'r')	goto yy171;
			goto yy51;
		}
	}
yy16:	yych = *++YYCURSOR;
	switch(yych){
	case 'B':	case 'b':	goto yy144;
	case 'D':	case 'd':	goto yy146;
	case 'H':	case 'h':	goto yy148;
	case 'O':	case 'o':	goto yy149;
	case 'Q':	case 'q':	goto yy151;
	case 'T':	case 't':	goto yy153;
	case 'W':	case 'w':	goto yy155;
	case 'Y':	case 'y':	goto yy157;
	default:	goto yy51;
	}
yy17:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy140;
	if(yych == 'o')	goto yy140;
	goto yy51;
yy18:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy135;
	if(yych == 'w')	goto yy135;
	goto yy51;
yy19:	yych = *++YYCURSOR;
	if(yych <= 'W'){
		if(yych == 'I')	goto yy125;
		if(yych <= 'V')	goto yy51;
		goto yy126;
	} else {
		if(yych <= 'i'){
			if(yych <= 'h')	goto yy51;
			goto yy125;
		} else {
			if(yych == 'w')	goto yy126;
			goto yy51;
		}
	}
yy20:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy120;
	if(yych == 'w')	goto yy120;
	goto yy51;
yy21:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy115;
	if(yych == 'w')	goto yy115;
	goto yy51;
yy22:	yych = *++YYCURSOR;
	if(yych == 'E')	goto yy92;
	if(yych == 'e')	goto yy92;
	goto yy51;
yy23:	yych = *++YYCURSOR;
	if(yych == 'N')	goto yy86;
	if(yych == 'n')	goto yy86;
	goto yy51;
yy24:	yych = *++YYCURSOR;
	if(yych == 'Q')	goto yy83;
	if(yych == 'q')	goto yy83;
	goto yy51;
yy25:	yych = *++YYCURSOR;
	if(yych <= 'T'){
		if(yych == 'E')	goto yy74;
		if(yych <= 'S')	goto yy51;
		goto yy75;
	} else {
		if(yych <= 'e'){
			if(yych <= 'd')	goto yy51;
			goto yy74;
		} else {
			if(yych == 't')	goto yy75;
			goto yy51;
		}
	}
yy26:	yych = *++YYCURSOR;
	if(yych == 'B')	goto yy71;
	if(yych == 'b')	goto yy71;
	goto yy51;
yy27:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy64;
	if(yych == 'o')	goto yy64;
	goto yy51;
yy28:	yych = *++YYCURSOR;
	if(yych == '<')	goto yy62;
	goto yy29;
yy29:
#line 502 "./modules/parsers/nasm/nasm-token.re"
{
            yasm_warn_set(YASM_WARN_UNREC_CHAR,
                          N_("ignoring unrecognized character `%s'"),
                          yasm__conv_unprint(s->tok[0]));
            goto scan;
        }
#line 683 "nasm-token.c"
yy30:	yych = *++YYCURSOR;
	if(yych == '>')	goto yy60;
	goto yy29;
yy31:	yych = *++YYCURSOR;
	if(yych == '/')	goto yy58;
	goto yy8;
yy32:	yych = *++YYCURSOR;
	goto yy8;
yy33:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy8;
yy34:	yych = *++YYCURSOR;
	goto yy35;
yy35:
#line 372 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(s->tok[0]); }
#line 702 "nasm-token.c"
yy36:	yych = *++YYCURSOR;
	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy29;
			if(yych <= '$')	goto yy56;
			goto yy29;
		} else {
			if(yych == '/')	goto yy29;
			if(yych <= '9')	goto yy56;
			goto yy29;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy56;
			if(yych == '_')	goto yy56;
			goto yy29;
		} else {
			if(yych <= 'z')	goto yy56;
			if(yych == '~')	goto yy56;
			goto yy29;
		}
	}
yy37:	yych = *++YYCURSOR;
	if(yych == '@')	goto yy52;
	goto yy51;
yy38:	yych = *++YYCURSOR;
	goto yy51;
yy39:	yych = *++YYCURSOR;
	goto yy49;
yy40:
#line 496 "./modules/parsers/nasm/nasm-token.re"
{ goto scan; }
#line 735 "nasm-token.c"
yy41:	yych = *++YYCURSOR;
	goto yy47;
yy42:
#line 498 "./modules/parsers/nasm/nasm-token.re"
{ goto scan; }
#line 741 "nasm-token.c"
yy43:	yych = *++YYCURSOR;
	goto yy44;
yy44:
#line 500 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 747 "nasm-token.c"
yy45:	yych = *++YYCURSOR;
	goto yy29;
yy46:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy47;
yy47:	if(yybm[256+yych] & 128) {
		goto yy46;
	}
	goto yy42;
yy48:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy49;
yy49:	if(yybm[0+yych] & 1) {
		goto yy48;
	}
	goto yy40;
yy50:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy51;
yy51:	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy13;
yy52:	yych = *++YYCURSOR;
	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy13;
			if(yych >= '%')	goto yy13;
			goto yy53;
		} else {
			if(yych == '/')	goto yy13;
			if(yych >= ':')	goto yy13;
			goto yy53;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy53;
			if(yych != '_')	goto yy13;
			goto yy53;
		} else {
			if(yych <= 'z')	goto yy53;
			if(yych != '~')	goto yy13;
			goto yy53;
		}
	}
yy53:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy54;
yy54:	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy55;
			if(yych <= '$')	goto yy53;
			goto yy55;
		} else {
			if(yych == '/')	goto yy55;
			if(yych <= '9')	goto yy53;
			goto yy55;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy53;
			if(yych == '_')	goto yy53;
			goto yy55;
		} else {
			if(yych <= 'z')	goto yy53;
			if(yych == '~')	goto yy53;
			goto yy55;
		}
	}
yy55:
#line 375 "./modules/parsers/nasm/nasm-token.re"
{
            RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 0, parser_nasm));
        }
#line 826 "nasm-token.c"
yy56:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy57;
yy57:	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy55;
			if(yych <= '$')	goto yy56;
			goto yy55;
		} else {
			if(yych == '/')	goto yy55;
			if(yych <= '9')	goto yy56;
			goto yy55;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy56;
			if(yych == '_')	goto yy56;
			goto yy55;
		} else {
			if(yych <= 'z')	goto yy56;
			if(yych == '~')	goto yy56;
			goto yy55;
		}
	}
yy58:	yych = *++YYCURSOR;
	goto yy59;
yy59:
#line 368 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(SIGNDIV); }
#line 857 "nasm-token.c"
yy60:	yych = *++YYCURSOR;
	goto yy61;
yy61:
#line 367 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(RIGHT_OP); }
#line 863 "nasm-token.c"
yy62:	yych = *++YYCURSOR;
	goto yy63;
yy63:
#line 366 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(LEFT_OP); }
#line 869 "nasm-token.c"
yy64:	yych = *++YYCURSOR;
	if(yych == 'S')	goto yy65;
	if(yych != 's')	goto yy51;
	goto yy65;
yy65:	yych = *++YYCURSOR;
	if(yych == 'P')	goto yy66;
	if(yych != 'p')	goto yy51;
	goto yy66;
yy66:	yych = *++YYCURSOR;
	if(yych == 'L')	goto yy67;
	if(yych != 'l')	goto yy51;
	goto yy67;
yy67:	yych = *++YYCURSOR;
	if(yych == 'I')	goto yy68;
	if(yych != 'i')	goto yy51;
	goto yy68;
yy68:	yych = *++YYCURSOR;
	if(yych == 'T')	goto yy69;
	if(yych != 't')	goto yy51;
	goto yy69;
yy69:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy70;
yy70:
#line 362 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(NOSPLIT); }
#line 898 "nasm-token.c"
yy71:	yych = *++YYCURSOR;
	if(yych == 'S')	goto yy72;
	if(yych != 's')	goto yy51;
	goto yy72;
yy72:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy73;
yy73:
#line 359 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(ABS); }
#line 911 "nasm-token.c"
yy74:	yych = *++YYCURSOR;
	if(yych == 'G')	goto yy81;
	if(yych == 'g')	goto yy81;
	goto yy51;
yy75:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy76;
	if(yych != 'r')	goto yy51;
	goto yy76;
yy76:	yych = *++YYCURSOR;
	if(yych == 'I')	goto yy77;
	if(yych != 'i')	goto yy51;
	goto yy77;
yy77:	yych = *++YYCURSOR;
	if(yych == 'C')	goto yy78;
	if(yych != 'c')	goto yy51;
	goto yy78;
yy78:	yych = *++YYCURSOR;
	if(yych == 'T')	goto yy79;
	if(yych != 't')	goto yy51;
	goto yy79;
yy79:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy80;
yy80:
#line 363 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(STRICT); }
#line 940 "nasm-token.c"
yy81:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy82;
yy82:
#line 356 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(SEG); }
#line 949 "nasm-token.c"
yy83:	yych = *++YYCURSOR;
	if(yych == 'U')	goto yy84;
	if(yych != 'u')	goto yy51;
	goto yy84;
yy84:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy85;
yy85:
#line 352 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(EQU); }
#line 962 "nasm-token.c"
yy86:	yych = *++YYCURSOR;
	if(yych == 'C')	goto yy87;
	if(yych != 'c')	goto yy51;
	goto yy87;
yy87:	yych = *++YYCURSOR;
	if(yych == 'B')	goto yy88;
	if(yych != 'b')	goto yy51;
	goto yy88;
yy88:	yych = *++YYCURSOR;
	if(yych == 'I')	goto yy89;
	if(yych != 'i')	goto yy51;
	goto yy89;
yy89:	yych = *++YYCURSOR;
	if(yych == 'N')	goto yy90;
	if(yych != 'n')	goto yy51;
	goto yy90;
yy90:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy91;
yy91:
#line 350 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(INCBIN); }
#line 987 "nasm-token.c"
yy92:	yych = *++YYCURSOR;
	if(yych <= 'S'){
		if(yych == 'L')	goto yy94;
		if(yych <= 'R')	goto yy51;
		goto yy93;
	} else {
		if(yych <= 'l'){
			if(yych <= 'k')	goto yy51;
			goto yy94;
		} else {
			if(yych != 's')	goto yy51;
			goto yy93;
		}
	}
yy93:	yych = *++YYCURSOR;
	switch(yych){
	case 'B':	case 'b':	goto yy96;
	case 'D':	case 'd':	goto yy98;
	case 'H':	case 'h':	goto yy100;
	case 'O':	case 'o':	goto yy101;
	case 'Q':	case 'q':	goto yy103;
	case 'T':	case 't':	goto yy105;
	case 'W':	case 'w':	goto yy107;
	case 'Y':	case 'y':	goto yy109;
	default:	goto yy51;
	}
yy94:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy95;
yy95:
#line 360 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(REL); }
#line 1022 "nasm-token.c"
yy96:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy97;
yy97:
#line 304 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 8;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1035 "nasm-token.c"
yy98:	yych = *++YYCURSOR;
	if(yych <= 'Q'){
		if(yych <= '.'){
			if(yych <= '"')	goto yy99;
			if(yych <= '$')	goto yy50;
			if(yych >= '.')	goto yy50;
			goto yy99;
		} else {
			if(yych <= '9'){
				if(yych >= '0')	goto yy50;
				goto yy99;
			} else {
				if(yych <= '>')	goto yy99;
				if(yych <= 'P')	goto yy50;
				goto yy113;
			}
		}
	} else {
		if(yych <= 'p'){
			if(yych <= '^'){
				if(yych <= 'Z')	goto yy50;
				goto yy99;
			} else {
				if(yych != '`')	goto yy50;
				goto yy99;
			}
		} else {
			if(yych <= 'z'){
				if(yych <= 'q')	goto yy113;
				goto yy50;
			} else {
				if(yych == '~')	goto yy50;
				goto yy99;
			}
		}
	}
yy99:
#line 319 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1079 "nasm-token.c"
yy100:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy111;
	if(yych == 'w')	goto yy111;
	goto yy51;
yy101:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy102;
yy102:
#line 339 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1096 "nasm-token.c"
yy103:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy104;
yy104:
#line 324 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1109 "nasm-token.c"
yy105:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy106;
yy106:
#line 329 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 80;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1122 "nasm-token.c"
yy107:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy108;
yy108:
#line 314 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch);
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1135 "nasm-token.c"
yy109:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy110;
yy110:
#line 344 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 256;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1148 "nasm-token.c"
yy111:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy112;
yy112:
#line 309 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1161 "nasm-token.c"
yy113:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy114;
yy114:
#line 334 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            parser_nasm->state = INSTRUCTION;
            RETURN(RESERVE_SPACE);
        }
#line 1174 "nasm-token.c"
yy115:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy116;
	if(yych != 'o')	goto yy51;
	goto yy116;
yy116:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy117;
	if(yych != 'r')	goto yy51;
	goto yy117;
yy117:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy118;
	if(yych != 'd')	goto yy51;
	goto yy118;
yy118:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy119;
yy119:
#line 252 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 256;
            RETURN(SIZE_OVERRIDE);
        }
#line 1198 "nasm-token.c"
yy120:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy121;
	if(yych != 'o')	goto yy51;
	goto yy121;
yy121:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy122;
	if(yych != 'r')	goto yy51;
	goto yy122;
yy122:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy123;
	if(yych != 'd')	goto yy51;
	goto yy123;
yy123:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy124;
yy124:
#line 248 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            RETURN(SIZE_OVERRIDE);
        }
#line 1222 "nasm-token.c"
yy125:	yych = *++YYCURSOR;
	if(yych == 'M')	goto yy131;
	if(yych == 'm')	goto yy131;
	goto yy51;
yy126:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy127;
	if(yych != 'o')	goto yy51;
	goto yy127;
yy127:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy128;
	if(yych != 'r')	goto yy51;
	goto yy128;
yy128:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy129;
	if(yych != 'd')	goto yy51;
	goto yy129;
yy129:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy130;
yy130:
#line 243 "./modules/parsers/nasm/nasm-token.re"
{ lvalp->int_info = 80; RETURN(SIZE_OVERRIDE); }
#line 1247 "nasm-token.c"
yy131:	yych = *++YYCURSOR;
	if(yych == 'E')	goto yy132;
	if(yych != 'e')	goto yy51;
	goto yy132;
yy132:	yych = *++YYCURSOR;
	if(yych == 'S')	goto yy133;
	if(yych != 's')	goto yy51;
	goto yy133;
yy133:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy134;
yy134:
#line 354 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(TIMES); }
#line 1264 "nasm-token.c"
yy135:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy136;
	if(yych != 'o')	goto yy51;
	goto yy136;
yy136:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy137;
	if(yych != 'r')	goto yy51;
	goto yy137;
yy137:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy138;
	if(yych != 'd')	goto yy51;
	goto yy138;
yy138:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy139;
yy139:
#line 239 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
            RETURN(SIZE_OVERRIDE);
        }
#line 1288 "nasm-token.c"
yy140:	yych = *++YYCURSOR;
	if(yych == 'N')	goto yy141;
	if(yych != 'n')	goto yy51;
	goto yy141;
yy141:	yych = *++YYCURSOR;
	if(yych == 'G')	goto yy142;
	if(yych != 'g')	goto yy51;
	goto yy142;
yy142:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy143;
yy143:
#line 235 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
            RETURN(SIZE_OVERRIDE);
        }
#line 1308 "nasm-token.c"
yy144:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy145;
yy145:
#line 258 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 8;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1321 "nasm-token.c"
yy146:	yych = *++YYCURSOR;
	if(yych <= 'Q'){
		if(yych <= '.'){
			if(yych <= '"')	goto yy147;
			if(yych <= '$')	goto yy50;
			if(yych >= '.')	goto yy50;
			goto yy147;
		} else {
			if(yych <= '9'){
				if(yych >= '0')	goto yy50;
				goto yy147;
			} else {
				if(yych <= '>')	goto yy147;
				if(yych <= 'P')	goto yy50;
				goto yy168;
			}
		}
	} else {
		if(yych <= 'p'){
			if(yych <= '^'){
				if(yych <= 'Z')	goto yy50;
				goto yy147;
			} else {
				if(yych != '`')	goto yy50;
				goto yy147;
			}
		} else {
			if(yych <= 'z'){
				if(yych <= 'q')	goto yy168;
				goto yy50;
			} else {
				if(yych == '~')	goto yy50;
				goto yy147;
			}
		}
	}
yy147:
#line 273 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1365 "nasm-token.c"
yy148:	yych = *++YYCURSOR;
	if(yych == 'W')	goto yy166;
	if(yych == 'w')	goto yy166;
	goto yy51;
yy149:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy150;
yy150:
#line 293 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1382 "nasm-token.c"
yy151:	yych = *++YYCURSOR;
	if(yych <= 'W'){
		if(yych <= '.'){
			if(yych <= '"')	goto yy152;
			if(yych <= '$')	goto yy50;
			if(yych >= '.')	goto yy50;
			goto yy152;
		} else {
			if(yych <= '9'){
				if(yych >= '0')	goto yy50;
				goto yy152;
			} else {
				if(yych <= '>')	goto yy152;
				if(yych <= 'V')	goto yy50;
				goto yy161;
			}
		}
	} else {
		if(yych <= 'v'){
			if(yych <= '^'){
				if(yych <= 'Z')	goto yy50;
				goto yy152;
			} else {
				if(yych != '`')	goto yy50;
				goto yy152;
			}
		} else {
			if(yych <= 'z'){
				if(yych <= 'w')	goto yy161;
				goto yy50;
			} else {
				if(yych == '~')	goto yy50;
				goto yy152;
			}
		}
	}
yy152:
#line 278 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1426 "nasm-token.c"
yy153:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy154;
yy154:
#line 283 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 80;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1439 "nasm-token.c"
yy155:	yych = *++YYCURSOR;
	if(yych <= 'O'){
		if(yych <= '.'){
			if(yych <= '"')	goto yy156;
			if(yych <= '$')	goto yy50;
			if(yych >= '.')	goto yy50;
			goto yy156;
		} else {
			if(yych <= '9'){
				if(yych >= '0')	goto yy50;
				goto yy156;
			} else {
				if(yych <= '>')	goto yy156;
				if(yych <= 'N')	goto yy50;
				goto yy159;
			}
		}
	} else {
		if(yych <= 'n'){
			if(yych <= '^'){
				if(yych <= 'Z')	goto yy50;
				goto yy156;
			} else {
				if(yych != '`')	goto yy50;
				goto yy156;
			}
		} else {
			if(yych <= 'z'){
				if(yych <= 'o')	goto yy159;
				goto yy50;
			} else {
				if(yych == '~')	goto yy50;
				goto yy156;
			}
		}
	}
yy156:
#line 268 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch);
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1483 "nasm-token.c"
yy157:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy158;
yy158:
#line 298 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = 256;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1496 "nasm-token.c"
yy159:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy160;
	if(yych != 'r')	goto yy51;
	goto yy160;
yy160:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy142;
	if(yych == 'd')	goto yy142;
	goto yy51;
yy161:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy162;
	if(yych != 'o')	goto yy51;
	goto yy162;
yy162:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy163;
	if(yych != 'r')	goto yy51;
	goto yy163;
yy163:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy164;
	if(yych != 'd')	goto yy51;
	goto yy164;
yy164:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy165;
yy165:
#line 244 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            RETURN(SIZE_OVERRIDE);
        }
#line 1528 "nasm-token.c"
yy166:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy167;
yy167:
#line 263 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1541 "nasm-token.c"
yy168:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy169;
yy169:
#line 288 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
            parser_nasm->state = INSTRUCTION;
            RETURN(DECLARE_DATA);
        }
#line 1554 "nasm-token.c"
yy170:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy174;
	if(yych == 'r')	goto yy174;
	goto yy51;
yy171:	yych = *++YYCURSOR;
	if(yych == 'T')	goto yy172;
	if(yych != 't')	goto yy51;
	goto yy172;
yy172:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy173;
yy173:
#line 357 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(WRT); }
#line 1571 "nasm-token.c"
yy174:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy175;
	if(yych != 'd')	goto yy51;
	goto yy175;
yy175:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy176;
yy176:
#line 231 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch);
            RETURN(SIZE_OVERRIDE);
        }
#line 1587 "nasm-token.c"
yy177:	yych = *++YYCURSOR;
	if(yych == 'O')	goto yy178;
	if(yych != 'o')	goto yy51;
	goto yy178;
yy178:	yych = *++YYCURSOR;
	if(yych == 'R')	goto yy179;
	if(yych != 'r')	goto yy51;
	goto yy179;
yy179:	yych = *++YYCURSOR;
	if(yych == 'D')	goto yy180;
	if(yych != 'd')	goto yy51;
	goto yy180;
yy180:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy181;
yy181:
#line 227 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
            RETURN(SIZE_OVERRIDE);
        }
#line 1611 "nasm-token.c"
yy182:	yych = *++YYCURSOR;
	if(yych == 'T')	goto yy183;
	if(yych != 't')	goto yy51;
	goto yy183;
yy183:	yych = *++YYCURSOR;
	if(yych == 'E')	goto yy184;
	if(yych != 'e')	goto yy51;
	goto yy184;
yy184:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 2) {
		goto yy50;
	}
	goto yy185;
yy185:
#line 226 "./modules/parsers/nasm/nasm-token.re"
{ lvalp->int_info = 8; RETURN(SIZE_OVERRIDE); }
#line 1628 "nasm-token.c"
yy186:	yych = *++YYCURSOR;
	goto yy187;
yy187:
#line 369 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(SIGNMOD); }
#line 1634 "nasm-token.c"
yy188:	yych = *++YYCURSOR;
	if(yych == 'i')	goto yy190;
	goto yy189;
yy189:	YYCURSOR = YYMARKER;
	switch(yyaccept){
	case 0:	goto yy3;
	case 3:	goto yy225;
	case 2:	goto yy205;
	case 1:	goto yy8;
	}
yy190:	yych = *++YYCURSOR;
	if(yych != 'n')	goto yy189;
	goto yy191;
yy191:	yych = *++YYCURSOR;
	if(yych != 'e')	goto yy189;
	goto yy192;
yy192:	yych = *++YYCURSOR;
	goto yy193;
yy193:
#line 219 "./modules/parsers/nasm/nasm-token.re"
{
            parser_nasm->state = LINECHG;
            linechg_numcount = 0;
            RETURN(LINE);
        }
#line 1660 "nasm-token.c"
yy194:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy195;
yy195:	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy196;
			if(yych <= '$')	goto yy194;
			goto yy196;
		} else {
			if(yych == '/')	goto yy196;
			if(yych <= '9')	goto yy194;
			goto yy196;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy194;
			if(yych == '_')	goto yy194;
			goto yy196;
		} else {
			if(yych <= 'z')	goto yy194;
			if(yych == '~')	goto yy194;
			goto yy196;
		}
	}
yy196:
#line 380 "./modules/parsers/nasm/nasm-token.re"
{
            if (TOK[1] == '.' ||
                    (parser_nasm->tasm && TOK[1] == '@' && TOK[2] == '@')) {
                /* handle like .label */
                RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 1, parser_nasm));
            }
            lvalp->str_val = yasm__xstrndup(TOK+1, TOKLEN-1);
            RETURN(ID);
        }
#line 1697 "nasm-token.c"
yy197:	yych = *++YYCURSOR;
	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy198;
			if(yych <= '$')	goto yy194;
			goto yy198;
		} else {
			if(yych == '/')	goto yy198;
			if(yych <= '9')	goto yy194;
			goto yy198;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy194;
			if(yych == '_')	goto yy194;
			goto yy198;
		} else {
			if(yych <= 'z')	goto yy194;
			if(yych == '~')	goto yy194;
			goto yy198;
		}
	}
yy198:
#line 370 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(START_SECTION_ID); }
#line 1723 "nasm-token.c"
yy199:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 4) {
		goto yy200;
	}
	goto yy195;
yy200:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy201;
yy201:	if(yybm[0+yych] & 4) {
		goto yy200;
	}
	if(yych <= '>'){
		if(yych <= '$'){
			if(yych >= '#')	goto yy194;
			goto yy202;
		} else {
			if(yych == '.')	goto yy194;
			goto yy202;
		}
	} else {
		if(yych <= 'z'){
			if(yych <= 'Z')	goto yy194;
			if(yych >= 'g')	goto yy194;
			goto yy202;
		} else {
			if(yych == '~')	goto yy194;
			goto yy202;
		}
	}
yy202:
#line 190 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            if (s->tok[1] == 'x' || s->tok[1] == 'X')
                /* skip 0 and x */
                lvalp->intn = yasm_intnum_create_hex(TOK+2);
            else
                /* don't skip 0 */
                lvalp->intn = yasm_intnum_create_hex(TOK+1);
            s->tok[TOKLEN] = savech;
            RETURN(INTNUM);
        }
#line 1768 "nasm-token.c"
yy203:	yyaccept = 2;
	YYMARKER = ++YYCURSOR;
	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	goto yy204;
yy204:	if(yybm[0+yych] & 8) {
		goto yy203;
	}
	if(yych == 'E')	goto yy212;
	if(yych == 'e')	goto yy212;
	goto yy205;
yy205:
#line 204 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            lvalp->flt = yasm_floatnum_create(TOK);
            s->tok[TOKLEN] = savech;
            RETURN(FLTNUM);
        }
#line 1789 "nasm-token.c"
yy206:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy207;
yy207:	if(yych <= 'G'){
		if(yych <= '/'){
			if(yych == '.')	goto yy203;
			goto yy3;
		} else {
			if(yych <= '9')	goto yy206;
			if(yych <= '@')	goto yy3;
			if(yych >= 'G')	goto yy3;
			goto yy208;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'H')	goto yy210;
			if(yych != '_')	goto yy3;
			goto yy208;
		} else {
			if(yych <= 'f')	goto yy208;
			if(yych == 'h')	goto yy210;
			goto yy3;
		}
	}
yy208:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy209;
yy209:	if(yych <= 'H'){
		if(yych <= '@'){
			if(yych <= '/')	goto yy189;
			if(yych <= '9')	goto yy208;
			goto yy189;
		} else {
			if(yych <= 'F')	goto yy208;
			if(yych <= 'G')	goto yy189;
			goto yy210;
		}
	} else {
		if(yych <= '`'){
			if(yych == '_')	goto yy208;
			goto yy189;
		} else {
			if(yych <= 'f')	goto yy208;
			if(yych != 'h')	goto yy189;
			goto yy210;
		}
	}
yy210:	yych = *++YYCURSOR;
	goto yy211;
yy211:
#line 183 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
            lvalp->intn = yasm_intnum_create_hex(TOK);
            RETURN(INTNUM);
        }
#line 1849 "nasm-token.c"
yy212:	yych = *++YYCURSOR;
	if(yych <= ','){
		if(yych != '+')	goto yy189;
		goto yy213;
	} else {
		if(yych <= '-')	goto yy213;
		if(yych <= '/')	goto yy189;
		if(yych <= '9')	goto yy214;
		goto yy189;
	}
yy213:	yych = *++YYCURSOR;
	if(yych <= '/')	goto yy189;
	if(yych >= ':')	goto yy189;
	goto yy214;
yy214:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy215;
yy215:	if(yych <= '/')	goto yy205;
	if(yych <= '9')	goto yy214;
	goto yy205;
yy216:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy217;
yy217:	if(yybm[0+yych] & 16) {
		goto yy216;
	}
	if(yych <= 'P'){
		if(yych <= '@'){
			if(yych <= '.'){
				if(yych <= '-')	goto yy3;
				goto yy203;
			} else {
				if(yych <= '/')	goto yy3;
				if(yych <= '9')	goto yy206;
				goto yy3;
			}
		} else {
			if(yych <= 'H'){
				if(yych <= 'F')	goto yy208;
				if(yych <= 'G')	goto yy3;
				goto yy210;
			} else {
				if(yych == 'O')	goto yy220;
				goto yy3;
			}
		}
	} else {
		if(yych <= 'g'){
			if(yych <= '_'){
				if(yych <= 'Q')	goto yy220;
				if(yych <= '^')	goto yy3;
				goto yy218;
			} else {
				if(yych <= '`')	goto yy3;
				if(yych <= 'f')	goto yy208;
				goto yy3;
			}
		} else {
			if(yych <= 'o'){
				if(yych <= 'h')	goto yy210;
				if(yych <= 'n')	goto yy3;
				goto yy220;
			} else {
				if(yych == 'q')	goto yy220;
				goto yy3;
			}
		}
	}
yy218:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy219;
yy219:	if(yybm[0+yych] & 32) {
		goto yy218;
	}
	if(yych <= 'P'){
		if(yych <= 'F'){
			if(yych <= '7')	goto yy189;
			if(yych <= '9')	goto yy208;
			if(yych <= '@')	goto yy189;
			goto yy208;
		} else {
			if(yych <= 'H'){
				if(yych <= 'G')	goto yy189;
				goto yy210;
			} else {
				if(yych != 'O')	goto yy189;
				goto yy220;
			}
		}
	} else {
		if(yych <= 'h'){
			if(yych <= '`'){
				if(yych >= 'R')	goto yy189;
				goto yy220;
			} else {
				if(yych <= 'f')	goto yy208;
				if(yych <= 'g')	goto yy189;
				goto yy210;
			}
		} else {
			if(yych <= 'o'){
				if(yych <= 'n')	goto yy189;
				goto yy220;
			} else {
				if(yych != 'q')	goto yy189;
				goto yy220;
			}
		}
	}
yy220:	yych = *++YYCURSOR;
	goto yy221;
yy221:
#line 176 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
            lvalp->intn = yasm_intnum_create_oct(TOK);
            RETURN(INTNUM);
        }
#line 1972 "nasm-token.c"
yy222:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	goto yy223;
yy223:	if(yybm[0+yych] & 64) {
		goto yy222;
	}
	switch(yych){
	case '.':	goto yy203;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy216;
	case '8':
	case '9':	goto yy206;
	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy208;
	case 'B':	case 'b':	goto yy224;
	case 'H':	case 'h':	goto yy210;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy220;
	case '_':	goto yy226;
	default:	goto yy3;
	}
yy224:	yyaccept = 3;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych <= 'H'){
		if(yych <= '@'){
			if(yych <= '/')	goto yy225;
			if(yych <= '9')	goto yy208;
			goto yy225;
		} else {
			if(yych <= 'F')	goto yy208;
			if(yych >= 'H')	goto yy210;
			goto yy225;
		}
	} else {
		if(yych <= '`'){
			if(yych == '_')	goto yy208;
			goto yy225;
		} else {
			if(yych <= 'f')	goto yy208;
			if(yych == 'h')	goto yy210;
			goto yy225;
		}
	}
yy225:
#line 169 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
            lvalp->intn = yasm_intnum_create_bin(TOK);
            RETURN(INTNUM);
        }
#line 2035 "nasm-token.c"
yy226:	++YYCURSOR;
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	goto yy227;
yy227:	if(yybm[0+yych] & 128) {
		goto yy226;
	}
	switch(yych){
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy218;
	case '8':
	case '9':	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy208;
	case 'B':	case 'b':	goto yy224;
	case 'H':	case 'h':	goto yy210;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy220;
	default:	goto yy189;
	}
yy228:	yych = *++YYCURSOR;
	if(yych <= 'F'){
		if(yych <= '/')	goto yy189;
		if(yych <= '9')	goto yy229;
		if(yych <= '@')	goto yy189;
		goto yy229;
	} else {
		if(yych <= '_'){
			if(yych <= '^')	goto yy189;
			goto yy229;
		} else {
			if(yych <= '`')	goto yy189;
			if(yych >= 'g')	goto yy189;
			goto yy229;
		}
	}
yy229:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy230;
yy230:	if(yych <= 'F'){
		if(yych <= '/')	goto yy202;
		if(yych <= '9')	goto yy229;
		if(yych <= '@')	goto yy202;
		goto yy229;
	} else {
		if(yych <= '_'){
			if(yych <= '^')	goto yy202;
			goto yy229;
		} else {
			if(yych <= '`')	goto yy202;
			if(yych <= 'f')	goto yy229;
			goto yy202;
		}
	}
}
}
#line 508 "./modules/parsers/nasm/nasm-token.re"


    /* %line linenum+lineinc filename */
linechg:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,  64,   0,   0,   0,  64,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	 64,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	};

#line 2145 "nasm-token.c"
{
	YYCTYPE yych;
	goto yy231;
	++YYCURSOR;
yy231:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= '\037'){
		if(yych <= '\t'){
			if(yych <= '\000')	goto yy235;
			if(yych <= '\b')	goto yy241;
			goto yy239;
		} else {
			if(yych == '\r')	goto yy239;
			goto yy241;
		}
	} else {
		if(yych <= '+'){
			if(yych <= ' ')	goto yy239;
			if(yych <= '*')	goto yy241;
			goto yy237;
		} else {
			if(yych <= '/')	goto yy241;
			if(yych >= ':')	goto yy241;
			goto yy233;
		}
	}
yy233:	yych = *++YYCURSOR;
	goto yy246;
yy234:
#line 517 "./modules/parsers/nasm/nasm-token.re"
{
            linechg_numcount++;
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            lvalp->intn = yasm_intnum_create_dec(TOK);
            s->tok[TOKLEN] = savech;
            RETURN(INTNUM);
        }
#line 2185 "nasm-token.c"
yy235:	yych = *++YYCURSOR;
	goto yy236;
yy236:
#line 526 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2191 "nasm-token.c"
yy237:	yych = *++YYCURSOR;
	goto yy238;
yy238:
#line 528 "./modules/parsers/nasm/nasm-token.re"
{
            RETURN(s->tok[0]);
        }
#line 2199 "nasm-token.c"
yy239:	yych = *++YYCURSOR;
	goto yy244;
yy240:
#line 532 "./modules/parsers/nasm/nasm-token.re"
{
            if (linechg_numcount == 2) {
                parser_nasm->state = LINECHG2;
                goto linechg2;
            }
            goto linechg;
        }
#line 2211 "nasm-token.c"
yy241:	yych = *++YYCURSOR;
	goto yy242;
yy242:
#line 540 "./modules/parsers/nasm/nasm-token.re"
{
            yasm_warn_set(YASM_WARN_UNREC_CHAR,
                          N_("ignoring unrecognized character `%s'"),
                          yasm__conv_unprint(s->tok[0]));
            goto linechg;
        }
#line 2222 "nasm-token.c"
yy243:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy244;
yy244:	if(yybm[0+yych] & 64) {
		goto yy243;
	}
	goto yy240;
yy245:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy246;
yy246:	if(yybm[0+yych] & 128) {
		goto yy245;
	}
	goto yy234;
}
}
#line 546 "./modules/parsers/nasm/nasm-token.re"


linechg2:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	};

#line 2285 "nasm-token.c"
{
	YYCTYPE yych;
	goto yy247;
	++YYCURSOR;
yy247:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= '\000')	goto yy249;
	if(yych == '\r')	goto yy251;
	goto yy253;
yy249:	yych = *++YYCURSOR;
	goto yy250;
yy250:
#line 554 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2301 "nasm-token.c"
yy251:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 128) {
		goto yy253;
	}
	goto yy252;
yy252:
#line 556 "./modules/parsers/nasm/nasm-token.re"
{ goto linechg2; }
#line 2310 "nasm-token.c"
yy253:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy254;
yy254:	if(yybm[0+yych] & 128) {
		goto yy253;
	}
	goto yy255;
yy255:
#line 558 "./modules/parsers/nasm/nasm-token.re"
{
            parser_nasm->state = LINECHG;
            lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
            RETURN(FILENAME);
        }
#line 2326 "nasm-token.c"
}
}
#line 563 "./modules/parsers/nasm/nasm-token.re"


    /* directive: [name value] */
directive:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128,   0,   0,   0,   0,   0,   0, 
	  0, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128,   0,   0,   0,   0, 128, 
	  0, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	};

#line 2374 "nasm-token.c"
{
	YYCTYPE yych;
	goto yy256;
	++YYCURSOR;
yy256:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= ']'){
		if(yych <= '@'){
			if(yych >= '\001')	goto yy263;
			goto yy258;
		} else {
			if(yych <= 'Z')	goto yy261;
			if(yych <= '\\')	goto yy263;
			goto yy260;
		}
	} else {
		if(yych <= '_'){
			if(yych <= '^')	goto yy263;
			goto yy261;
		} else {
			if(yych <= '`')	goto yy263;
			if(yych <= 'z')	goto yy261;
			goto yy263;
		}
	}
yy258:	yych = *++YYCURSOR;
	goto yy259;
yy259:
#line 572 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2406 "nasm-token.c"
yy260:	yych = *++YYCURSOR;
	goto yy259;
yy261:	yych = *++YYCURSOR;
	goto yy266;
yy262:
#line 574 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
            if (yasm__strcasecmp(lvalp->str_val, "section") == 0 ||
                yasm__strcasecmp(lvalp->str_val, "segment") == 0)
                parser_nasm->state = SECTION_DIRECTIVE;
            else
                parser_nasm->state = DIRECTIVE2;
            RETURN(DIRECTIVE_NAME);
        }
#line 2422 "nasm-token.c"
yy263:	yych = *++YYCURSOR;
	goto yy264;
yy264:
#line 584 "./modules/parsers/nasm/nasm-token.re"
{
            yasm_warn_set(YASM_WARN_UNREC_CHAR,
                          N_("ignoring unrecognized character `%s'"),
                          yasm__conv_unprint(s->tok[0]));
            goto directive;
        }
#line 2433 "nasm-token.c"
yy265:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy266;
yy266:	if(yybm[0+yych] & 128) {
		goto yy265;
	}
	goto yy262;
}
}
#line 590 "./modules/parsers/nasm/nasm-token.re"


    /* section directive (the section name portion thereof) */
section_directive:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,  64,   0,   0,   0,  64,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	 64,   0,   0, 128, 128,   0,   0,   0, 
	  0,   0,   0,   0,   0, 128, 128,   0, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128,   0,   0,   0,   0,   0, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128,   0,   0,   0,   0, 128, 
	  0, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128,   0,   0,   0, 128,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	};

#line 2489 "nasm-token.c"
{
	YYCTYPE yych;
	goto yy267;
	++YYCURSOR;
yy267:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= ','){
		if(yych <= '\037'){
			if(yych <= '\t'){
				if(yych <= '\000')	goto yy275;
				if(yych <= '\b')	goto yy278;
				goto yy273;
			} else {
				if(yych == '\r')	goto yy273;
				goto yy278;
			}
		} else {
			if(yych <= '"'){
				if(yych <= ' ')	goto yy273;
				if(yych <= '!')	goto yy278;
				goto yy271;
			} else {
				if(yych <= '$')	goto yy269;
				if(yych == '\'')	goto yy271;
				goto yy278;
			}
		}
	} else {
		if(yych <= ']'){
			if(yych <= '9'){
				if(yych == '/')	goto yy278;
				goto yy269;
			} else {
				if(yych <= '>')	goto yy278;
				if(yych <= 'Z')	goto yy269;
				if(yych <= '\\')	goto yy278;
				goto yy277;
			}
		} else {
			if(yych <= '`'){
				if(yych != '_')	goto yy278;
				goto yy269;
			} else {
				if(yych <= 'z')	goto yy269;
				if(yych != '~')	goto yy278;
				goto yy269;
			}
		}
	}
yy269:	yych = *++YYCURSOR;
	goto yy283;
yy270:
#line 599 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->str.contents = yasm__xstrndup(TOK, TOKLEN);
            lvalp->str.len = TOKLEN;
            parser_nasm->state = DIRECTIVE2;
            RETURN(STRING);
        }
#line 2550 "nasm-token.c"
yy271:	yych = *++YYCURSOR;
	goto yy272;
yy272:
#line 606 "./modules/parsers/nasm/nasm-token.re"
{
            parser_nasm->state = DIRECTIVE2;
            endch = s->tok[0];
            goto stringconst;
        }
#line 2560 "nasm-token.c"
yy273:	yych = *++YYCURSOR;
	goto yy281;
yy274:
#line 612 "./modules/parsers/nasm/nasm-token.re"
{
            parser_nasm->state = DIRECTIVE2;
            goto section_directive;
        }
#line 2569 "nasm-token.c"
yy275:	yych = *++YYCURSOR;
	goto yy276;
yy276:
#line 617 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2575 "nasm-token.c"
yy277:	yych = *++YYCURSOR;
	goto yy276;
yy278:	yych = *++YYCURSOR;
	goto yy279;
yy279:
#line 619 "./modules/parsers/nasm/nasm-token.re"
{
            yasm_warn_set(YASM_WARN_UNREC_CHAR,
                          N_("ignoring unrecognized character `%s'"),
                          yasm__conv_unprint(s->tok[0]));
            goto section_directive;
        }
#line 2588 "nasm-token.c"
yy280:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy281;
yy281:	if(yybm[0+yych] & 64) {
		goto yy280;
	}
	goto yy274;
yy282:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy283;
yy283:	if(yybm[0+yych] & 128) {
		goto yy282;
	}
	goto yy270;
}
}
#line 625 "./modules/parsers/nasm/nasm-token.re"


    /* inner part of directive */
directive2:
    SCANINIT();
    if (*cursor == '\0')
        goto endofinput;

    {
	static unsigned char yybm[] = {
	  0,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   3,   3,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   3,   1, 
	255, 255,  63,  63,  63,  63,  63,  63, 
	 15,  15,   1,   1,   1,   1,   1,   3, 
	  3,   7,   7,   7,   7,   7,   7,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   1,   1,   1,   1, 167, 
	  1,   7,   7,   7,   7,   7,   7,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   3,   3,   3,   3,   3, 
	  3,   3,   3,   1,   1,   1,   3,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  1,   1,   1,   1,   1,   1,   1,   1, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0, 128,   0,   0,   0, 128,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	128,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	  0,   0,   0,   0,   0,   0,   0,   0, 
	};

#line 2684 "nasm-token.c"
{
	YYCTYPE yych;
	unsigned int yyaccept;
	goto yy284;
	++YYCURSOR;
yy284:
	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
	yych = *YYCURSOR;
	if(yych <= '7'){
		if(yych <= '#'){
			if(yych <= '\r'){
				if(yych <= '\b'){
					if(yych <= '\000')	goto yy309;
					goto yy311;
				} else {
					if(yych <= '\t')	goto yy307;
					if(yych <= '\f')	goto yy311;
					goto yy307;
				}
			} else {
				if(yych <= ' '){
					if(yych <= '\037')	goto yy311;
					goto yy307;
				} else {
					if(yych == '"')	goto yy293;
					goto yy311;
				}
			}
		} else {
			if(yych <= '-'){
				if(yych <= '%'){
					if(yych <= '$')	goto yy291;
					goto yy299;
				} else {
					if(yych == '\'')	goto yy293;
					goto yy300;
				}
			} else {
				if(yych <= '/'){
					if(yych <= '.')	goto yy303;
					goto yy298;
				} else {
					if(yych <= '0')	goto yy286;
					if(yych <= '1')	goto yy288;
					goto yy289;
				}
			}
		}
	} else {
		if(yych <= '['){
			if(yych <= '='){
				if(yych <= ':'){
					if(yych <= '9')	goto yy290;
					goto yy300;
				} else {
					if(yych <= ';')	goto yy305;
					if(yych <= '<')	goto yy295;
					goto yy300;
				}
			} else {
				if(yych <= '?'){
					if(yych <= '>')	goto yy297;
					goto yy303;
				} else {
					if(yych <= '@')	goto yy311;
					if(yych <= 'Z')	goto yy303;
					goto yy300;
				}
			}
		} else {
			if(yych <= '`'){
				if(yych <= ']'){
					if(yych <= '\\')	goto yy311;
					goto yy301;
				} else {
					if(yych <= '^')	goto yy300;
					if(yych <= '_')	goto yy303;
					goto yy311;
				}
			} else {
				if(yych <= '|'){
					if(yych <= 'z')	goto yy303;
					if(yych <= '{')	goto yy311;
					goto yy300;
				} else {
					if(yych == '~')	goto yy300;
					goto yy311;
				}
			}
		}
	}
yy286:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych == 'X')	goto yy352;
	if(yych == 'x')	goto yy352;
	goto yy347;
yy287:
#line 635 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            lvalp->intn = yasm_intnum_create_dec(TOK);
            s->tok[TOKLEN] = savech;
            RETURN(INTNUM);
        }
#line 2790 "nasm-token.c"
yy288:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	goto yy347;
yy289:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	goto yy341;
yy290:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	goto yy334;
yy291:	yych = *++YYCURSOR;
	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy292;
			if(yych <= '$')	goto yy326;
			goto yy292;
		} else {
			if(yych <= '.')	goto yy326;
			if(yych <= '/')	goto yy292;
			if(yych <= '9')	goto yy329;
			goto yy292;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy326;
			if(yych == '_')	goto yy326;
			goto yy292;
		} else {
			if(yych <= 'z')	goto yy326;
			if(yych == '~')	goto yy326;
			goto yy292;
		}
	}
yy292:
#line 689 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(s->tok[0]); }
#line 2826 "nasm-token.c"
yy293:	yych = *++YYCURSOR;
	goto yy294;
yy294:
#line 679 "./modules/parsers/nasm/nasm-token.re"
{
            endch = s->tok[0];
            goto stringconst;
        }
#line 2835 "nasm-token.c"
yy295:	yych = *++YYCURSOR;
	if(yych == '<')	goto yy324;
	goto yy296;
yy296:
#line 727 "./modules/parsers/nasm/nasm-token.re"
{
            yasm_warn_set(YASM_WARN_UNREC_CHAR,
                          N_("ignoring unrecognized character `%s'"),
                          yasm__conv_unprint(s->tok[0]));
            goto scan;
        }
#line 2847 "nasm-token.c"
yy297:	yych = *++YYCURSOR;
	if(yych == '>')	goto yy322;
	goto yy296;
yy298:	yych = *++YYCURSOR;
	if(yych == '/')	goto yy320;
	goto yy292;
yy299:	yych = *++YYCURSOR;
	if(yych == '%')	goto yy318;
	goto yy292;
yy300:	yych = *++YYCURSOR;
	goto yy292;
yy301:	yych = *++YYCURSOR;
	goto yy302;
yy302:
#line 692 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2864 "nasm-token.c"
yy303:	yych = *++YYCURSOR;
	goto yy317;
yy304:
#line 703 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            switch (yasm_arch_parse_check_regtmod
                    (p_object->arch, TOK, TOKLEN, &lvalp->arch_data)) {
                case YASM_ARCH_REG:
                    s->tok[TOKLEN] = savech;
                    RETURN(REG);
                default:
                    s->tok[TOKLEN] = savech;
            }
            /* Propagate errors in case we got a warning from the arch */
            yasm_errwarn_propagate(parser_nasm->errwarns, cur_line);
            /* Just an identifier, return as such. */
            lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
            RETURN(ID);
        }
#line 2886 "nasm-token.c"
yy305:	yych = *++YYCURSOR;
	goto yy315;
yy306:
#line 721 "./modules/parsers/nasm/nasm-token.re"
{ goto directive2; }
#line 2892 "nasm-token.c"
yy307:	yych = *++YYCURSOR;
	goto yy313;
yy308:
#line 723 "./modules/parsers/nasm/nasm-token.re"
{ goto directive2; }
#line 2898 "nasm-token.c"
yy309:	yych = *++YYCURSOR;
	goto yy310;
yy310:
#line 725 "./modules/parsers/nasm/nasm-token.re"
{ goto endofinput; }
#line 2904 "nasm-token.c"
yy311:	yych = *++YYCURSOR;
	goto yy296;
yy312:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy313;
yy313:	if(yybm[256+yych] & 128) {
		goto yy312;
	}
	goto yy308;
yy314:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy315;
yy315:	if(yybm[0+yych] & 1) {
		goto yy314;
	}
	goto yy306;
yy316:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy317;
yy317:	if(yybm[0+yych] & 2) {
		goto yy316;
	}
	goto yy304;
yy318:	yych = *++YYCURSOR;
	goto yy319;
yy319:
#line 688 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(SIGNMOD); }
#line 2936 "nasm-token.c"
yy320:	yych = *++YYCURSOR;
	goto yy321;
yy321:
#line 687 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(SIGNDIV); }
#line 2942 "nasm-token.c"
yy322:	yych = *++YYCURSOR;
	goto yy323;
yy323:
#line 686 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(RIGHT_OP); }
#line 2948 "nasm-token.c"
yy324:	yych = *++YYCURSOR;
	goto yy325;
yy325:
#line 685 "./modules/parsers/nasm/nasm-token.re"
{ RETURN(LEFT_OP); }
#line 2954 "nasm-token.c"
yy326:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy327;
yy327:	if(yych <= '>'){
		if(yych <= '-'){
			if(yych <= '"')	goto yy328;
			if(yych <= '$')	goto yy326;
			goto yy328;
		} else {
			if(yych == '/')	goto yy328;
			if(yych <= '9')	goto yy326;
			goto yy328;
		}
	} else {
		if(yych <= '`'){
			if(yych <= 'Z')	goto yy326;
			if(yych == '_')	goto yy326;
			goto yy328;
		} else {
			if(yych <= 'z')	goto yy326;
			if(yych == '~')	goto yy326;
			goto yy328;
		}
	}
yy328:
#line 697 "./modules/parsers/nasm/nasm-token.re"
{
            lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
            RETURN(ID);
        }
#line 2986 "nasm-token.c"
yy329:	yych = *++YYCURSOR;
	if(yybm[0+yych] & 4) {
		goto yy330;
	}
	goto yy327;
yy330:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy331;
yy331:	if(yybm[0+yych] & 4) {
		goto yy330;
	}
	if(yych <= '>'){
		if(yych <= '$'){
			if(yych >= '#')	goto yy326;
			goto yy332;
		} else {
			if(yych == '.')	goto yy326;
			goto yy332;
		}
	} else {
		if(yych <= 'z'){
			if(yych <= 'Z')	goto yy326;
			if(yych >= 'g')	goto yy326;
			goto yy332;
		} else {
			if(yych == '~')	goto yy326;
			goto yy332;
		}
	}
yy332:
#line 665 "./modules/parsers/nasm/nasm-token.re"
{
            savech = s->tok[TOKLEN];
            s->tok[TOKLEN] = '\0';
            if (s->tok[1] == 'x' || s->tok[1] == 'X')
                /* skip 0 and x */
                lvalp->intn = yasm_intnum_create_hex(TOK+2);
            else
                /* don't skip 0 */
                lvalp->intn = yasm_intnum_create_hex(TOK+1);
            s->tok[TOKLEN] = savech;
            RETURN(INTNUM);
        }
#line 3031 "nasm-token.c"
yy333:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy334;
yy334:	if(yybm[0+yych] & 8) {
		goto yy333;
	}
	if(yych <= '^'){
		if(yych <= 'F'){
			if(yych <= '@')	goto yy287;
			goto yy335;
		} else {
			if(yych == 'H')	goto yy338;
			goto yy287;
		}
	} else {
		if(yych <= 'f'){
			if(yych == '`')	goto yy287;
			goto yy335;
		} else {
			if(yych == 'h')	goto yy338;
			goto yy287;
		}
	}
yy335:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy336;
yy336:	if(yych <= 'H'){
		if(yych <= '@'){
			if(yych <= '/')	goto yy337;
			if(yych <= '9')	goto yy335;
			goto yy337;
		} else {
			if(yych <= 'F')	goto yy335;
			if(yych >= 'H')	goto yy338;
			goto yy337;
		}
	} else {
		if(yych <= '`'){
			if(yych == '_')	goto yy335;
			goto yy337;
		} else {
			if(yych <= 'f')	goto yy335;
			if(yych == 'h')	goto yy338;
			goto yy337;
		}
	}
yy337:	YYCURSOR = YYMARKER;
	switch(yyaccept){
	case 0:	goto yy287;
	case 1:	goto yy349;
	}
yy338:	yych = *++YYCURSOR;
	goto yy339;
yy339:
#line 658 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
            lvalp->intn = yasm_intnum_create_hex(TOK);
            RETURN(INTNUM);
        }
#line 3095 "nasm-token.c"
yy340:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy341;
yy341:	if(yybm[0+yych] & 16) {
		goto yy340;
	}
	if(yych <= 'Q'){
		if(yych <= 'G'){
			if(yych <= '9'){
				if(yych <= '7')	goto yy287;
				goto yy333;
			} else {
				if(yych <= '@')	goto yy287;
				if(yych <= 'F')	goto yy335;
				goto yy287;
			}
		} else {
			if(yych <= 'N'){
				if(yych <= 'H')	goto yy338;
				goto yy287;
			} else {
				if(yych == 'P')	goto yy287;
				goto yy344;
			}
		}
	} else {
		if(yych <= 'g'){
			if(yych <= '_'){
				if(yych <= '^')	goto yy287;
				goto yy342;
			} else {
				if(yych <= '`')	goto yy287;
				if(yych <= 'f')	goto yy335;
				goto yy287;
			}
		} else {
			if(yych <= 'o'){
				if(yych <= 'h')	goto yy338;
				if(yych <= 'n')	goto yy287;
				goto yy344;
			} else {
				if(yych == 'q')	goto yy344;
				goto yy287;
			}
		}
	}
yy342:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy343;
yy343:	if(yybm[0+yych] & 32) {
		goto yy342;
	}
	if(yych <= 'P'){
		if(yych <= 'F'){
			if(yych <= '7')	goto yy337;
			if(yych <= '9')	goto yy335;
			if(yych <= '@')	goto yy337;
			goto yy335;
		} else {
			if(yych <= 'H'){
				if(yych <= 'G')	goto yy337;
				goto yy338;
			} else {
				if(yych != 'O')	goto yy337;
				goto yy344;
			}
		}
	} else {
		if(yych <= 'h'){
			if(yych <= '`'){
				if(yych >= 'R')	goto yy337;
				goto yy344;
			} else {
				if(yych <= 'f')	goto yy335;
				if(yych <= 'g')	goto yy337;
				goto yy338;
			}
		} else {
			if(yych <= 'o'){
				if(yych <= 'n')	goto yy337;
				goto yy344;
			} else {
				if(yych != 'q')	goto yy337;
				goto yy344;
			}
		}
	}
yy344:	yych = *++YYCURSOR;
	goto yy345;
yy345:
#line 651 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
            lvalp->intn = yasm_intnum_create_oct(TOK);
            RETURN(INTNUM);
        }
#line 3195 "nasm-token.c"
yy346:	yyaccept = 0;
	YYMARKER = ++YYCURSOR;
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	goto yy347;
yy347:	if(yybm[0+yych] & 64) {
		goto yy346;
	}
	switch(yych){
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy340;
	case '8':
	case '9':	goto yy333;
	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy335;
	case 'B':	case 'b':	goto yy348;
	case 'H':	case 'h':	goto yy338;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy344;
	case '_':	goto yy350;
	default:	goto yy287;
	}
yy348:	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych <= 'H'){
		if(yych <= '@'){
			if(yych <= '/')	goto yy349;
			if(yych <= '9')	goto yy335;
			goto yy349;
		} else {
			if(yych <= 'F')	goto yy335;
			if(yych >= 'H')	goto yy338;
			goto yy349;
		}
	} else {
		if(yych <= '`'){
			if(yych == '_')	goto yy335;
			goto yy349;
		} else {
			if(yych <= 'f')	goto yy335;
			if(yych == 'h')	goto yy338;
			goto yy349;
		}
	}
yy349:
#line 644 "./modules/parsers/nasm/nasm-token.re"
{
            s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
            lvalp->intn = yasm_intnum_create_bin(TOK);
            RETURN(INTNUM);
        }
#line 3255 "nasm-token.c"
yy350:	++YYCURSOR;
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	goto yy351;
yy351:	if(yybm[0+yych] & 128) {
		goto yy350;
	}
	switch(yych){
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':	goto yy342;
	case '8':
	case '9':	case 'A':	case 'C':
	case 'D':
	case 'E':
	case 'F':	case 'a':	case 'c':
	case 'd':
	case 'e':
	case 'f':	goto yy335;
	case 'B':	case 'b':	goto yy348;
	case 'H':	case 'h':	goto yy338;
	case 'O':	case 'Q':	case 'o':	case 'q':	goto yy344;
	default:	goto yy337;
	}
yy352:	yych = *++YYCURSOR;
	if(yych <= 'F'){
		if(yych <= '/')	goto yy337;
		if(yych <= '9')	goto yy353;
		if(yych <= '@')	goto yy337;
		goto yy353;
	} else {
		if(yych <= '_'){
			if(yych <= '^')	goto yy337;
			goto yy353;
		} else {
			if(yych <= '`')	goto yy337;
			if(yych >= 'g')	goto yy337;
			goto yy353;
		}
	}
yy353:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	goto yy354;
yy354:	if(yych <= 'F'){
		if(yych <= '/')	goto yy332;
		if(yych <= '9')	goto yy353;
		if(yych <= '@')	goto yy332;
		goto yy353;
	} else {
		if(yych <= '_'){
			if(yych <= '^')	goto yy332;
			goto yy353;
		} else {
			if(yych <= '`')	goto yy332;
			if(yych <= 'f')	goto yy353;
			goto yy332;
		}
	}
}
}
#line 733 "./modules/parsers/nasm/nasm-token.re"


    /* string/character constant values */
stringconst:
    strbuf = yasm_xmalloc(STRBUF_ALLOC_SIZE);
    strbuf_size = STRBUF_ALLOC_SIZE;
    count = 0;

stringconst_scan:
    SCANINIT();
    if (*cursor == '\0')
        goto stringconst_error;

    {

#line 3336 "nasm-token.c"
{
	YYCTYPE yych;
	goto yy355;
	++YYCURSOR;
yy355:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= '"'){
		if(yych <= '\000')	goto yy357;
		if(yych <= '!')	goto yy362;
		goto yy361;
	} else {
		if(yych == '\'')	goto yy359;
		goto yy362;
	}
yy357:	yych = *++YYCURSOR;
	goto yy358;
yy358:
#line 747 "./modules/parsers/nasm/nasm-token.re"
{ goto stringconst_error; }
#line 3357 "nasm-token.c"
yy359:	yych = *++YYCURSOR;
	if(yych == '\'')	goto yy363;
	goto yy360;
yy360:
#line 769 "./modules/parsers/nasm/nasm-token.re"
{
            if (s->tok[0] == endch)
                goto stringconst_end;

            strbuf[count++] = s->tok[0];
            if (count >= strbuf_size) {
                strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
                strbuf_size += STRBUF_ALLOC_SIZE;
            }

            goto stringconst_scan;
        }
#line 3375 "nasm-token.c"
yy361:	yych = *++YYCURSOR;
	if(yych == '"')	goto yy363;
	goto yy360;
yy362:	yych = *++YYCURSOR;
	goto yy360;
yy363:	yych = *++YYCURSOR;
	goto yy364;
yy364:
#line 749 "./modules/parsers/nasm/nasm-token.re"
{
            if (endch != s->tok[0]) {
                strbuf[count++] = s->tok[0];
                if (count >= strbuf_size) {
                    strbuf = yasm_xrealloc(strbuf,
                                           strbuf_size + STRBUF_ALLOC_SIZE);
                    strbuf_size += STRBUF_ALLOC_SIZE;
                }
            } else if (!parser_nasm->tasm) {
                YYCURSOR--;
                goto stringconst_end;
            }
            strbuf[count++] = s->tok[0];
            if (count >= strbuf_size) {
                strbuf = yasm_xrealloc(strbuf, strbuf_size + STRBUF_ALLOC_SIZE);
                strbuf_size += STRBUF_ALLOC_SIZE;
            }
            goto stringconst_scan;
        }
#line 3404 "nasm-token.c"
}
}
#line 781 "./modules/parsers/nasm/nasm-token.re"


stringconst_error:
    yasm_error_set(YASM_ERROR_SYNTAX, N_("unterminated string"));

stringconst_end:
    strbuf[count] = '\0';
    lvalp->str.contents = (char *)strbuf;
    lvalp->str.len = count;
    RETURN(STRING);

endofinput:
    parser_nasm->state = INITIAL;
    RETURN(s->tok[0]);
}
