Lines Matching refs:parser
46 yyerror(YYLTYPE *locp, glcpp_parser_t *parser, const char *error);
49 _define_object_macro(glcpp_parser_t *parser,
55 _define_function_macro(glcpp_parser_t *parser,
62 _string_list_create(glcpp_parser_t *parser);
65 _string_list_append_item(glcpp_parser_t *parser, string_list_t *list,
81 _argument_list_create(glcpp_parser_t *parser);
84 _argument_list_append(glcpp_parser_t *parser, argument_list_t *list,
94 _token_create_str(glcpp_parser_t *parser, int type, char *str);
97 _token_create_ival(glcpp_parser_t *parser, int type, int ival);
100 _token_list_create(glcpp_parser_t *parser);
103 _token_list_append(glcpp_parser_t *parser, token_list_t *list, token_t *token);
112 _parser_active_list_push(glcpp_parser_t *parser, const char *identifier,
116 _parser_active_list_pop(glcpp_parser_t *parser);
119 _parser_active_list_contains(glcpp_parser_t *parser, const char *identifier);
130 _glcpp_parser_expand_and_lex_from(glcpp_parser_t *parser, int head_token_type,
135 _glcpp_parser_expand_token_list(glcpp_parser_t *parser, token_list_t *list,
139 _glcpp_parser_print_expanded_token_list(glcpp_parser_t *parser,
143 _glcpp_parser_skip_stack_push_if(glcpp_parser_t *parser, YYLTYPE *loc,
147 _glcpp_parser_skip_stack_change_if(glcpp_parser_t *parser, YYLTYPE *loc,
151 _glcpp_parser_skip_stack_pop(glcpp_parser_t *parser, YYLTYPE *loc);
154 _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version,
158 glcpp_parser_lex(YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser);
161 glcpp_parser_lex_from(glcpp_parser_t *parser, token_list_t *list);
164 glcpp_parser_t *parser;
172 add_builtin_define(glcpp_parser_t *parser, const char *name, int value);
176 %pure-parser
188 %parse-param {glcpp_parser_t *parser}
189 %lex-param {glcpp_parser_t *parser}
229 _glcpp_parser_print_expanded_token_list (parser, $1);
230 _mesa_string_buffer_append_char(parser->output, '\n');
237 if (parser->is_gles && $2.undefined_macro)
238 glcpp_error(& @1, parser, "undefined macro %s in expression (illegal in GLES)", $2.undefined_macro);
239 _glcpp_parser_skip_stack_push_if (parser, & @1, $2.value);
242 if (parser->is_gles && $2.undefined_macro)
243 glcpp_error(& @1, parser, "undefined macro %s in expression (illegal in GLES)", $2.undefined_macro);
244 _glcpp_parser_skip_stack_change_if (parser, & @1, "elif", $2.value);
247 parser->has_new_line_number = 1;
248 parser->new_line_number = $2;
249 _mesa_string_buffer_printf(parser->output, "#line %" PRIiMAX "\n", $2);
252 parser->has_new_line_number = 1;
253 parser->new_line_number = $2;
254 parser->has_new_source_number = 1;
255 parser->new_source_number = $3;
256 _mesa_string_buffer_printf(parser->output,
261 parser->has_new_line_number = 1;
262 parser->new_line_number = $2;
263 _mesa_string_buffer_printf(parser->output,
271 _define_object_macro (parser, & @1, $1, $2);
274 _define_function_macro (parser, & @1, $1, NULL, $4);
277 _define_function_macro (parser, & @1, $1, $3, $5);
283 _mesa_string_buffer_append_char(parser->output, '\n');
288 if (parser->skip_stack == NULL ||
289 parser->skip_stack->type == SKIP_NO_SKIP)
291 _glcpp_parser_expand_and_lex_from (parser,
326 glcpp_error(& @1, parser, "Built-in (pre-defined)"
329 if (parser->is_gles
330 && parser->version >= 300
334 glcpp_error(& @1, parser, "Built-in (pre-defined)"
336 } else if (parser->is_gles && parser->version <= 300) {
337 glcpp_error(& @1, parser,
341 glcpp_warning(& @1, parser,
347 entry = _mesa_hash_table_search (parser->defines, $3);
349 _mesa_hash_table_remove (parser->defines, entry);
353 size_t include_cursor = _mesa_get_shader_include_cursor(parser->gl_ctx->Shared);
358 _mesa_set_shader_include_cursor(parser->gl_ctx->Shared, 0);
364 _mesa_lookup_shader_include(parser->gl_ctx, path, false);
368 glcpp_error(&@1, parser, "%s not found", $2);
370 /* Create a temporary parser with the same settings */
372 glcpp_parser_create(parser->gl_ctx, parser->extensions, parser->state);
374 tmp_parser->version = parser->version;
380 * shade include parser.
383 di.parser = tmp_parser;
386 hash_table_call_foreach(parser->defines,
390 /* Print out '#include' to the glsl parser. We do this
395 _mesa_string_buffer_printf(parser->output, "#include\n");
401 _mesa_string_buffer_printf(parser->info_log, "%s",
403 _mesa_string_buffer_printf(parser->output, "%s",
406 /* Copy any new define macros to the parent parser
407 * and steal the memory of our temp parser so we don't
411 di.parser = parser;
413 ralloc_steal(parser, tmp_parser);
419 /* Destroy tmp parser memory we no longer need */
424 _mesa_set_shader_include_cursor(parser->gl_ctx->Shared, include_cursor);
434 if (parser->skip_stack == NULL ||
435 parser->skip_stack->type == SKIP_NO_SKIP)
437 _glcpp_parser_expand_and_lex_from (parser,
443 _glcpp_parser_skip_stack_push_if (parser, & @1, 0);
444 parser->skip_stack->type = SKIP_TO_ENDIF;
450 if (parser->skip_stack == NULL ||
451 parser->skip_stack->type == SKIP_NO_SKIP)
453 glcpp_error(& @1, parser, "#if with no expression");
455 _glcpp_parser_skip_stack_push_if (parser, & @1, 0);
459 _mesa_hash_table_search(parser->defines, $3);
461 _glcpp_parser_skip_stack_push_if (parser, & @1, macro != NULL);
465 _mesa_hash_table_search(parser->defines, $3);
467 _glcpp_parser_skip_stack_push_if (parser, & @3, macro == NULL);
477 if (parser->skip_stack &&
478 parser->skip_stack->type == SKIP_TO_ELSE)
480 _glcpp_parser_expand_and_lex_from (parser,
484 else if (parser->skip_stack &&
485 parser->skip_stack->has_else)
487 glcpp_error(& @1, parser, "#elif after #else");
491 _glcpp_parser_skip_stack_change_if (parser, & @1,
498 if (parser->skip_stack &&
499 parser->skip_stack->type == SKIP_TO_ELSE)
501 glcpp_error(& @1, parser, "#elif with no expression");
503 else if (parser->skip_stack &&
504 parser->skip_stack->has_else)
506 glcpp_error(& @1, parser, "#elif after #else");
510 _glcpp_parser_skip_stack_change_if (parser, & @1,
512 glcpp_warning(& @1, parser, "ignoring illegal #elif without expression");
515 | HASH_TOKEN ELSE { parser->lexing_directive = 1; } NEWLINE {
516 if (parser->skip_stack &&
517 parser->skip_stack->has_else)
519 glcpp_error(& @1, parser, "multiple #else");
523 _glcpp_parser_skip_stack_change_if (parser, & @1, "else", 1);
524 if (parser->skip_stack)
525 parser->skip_stack->has_else = true;
529 _glcpp_parser_skip_stack_pop (parser, & @1);
532 if (parser->version_set) {
533 glcpp_error(& @1, parser, "#version must appear on the first line");
535 _glcpp_parser_handle_version_declaration(parser, $3, NULL, true);
538 if (parser->version_set) {
539 glcpp_error(& @1, parser, "#version must appear on the first line");
541 _glcpp_parser_handle_version_declaration(parser, $3, $4, true);
544 glcpp_parser_resolve_implicit_version(parser);
547 _mesa_string_buffer_printf(parser->output, "#%s", $2);
553 glcpp_error(& @1, parser, "#%s", $2);
556 glcpp_error (& @1, parser, "#define without macro name");
559 glcpp_error (& @1, parser, "Illegal non-directive after #");
576 glcpp_error(&@1, parser, "invalid #version \"%s\" (not a decimal constant)", $1);
590 if (parser->is_gles)
591 $$.undefined_macro = linear_strdup(parser->linalloc, $1);
710 yyerror (& @1, parser,
722 yyerror (& @1, parser,
762 $$ = _string_list_create (parser);
763 _string_list_append_item (parser, $$, $1);
767 _string_list_append_item (parser, $$, $3);
784 if (parser->gl_ctx->Const.AllowExtraPPTokens)
785 glcpp_warning(&@1, parser, "extra tokens at end of directive");
787 glcpp_error(&@1, parser, "extra tokens at end of directive");
793 parser->space_tokens = 1;
794 $$ = _token_list_create (parser);
795 _token_list_append (parser, $$, $1);
799 _token_list_append (parser, $$, $2);
805 $$ = _token_create_str (parser, IDENTIFIER, $1);
809 $$ = _token_create_str (parser, INTEGER_STRING, $1);
813 $$ = _token_create_str (parser, PATH, $1);
817 $$ = _token_create_ival (parser, $1, $1);
821 $$ = _token_create_ival (parser, DEFINED, DEFINED);
825 $$ = _token_create_str (parser, OTHER, $1);
829 $$ = _token_create_ival (parser, SPACE, SPACE);
873 _string_list_create(glcpp_parser_t *parser)
877 list = linear_alloc_child(parser->linalloc, sizeof(string_list_t));
885 _string_list_append_item(glcpp_parser_t *parser, string_list_t *list,
890 node = linear_alloc_child(parser->linalloc, sizeof(string_node_t));
891 node->str = linear_strdup(parser->linalloc, str);
984 _argument_list_create(glcpp_parser_t *parser)
988 list = linear_alloc_child(parser->linalloc, sizeof(argument_list_t));
996 _argument_list_append(glcpp_parser_t *parser,
1001 node = linear_alloc_child(parser->linalloc, sizeof(argument_node_t));
1053 _token_create_str(glcpp_parser_t *parser, int type, char *str)
1057 token = linear_alloc_child(parser->linalloc, sizeof(token_t));
1066 _token_create_ival(glcpp_parser_t *parser, int type, int ival)
1070 token = linear_alloc_child(parser->linalloc, sizeof(token_t));
1079 _token_list_create(glcpp_parser_t *parser)
1083 list = linear_alloc_child(parser->linalloc, sizeof(token_list_t));
1092 _token_list_append(glcpp_parser_t *parser, token_list_t *list, token_t *token)
1096 node = linear_alloc_child(parser->linalloc, sizeof(token_node_t));
1128 _token_list_copy(glcpp_parser_t *parser, token_list_t *other)
1136 copy = _token_list_create (parser);
1138 token_t *new_token = linear_alloc_child(parser->linalloc, sizeof(token_t));
1140 _token_list_append (parser, copy, new_token);
1319 _token_paste(glcpp_parser_t *parser, token_t *token, token_t *other)
1336 combined = _token_create_ival (parser, LEFT_SHIFT, LEFT_SHIFT);
1338 combined = _token_create_ival (parser, LESS_OR_EQUAL, LESS_OR_EQUAL);
1342 combined = _token_create_ival (parser, RIGHT_SHIFT, RIGHT_SHIFT);
1344 combined = _token_create_ival (parser, GREATER_OR_EQUAL, GREATER_OR_EQUAL);
1348 combined = _token_create_ival (parser, EQUAL, EQUAL);
1352 combined = _token_create_ival (parser, NOT_EQUAL, NOT_EQUAL);
1356 combined = _token_create_ival (parser, AND, AND);
1360 combined = _token_create_ival (parser, OR, OR);
1404 str = linear_asprintf(parser->linalloc, "%" PRIiMAX, token->value.ival);
1406 str = linear_strdup(parser->linalloc, token->value.str);
1409 linear_asprintf_append(parser->linalloc, &str, "%" PRIiMAX, other->value.ival);
1411 linear_strcat(parser->linalloc, &str, other->value.str);
1420 combined = _token_create_str (parser, combined_type, str);
1426 glcpp_error (&token->location, parser, "");
1427 _mesa_string_buffer_append(parser->info_log, "Pasting \"");
1428 _token_print(parser->info_log, token);
1429 _mesa_string_buffer_append(parser->info_log, "\" and \"");
1430 _token_print(parser->info_log, other);
1431 _mesa_string_buffer_append(parser->info_log, "\" does not give a valid preprocessing token.\n");
1437 _token_list_print(glcpp_parser_t *parser, token_list_t *list)
1445 _token_print(parser->output, node->token);
1449 yyerror(YYLTYPE *locp, glcpp_parser_t *parser, const char *error)
1451 glcpp_error(locp, parser, "%s", error);
1455 add_builtin_define(glcpp_parser_t *parser, const char *name, int value)
1460 tok = _token_create_ival (parser, INTEGER, value);
1462 list = _token_list_create(parser);
1463 _token_list_append(parser, list, tok);
1464 _define_object_macro(parser, NULL, name, list);
1476 glcpp_parser_t *parser;
1478 parser = ralloc (NULL, glcpp_parser_t);
1480 glcpp_lex_init_extra (parser, &parser->scanner);
1481 parser->defines = _mesa_hash_table_create(NULL, _mesa_hash_string,
1483 parser->linalloc = linear_alloc_parent(parser, 0);
1484 parser->active = NULL;
1485 parser->lexing_directive = 0;
1486 parser->lexing_version_directive = 0;
1487 parser->space_tokens = 1;
1488 parser->last_token_was_newline = 0;
1489 parser->last_token_was_space = 0;
1490 parser->first_non_space_token_this_line = 1;
1491 parser->newline_as_space = 0;
1492 parser->in_control_line = 0;
1493 parser->paren_count = 0;
1494 parser->commented_newlines = 0;
1496 parser->skip_stack = NULL;
1497 parser->skipping = 0;
1499 parser->lex_from_list = NULL;
1500 parser->lex_from_node = NULL;
1502 parser->output = _mesa_string_buffer_create(parser,
1504 parser->info_log = _mesa_string_buffer_create(parser,
1506 parser->error = 0;
1508 parser->gl_ctx = gl_ctx;
1509 parser->extensions = extensions;
1510 parser->extension_list = &gl_ctx->Extensions;
1511 parser->state = state;
1512 parser->api = gl_ctx->API;
1513 parser->version = 0;
1514 parser->version_set = false;
1516 parser->has_new_line_number = 0;
1517 parser->new_line_number = 1;
1518 parser->has_new_source_number = 0;
1519 parser->new_source_number = 0;
1521 parser->is_gles = false;
1523 return parser;
1527 glcpp_parser_destroy(glcpp_parser_t *parser)
1529 glcpp_lex_destroy (parser->scanner);
1530 _mesa_hash_table_destroy(parser->defines, NULL);
1531 ralloc_free (parser);
1565 _arguments_parse(glcpp_parser_t *parser,
1583 argument = _token_list_create (parser);
1584 _argument_list_append (parser, arguments, argument);
1597 argument = _token_list_create (parser);
1598 _argument_list_append (parser, arguments, argument);
1605 _token_list_append(parser, argument, node->token);
1618 _token_list_create_with_one_ival(glcpp_parser_t *parser, int type, int ival)
1623 list = _token_list_create(parser);
1624 node = _token_create_ival(parser, type, ival);
1625 _token_list_append(parser, list, node);
1631 _token_list_create_with_one_space(glcpp_parser_t *parser)
1633 return _token_list_create_with_one_ival(parser, SPACE, SPACE);
1637 _token_list_create_with_one_integer(glcpp_parser_t *parser, int ival)
1639 return _token_list_create_with_one_ival(parser, INTEGER, ival);
1664 _glcpp_parser_evaluate_defined(glcpp_parser_t *parser, token_node_t *node,
1710 return _mesa_hash_table_search(parser->defines,
1714 glcpp_error (&defined->token->location, parser,
1722 _glcpp_parser_evaluate_defined_in_list(glcpp_parser_t *parser,
1739 value = _glcpp_parser_evaluate_defined (parser, node, &last);
1743 replacement = linear_alloc_child(parser->linalloc, sizeof(token_node_t));
1744 replacement->token = _token_create_ival (parser, INTEGER, value);
1773 _glcpp_parser_expand_and_lex_from(glcpp_parser_t *parser, int head_token_type,
1779 expanded = _token_list_create (parser);
1780 token = _token_create_ival (parser, head_token_type, head_token_type);
1781 _token_list_append (parser, expanded, token);
1782 _glcpp_parser_expand_token_list (parser, list, mode);
1784 glcpp_parser_lex_from (parser, expanded);
1788 _glcpp_parser_apply_pastes(glcpp_parser_t *parser, token_list_t *list)
1815 yyerror(&node->token->location, parser, "'##' cannot appear at either end of a macro expansion\n");
1819 node->token = _token_paste(parser, node->token, next_non_space->token);
1849 _glcpp_parser_expand_function(glcpp_parser_t *parser, token_node_t *node,
1862 entry = _mesa_hash_table_search(parser->defines, identifier);
1867 arguments = _argument_list_create(parser);
1868 status = _arguments_parse(parser, arguments, node, last);
1876 glcpp_error(&node->token->location, parser, "Macro %s call has unbalanced parentheses\n", identifier);
1882 return _token_list_create_with_one_space(parser);
1890 glcpp_error(&node->token->location, parser,
1898 substituted = _token_list_create(parser);
1910 expanded_argument = _token_list_copy(parser, argument);
1911 _glcpp_parser_expand_token_list(parser, expanded_argument, mode);
1916 new_token = _token_create_ival(parser, PLACEHOLDER,
1918 _token_list_append(parser, substituted, new_token);
1921 _token_list_append(parser, substituted, node->token);
1930 _glcpp_parser_apply_pastes(parser, substituted);
1954 _glcpp_parser_expand_node(glcpp_parser_t *parser, token_node_t *node,
1979 return _token_list_create_with_one_integer(parser, line);
1982 return _token_list_create_with_one_integer(parser,
1987 entry = _mesa_hash_table_search(parser->defines, identifier);
1996 if (_parser_active_list_contains (parser, identifier)) {
2003 str = linear_strdup(parser->linalloc, token->value.str);
2004 final = _token_create_str(parser, token->type, str);
2006 expansion = _token_list_create(parser);
2007 _token_list_append(parser, expansion, final);
2016 return _token_list_create_with_one_space(parser);
2018 replacement = _token_list_copy(parser, macro->replacements);
2019 _glcpp_parser_apply_pastes(parser, replacement);
2023 return _glcpp_parser_expand_function(parser, node, last, mode);
2026 /* Push a new identifier onto the parser's active list.
2034 _parser_active_list_push(glcpp_parser_t *parser, const char *identifier,
2039 node = linear_alloc_child(parser->linalloc, sizeof(active_list_t));
2040 node->identifier = linear_strdup(parser->linalloc, identifier);
2042 node->next = parser->active;
2044 parser->active = node;
2048 _parser_active_list_pop(glcpp_parser_t *parser)
2050 active_list_t *node = parser->active;
2053 parser->active = NULL;
2057 node = parser->active->next;
2058 parser->active = node;
2062 _parser_active_list_contains(glcpp_parser_t *parser, const char *identifier)
2066 if (parser->active == NULL)
2069 for (node = parser->active; node; node = node->next)
2098 _glcpp_parser_expand_token_list(glcpp_parser_t *parser, token_list_t *list,
2104 active_list_t *active_initial = parser->active;
2118 _glcpp_parser_evaluate_defined_in_list (parser, list);
2122 while (parser->active && parser->active->marker == node)
2123 _parser_active_list_pop (parser);
2125 expansion = _glcpp_parser_expand_node (parser, node, &last, mode, line);
2130 _glcpp_parser_evaluate_defined_in_list (parser, expansion);
2134 while (parser->active && parser->active->marker == n) {
2135 _parser_active_list_pop (parser);
2138 _parser_active_list_push(parser, node->token->value.str, last->next);
2168 while (parser->active && parser->active != active_initial)
2169 _parser_active_list_pop (parser);
2175 _glcpp_parser_print_expanded_token_list(glcpp_parser_t *parser,
2181 _glcpp_parser_expand_token_list (parser, list, EXPANSION_MODE_IGNORE_DEFINED);
2185 _token_list_print (parser, list);
2189 _check_for_reserved_macro_name(glcpp_parser_t *parser, YYLTYPE *loc,
2210 glcpp_warning(loc, parser, "Macro names containing \"__\" are reserved "
2214 glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n");
2217 glcpp_error (loc, parser, "\"defined\" cannot be used as a macro name");
2236 _define_object_macro(glcpp_parser_t *parser, YYLTYPE *loc,
2246 _check_for_reserved_macro_name(parser, loc, identifier);
2248 macro = linear_alloc_child(parser->linalloc, sizeof(macro_t));
2252 macro->identifier = linear_strdup(parser->linalloc, identifier);
2255 entry = _mesa_hash_table_search(parser->defines, identifier);
2261 glcpp_error (loc, parser, "Redefinition of macro %s\n", identifier);
2264 _mesa_hash_table_insert (parser->defines, identifier, macro);
2268 _define_function_macro(glcpp_parser_t *parser, YYLTYPE *loc,
2276 _check_for_reserved_macro_name(parser, loc, identifier);
2280 glcpp_error (loc, parser, "Duplicate macro parameter \"%s\"", dup);
2283 macro = linear_alloc_child(parser->linalloc, sizeof(macro_t));
2287 macro->identifier = linear_strdup(parser->linalloc, identifier);
2290 entry = _mesa_hash_table_search(parser->defines, identifier);
2296 glcpp_error (loc, parser, "Redefinition of macro %s\n", identifier);
2299 _mesa_hash_table_insert(parser->defines, identifier, macro);
2303 glcpp_parser_lex(YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser)
2308 if (parser->lex_from_list == NULL) {
2309 ret = glcpp_lex(yylval, yylloc, parser->scanner);
2323 if (parser->newline_as_space) {
2325 parser->paren_count++;
2327 parser->paren_count--;
2328 if (parser->paren_count == 0)
2329 parser->newline_as_space = 0;
2333 if (parser->paren_count == 0)
2334 parser->newline_as_space = 0;
2336 } else if (parser->in_control_line) {
2338 parser->in_control_line = 0;
2343 parser->in_control_line = 1;
2345 struct hash_entry *entry = _mesa_hash_table_search(parser->defines,
2349 parser->newline_as_space = 1;
2350 parser->paren_count = 0;
2357 node = parser->lex_from_node;
2360 parser->lex_from_list = NULL;
2367 parser->lex_from_node = node->next;
2373 glcpp_parser_lex_from(glcpp_parser_t *parser, token_list_t *list)
2377 assert (parser->lex_from_list == NULL);
2380 parser->lex_from_list = _token_list_create (parser);
2385 _token_list_append (parser, parser->lex_from_list, node->token);
2388 parser->lex_from_node = parser->lex_from_list->head;
2391 if (parser->lex_from_node == NULL) {
2392 parser->lex_from_list = NULL;
2397 _glcpp_parser_skip_stack_push_if(glcpp_parser_t *parser, YYLTYPE *loc,
2403 if (parser->skip_stack)
2404 current = parser->skip_stack->type;
2406 node = linear_alloc_child(parser->linalloc, sizeof(skip_node_t));
2419 node->next = parser->skip_stack;
2420 parser->skip_stack = node;
2424 _glcpp_parser_skip_stack_change_if(glcpp_parser_t *parser, YYLTYPE *loc,
2427 if (parser->skip_stack == NULL) {
2428 glcpp_error (loc, parser, "#%s without #if\n", type);
2432 if (parser->skip_stack->type == SKIP_TO_ELSE) {
2434 parser->skip_stack->type = SKIP_NO_SKIP;
2436 parser->skip_stack->type = SKIP_TO_ENDIF;
2441 _glcpp_parser_skip_stack_pop(glcpp_parser_t *parser, YYLTYPE *loc)
2445 if (parser->skip_stack == NULL) {
2446 glcpp_error (loc, parser, "#endif without #if\n");
2450 node = parser->skip_stack;
2451 parser->skip_stack = node->next;
2455 _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version,
2459 if (parser->version_set)
2462 parser->version = version;
2463 parser->version_set = true;
2465 add_builtin_define (parser, "__VERSION__", version);
2467 parser->is_gles = (version == 100) ||
2473 if (parser->is_gles)
2474 add_builtin_define(parser, "GL_ES", 1);
2476 add_builtin_define(parser, "GL_compatibility_profile", 1);
2478 add_builtin_define(parser, "GL_core_profile", 1);
2485 if (version >= 130 || parser->is_gles)
2486 add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1);
2489 if (parser->extensions)
2490 parser->extensions(parser->state, add_builtin_define, parser,
2491 version, parser->is_gles);
2493 if (parser->extension_list) {
2498 if (parser->extension_list->MESA_shader_integer_functions) {
2499 add_builtin_define(parser, "__have_builtin_builtin_udiv64", 1);
2500 add_builtin_define(parser, "__have_builtin_builtin_umod64", 1);
2501 add_builtin_define(parser, "__have_builtin_builtin_idiv64", 1);
2502 add_builtin_define(parser, "__have_builtin_builtin_imod64", 1);
2507 _mesa_string_buffer_printf(parser->output,
2521 glcpp_parser_resolve_implicit_version(glcpp_parser_t *parser)
2523 int language_version = parser->api == API_OPENGLES2 ?
2526 _glcpp_parser_handle_version_declaration(parser, language_version,
2537 if (di->parser->error)
2541 struct hash_entry *entry = _mesa_hash_table_search(di->parser->defines,
2549 glcpp_error(di->loc, di->parser, "Redefinition of macro %s\n",
2553 _mesa_hash_table_insert(di->parser->defines, identifier, macro);