q2c: Prefer lex_match_id() over lex_match_hyphenated_word() in emitted code.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 6 Dec 2010 06:19:34 +0000 (22:19 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 12 Dec 2010 06:17:24 +0000 (22:17 -0800)
Until now, q2c has used lex_match_hyphenated_word() wherever it was
necessary to match a plain identifier.  But it is better to use
lex_match_id() when it can be, because it is simpler and faster, so this
commit does that.

src/language/lexer/q2c.c

index cf5a04ee132c6df3449cccc4da8d86c1239a07e1..73602bd6699d956d253b9cb0607efa47fdc46230 100644 (file)
@@ -1422,12 +1422,14 @@ make_match (const char *t)
            "|| lex_match_id (lexer, \"FALSE\"))");
   else if (isdigit ((unsigned char) t[0]))
     sprintf (s, "lex_match_int (lexer, %s)", t);
-  else
+  else if (strchr (t, hyphen_proxy))
     {
       char *c = unmunge (t);
       sprintf (s, "lex_match_hyphenated_word (lexer, \"%s\")", c);
       free (c);
     }
+  else
+    sprintf (s, "lex_match_id (lexer, \"%s\")", t);
 
   return s;
 }