[Mesa-dev] [PATCH 2/4] glsl/glcpp: Combine the two rules matching any character

Carl Worth cworth at cworth.org
Tue Jul 1 15:25:50 PDT 2014


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).
---
 src/glsl/glcpp/glcpp-lex.l | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
index e82b85d..333d4ae 100644
--- a/src/glsl/glcpp/glcpp-lex.l
+++ b/src/glsl/glcpp/glcpp-lex.l
@@ -542,17 +542,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);
+	}
 }
 
 %%
-- 
2.0.0



More information about the mesa-dev mailing list