mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
glsl2: Parse #pragma lines
All pragmas are currently ignored. Also, the error messages when a pragma is used incorrectly (i.e., '#pragma debug(on)' inside a function) are crap, but I think this is sufficient for now. Fixes piglit test cases pragma-0[1-8].(vert|frag).
This commit is contained in:
parent
9b0ba68b44
commit
bea3963f59
2 changed files with 33 additions and 3 deletions
|
|
@ -64,7 +64,7 @@
|
|||
%option prefix="_mesa_glsl_"
|
||||
%option extra-type="struct _mesa_glsl_parse_state *"
|
||||
|
||||
%x PP
|
||||
%x PP PRAGMA
|
||||
|
||||
DEC_INT [1-9][0-9]*
|
||||
HEX_INT 0[xX][0-9a-fA-F]+
|
||||
|
|
@ -110,7 +110,27 @@ HASH ^{SPC}#{SPC}
|
|||
*/
|
||||
yylineno = strtol(ptr, &ptr, 0) - 1;
|
||||
}
|
||||
^[ \t]*#[ \t]*pragma { BEGIN PP; return PRAGMA; }
|
||||
^{SPC}#{SPC}pragma{SPCP}debug{SPC}\({SPC}on{SPC}\) {
|
||||
BEGIN PP;
|
||||
return PRAGMA_DEBUG_ON;
|
||||
}
|
||||
^{SPC}#{SPC}pragma{SPCP}debug{SPC}\({SPC}off{SPC}\) {
|
||||
BEGIN PP;
|
||||
return PRAGMA_DEBUG_OFF;
|
||||
}
|
||||
^{SPC}#{SPC}pragma{SPCP}optimize{SPC}\({SPC}on{SPC}\) {
|
||||
BEGIN PP;
|
||||
return PRAGMA_OPTIMIZE_ON;
|
||||
}
|
||||
^{SPC}#{SPC}pragma{SPCP}optimize{SPC}\({SPC}off{SPC}\) {
|
||||
BEGIN PP;
|
||||
return PRAGMA_OPTIMIZE_OFF;
|
||||
}
|
||||
^{SPC}#{SPC}pragma{SPCP} { BEGIN PRAGMA; }
|
||||
|
||||
<PRAGMA>\n { BEGIN 0; yylineno++; yycolumn = 0; }
|
||||
<PRAGMA>. { }
|
||||
|
||||
<PP>\/\/[^\n]* { }
|
||||
<PP>[ \t\r]* { }
|
||||
<PP>: return COLON;
|
||||
|
|
|
|||
|
|
@ -103,7 +103,9 @@
|
|||
%token INVARIANT
|
||||
%token LOWP MEDIUMP HIGHP SUPERP PRECISION
|
||||
|
||||
%token VERSION EXTENSION LINE PRAGMA COLON EOL INTERFACE OUTPUT
|
||||
%token VERSION EXTENSION LINE COLON EOL INTERFACE OUTPUT
|
||||
%token PRAGMA_DEBUG_ON PRAGMA_DEBUG_OFF
|
||||
%token PRAGMA_OPTIMIZE_ON PRAGMA_OPTIMIZE_OFF
|
||||
%token LAYOUT_TOK
|
||||
|
||||
/* Reserved words that are not actually used in the grammar.
|
||||
|
|
@ -236,6 +238,13 @@ version_statement:
|
|||
}
|
||||
;
|
||||
|
||||
pragma_statement:
|
||||
PRAGMA_DEBUG_ON EOL
|
||||
| PRAGMA_DEBUG_OFF EOL
|
||||
| PRAGMA_OPTIMIZE_ON EOL
|
||||
| PRAGMA_OPTIMIZE_OFF EOL
|
||||
;
|
||||
|
||||
extension_statement_list:
|
||||
|
||||
| extension_statement_list extension_statement
|
||||
|
|
@ -1496,6 +1505,7 @@ jump_statement:
|
|||
external_declaration:
|
||||
function_definition { $$ = $1; }
|
||||
| declaration { $$ = $1; }
|
||||
| pragma_statement { $$ = NULL; }
|
||||
;
|
||||
|
||||
function_definition:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue