glsl/glcpp: Combine the two rules matching any character
authorCarl Worth <cworth@cworth.org>
Tue, 1 Jul 2014 22:02:14 +0000 (15:02 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 29 Jul 2014 22:11:51 +0000 (15:11 -0700)
Using a single rule here means that we can use the <*> syntax to match
all start conditions. This makes the catch-all rule more robust against
the addition of future start conditions, (no need to maintain an ever-
growing list of start conditions for this rul).

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/glsl/glcpp/glcpp-lex.l

index f95e6a3919dd89a868a135929855307fb93aaf5f..79a7ad7b09a754beb713fc3e4b8a6841be3d6537 100644 (file)
@@ -543,17 +543,17 @@ HEXADECIMAL_INTEGER       0[xX][0-9a-fA-F]+[uU]?
         * rule, then we have made a mistake above and need to fix one or more
         * of the preceding patterns to match that input. */
 
-<INITIAL,COMMENT,DEFINE,DONE,HASH,NEWLINE_CATCHUP>. {
+<*>. {
        glcpp_error(yylloc, yyextra, "Internal compiler error: Unexpected character: %s", yytext);
-}
 
        /* We don't actually use the UNREACHABLE start condition. We
-       only have this action here so that we can pretend to call some
+       only have this block here so that we can pretend to call some
        generated functions, (to avoid "defined but not used"
        warnings. */
-<UNREACHABLE>. {
-       unput('.');
-       yy_top_state(yyextra);
+        if (YY_START == UNREACHABLE) {
+               unput('.');
+               yy_top_state(yyextra);
+       }
 }
 
 %%