]> granicus.if.org Git - yasm/commitdiff
Tokenize registers in directives.
authorPeter Johnson <peter@tortall.net>
Thu, 8 Feb 2007 04:40:54 +0000 (04:40 -0000)
committerPeter Johnson <peter@tortall.net>
Thu, 8 Feb 2007 04:40:54 +0000 (04:40 -0000)
svn path=/trunk/yasm/; revision=1759

modules/parsers/nasm/nasm-token.re

index 92201ee847df6cdfdda87c74c08323c4dbb77d47..e75e3d3127f258e39f9646eacca77e1aeccc3578 100644 (file)
@@ -613,6 +613,19 @@ directive2:
 
        /* identifier; within directive, no local label mechanism */
        [a-zA-Z_.?][a-zA-Z0-9_$#@~.?]* {
+           savech = s->tok[TOKLEN];
+           s->tok[TOKLEN] = '\0';
+           switch (yasm_arch_parse_check_regtmod
+                   (parser_nasm->arch, lvalp->arch_data, TOK, TOKLEN)) {
+               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);
        }