This is to avoid the default, silent flex rule which simply prints the
character to stdout.
---
 src/glsl/glsl_lexer.ll | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
index db7b1d1..1cadf1f 100644
--- a/src/glsl/glsl_lexer.ll
+++ b/src/glsl/glsl_lexer.ll
@@ -153,6 +153,9 @@ literal_integer(char *text, int len, struct 
_mesa_glsl_parse_state *state,
 %option prefix="_mesa_glsl_lexer_"
 %option extra-type="struct _mesa_glsl_parse_state *"
 
+       /* Note: When adding any start conditions to this list, you must also
+        * update the "Internal compiler error" catch-all rule near the end of
+        * this file. */
 %x PP PRAGMA
 
 DEC_INT                [1-9][0-9]*
@@ -555,6 +558,16 @@ subroutine KEYWORD(0, 300, 0, 0, SUBROUTINE);
 
 .                      { return yytext[0]; }
 
+       /* This is a catch-all to avoid the annoying default flex action which
+        * matches any character and prints it. If any input ever matches this
+        * rule, then we have made a mistake above and need to fix one or more
+        * of the preceding patterns to match that input. */
+<PP,PRAGMA>. {
+       _mesa_glsl_error(yylloc, yyextra,
+                         "Internal compiler error: Unexpected character: %s", 
yytext);
+}
+
+
 %%
 
 int
-- 
2.0.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to