glcpp: Fix handling of "#line 0"
authorCarl Worth <cworth@cworth.org>
Mon, 23 Aug 2010 16:31:42 +0000 (09:31 -0700)
committerCarl Worth <cworth@cworth.org>
Mon, 23 Aug 2010 17:48:10 +0000 (10:48 -0700)
The existing DECIMAL_INTEGER pattern is the correct thing to use when
looking for a C decimal integer, (that is, a digit-sequence not
starting with 0 which would instead be an octal integer).

But for #line, we really want to accept any digit sequence, (including
"0"), and always interpret it as a decimal constant. So we add a new
DIGITS pattern for this case.

This should fix the compilation failure noted in bug #28138

https://bugs.freedesktop.org/show_bug.cgi?id=28138

(Though the generated file will not be updated until the next commit.)

src/glsl/glcpp/glcpp-lex.l

index a90430f255b424b62220e9698b5b62fe58b1254e..8eb84ed138a879a8d7df9c9ed6c392a426ac2f2e 100644 (file)
@@ -68,6 +68,7 @@ IDENTIFIER    [_a-zA-Z][_a-zA-Z0-9]*
 PUNCTUATION    [][(){}.&*~!/%<>^|;,=+-]
 OTHER          [^][(){}.&*~!/%<>^|;,=#[:space:]+-]+
 
+DIGITS                 [0-9][0-9]*
 DECIMAL_INTEGER                [1-9][0-9]*[uU]?
 OCTAL_INTEGER          0[0-7]*[uU]?
 HEXADECIMAL_INTEGER    0[xX][0-9a-fA-F]+[uU]?
@@ -105,7 +106,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
        return OTHER;
 }
 
-{HASH}line{HSPACE}+{DECIMAL_INTEGER}{HSPACE}+{DECIMAL_INTEGER}{HSPACE}*$ {
+{HASH}line{HSPACE}+{DIGITS}{HSPACE}+{DIGITS}{HSPACE}*$ {
        /* Eat characters until the first digit is
         * encountered
         */
@@ -121,7 +122,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
        yylloc->source = strtol(ptr, NULL, 0);
 }
 
-{HASH}line{HSPACE}+{DECIMAL_INTEGER}{HSPACE}*$ {
+{HASH}line{HSPACE}+{DIGITS}{HSPACE}*$ {
        /* Eat characters until the first digit is
         * encountered
         */