}
-#define YYCTYPE char
+#define YYCTYPE unsigned char
#define YYCURSOR id
#define YYLIMIT id
#define YYMARKER marker
yasm_arch_regtmod
yasm_lc3b__parse_check_regtmod(yasm_arch *arch, unsigned long *data,
- const char *id, size_t id_len,
+ const char *oid, size_t id_len,
unsigned long line)
{
- const char *oid = id;
+ const YYCTYPE *id = (const YYCTYPE *)oid;
/*const char *marker;*/
/*!re2c
/* integer registers */
yasm_arch_insnprefix
yasm_lc3b__parse_check_insnprefix(yasm_arch *arch, unsigned long data[4],
- const char *id, size_t id_len,
+ const char *oid, size_t id_len,
unsigned long line)
{
- /*const char *oid = id;*/
+ const YYCTYPE *id = (const YYCTYPE *)oid;
/*const char *marker;*/
/*!re2c
/* instructions */
if (parser_gas->save_input)
yasm_linemap_add_source(parser_gas->linemap,
parser_gas->prev_bc,
- parser_gas->save_line[parser_gas->save_last ^ 1]);
+ (char *)parser_gas->save_line[parser_gas->save_last ^ 1]);
yasm_linemap_goto_next(parser_gas->linemap);
}
;
#include "gas-bison.h"
-#define YYCTYPE char
+#define YYCTYPE unsigned char
typedef struct Scanner {
YYCTYPE *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
unsigned int tchar, tline, cline;
size_t linepos; /* position to start pulling chars from line */
int ended; /* seen endr directive yet? */
- char *oldbuf; /* saved previous fill buffer */
+ YYCTYPE *oldbuf; /* saved previous fill buffer */
size_t oldbuflen; /* previous fill buffer length */
size_t oldbufpos; /* position in previous fill buffer */
} gas_rept;
s->tok = cursor; \
}
+#define TOK ((char *)s->tok)
#define TOKLEN (size_t)(cursor-s->tok)
static size_t
-rept_input(yasm_parser_gas *parser_gas, /*@out@*/ char *buf, size_t max_size)
+rept_input(yasm_parser_gas *parser_gas, /*@out@*/ YYCTYPE *buf,
+ size_t max_size)
{
gas_rept *rept = parser_gas->rept;
size_t numleft = max_size;
- char *bufp = buf;
+ YYCTYPE *bufp = buf;
/* If numrept is 0, copy out just the line end characters */
if (rept->numrept == 0) {
if (!s->bot)
first = 1;
if((s->top - s->lim) < BSIZE){
- char *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
+ YYCTYPE *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
s->tok = buf;
s->ptr = &buf[s->ptr - s->bot];
if (parser_gas->rept && parser_gas->rept->ended) {
/* Pull from rept lines instead of preproc */
cnt = rept_input(parser_gas, s->lim, BSIZE);
- } else if((cnt = yasm_preproc_input(parser_gas->preproc, s->lim,
- BSIZE)) == 0) {
+ } else if((cnt = yasm_preproc_input(parser_gas->preproc,
+ (char *)s->lim, BSIZE)) == 0) {
s->eof = &s->lim[cnt]; *s->eof++ = '\n';
}
s->lim += cnt;
if (first && parser_gas->save_input) {
int i;
- char *saveline;
+ YYCTYPE *saveline;
parser_gas->save_last ^= 1;
saveline = parser_gas->save_line[parser_gas->save_last];
/* save next line into cur_line */
{
Scanner *s = &parser_gas->s;
int i = 0;
- char *saveline;
+ YYCTYPE *saveline;
parser_gas->save_last ^= 1;
saveline = parser_gas->save_line[parser_gas->save_last];
#define STRBUF_ALLOC_SIZE 128
/* string buffer used when parsing strings/character constants */
-static char *strbuf = (char *)NULL;
+static YYCTYPE *strbuf = NULL;
/* length of strbuf (including terminating NULL character) */
static size_t strbuf_size = 0;
([1-9] digit*) | "0" {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_dec(TOK, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
'0b' bindigit+ {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_bin(s->tok+2, cur_line);
+ lvalp->intn = yasm_intnum_create_bin(TOK+2, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
"0" octdigit+ {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_oct(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_oct(TOK, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
/* skip 0 and x */
- lvalp->intn = yasm_intnum_create_hex(s->tok+2, cur_line);
+ lvalp->intn = yasm_intnum_create_hex(TOK+2, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
"0" [DdEeFfTt] [-+]? (digit+)? ("." digit*)? ('e' [-+]? digit+)? {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(s->tok+2);
+ lvalp->flt = yasm_floatnum_create(TOK+2);
s->tok[TOKLEN] = savech;
RETURN(FLTNUM);
}
/* label or maybe directive */
[.][a-zA-Z0-9_$.]* {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(DIR_ID);
}
/* label */
[_][a-zA-Z0-9_$.]* {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(ID);
}
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
switch (yasm_arch_parse_check_regtmod
- (parser_gas->arch, lvalp->arch_data, s->tok+1, TOKLEN-1,
+ (parser_gas->arch, lvalp->arch_data, TOK+1, TOKLEN-1,
cur_line)) {
case YASM_ARCH_REG:
s->tok[TOKLEN] = savech;
|| s->tok[count] == '\r')
count--;
/* Just an identifier, return as such. */
- lvalp->str_val = yasm__xstrndup(s->tok, count);
+ lvalp->str_val = yasm__xstrndup(TOK, count);
RETURN(LABEL);
}
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
switch (yasm_arch_parse_check_insnprefix
- (parser_gas->arch, lvalp->arch_data, s->tok, TOKLEN,
+ (parser_gas->arch, lvalp->arch_data, TOK, TOKLEN,
cur_line)) {
case YASM_ARCH_INSN:
s->tok[TOKLEN] = savech;
}
}
/* Just an identifier, return as such. */
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(ID);
}
/*!re2c
[a-zA-Z0-9_$.-]+ {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
parser_gas->state = INITIAL;
RETURN(ID);
}
"\\" digit digit digit {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_oct(s->tok+1, cur_line);
+ lvalp->intn = yasm_intnum_create_oct(TOK+1, cur_line);
s->tok[TOKLEN] = savech;
strbuf_append(count++, cursor, s, cur_line,
'\\x' hexdigit+ {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_hex(s->tok+2, cur_line);
+ lvalp->intn = yasm_intnum_create_hex(TOK+2, cur_line);
s->tok[TOKLEN] = savech;
strbuf_append(count++, cursor, s, cur_line,
dquot {
strbuf_append(count, cursor, s, cur_line, '\0');
- lvalp->str.contents = strbuf;
+ lvalp->str.contents = (char *)strbuf;
lvalp->str.len = count;
RETURN(STRING);
}
/* Add .line as first line to get line numbers correct */
new_line = yasm_xmalloc(sizeof(gas_rept_line));
new_line->data = yasm_xmalloc(40);
- sprintf(new_line->data, ".line %lu;", rept->startline+1);
- new_line->len = strlen(new_line->data);
+ sprintf((char *)new_line->data, ".line %lu;",
+ rept->startline+1);
+ new_line->len = strlen((char *)new_line->data);
STAILQ_INSERT_HEAD(&rept->lines, new_line, link);
/* Save previous fill buffer */
if (parser_nasm->save_input)
yasm_linemap_add_source(parser_nasm->linemap,
parser_nasm->temp_bc,
- parser_nasm->save_line[parser_nasm->save_last ^ 1]);
+ (char *)parser_nasm->save_line[parser_nasm->save_last ^ 1]);
yasm_linemap_goto_next(parser_nasm->linemap);
}
;
#include "nasm-bison.h"
-#define YYCTYPE char
+#define YYCTYPE unsigned char
typedef struct Scanner {
YYCTYPE *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
unsigned int tchar, tline, cline;
s->tok = cursor; \
}
+#define TOK ((char *)s->tok)
#define TOKLEN (size_t)(cursor-s->tok)
if (!s->bot)
first = 1;
if((s->top - s->lim) < BSIZE){
- char *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
+ YYCTYPE *buf = yasm_xmalloc((size_t)(s->lim - s->bot) + BSIZE);
memcpy(buf, s->tok, (size_t)(s->lim - s->tok));
s->tok = buf;
s->ptr = &buf[s->ptr - s->bot];
yasm_xfree(s->bot);
s->bot = buf;
}
- if((cnt = yasm_preproc_input(parser_nasm->preproc, s->lim,
+ if((cnt = yasm_preproc_input(parser_nasm->preproc, (char *)s->lim,
BSIZE)) == 0) {
s->eof = &s->lim[cnt]; *s->eof++ = '\n';
}
s->lim += cnt;
if (first && parser_nasm->save_input) {
int i;
- char *saveline;
+ YYCTYPE *saveline;
parser_nasm->save_last ^= 1;
saveline = parser_nasm->save_line[parser_nasm->save_last];
/* save next line into cur_line */
{
Scanner *s = &parser_nasm->s;
int i = 0;
- char *saveline;
+ YYCTYPE *saveline;
parser_nasm->save_last ^= 1;
saveline = parser_nasm->save_line[parser_nasm->save_last];
#define STRBUF_ALLOC_SIZE 128
/* string buffer used when parsing strings/character constants */
-static char *strbuf = (char *)NULL;
+static YYCTYPE *strbuf = NULL;
/* length of strbuf (including terminating NULL character) */
static size_t strbuf_size = 0;
digit+ {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_dec(TOK, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
bindigit+ 'b' {
s->tok[TOKLEN-1] = '\0'; /* strip off 'b' */
- lvalp->intn = yasm_intnum_create_bin(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_bin(TOK, cur_line);
RETURN(INTNUM);
}
/* 777q or 777o - octal number */
octdigit+ [qQoO] {
s->tok[TOKLEN-1] = '\0'; /* strip off 'q' or 'o' */
- lvalp->intn = yasm_intnum_create_oct(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_oct(TOK, cur_line);
RETURN(INTNUM);
}
/* 0AAh form of hexidecimal number */
digit hexdigit* 'h' {
s->tok[TOKLEN-1] = '\0'; /* strip off 'h' */
- lvalp->intn = yasm_intnum_create_hex(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_hex(TOK, cur_line);
RETURN(INTNUM);
}
s->tok[TOKLEN] = '\0';
if (s->tok[1] == 'x')
/* skip 0 and x */
- lvalp->intn = yasm_intnum_create_hex(s->tok+2, cur_line);
+ lvalp->intn = yasm_intnum_create_hex(TOK+2, cur_line);
else
/* don't skip 0 */
- lvalp->intn = yasm_intnum_create_hex(s->tok+1, cur_line);
+ lvalp->intn = yasm_intnum_create_hex(TOK+1, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
digit+ "." digit* ('e' [-+]? digit+)? {
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->flt = yasm_floatnum_create(s->tok);
+ lvalp->flt = yasm_floatnum_create(TOK);
s->tok[TOKLEN] = savech;
RETURN(FLTNUM);
}
/* special non-local ..@label and labels like ..start */
".." [a-zA-Z0-9_$#@~.?]+ {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(SPECIAL_ID);
}
"." [a-zA-Z0-9_$#@~?][a-zA-Z0-9_$#@~.?]* {
/* override local labels in directive state */
if (parser_nasm->state == DIRECTIVE2) {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(ID);
} else if (!parser_nasm->locallabel_base) {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
yasm__warning(YASM_WARN_GENERAL, cur_line,
N_("no non-local label before `%s'"),
lvalp->str_val);
len = TOKLEN + parser_nasm->locallabel_base_len;
lvalp->str_val = yasm_xmalloc(len + 1);
strcpy(lvalp->str_val, parser_nasm->locallabel_base);
- strncat(lvalp->str_val, s->tok, TOKLEN);
+ strncat(lvalp->str_val, TOK, TOKLEN);
lvalp->str_val[len] = '\0';
}
/* forced identifier */
"$" [a-zA-Z_?][a-zA-Z0-9_$#@~.?]* {
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(ID);
}
s->tok[TOKLEN] = '\0';
if (parser_nasm->state != INSTRUCTION)
switch (yasm_arch_parse_check_insnprefix
- (parser_nasm->arch, lvalp->arch_data, s->tok, TOKLEN,
+ (parser_nasm->arch, lvalp->arch_data, TOK, TOKLEN,
cur_line)) {
case YASM_ARCH_INSN:
parser_nasm->state = INSTRUCTION;
break;
}
switch (yasm_arch_parse_check_regtmod
- (parser_nasm->arch, lvalp->arch_data, s->tok, TOKLEN,
+ (parser_nasm->arch, lvalp->arch_data, TOK, TOKLEN,
cur_line)) {
case YASM_ARCH_REG:
s->tok[TOKLEN] = savech;
s->tok[TOKLEN] = savech;
}
/* Just an identifier, return as such. */
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(ID);
}
linechg_numcount++;
savech = s->tok[TOKLEN];
s->tok[TOKLEN] = '\0';
- lvalp->intn = yasm_intnum_create_dec(s->tok, cur_line);
+ lvalp->intn = yasm_intnum_create_dec(TOK, cur_line);
s->tok[TOKLEN] = savech;
RETURN(INTNUM);
}
(any \ [\r\n])+ {
parser_nasm->state = LINECHG;
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(FILENAME);
}
*/
iletter+ {
parser_nasm->state = DIRECTIVE2;
- lvalp->str_val = yasm__xstrndup(s->tok, TOKLEN);
+ lvalp->str_val = yasm__xstrndup(TOK, TOKLEN);
RETURN(DIRECTIVE_NAME);
}
else
yasm__error(cur_line, N_("unterminated string"));
strbuf[count] = '\0';
- lvalp->str.contents = strbuf;
+ lvalp->str.contents = (char *)strbuf;
lvalp->str.len = count;
if (parser_nasm->save_input && cursor != s->eof)
cursor = save_line(parser_nasm, cursor);
any {
if (s->tok[0] == endch) {
strbuf[count] = '\0';
- lvalp->str.contents = strbuf;
+ lvalp->str.contents = (char *)strbuf;
lvalp->str.len = count;
RETURN(STRING);
}