]> git.draconx.ca Git - cdecl99.git/blobdiff - src/scan.l
libcdecl: Remove magic T_ENGLISH token.
[cdecl99.git] / src / scan.l
index 67183815da48e97642536c72e7dd131e050bf744..8a6572ef2444d267ff565b58a402804b5c969b94 100644 (file)
@@ -124,11 +124,6 @@ INTEGER 0x[[:xdigit:]]+|0[0-7]+|[[:digit:]]+
 
 %{
        char *c;
-
-       if (yyextra > 0) {
-               yyextra = -yyextra;
-               return T_ENGLISH;
-       }
 %}
 
 "..."|[][;*(),] {
@@ -169,8 +164,11 @@ INTEGER 0x[[:xdigit:]]+|0[0-7]+|[[:digit:]]+
 }
 
 {IDENT} {
-       int ret = cdecl__to_keyword(yytext, yyleng, yyextra);
-       if (ret == T_IDENT) {
+       unsigned x = cdecl__to_keyword(yytext, yyleng, yyextra);
+       int tok;
+
+       yylval->spectype = UNPACK_SPEC(x & 0xff);
+       if ((tok = (x >> 8)) == PACK_TOKEN(T_IDENT)) {
                /*
                 * Our IDENT pattern includes hyphens so we can match
                 * "variable-length" as a keyword.  In all other cases a
@@ -189,7 +187,7 @@ INTEGER 0x[[:xdigit:]]+|0[0-7]+|[[:digit:]]+
 #endif
                dup_token();
        }
-       return ret;
+       return UNPACK_TOKEN(tok);
 }
 
 [[:space:]]+