blob: 1855bbdf041c78a216a8df300deaa1b8c9029258 [file] [log] [blame]
/* 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]);
}