3423 lines
87 KiB
C
Executable File
3423 lines
87 KiB
C
Executable File
/* Generated by re2c 0.9.1-C on Tue May 28 12:58:08 2019
|
|
*/
|
|
#line 1 "../../third_party/yasm/source/patched-yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(s->tok[0]); }
|
|
#line 452 "gen/third_party/yasm/nasm-token.c"
|
|
yy9: yych = *++YYCURSOR;
|
|
goto yy10;
|
|
yy10:
|
|
#line 213 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
endch = s->tok[0];
|
|
goto stringconst;
|
|
}
|
|
#line 461 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(s->tok[0]); }
|
|
#line 702 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto scan; }
|
|
#line 735 "gen/third_party/yasm/nasm-token.c"
|
|
yy41: yych = *++YYCURSOR;
|
|
goto yy47;
|
|
yy42:
|
|
#line 498 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto scan; }
|
|
#line 741 "gen/third_party/yasm/nasm-token.c"
|
|
yy43: yych = *++YYCURSOR;
|
|
goto yy44;
|
|
yy44:
|
|
#line 500 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 747 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
RETURN(handle_dot_label(lvalp, TOK, TOKLEN, 0, parser_nasm));
|
|
}
|
|
#line 826 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(SIGNDIV); }
|
|
#line 857 "gen/third_party/yasm/nasm-token.c"
|
|
yy60: yych = *++YYCURSOR;
|
|
goto yy61;
|
|
yy61:
|
|
#line 367 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(RIGHT_OP); }
|
|
#line 863 "gen/third_party/yasm/nasm-token.c"
|
|
yy62: yych = *++YYCURSOR;
|
|
goto yy63;
|
|
yy63:
|
|
#line 366 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(LEFT_OP); }
|
|
#line 869 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(NOSPLIT); }
|
|
#line 898 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(ABS); }
|
|
#line 911 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(STRICT); }
|
|
#line 940 "gen/third_party/yasm/nasm-token.c"
|
|
yy81: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy82;
|
|
yy82:
|
|
#line 356 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(SEG); }
|
|
#line 949 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(EQU); }
|
|
#line 962 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(INCBIN); }
|
|
#line 987 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(REL); }
|
|
#line 1022 "gen/third_party/yasm/nasm-token.c"
|
|
yy96: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy97;
|
|
yy97:
|
|
#line 304 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 8;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(RESERVE_SPACE);
|
|
}
|
|
#line 1035 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy103: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy104;
|
|
yy104:
|
|
#line 324 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy105: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy106;
|
|
yy106:
|
|
#line 329 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 80;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(RESERVE_SPACE);
|
|
}
|
|
#line 1122 "gen/third_party/yasm/nasm-token.c"
|
|
yy107: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy108;
|
|
yy108:
|
|
#line 314 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch);
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(RESERVE_SPACE);
|
|
}
|
|
#line 1135 "gen/third_party/yasm/nasm-token.c"
|
|
yy109: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy110;
|
|
yy110:
|
|
#line 344 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 256;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(RESERVE_SPACE);
|
|
}
|
|
#line 1148 "gen/third_party/yasm/nasm-token.c"
|
|
yy111: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy112;
|
|
yy112:
|
|
#line 309 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy113: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy114;
|
|
yy114:
|
|
#line 334 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 256;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1198 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1222 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ lvalp->int_info = 80; RETURN(SIZE_OVERRIDE); }
|
|
#line 1247 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(TIMES); }
|
|
#line 1264 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch)*4;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1288 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch)*2;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1308 "gen/third_party/yasm/nasm-token.c"
|
|
yy144: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy145;
|
|
yy145:
|
|
#line 258 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 8;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(DECLARE_DATA);
|
|
}
|
|
#line 1321 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy153: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy154;
|
|
yy154:
|
|
#line 283 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 80;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(DECLARE_DATA);
|
|
}
|
|
#line 1439 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch);
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(DECLARE_DATA);
|
|
}
|
|
#line 1483 "gen/third_party/yasm/nasm-token.c"
|
|
yy157: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy158;
|
|
yy158:
|
|
#line 298 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = 256;
|
|
parser_nasm->state = INSTRUCTION;
|
|
RETURN(DECLARE_DATA);
|
|
}
|
|
#line 1496 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch)*8;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1528 "gen/third_party/yasm/nasm-token.c"
|
|
yy166: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy167;
|
|
yy167:
|
|
#line 263 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy168: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 2) {
|
|
goto yy50;
|
|
}
|
|
goto yy169;
|
|
yy169:
|
|
#line 288 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(WRT); }
|
|
#line 1571 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch);
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1587 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->int_info = yasm_arch_wordsize(p_object->arch)/2;
|
|
RETURN(SIZE_OVERRIDE);
|
|
}
|
|
#line 1611 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ lvalp->int_info = 8; RETURN(SIZE_OVERRIDE); }
|
|
#line 1628 "gen/third_party/yasm/nasm-token.c"
|
|
yy186: yych = *++YYCURSOR;
|
|
goto yy187;
|
|
yy187:
|
|
#line 369 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(SIGNMOD); }
|
|
#line 1634 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
parser_nasm->state = LINECHG;
|
|
linechg_numcount = 0;
|
|
RETURN(LINE);
|
|
}
|
|
#line 1660 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(START_SECTION_ID); }
|
|
#line 1723 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy235: yych = *++YYCURSOR;
|
|
goto yy236;
|
|
yy236:
|
|
#line 526 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2191 "gen/third_party/yasm/nasm-token.c"
|
|
yy237: yych = *++YYCURSOR;
|
|
goto yy238;
|
|
yy238:
|
|
#line 528 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
RETURN(s->tok[0]);
|
|
}
|
|
#line 2199 "gen/third_party/yasm/nasm-token.c"
|
|
yy239: yych = *++YYCURSOR;
|
|
goto yy244;
|
|
yy240:
|
|
#line 532 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
if (linechg_numcount == 2) {
|
|
parser_nasm->state = LINECHG2;
|
|
goto linechg2;
|
|
}
|
|
goto linechg;
|
|
}
|
|
#line 2211 "gen/third_party/yasm/nasm-token.c"
|
|
yy241: yych = *++YYCURSOR;
|
|
goto yy242;
|
|
yy242:
|
|
#line 540 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2301 "gen/third_party/yasm/nasm-token.c"
|
|
yy251: yych = *++YYCURSOR;
|
|
if(yybm[0+yych] & 128) {
|
|
goto yy253;
|
|
}
|
|
goto yy252;
|
|
yy252:
|
|
#line 556 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto linechg2; }
|
|
#line 2310 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
parser_nasm->state = LINECHG;
|
|
lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
|
|
RETURN(FILENAME);
|
|
}
|
|
#line 2326 "gen/third_party/yasm/nasm-token.c"
|
|
}
|
|
}
|
|
#line 563 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2406 "gen/third_party/yasm/nasm-token.c"
|
|
yy260: yych = *++YYCURSOR;
|
|
goto yy259;
|
|
yy261: yych = *++YYCURSOR;
|
|
goto yy266;
|
|
yy262:
|
|
#line 574 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy263: yych = *++YYCURSOR;
|
|
goto yy264;
|
|
yy264:
|
|
#line 584 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy271: yych = *++YYCURSOR;
|
|
goto yy272;
|
|
yy272:
|
|
#line 606 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
parser_nasm->state = DIRECTIVE2;
|
|
endch = s->tok[0];
|
|
goto stringconst;
|
|
}
|
|
#line 2560 "gen/third_party/yasm/nasm-token.c"
|
|
yy273: yych = *++YYCURSOR;
|
|
goto yy281;
|
|
yy274:
|
|
#line 612 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
parser_nasm->state = DIRECTIVE2;
|
|
goto section_directive;
|
|
}
|
|
#line 2569 "gen/third_party/yasm/nasm-token.c"
|
|
yy275: yych = *++YYCURSOR;
|
|
goto yy276;
|
|
yy276:
|
|
#line 617 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2575 "gen/third_party/yasm/nasm-token.c"
|
|
yy277: yych = *++YYCURSOR;
|
|
goto yy276;
|
|
yy278: yych = *++YYCURSOR;
|
|
goto yy279;
|
|
yy279:
|
|
#line 619 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(s->tok[0]); }
|
|
#line 2826 "gen/third_party/yasm/nasm-token.c"
|
|
yy293: yych = *++YYCURSOR;
|
|
goto yy294;
|
|
yy294:
|
|
#line 679 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
endch = s->tok[0];
|
|
goto stringconst;
|
|
}
|
|
#line 2835 "gen/third_party/yasm/nasm-token.c"
|
|
yy295: yych = *++YYCURSOR;
|
|
if(yych == '<') goto yy324;
|
|
goto yy296;
|
|
yy296:
|
|
#line 727 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2864 "gen/third_party/yasm/nasm-token.c"
|
|
yy303: yych = *++YYCURSOR;
|
|
goto yy317;
|
|
yy304:
|
|
#line 703 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
yy305: yych = *++YYCURSOR;
|
|
goto yy315;
|
|
yy306:
|
|
#line 721 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto directive2; }
|
|
#line 2892 "gen/third_party/yasm/nasm-token.c"
|
|
yy307: yych = *++YYCURSOR;
|
|
goto yy313;
|
|
yy308:
|
|
#line 723 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto directive2; }
|
|
#line 2898 "gen/third_party/yasm/nasm-token.c"
|
|
yy309: yych = *++YYCURSOR;
|
|
goto yy310;
|
|
yy310:
|
|
#line 725 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto endofinput; }
|
|
#line 2904 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(SIGNMOD); }
|
|
#line 2936 "gen/third_party/yasm/nasm-token.c"
|
|
yy320: yych = *++YYCURSOR;
|
|
goto yy321;
|
|
yy321:
|
|
#line 687 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(SIGNDIV); }
|
|
#line 2942 "gen/third_party/yasm/nasm-token.c"
|
|
yy322: yych = *++YYCURSOR;
|
|
goto yy323;
|
|
yy323:
|
|
#line 686 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(RIGHT_OP); }
|
|
#line 2948 "gen/third_party/yasm/nasm-token.c"
|
|
yy324: yych = *++YYCURSOR;
|
|
goto yy325;
|
|
yy325:
|
|
#line 685 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ RETURN(LEFT_OP); }
|
|
#line 2954 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{
|
|
lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
|
|
RETURN(ID);
|
|
}
|
|
#line 2986 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re"
|
|
{ goto stringconst_error; }
|
|
#line 3357 "gen/third_party/yasm/nasm-token.c"
|
|
yy359: yych = *++YYCURSOR;
|
|
if(yych == '\'') goto yy363;
|
|
goto yy360;
|
|
yy360:
|
|
#line 769 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/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 "../../third_party/yasm/source/patched-yasm/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 "gen/third_party/yasm/nasm-token.c"
|
|
}
|
|
}
|
|
#line 781 "../../third_party/yasm/source/patched-yasm/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]);
|
|
}
|