| /* Generated by re2c 0.9.1-C on Mon Sep 10 13:55:52 2018 |
| */ |
| #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]); |
| } |