diff options
Diffstat (limited to 'src/glsl')
| -rw-r--r-- | src/glsl/glsl_lexer.lpp | 24 | ||||
| -rw-r--r-- | src/glsl/glsl_parser.ypp | 12 | 
2 files changed, 33 insertions, 3 deletions
diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp index 3128cdd3a7..1de1fb4cf7 100644 --- a/src/glsl/glsl_lexer.lpp +++ b/src/glsl/glsl_lexer.lpp @@ -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; diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp index 4b6d9fe7ea..6d99c52503 100644 --- a/src/glsl/glsl_parser.ypp +++ b/src/glsl/glsl_parser.ypp @@ -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:  | 
