1f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* A Bison parser, made by GNU Bison 2.5. */ 2f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Bison implementation for Yacc-like parsers in C 4f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 5f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. 6f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 7f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org This program is free software: you can redistribute it and/or modify 8f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org it under the terms of the GNU General Public License as published by 9f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org the Free Software Foundation, either version 3 of the License, or 10f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (at your option) any later version. 11f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 12f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org This program is distributed in the hope that it will be useful, 13f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org but WITHOUT ANY WARRANTY; without even the implied warranty of 14f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org GNU General Public License for more details. 16f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 17f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org You should have received a copy of the GNU General Public License 18f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 20f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* As a special exception, you may create a larger work that contains 21f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org part or all of the Bison parser skeleton and distribute that work 22f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org under terms of your choice, so long as that work isn't itself a 23f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser generator using the skeleton or a modified version thereof 24f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org as a parser skeleton. Alternatively, if you modify or redistribute 25f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org the parser skeleton itself, you may (at your option) remove this 26f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org special exception, which will cause the skeleton and the resulting 27f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Bison output files to be licensed under the GNU General Public 28f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org License without this special exception. 29f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 30f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org This special exception was added by the Free Software Foundation in 31f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org version 2.2 of Bison. */ 32f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* C LALR(1) parser skeleton written by Richard Stallman, by 34f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org simplifying the original so-called "semantic" parser. */ 35f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* All symbols defined below should begin with yy or YY, to avoid 37f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org infringing on user name space. This should be done even for local 38f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org variables, as they might otherwise be expanded by user macros. 39f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org There are some unavoidable exceptions within include files to 40f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org define necessary library symbols; they are noted "INFRINGES ON 41f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org USER NAME SPACE" below. */ 42f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 43f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Identify Bison output. */ 44f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYBISON 1 45f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Bison version. */ 47f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYBISON_VERSION "2.5" 48f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 49f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Skeleton name. */ 50f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYSKELETON_NAME "yacc.c" 51f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Pure parsers. */ 53f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYPURE 1 54f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 55f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Push parsers. */ 56f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYPUSH 0 57f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 58f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Pull parsers. */ 59f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYPULL 1 60f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 61f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Using locations. */ 62f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYLSP_NEEDED 1 63f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 64f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Substitute the variable and function names. */ 65f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yyparse glcpp_parser_parse 66f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yylex glcpp_parser_lex 67f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yyerror glcpp_parser_error 68f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yylval glcpp_parser_lval 69f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yychar glcpp_parser_char 70f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yydebug glcpp_parser_debug 71f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yynerrs glcpp_parser_nerrs 72f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yylloc glcpp_parser_lloc 73f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 74f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy the first part of user declarations. */ 75f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 76f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 268 of yacc.c */ 77f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 1 "src/src/glsl/glcpp/glcpp-parse.y" 78f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 79f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* 80f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Copyright © 2010 Intel Corporation 81f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 82f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 83f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * copy of this software and associated documentation files (the "Software"), 84f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * to deal in the Software without restriction, including without limitation 85f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense, 86f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the 87f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Software is furnished to do so, subject to the following conditions: 88f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 89f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * The above copyright notice and this permission notice (including the next 90f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * paragraph) shall be included in all copies or substantial portions of the 91f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Software. 92f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 93f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 94f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 95f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 96f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 97f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 98f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 99f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * DEALINGS IN THE SOFTWARE. 100f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 101f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 102f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include <stdio.h> 103f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include <stdlib.h> 104f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include <string.h> 105f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include <assert.h> 106f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include <inttypes.h> 107f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 108f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include "glcpp.h" 109f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include "main/core.h" /* for struct gl_extensions */ 110f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#include "main/mtypes.h" /* for gl_api enum */ 111f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 112f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 113f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error); 114f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 115f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 116f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_define_object_macro (glcpp_parser_t *parser, 117f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *loc, 118f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *macro, 119f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *replacements); 120f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 121f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 122f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_define_function_macro (glcpp_parser_t *parser, 123f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *loc, 124f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *macro, 125f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_list_t *parameters, 126f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *replacements); 127f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 128f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic string_list_t * 129f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_create (void *ctx); 130f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 131f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 132f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_append_item (string_list_t *list, const char *str); 133f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 134f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 135f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_contains (string_list_t *list, const char *member, int *index); 136f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 137f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 138f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_length (string_list_t *list); 139f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 140f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 141f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_equal (string_list_t *a, string_list_t *b); 142f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 143f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic argument_list_t * 144f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_create (void *ctx); 145f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 146f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 147f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_append (argument_list_t *list, token_list_t *argument); 148f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 149f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 150f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_length (argument_list_t *list); 151f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 152f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 153f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_member_at (argument_list_t *list, int index); 154f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 155f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Note: This function ralloc_steal()s the str pointer. */ 156f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_t * 157f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_create_str (void *ctx, int type, char *str); 158f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 159f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_t * 160f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_create_ival (void *ctx, int type, int ival); 161f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 162f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 163f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_create (void *ctx); 164f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 165f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 166f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_append (token_list_t *list, token_t *token); 167f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 168f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 169f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_append_list (token_list_t *list, token_list_t *tail); 170f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 171f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 172f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_equal_ignoring_space (token_list_t *a, token_list_t *b); 173f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 174f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 175f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_push (glcpp_parser_t *parser, 176f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier, 177f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *marker); 178f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 179f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 180f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_pop (glcpp_parser_t *parser); 181f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 182f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 183f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_contains (glcpp_parser_t *parser, const char *identifier); 184f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 185f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Expand list, and begin lexing from the result (after first 186f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * prefixing a token of type 'head_token_type'). 187f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 188f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 189f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_and_lex_from (glcpp_parser_t *parser, 190f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int head_token_type, 191f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list); 192f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 193f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Perform macro expansion in-place on the given list. */ 194f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 195f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_token_list (glcpp_parser_t *parser, 196f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list); 197f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 198f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 199f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_print_expanded_token_list (glcpp_parser_t *parser, 200f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list); 201f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 202f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 203f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc, 204f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int condition); 205f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 206f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 207f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_change_if (glcpp_parser_t *parser, YYLTYPE *loc, 208f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *type, int condition); 209f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 210f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 211f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc); 212f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 213f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 214f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser); 215f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 216f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 217f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_lex_from (glcpp_parser_t *parser, token_list_t *list); 218f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 219f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 220f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgadd_builtin_define(glcpp_parser_t *parser, const char *name, int value); 221f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 222f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 223f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 224f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 268 of yacc.c */ 225f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 226 "src/chromium_gensrc/mesa/glcpp-parse.c" 226f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 227f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Enabling traces. */ 228f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYDEBUG 229f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYDEBUG 0 230f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 231f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 232f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Enabling verbose error messages. */ 233f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYERROR_VERBOSE 234f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# undef YYERROR_VERBOSE 235f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYERROR_VERBOSE 1 236f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 237f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYERROR_VERBOSE 1 238f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 239f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 240f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Enabling the token table. */ 241f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYTOKEN_TABLE 242f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYTOKEN_TABLE 0 243f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 244f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 245f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 246f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Tokens. */ 247f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYTOKENTYPE 248f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYTOKENTYPE 249f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Put the tokens into the symbol table, so that GDB and other debuggers 250f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org know about them. */ 251f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org enum yytokentype { 252f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org COMMA_FINAL = 258, 253f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org DEFINED = 259, 254f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ELIF_EXPANDED = 260, 255f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH = 261, 256f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_DEFINE = 262, 257f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FUNC_IDENTIFIER = 263, 258f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org OBJ_IDENTIFIER = 264, 259f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_ELIF = 265, 260f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_ELSE = 266, 261f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_ENDIF = 267, 262f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_IF = 268, 263f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_IFDEF = 269, 264f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_IFNDEF = 270, 265f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_LINE = 271, 266f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_UNDEF = 272, 267f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org HASH_VERSION = 273, 268f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org IDENTIFIER = 274, 269f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org IF_EXPANDED = 275, 270f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org INTEGER = 276, 271f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org INTEGER_STRING = 277, 272f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org LINE_EXPANDED = 278, 273f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org NEWLINE = 279, 274f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org OTHER = 280, 275f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org PLACEHOLDER = 281, 276f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org SPACE = 282, 277f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org PASTE = 283, 278f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org OR = 284, 279f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org AND = 285, 280f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org NOT_EQUAL = 286, 281f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org EQUAL = 287, 282f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org GREATER_OR_EQUAL = 288, 283f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org LESS_OR_EQUAL = 289, 284f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org RIGHT_SHIFT = 290, 285f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org LEFT_SHIFT = 291, 286f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org UNARY = 292 287f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org }; 288f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 289f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Tokens. */ 290f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define COMMA_FINAL 258 291f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define DEFINED 259 292f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define ELIF_EXPANDED 260 293f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH 261 294f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_DEFINE 262 295f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define FUNC_IDENTIFIER 263 296f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define OBJ_IDENTIFIER 264 297f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_ELIF 265 298f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_ELSE 266 299f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_ENDIF 267 300f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_IF 268 301f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_IFDEF 269 302f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_IFNDEF 270 303f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_LINE 271 304f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_UNDEF 272 305f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define HASH_VERSION 273 306f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define IDENTIFIER 274 307f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define IF_EXPANDED 275 308f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define INTEGER 276 309f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define INTEGER_STRING 277 310f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define LINE_EXPANDED 278 311f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define NEWLINE 279 312f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define OTHER 280 313f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define PLACEHOLDER 281 314f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define SPACE 282 315f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define PASTE 283 316f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define OR 284 317f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define AND 285 318f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define NOT_EQUAL 286 319f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define EQUAL 287 320f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define GREATER_OR_EQUAL 288 321f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define LESS_OR_EQUAL 289 322f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define RIGHT_SHIFT 290 323f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define LEFT_SHIFT 291 324f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define UNARY 292 325f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 326f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 327f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 328f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 329f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 330f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 331f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define yystype YYSTYPE /* obsolescent; will be withdrawn */ 332f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTYPE_IS_DECLARED 1 333f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 334f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 335f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 336f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef struct YYLTYPE 337f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 338f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int first_line; 339f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int first_column; 340f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int last_line; 341f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int last_column; 342f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} YYLTYPE; 343f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ 344f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYLTYPE_IS_DECLARED 1 345f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYLTYPE_IS_TRIVIAL 1 346f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 347f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 348f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 349f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy the second part of user declarations. */ 350f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 351f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 352f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 343 of yacc.c */ 353f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 354 "src/chromium_gensrc/mesa/glcpp-parse.c" 354f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 355f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef short 356f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# undef short 357f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 358f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 359f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYTYPE_UINT8 360f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef YYTYPE_UINT8 yytype_uint8; 361f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 362f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef unsigned char yytype_uint8; 363f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 364f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 365f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYTYPE_INT8 366f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef YYTYPE_INT8 yytype_int8; 367f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#elif (defined __STDC__ || defined __C99__FUNC__ \ 368f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 369f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef signed char yytype_int8; 370f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 371f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef short int yytype_int8; 372f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 373f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 374f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYTYPE_UINT16 375f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef YYTYPE_UINT16 yytype_uint16; 376f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 377f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef unsigned short int yytype_uint16; 378f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 379f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 380f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYTYPE_INT16 381f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef YYTYPE_INT16 yytype_int16; 382f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 383f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef short int yytype_int16; 384f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 385f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 386f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYSIZE_T 387f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef __SIZE_TYPE__ 388f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSIZE_T __SIZE_TYPE__ 389f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# elif defined size_t 390f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSIZE_T size_t 391f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 392f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 393f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 394f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSIZE_T size_t 395f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 396f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSIZE_T unsigned int 397f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 398f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 399f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 400f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 401f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 402f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YY_ 403f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if defined YYENABLE_NLS && YYENABLE_NLS 404f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if ENABLE_NLS 405f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 406f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_(msgid) dgettext ("bison-runtime", msgid) 407f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 408f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 409f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YY_ 410f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_(msgid) msgid 411f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 412f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 413f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 414f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Suppress unused-variable warnings by "using" E. */ 415f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if ! defined lint || defined __GNUC__ 416f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYUSE(e) ((void) (e)) 417f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 418f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYUSE(e) /* empty */ 419f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 420f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 421f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Identity function, used to suppress warnings about constant conditions. */ 422f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef lint 423f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYID(n) (n) 424f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 425f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 426f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 427f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 428f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgYYID (int yyi) 429f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 430f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 431f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgYYID (yyi) 432f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyi; 433f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 434f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 435f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yyi; 436f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 437f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 438f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 439f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if ! defined yyoverflow || YYERROR_VERBOSE 440f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 441f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* The parser invokes alloca or malloc; define the necessary symbols. */ 442f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 443f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef YYSTACK_USE_ALLOCA 444f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if YYSTACK_USE_ALLOCA 445f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef __GNUC__ 446f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC __builtin_alloca 447f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# elif defined __BUILTIN_VA_ARG_INCR 448f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 449f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# elif defined _AIX 450f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC __alloca 451f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# elif defined _MSC_VER 452f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 453f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define alloca _alloca 454f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 455f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC alloca 456f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 457f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 458f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 459f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef EXIT_SUCCESS 460f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define EXIT_SUCCESS 0 461f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 462f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 463f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 464f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 465f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 466f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 467f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef YYSTACK_ALLOC 468f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Pacify GCC's `empty if-body' warning. */ 469f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 470f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYSTACK_ALLOC_MAXIMUM 471f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The OS might guarantee only one guard page at the bottom of the stack, 472f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org and a page size can be as small as 4096 bytes. So we cannot safely 473f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 474f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org to allow for a few compiler-allocated temporary stack slots. */ 475f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 476f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 477f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 478f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC YYMALLOC 479f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_FREE YYFREE 480f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYSTACK_ALLOC_MAXIMUM 481f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 482f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 483f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if (defined __cplusplus && ! defined EXIT_SUCCESS \ 484f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && ! ((defined YYMALLOC || defined malloc) \ 485f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && (defined YYFREE || defined free))) 486f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 487f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef EXIT_SUCCESS 488f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define EXIT_SUCCESS 0 489f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 490f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 491f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYMALLOC 492f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYMALLOC malloc 493f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 494f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 495f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 496f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 497f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 498f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYFREE 499f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYFREE free 500f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 501f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 502f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid free (void *); /* INFRINGES ON USER NAME SPACE */ 503f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 504f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 505f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 506f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 507f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 508f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 509f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (! defined yyoverflow \ 510f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && (! defined __cplusplus \ 511f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 512f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 513f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 514f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* A type that is properly aligned for any stack member. */ 515f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgunion yyalloc 516f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 517f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 yyss_alloc; 518f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE yyvs_alloc; 519f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE yyls_alloc; 520f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 521f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 522f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* The size of the maximum gap between one aligned stack and the next. */ 523f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 524f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 525f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* The size of an array large to enough to hold all stacks, each with 526f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org N elements. */ 527f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_BYTES(N) \ 528f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 529f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org + 2 * YYSTACK_GAP_MAXIMUM) 530f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 531f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYCOPY_NEEDED 1 532f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 533f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Relocate STACK from its old location to the new one. The 534f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org local variables YYSIZE and YYSTACKSIZE give the old and new number of 535f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org elements in the stack, and YYPTR gives the new location of the 536f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org stack. Advance YYPTR to a properly aligned location for the next 537f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org stack. */ 538f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 539f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org do \ 540f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 541f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yynewbytes; \ 542f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 543f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Stack = &yyptr->Stack_alloc; \ 544f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 545f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyptr += yynewbytes / sizeof (*yyptr); \ 546f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 547f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (YYID (0)) 548f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 549f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 550f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 551f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if defined YYCOPY_NEEDED && YYCOPY_NEEDED 552f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy COUNT objects from FROM to TO. The source and destination do 553f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org not overlap. */ 554f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYCOPY 555f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if defined __GNUC__ && 1 < __GNUC__ 556f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYCOPY(To, From, Count) \ 557f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 558f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 559f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYCOPY(To, From, Count) \ 560f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org do \ 561f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 562f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yyi; \ 563f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (yyi = 0; yyi < (Count); yyi++) \ 564f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (To)[yyi] = (From)[yyi]; \ 565f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 566f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (YYID (0)) 567f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 568f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 569f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* !YYCOPY_NEEDED */ 570f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 571f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYFINAL -- State number of the termination state. */ 572f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYFINAL 2 573f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYLAST -- Last index in YYTABLE. */ 574f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYLAST 670 575f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 576f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYNTOKENS -- Number of terminals. */ 577f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYNTOKENS 60 578f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYNNTS -- Number of nonterminals. */ 579f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYNNTS 19 580f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYNRULES -- Number of rules. */ 581f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYNRULES 107 582f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYNRULES -- Number of states. */ 583f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYNSTATES 172 584f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 585f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 586f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYUNDEFTOK 2 587f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYMAXUTOK 292 588f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 589f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYTRANSLATE(YYX) \ 590f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 591f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 592f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 593f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yytranslate[] = 594f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 595f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 596f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 597f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 598f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 50, 2, 2, 2, 46, 33, 2, 599f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 48, 49, 44, 42, 52, 43, 57, 45, 2, 2, 600f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 58, 601f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 59, 37, 2, 2, 2, 2, 2, 2, 2, 602f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 603f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 604f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 53, 2, 54, 32, 2, 2, 2, 2, 2, 605f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 606f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 607f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 55, 31, 56, 51, 2, 2, 2, 608f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 609f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 610f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 611f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 612f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 613f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 614f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 615f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 616f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 617f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 618f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 619f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 620f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 621f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 622f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 623f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 25, 26, 27, 28, 29, 30, 34, 35, 38, 39, 624f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, 41, 47 625f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 626f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 627f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYDEBUG 628f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 629f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYRHS. */ 630f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint16 yyprhs[] = 631f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 632f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 3, 4, 7, 9, 11, 13, 16, 20, 633f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, 28, 33, 38, 45, 53, 57, 61, 65, 68, 634f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 73, 78, 82, 85, 86, 90, 91, 95, 99, 102, 635f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 104, 106, 108, 110, 114, 118, 122, 126, 130, 134, 636f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 637f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 178, 182, 185, 188, 191, 194, 198, 200, 204, 206, 638f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 209, 212, 213, 215, 216, 218, 221, 226, 228, 230, 639f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 233, 235, 238, 240, 242, 244, 246, 248, 250, 252, 640f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 641f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 642f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 294, 296, 298, 300, 302, 304, 306, 308 643f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 644f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 645f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 646f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_int8 yyrhs[] = 647f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 648f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 61, 0, -1, -1, 61, 62, -1, 64, -1, 70, 649f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 63, -1, 6, 71, -1, 20, 68, 24, -1, 650f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 5, 68, 24, -1, 23, 67, 24, -1, 23, 67, 651f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 67, 24, -1, 7, 9, 72, 24, -1, 7, 8, 652f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 48, 49, 72, 24, -1, 7, 8, 48, 69, 49, 653f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 72, 24, -1, 17, 19, 24, -1, 16, 76, 24, 654f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 13, 75, 24, -1, 13, 24, -1, 14, 19, 655f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 73, 24, -1, 15, 19, 73, 24, -1, 10, 75, 656f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, -1, 10, 24, -1, -1, 11, 65, 24, -1, 657f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 12, 66, 24, -1, 18, 67, 24, -1, 6, 658f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, -1, 22, -1, 21, -1, 67, -1, 19, -1, 659f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 29, 68, -1, 68, 30, 68, -1, 68, 31, 660f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, -1, 68, 32, 68, -1, 68, 33, 68, -1, 661f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 34, 68, -1, 68, 35, 68, -1, 68, 38, 662f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, -1, 68, 39, 68, -1, 68, 37, 68, -1, 663f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 36, 68, -1, 68, 40, 68, -1, 68, 41, 664f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, -1, 68, 43, 68, -1, 68, 42, 68, -1, 665f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 46, 68, -1, 68, 45, 68, -1, 68, 44, 666f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, -1, 50, 68, -1, 51, 68, -1, 43, 68, 667f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 42, 68, -1, 48, 68, 49, -1, 19, -1, 668f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 69, 52, 19, -1, 24, -1, 76, 24, -1, 76, 669f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, -1, -1, 76, -1, -1, 76, -1, 4, 19, 670f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 4, 48, 19, 49, -1, 77, -1, 74, -1, 671f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 75, 74, -1, 77, -1, 76, 77, -1, 19, -1, 672f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 22, -1, 78, -1, 25, -1, 27, -1, 53, -1, 673f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 54, -1, 48, -1, 49, -1, 55, -1, 56, -1, 674f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 57, -1, 33, -1, 44, -1, 42, -1, 43, -1, 675f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 51, -1, 50, -1, 45, -1, 46, -1, 41, -1, 676f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, -1, 36, -1, 37, -1, 39, -1, 38, -1, 677f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, -1, 34, -1, 32, -1, 31, -1, 30, -1, 678f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 29, -1, 58, -1, 52, -1, 59, -1, 28, -1 679f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 680f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 681f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 682f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint16 yyrline[] = 683f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 684f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 184, 184, 186, 190, 193, 198, 199, 203, 206, 685f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 209, 217, 230, 233, 236, 239, 247, 255, 275, 285, 686f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 290, 295, 315, 330, 330, 333, 333, 336, 357, 361, 687f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 370, 375, 376, 379, 382, 385, 388, 391, 394, 397, 688f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 400, 403, 406, 409, 412, 415, 418, 421, 424, 432, 689f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 440, 443, 446, 449, 452, 455, 461, 466, 474, 475, 690f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 479, 485, 486, 489, 491, 498, 502, 506, 511, 515, 691f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 522, 527, 534, 538, 542, 546, 550, 557, 558, 559, 692f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 693f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 694f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 580, 581, 582, 583, 584, 585, 586, 587 695f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 696f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 697f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 698f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 699f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 700f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 701f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const char *const yytname[] = 702f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 703f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "$end", "error", "$undefined", "COMMA_FINAL", "DEFINED", 704f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "ELIF_EXPANDED", "HASH", "HASH_DEFINE", "FUNC_IDENTIFIER", 705f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "OBJ_IDENTIFIER", "HASH_ELIF", "HASH_ELSE", "HASH_ENDIF", "HASH_IF", 706f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "HASH_IFDEF", "HASH_IFNDEF", "HASH_LINE", "HASH_UNDEF", "HASH_VERSION", 707f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "IDENTIFIER", "IF_EXPANDED", "INTEGER", "INTEGER_STRING", 708f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "LINE_EXPANDED", "NEWLINE", "OTHER", "PLACEHOLDER", "SPACE", "PASTE", 709f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "OR", "AND", "'|'", "'^'", "'&'", "NOT_EQUAL", "EQUAL", "'<'", "'>'", 710f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "GREATER_OR_EQUAL", "LESS_OR_EQUAL", "RIGHT_SHIFT", "LEFT_SHIFT", "'+'", 711f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "'-'", "'*'", "'/'", "'%'", "UNARY", "'('", "')'", "'!'", "'~'", "','", 712f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "'['", "']'", "'{'", "'}'", "'.'", "';'", "'='", "$accept", "input", 713f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "line", "expanded_line", "control_line", "$@1", "$@2", 714f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "integer_constant", "expression", "identifier_list", "text_line", 715f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "non_directive", "replacement_list", "junk", "conditional_token", 716f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "conditional_tokens", "pp_tokens", "preprocessing_token", "operator", 0 717f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 718f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 719f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 720f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef YYPRINT 721f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 722f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token YYLEX-NUM. */ 723f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint16 yytoknum[] = 724f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 725f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 726f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 727f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 728f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 285, 124, 94, 38, 286, 287, 60, 62, 288, 289, 729f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 290, 291, 43, 45, 42, 47, 37, 292, 40, 41, 730f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 126, 44, 91, 93, 123, 125, 46, 59, 61 731f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 732f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 733f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 734f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 735f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yyr1[] = 736f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 737f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 60, 61, 61, 62, 62, 62, 62, 63, 63, 738f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 739f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 64, 64, 64, 65, 64, 66, 64, 64, 64, 67, 740f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 741f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 742f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 68, 68, 68, 68, 68, 69, 69, 70, 70, 743f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 71, 72, 72, 73, 73, 74, 74, 74, 75, 75, 744f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 76, 76, 77, 77, 77, 77, 77, 78, 78, 78, 745f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 746f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 747f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 78, 78, 78, 78, 78, 78, 78, 78 748f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 749f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 750f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 751f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yyr2[] = 752f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 753f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 2, 0, 2, 1, 1, 1, 2, 3, 3, 754f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3, 4, 4, 6, 7, 3, 3, 3, 2, 4, 755f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4, 3, 2, 0, 3, 0, 3, 3, 2, 1, 756f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 757f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 758f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3, 2, 2, 2, 2, 3, 1, 3, 1, 2, 759f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 0, 1, 0, 1, 2, 4, 1, 1, 2, 760f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 761f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 762f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 763f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1, 1, 1, 1, 1, 1, 1, 1 764f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 765f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 766f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. 767f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Performed when YYTABLE doesn't specify something else to do. Zero 768f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org means the default is an error. */ 769f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yydefact[] = 770f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 771f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2, 0, 1, 0, 0, 0, 0, 23, 25, 0, 772f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 0, 0, 0, 72, 0, 73, 0, 58, 773f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 75, 76, 107, 103, 102, 101, 100, 84, 99, 98, 774f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 94, 95, 97, 96, 93, 92, 86, 87, 85, 90, 775f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 91, 79, 80, 89, 88, 105, 77, 78, 81, 82, 776f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 83, 104, 106, 3, 6, 4, 5, 0, 70, 74, 777f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 32, 30, 29, 0, 0, 0, 0, 0, 31, 0, 778f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 28, 7, 0, 0, 61, 0, 22, 68, 0, 67, 779f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 18, 0, 63, 63, 0, 0, 0, 0, 780f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 59, 71, 54, 53, 0, 51, 52, 9, 0, 781f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 783f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 62, 65, 0, 21, 69, 24, 26, 17, 0, 64, 784f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 16, 15, 27, 8, 10, 0, 55, 33, 34, 785f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, 36, 37, 38, 39, 43, 42, 40, 41, 44, 786f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 47, 46, 50, 49, 48, 56, 61, 0, 12, 787f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 19, 20, 11, 0, 61, 0, 66, 13, 0, 788f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 57, 14 789f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 790f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 791f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYDEFGOTO[NTERM-NUM]. */ 792f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_int16 yydefgoto[] = 793f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 794f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 1, 53, 54, 55, 80, 81, 68, 69, 158, 795f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 56, 71, 119, 128, 77, 78, 120, 58, 59 796f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 797f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 798f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 799f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org STATE-NUM. */ 800f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYPACT_NINF -149 801f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_int16 yypact[] = 802f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 803f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, 115, -149, 492, -9, 103, 158, -149, -149, 201, 804f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -5, 48, 451, 50, 95, -149, 492, -149, 95, -149, 805f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, 806f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, 807f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, 808f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, -149, -149, -149, -149, 328, -149, -149, 809f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, 492, 492, 492, 492, 492, -149, 515, 810f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, 369, 23, 451, 38, -149, -149, 244, -149, 811f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -17, 51, -149, 287, 451, 451, 410, 55, 63, 538, 812f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, -149, -149, -149, -149, 487, -149, -149, -149, 492, 813f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 814f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 492, 492, 492, 492, 492, 492, 492, -149, 19, 89, 815f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 451, -149, 99, -149, -149, -149, -149, -149, 100, 451, 816f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 112, -149, -149, -149, -149, -149, 117, -149, 555, 571, 817f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 586, 600, 613, 624, 624, 18, 18, 18, 18, 64, 818f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 64, 37, 37, -149, -149, -149, -149, 451, -41, -149, 819f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 70, -149, -149, -149, 151, 451, 157, -149, -149, 154, 820f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149 821f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 822f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 823f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYPGOTO[NTERM-NUM]. */ 824f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_int16 yypgoto[] = 825f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 826f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -149, -149, -149, -149, -149, -12, -11, -149, 827f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -149, -149, -148, 94, -13, 172, 0, -6, -149 828f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 829f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 830f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 831f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org positive, shift that token. If negative, reduce the rule which 832f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org number is the opposite. If YYTABLE_NINF, syntax error. */ 833f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYTABLE_NINF -1 834f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yytable[] = 835f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 836f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 79, 57, 88, 79, 72, 89, 90, 125, 165, 164, 837f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 15, 166, 86, 17, 84, 70, 20, 169, 21, 22, 838f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 839f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 34, 35, 36, 37, 38, 39, 40, 156, 41, 840f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 841f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, 92, 93, 94, 95, 96, 97, 121, 110, 111, 842f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 112, 113, 114, 115, 116, 124, 92, 85, 157, 87, 843f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 124, 118, 79, 61, 62, 126, 135, 79, 136, 132, 844f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 92, 114, 115, 116, 129, 129, 122, 133, 138, 139, 845f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 846f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 150, 151, 152, 153, 154, 155, 112, 113, 114, 115, 847f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 116, 73, 74, 159, 92, 2, 61, 62, 160, 167, 848f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3, 4, 5, 92, 161, 6, 7, 8, 9, 10, 849f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 11, 12, 13, 14, 15, 16, 162, 17, 18, 19, 850f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 20, 163, 21, 22, 23, 24, 25, 26, 27, 28, 851f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 852f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 39, 40, 75, 41, 42, 43, 44, 45, 46, 47, 853f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 48, 49, 50, 51, 52, 168, 170, 15, 171, 130, 854f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 17, 83, 76, 20, 0, 21, 22, 23, 24, 25, 855f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 856f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 37, 38, 39, 40, 75, 41, 42, 43, 44, 857f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 858f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 15, 0, 0, 17, 0, 82, 20, 0, 21, 22, 859f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 860f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 34, 35, 36, 37, 38, 39, 40, 75, 41, 861f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 862f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, 0, 0, 15, 0, 0, 17, 0, 123, 20, 863f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 864f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 865f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, 75, 41, 42, 43, 44, 45, 46, 47, 48, 866f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 49, 50, 51, 52, 0, 0, 15, 0, 0, 17, 867f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 127, 20, 0, 21, 22, 23, 24, 25, 26, 868f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 869f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, 870f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46, 47, 48, 49, 50, 51, 52, 15, 0, 0, 871f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 17, 0, 91, 20, 0, 21, 22, 23, 24, 25, 872f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 873f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 37, 38, 39, 40, 0, 41, 42, 43, 44, 874f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 46, 47, 48, 49, 50, 51, 52, 15, 0, 875f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 17, 0, 117, 20, 0, 21, 22, 23, 24, 876f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 877f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, 36, 37, 38, 39, 40, 0, 41, 42, 43, 878f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 44, 45, 46, 47, 48, 49, 50, 51, 52, 15, 879f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 0, 17, 0, 131, 20, 0, 21, 22, 23, 880f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 881f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 34, 35, 36, 37, 38, 39, 40, 0, 41, 42, 882f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 883f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 15, 0, 0, 17, 0, 0, 20, 0, 21, 22, 884f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 885f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 34, 35, 36, 37, 38, 39, 40, 0, 41, 886f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 887f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, 60, 0, 61, 62, 0, 99, 100, 101, 102, 888f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 889f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 113, 114, 115, 116, 63, 64, 137, 0, 0, 98, 890f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 65, 0, 66, 67, 99, 100, 101, 102, 103, 104, 891f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 892f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 115, 116, 134, 0, 0, 0, 0, 99, 100, 101, 893f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 894f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 112, 113, 114, 115, 116, 100, 101, 102, 103, 104, 895f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 896f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 115, 116, 101, 102, 103, 104, 105, 106, 107, 108, 897f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 109, 110, 111, 112, 113, 114, 115, 116, 102, 103, 898f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 899f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 114, 115, 116, 103, 104, 105, 106, 107, 108, 109, 900f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 110, 111, 112, 113, 114, 115, 116, 104, 105, 106, 901f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 902f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 903f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 116 904f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 905f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 906f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yypact_value_is_default(yystate) \ 907f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ((yystate) == (-149)) 908f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 909f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yytable_value_is_error(yytable_value) \ 910f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYID (0) 911f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 912f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_int16 yycheck[] = 913f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 914f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 6, 1, 14, 9, 4, 16, 18, 24, 49, 157, 915f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, 52, 12, 22, 19, 24, 25, 165, 27, 28, 916f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 917f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 39, 40, 41, 42, 43, 44, 45, 46, 19, 48, 918f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 919f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 59, 57, 63, 64, 65, 66, 67, 19, 40, 41, 920f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 78, 72, 19, 49, 19, 921f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 83, 48, 78, 21, 22, 24, 24, 83, 90, 24, 922f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 86, 44, 45, 46, 84, 85, 48, 24, 99, 100, 923f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 924f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 111, 112, 113, 114, 115, 116, 42, 43, 44, 45, 925f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46, 8, 9, 24, 120, 0, 21, 22, 19, 49, 926f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 5, 6, 7, 129, 24, 10, 11, 12, 13, 14, 927f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 15, 16, 17, 18, 19, 20, 24, 22, 23, 24, 928f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 25, 24, 27, 28, 29, 30, 31, 32, 33, 34, 929f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 930f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 46, 4, 48, 49, 50, 51, 52, 53, 54, 931f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 55, 56, 57, 58, 59, 24, 19, 19, 24, 85, 932f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 22, 9, 24, 25, -1, 27, 28, 29, 30, 31, 933f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 934f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 4, 48, 49, 50, 51, 935f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, 936f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, -1, -1, 22, -1, 24, 25, -1, 27, 28, 937f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 938f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 39, 40, 41, 42, 43, 44, 45, 46, 4, 48, 939f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 940f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 59, -1, -1, 19, -1, -1, 22, -1, 24, 25, 941f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 942f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 943f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46, 4, 48, 49, 50, 51, 52, 53, 54, 55, 944f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 56, 57, 58, 59, -1, -1, 19, -1, -1, 22, 945f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 24, 25, -1, 27, 28, 29, 30, 31, 32, 946f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 947f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, 948f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 53, 54, 55, 56, 57, 58, 59, 19, -1, -1, 949f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 22, -1, 24, 25, -1, 27, 28, 29, 30, 31, 950f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 951f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, -1, 48, 49, 50, 51, 952f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 52, 53, 54, 55, 56, 57, 58, 59, 19, -1, 953f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, 22, -1, 24, 25, -1, 27, 28, 29, 30, 954f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 955f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, 956f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 51, 52, 53, 54, 55, 56, 57, 58, 59, 19, 957f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -1, -1, 22, -1, 24, 25, -1, 27, 28, 29, 958f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 959f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, 41, 42, 43, 44, 45, 46, -1, 48, 49, 960f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 961f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, -1, -1, 22, -1, -1, 25, -1, 27, 28, 962f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 963f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, 964f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 965f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 59, 19, -1, 21, 22, -1, 29, 30, 31, 32, 966f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 967f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 43, 44, 45, 46, 42, 43, 49, -1, -1, 24, 968f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 48, -1, 50, 51, 29, 30, 31, 32, 33, 34, 969f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 970f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 46, 24, -1, -1, -1, -1, 29, 30, 31, 971f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 972f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 42, 43, 44, 45, 46, 30, 31, 32, 33, 34, 973f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 974f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 45, 46, 31, 32, 33, 34, 35, 36, 37, 38, 975f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 39, 40, 41, 42, 43, 44, 45, 46, 32, 33, 976f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 977f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 44, 45, 46, 33, 34, 35, 36, 37, 38, 39, 978f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, 41, 42, 43, 44, 45, 46, 34, 35, 36, 979f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 980f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 981f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46 982f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 983f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 984f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 985f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org symbol of state STATE-NUM. */ 986f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic const yytype_uint8 yystos[] = 987f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 988f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 0, 61, 0, 5, 6, 7, 10, 11, 12, 13, 989f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 990f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 991f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 992f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 993f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 57, 58, 59, 62, 63, 64, 70, 76, 77, 78, 994f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, 21, 22, 42, 43, 48, 50, 51, 67, 68, 995f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 24, 71, 76, 8, 9, 4, 24, 74, 75, 77, 996f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 65, 66, 24, 75, 19, 19, 76, 19, 67, 68, 997f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 67, 24, 77, 68, 68, 68, 68, 68, 24, 29, 998f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 999f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 40, 41, 42, 43, 44, 45, 46, 24, 48, 72, 1000f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 76, 19, 48, 24, 74, 24, 24, 24, 73, 76, 1001f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 73, 24, 24, 24, 24, 24, 67, 49, 68, 68, 1002f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1003f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 68, 68, 68, 68, 68, 68, 19, 49, 69, 24, 1004f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, 24, 24, 24, 72, 49, 52, 49, 24, 72, 1005f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 19, 24 1006f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org}; 1007f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1008f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yyerrok (yyerrstatus = 0) 1009f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define yyclearin (yychar = YYEMPTY) 1010f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYEMPTY (-2) 1011f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYEOF 0 1012f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1013f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYACCEPT goto yyacceptlab 1014f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYABORT goto yyabortlab 1015f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYERROR goto yyerrorlab 1016f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1017f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1018f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Like YYERROR except do call yyerror. This remains here temporarily 1019f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org to ease the transition to the new meaning of YYERROR, for GCC. 1020f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Once GCC version 2 has supplanted version 1, this can go. However, 1021f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFAIL appears to be in use. Nevertheless, it is formally deprecated 1022f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org in Bison 2.4.2's NEWS entry, where a plan to phase it out is 1023f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org discussed. */ 1024f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1025f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYFAIL goto yyerrlab 1026f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if defined YYFAIL 1027f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* This is here to suppress warnings from the GCC cpp's 1028f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org -Wunused-macros. Normally we don't worry about that warning, but 1029f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org some users do, and we want to make it easy for users to remove 1030f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFAIL uses, which will produce warnings from Bison 2.5. */ 1031f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1032f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1033f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYRECOVERING() (!!yyerrstatus) 1034f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1035f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYBACKUP(Token, Value) \ 1036f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgdo \ 1037f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar == YYEMPTY && yylen == 1) \ 1038f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 1039f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = (Token); \ 1040f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylval = (Value); \ 1041f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (1); \ 1042f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yybackup; \ 1043f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 1044f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else \ 1045f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 1046f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (&yylloc, parser, YY_("syntax error: cannot back up")); \ 1047f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYERROR; \ 1048f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 1049f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgwhile (YYID (0)) 1050f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1051f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1052f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYTERROR 1 1053f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYERRCODE 256 1054f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1055f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1056f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1057f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org If N is 0, then set CURRENT to the empty location which ends 1058f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org the previous symbol: RHS[0] (always defined). */ 1059f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1060f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1061f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYLLOC_DEFAULT 1062f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYLLOC_DEFAULT(Current, Rhs, N) \ 1063f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org do \ 1064f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (YYID (N)) \ 1065f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 1066f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1067f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1068f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1069f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1070f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 1071f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else \ 1072f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 1073f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).first_line = (Current).last_line = \ 1074f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYRHSLOC (Rhs, 0).last_line; \ 1075f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Current).first_column = (Current).last_column = \ 1076f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYRHSLOC (Rhs, 0).last_column; \ 1077f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 1078f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (YYID (0)) 1079f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1080f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1081f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1082f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YY_LOCATION_PRINT -- Print the location on the stream. 1083f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org This macro was not mandated originally: define only if we know 1084f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org we won't break user code: when these are the locations we know. */ 1085f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1086f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YY_LOCATION_PRINT 1087f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1088f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_LOCATION_PRINT(File, Loc) \ 1089f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org fprintf (File, "%d.%d-%d.%d", \ 1090f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Loc).first_line, (Loc).first_column, \ 1091f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (Loc).last_line, (Loc).last_column) 1092f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 1093f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1094f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1095f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1096f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1097f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1098f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYLEX -- calling `yylex' with the right arguments. */ 1099f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1100f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYLEX_PARAM 1101f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) 1102f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1103f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYLEX yylex (&yylval, &yylloc, parser) 1104f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1105f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1106f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Enable debugging if requested. */ 1107f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYDEBUG 1108f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1109f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYFPRINTF 1110f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1111f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYFPRINTF fprintf 1112f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1113f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1114f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYDPRINTF(Args) \ 1115f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgdo { \ 1116f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yydebug) \ 1117f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF Args; \ 1118f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} while (YYID (0)) 1119f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1120f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1121f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgdo { \ 1122f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yydebug) \ 1123f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { \ 1124f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "%s ", Title); \ 1125f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yy_symbol_print (stderr, \ 1126f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Type, Value, Location, parser); \ 1127f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "\n"); \ 1128f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } \ 1129f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} while (YYID (0)) 1130f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1131f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1132f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*--------------------------------. 1133f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| Print this symbol on YYOUTPUT. | 1134f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`--------------------------------*/ 1135f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1136f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*ARGSUSED*/ 1137f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1138f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1139f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1140f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, glcpp_parser_t *parser) 1141f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1142f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1143f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser) 1144f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FILE *yyoutput; 1145f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yytype; 1146f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE const * const yyvaluep; 1147f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE const * const yylocationp; 1148f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 1149f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1150f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1151f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yyvaluep) 1152f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 1153f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (yylocationp); 1154f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (parser); 1155f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifdef YYPRINT 1156f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yytype < YYNTOKENS) 1157f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1158f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 1159f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (yyoutput); 1160f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1161f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (yytype) 1162f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1163f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org default: 1164f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1165f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1166f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1167f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1168f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1169f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*--------------------------------. 1170f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| Print this symbol on YYOUTPUT. | 1171f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`--------------------------------*/ 1172f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1173f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1174f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1175f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1176f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, glcpp_parser_t *parser) 1177f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1178f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1179f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parser) 1180f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FILE *yyoutput; 1181f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yytype; 1182f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE const * const yyvaluep; 1183f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE const * const yylocationp; 1184f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 1185f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1186f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1187f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yytype < YYNTOKENS) 1188f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1189f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 1190f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1191f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1192f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_LOCATION_PRINT (yyoutput, *yylocationp); 1193f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (yyoutput, ": "); 1194f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parser); 1195f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (yyoutput, ")"); 1196f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1197f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1198f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*------------------------------------------------------------------. 1199f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yy_stack_print -- Print the state stack from its BOTTOM up to its | 1200f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| TOP (included). | 1201f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`------------------------------------------------------------------*/ 1202f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1203f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1204f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1205f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1206f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1207f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1208f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1209f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_stack_print (yybottom, yytop) 1210f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yybottom; 1211f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yytop; 1212f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1213f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1214f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "Stack now"); 1215f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (; yybottom <= yytop; yybottom++) 1216f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1217f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yybot = *yybottom; 1218f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, " %d", yybot); 1219f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1220f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "\n"); 1221f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1222f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1223f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_STACK_PRINT(Bottom, Top) \ 1224f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgdo { \ 1225f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yydebug) \ 1226f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yy_stack_print ((Bottom), (Top)); \ 1227f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} while (YYID (0)) 1228f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1229f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1230f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*------------------------------------------------. 1231f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| Report that the YYRULE is going to be reduced. | 1232f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`------------------------------------------------*/ 1233f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1234f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1235f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1236f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1237f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, glcpp_parser_t *parser) 1238f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1239f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1240f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyy_reduce_print (yyvsp, yylsp, yyrule, parser) 1241f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE *yyvsp; 1242f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *yylsp; 1243f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyrule; 1244f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 1245f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1246f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1247f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yynrhs = yyr2[yyrule]; 1248f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyi; 1249f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org unsigned long int yylno = yyrline[yyrule]; 1250f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1251f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyrule - 1, yylno); 1252f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The symbols being reduced. */ 1253f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (yyi = 0; yyi < yynrhs; yyi++) 1254f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1255f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, " $%d = ", yyi + 1); 1256f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1257f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &(yyvsp[(yyi + 1) - (yynrhs)]) 1258f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org , &(yylsp[(yyi + 1) - (yynrhs)]) , parser); 1259f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYFPRINTF (stderr, "\n"); 1260f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1261f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1262f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1263f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_REDUCE_PRINT(Rule) \ 1264f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgdo { \ 1265f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yydebug) \ 1266f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yy_reduce_print (yyvsp, yylsp, Rule, parser); \ 1267f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} while (YYID (0)) 1268f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1269f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Nonzero means print parse trace. It is left uninitialized so that 1270f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org multiple parsers can coexist. */ 1271f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yydebug; 1272f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else /* !YYDEBUG */ 1273f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYDPRINTF(Args) 1274f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1275f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_STACK_PRINT(Bottom, Top) 1276f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YY_REDUCE_PRINT(Rule) 1277f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* !YYDEBUG */ 1278f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1279f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1280f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYINITDEPTH -- initial size of the parser's stacks. */ 1281f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYINITDEPTH 1282f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYINITDEPTH 200 1283f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1284f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1285f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1286f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if the built-in stack extension method is used). 1287f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1288f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Do not make this value too large; the results are undefined if 1289f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1290f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org evaluated with infinite-precision integer arithmetic. */ 1291f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1292f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef YYMAXDEPTH 1293f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYMAXDEPTH 10000 1294f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1295f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1296f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1297f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYERROR_VERBOSE 1298f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1299f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef yystrlen 1300f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if defined __GLIBC__ && defined _STRING_H 1301f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define yystrlen strlen 1302f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 1303f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Return the length of YYSTR. */ 1304f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1305f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1306f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic YYSIZE_T 1307f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyystrlen (const char *yystr) 1308f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1309f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic YYSIZE_T 1310f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyystrlen (yystr) 1311f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *yystr; 1312f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1313f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1314f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yylen; 1315f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (yylen = 0; yystr[yylen]; yylen++) 1316f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 1317f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yylen; 1318f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1319f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1320f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1321f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1322f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef yystpcpy 1323f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1324f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define yystpcpy stpcpy 1325f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 1326f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1327f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDEST. */ 1328f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1329f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1330f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic char * 1331f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyystpcpy (char *yydest, const char *yysrc) 1332f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1333f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic char * 1334f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyystpcpy (yydest, yysrc) 1335f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *yydest; 1336f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *yysrc; 1337f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1338f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1339f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *yyd = yydest; 1340f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *yys = yysrc; 1341f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1342f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while ((*yyd++ = *yys++) != '\0') 1343f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 1344f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1345f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yyd - 1; 1346f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1347f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1348f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1349f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1350f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef yytnamerr 1351f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1352f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org quotes and backslashes, so that it's suitable for yyerror. The 1353f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org heuristic is that double-quoting is unnecessary unless the string 1354f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org contains an apostrophe, a comma, or backslash (other than 1355f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org backslash-backslash). YYSTR is taken from yytname. If YYRES is 1356f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org null, do not copy; instead, return the length of what the result 1357f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org would have been. */ 1358f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic YYSIZE_T 1359f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyytnamerr (char *yyres, const char *yystr) 1360f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1361f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (*yystr == '"') 1362f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1363f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yyn = 0; 1364f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char const *yyp = yystr; 1365f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1366f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (;;) 1367f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (*++yyp) 1368f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1369f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '\'': 1370f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case ',': 1371f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto do_not_strip_quotes; 1372f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1373f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '\\': 1374f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (*++yyp != '\\') 1375f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto do_not_strip_quotes; 1376f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Fall through. */ 1377f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org default: 1378f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyres) 1379f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyres[yyn] = *yyp; 1380f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn++; 1381f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1382f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1383f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '"': 1384f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyres) 1385f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyres[yyn] = '\0'; 1386f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yyn; 1387f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1388f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org do_not_strip_quotes: ; 1389f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1390f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1391f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! yyres) 1392f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yystrlen (yystr); 1393f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1394f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return yystpcpy (yyres, yystr) - yyres; 1395f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1396f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1397f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1398f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1399f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org about the unexpected token YYTOKEN for the state stack whose top is 1400f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSSP. 1401f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1402f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1403f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org not large enough to hold the message. In that case, also set 1404f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1405f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org required number of bytes is too large to store. */ 1406f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 1407f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1408f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yyssp, int yytoken) 1409f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1410f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); 1411f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yysize = yysize0; 1412f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yysize1; 1413f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1414f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Internationalized format string. */ 1415f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *yyformat = 0; 1416f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Arguments of yyformat. */ 1417f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1418f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Number of reported tokens (one for the "unexpected", one per 1419f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "expected"). */ 1420f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yycount = 0; 1421f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1422f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* There are many possibilities here to consider: 1423f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org - Assume YYFAIL is not used. It's too flawed to consider. See 1424f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> 1425f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for details. YYERROR is fine as it does not invoke this 1426f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org function. 1427f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org - If this state is a consistent state with a default action, then 1428f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org the only way this function was invoked is if the default action 1429f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org is an error action. In that case, don't check for expected 1430f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org tokens because there are none. 1431f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org - The only way there can be no lookahead present (in yychar) is if 1432f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org this state is a consistent state with a default action. Thus, 1433f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org detecting the absence of a lookahead is sufficient to determine 1434f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org that there is no unexpected or expected token to report. In that 1435f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case, just report a simple "syntax error". 1436f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org - Don't assume there isn't a lookahead just because this state is a 1437f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org consistent state with a default action. There might have been a 1438f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org previous inconsistent state, consistent state with a non-default 1439f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org action, or user semantic action that manipulated yychar. 1440f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org - Of course, the expected token list depends on states to have 1441f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org correct lookahead information, and it depends on the parser not 1442f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org to perform extra reductions after fetching a lookahead from the 1443f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org scanner and before detecting a syntax error. Thus, state merging 1444f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (from LALR or IELR) and default reductions corrupt the expected 1445f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token list. However, the list is correct for canonical LR with 1446f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org one exception: it will still contain any token that will not be 1447f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org accepted due to an error action in a later state. 1448f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 1449f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yytoken != YYEMPTY) 1450f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1451f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyn = yypact[*yyssp]; 1452f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyarg[yycount++] = yytname[yytoken]; 1453f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yypact_value_is_default (yyn)) 1454f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1455f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Start YYX at -YYN if negative to avoid negative indexes in 1456f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCHECK. In other words, skip the first -YYN actions for 1457f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org this state because they are default actions. */ 1458f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyxbegin = yyn < 0 ? -yyn : 0; 1459f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Stay within bounds of both yycheck and yytname. */ 1460f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yychecklim = YYLAST - yyn + 1; 1461f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1462f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyx; 1463f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1464f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1465f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1466f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && !yytable_value_is_error (yytable[yyx + yyn])) 1467f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1468f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1469f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1470f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yycount = 1; 1471f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysize = yysize0; 1472f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1473f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1474f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyarg[yycount++] = yytname[yyx]; 1475f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1476f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! (yysize <= yysize1 1477f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1478f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 2; 1479f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysize = yysize1; 1480f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1481f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1482f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1483f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1484f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (yycount) 1485f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1486f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYCASE_(N, S) \ 1487f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case N: \ 1488f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyformat = S; \ 1489f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break 1490f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(0, YY_("syntax error")); 1491f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(1, YY_("syntax error, unexpected %s")); 1492f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 1493f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 1494f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 1495f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 1496f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# undef YYCASE_ 1497f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1498f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1499f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysize1 = yysize + yystrlen (yyformat); 1500f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1501f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 2; 1502f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysize = yysize1; 1503f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1504f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (*yymsg_alloc < yysize) 1505f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1506f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *yymsg_alloc = 2 * yysize; 1507f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! (yysize <= *yymsg_alloc 1508f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 1509f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 1510f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 1511f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1512f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1513f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Avoid sprintf, as that infringes on the user's name space. 1514f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Don't have undefined behavior even if the translation 1515f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org produced a string with the wrong number of "%s"s. */ 1516f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1517f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *yyp = *yymsg; 1518f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyi = 0; 1519f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while ((*yyp = *yyformat) != '\0') 1520f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 1521f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1522f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyp += yytnamerr (yyp, yyarg[yyi++]); 1523f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyformat += 2; 1524f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1525f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 1526f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1527f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyp++; 1528f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyformat++; 1529f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1530f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1531f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 1532f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1533f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* YYERROR_VERBOSE */ 1534f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1535f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-----------------------------------------------. 1536f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| Release the memory associated to this symbol. | 1537f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-----------------------------------------------*/ 1538f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1539f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*ARGSUSED*/ 1540f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1541f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1542f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1543f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, glcpp_parser_t *parser) 1544f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1545f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 1546f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyydestruct (yymsg, yytype, yyvaluep, yylocationp, parser) 1547f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *yymsg; 1548f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yytype; 1549f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE *yyvaluep; 1550f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *yylocationp; 1551f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 1552f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1553f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1554f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (yyvaluep); 1555f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (yylocationp); 1556f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYUSE (parser); 1557f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1558f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yymsg) 1559f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsg = "Deleting"; 1560f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1561f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1562f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (yytype) 1563f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1564f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1565f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org default: 1566f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1567f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1568f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1569f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1570f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1571f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Prevent warnings from -Wmissing-prototypes. */ 1572f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYPARSE_PARAM 1573f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if defined __STDC__ || defined __cplusplus 1574f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yyparse (void *YYPARSE_PARAM); 1575f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1576f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yyparse (); 1577f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1578f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else /* ! YYPARSE_PARAM */ 1579f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if defined __STDC__ || defined __cplusplus 1580f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yyparse (glcpp_parser_t *parser); 1581f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1582f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yyparse (); 1583f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1584f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* ! YYPARSE_PARAM */ 1585f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1586f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1587f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*----------. 1588f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyparse. | 1589f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`----------*/ 1590f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1591f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef YYPARSE_PARAM 1592f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1593f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1594f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 1595f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyparse (void *YYPARSE_PARAM) 1596f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1597f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 1598f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyparse (YYPARSE_PARAM) 1599f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org void *YYPARSE_PARAM; 1600f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1601f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else /* ! YYPARSE_PARAM */ 1602f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if (defined __STDC__ || defined __C99__FUNC__ \ 1603f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org || defined __cplusplus || defined _MSC_VER) 1604f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 1605f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyparse (glcpp_parser_t *parser) 1606f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 1607f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 1608f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyparse (parser) 1609f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 1610f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1611f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1612f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1613f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* The lookahead symbol. */ 1614f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint yychar; 1615f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1616f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* The semantic value of the lookahead symbol. */ 1617f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgYYSTYPE yylval; 1618f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1619f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Location data for the lookahead symbol. */ 1620f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgYYLTYPE yylloc; 1621f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1622f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Number of syntax errors so far. */ 1623f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yynerrs; 1624f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1625f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yystate; 1626f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Number of tokens to shift before error messages enabled. */ 1627f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyerrstatus; 1628f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1629f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The stacks and their tools: 1630f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org `yyss': related to states. 1631f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org `yyvs': related to semantic values. 1632f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org `yyls': related to locations. 1633f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1634f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Refer to the stacks thru separate pointers, to allow yyoverflow 1635f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org to reallocate them elsewhere. */ 1636f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1637f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The state stack. */ 1638f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 yyssa[YYINITDEPTH]; 1639f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yyss; 1640f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yyssp; 1641f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1642f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The semantic value stack. */ 1643f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE yyvsa[YYINITDEPTH]; 1644f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE *yyvs; 1645f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE *yyvsp; 1646f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1647f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The location stack. */ 1648f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE yylsa[YYINITDEPTH]; 1649f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *yyls; 1650f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *yylsp; 1651f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1652f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The locations where the error started and ended. */ 1653f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE yyerror_range[3]; 1654f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1655f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yystacksize; 1656f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1657f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyn; 1658f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yyresult; 1659f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Lookahead token as an internal (translated) token number. */ 1660f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yytoken; 1661f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The variables used to return semantic value and location from the 1662f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org action routines. */ 1663f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE yyval; 1664f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE yyloc; 1665f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1666f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYERROR_VERBOSE 1667f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Buffer for error messages, and its allocated size. */ 1668f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char yymsgbuf[128]; 1669f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *yymsg = yymsgbuf; 1670f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1671f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1672f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1673f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 1674f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1675f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* The number of symbols on the RHS of the reduced rule. 1676f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Keep to zero when no symbol should be popped. */ 1677f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yylen = 0; 1678f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1679f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken = 0; 1680f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyss = yyssa; 1681f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyvs = yyvsa; 1682f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyls = yylsa; 1683f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystacksize = YYINITDEPTH; 1684f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1685f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDPRINTF ((stderr, "Starting parse\n")); 1686f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1687f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = 0; 1688f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerrstatus = 0; 1689f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yynerrs = 0; 1690f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = YYEMPTY; /* Cause a token to be read. */ 1691f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1692f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Initialize stack pointers. 1693f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Waste one element of value and location stack 1694f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org so that they stay on the same level as the state stack. 1695f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org The wasted elements are never initialized. */ 1696f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyssp = yyss; 1697f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyvsp = yyvs; 1698f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylsp = yyls; 1699f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1700f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1701f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Initialize the default location before parsing starts. */ 1702f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.first_line = yylloc.last_line = 1; 1703f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.first_column = yylloc.last_column = 1; 1704f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 1705f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1706f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* User initialization code. */ 1707f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1708f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1590 of yacc.c */ 1709f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 151 "src/src/glsl/glcpp/glcpp-parse.y" 1710f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 1711f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.first_line = 1; 1712f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.first_column = 1; 1713f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.last_line = 1; 1714f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.last_column = 1; 1715f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylloc.source = 0; 1716f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 1717f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1718f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1590 of yacc.c */ 1719f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 1720 "src/chromium_gensrc/mesa/glcpp-parse.c" 1720f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylsp[0] = yylloc; 1721f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1722f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yysetstate; 1723f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1724f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*------------------------------------------------------------. 1725f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yynewstate -- Push a new state, which is found in yystate. | 1726f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`------------------------------------------------------------*/ 1727f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yynewstate: 1728f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* In all cases, when you get here, the value and location stacks 1729f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org have just been pushed. So pushing a state here evens the stacks. */ 1730f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyssp++; 1731f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1732f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysetstate: 1733f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *yyssp = yystate; 1734f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1735f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyss + yystacksize - 1 <= yyssp) 1736f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1737f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Get the current used size of the three stacks, in elements. */ 1738f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSIZE_T yysize = yyssp - yyss + 1; 1739f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1740f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifdef yyoverflow 1741f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1742f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Give user a chance to reallocate the stack. Use copies of 1743f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org these so that the &'s don't force the real ones into 1744f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org memory. */ 1745f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTYPE *yyvs1 = yyvs; 1746f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yyss1 = yyss; 1747f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *yyls1 = yyls; 1748f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1749f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Each stack pointer address is followed by the size of the 1750f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org data in use in that stack, in bytes. This used to be a 1751f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org conditional around just the two extra args, but that might 1752f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org be undefined if yyoverflow is a macro. */ 1753f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyoverflow (YY_("memory exhausted"), 1754f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &yyss1, yysize * sizeof (*yyssp), 1755f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &yyvs1, yysize * sizeof (*yyvsp), 1756f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &yyls1, yysize * sizeof (*yylsp), 1757f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &yystacksize); 1758f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1759f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyls = yyls1; 1760f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyss = yyss1; 1761f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyvs = yyvs1; 1762f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1763f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else /* no yyoverflow */ 1764f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# ifndef YYSTACK_RELOCATE 1765f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyexhaustedlab; 1766f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# else 1767f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Extend the stack our own way. */ 1768f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (YYMAXDEPTH <= yystacksize) 1769f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyexhaustedlab; 1770f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystacksize *= 2; 1771f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (YYMAXDEPTH < yystacksize) 1772f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystacksize = YYMAXDEPTH; 1773f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1774f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1775f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytype_int16 *yyss1 = yyss; 1776f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org union yyalloc *yyptr = 1777f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1778f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! yyptr) 1779f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyexhaustedlab; 1780f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_RELOCATE (yyss_alloc, yyss); 1781f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1782f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_RELOCATE (yyls_alloc, yyls); 1783f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# undef YYSTACK_RELOCATE 1784f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyss1 != yyssa) 1785f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_FREE (yyss1); 1786f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1787f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# endif 1788f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif /* no yyoverflow */ 1789f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1790f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyssp = yyss + yysize - 1; 1791f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyvsp = yyvs + yysize - 1; 1792f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylsp = yyls + yysize - 1; 1793f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1794f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1795f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (unsigned long int) yystacksize)); 1796f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1797f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyss + yystacksize - 1 <= yyssp) 1798f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYABORT; 1799f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1800f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1801f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1802f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1803f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yystate == YYFINAL) 1804f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYACCEPT; 1805f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1806f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yybackup; 1807f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1808f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-----------. 1809f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yybackup. | 1810f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-----------*/ 1811f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyybackup: 1812f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1813f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Do appropriate processing given the current state. Read a 1814f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org lookahead token if we need one and don't already have one. */ 1815f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1816f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* First try to decide what to do without reference to lookahead token. */ 1817f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yypact[yystate]; 1818f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yypact_value_is_default (yyn)) 1819f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yydefault; 1820f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1821f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Not known => get a lookahead token if don't already have one. */ 1822f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1823f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1824f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar == YYEMPTY) 1825f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1826f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDPRINTF ((stderr, "Reading a token: ")); 1827f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = YYLEX; 1828f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1829f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1830f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar <= YYEOF) 1831f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1832f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = yytoken = YYEOF; 1833f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYDPRINTF ((stderr, "Now at end of input.\n")); 1834f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1835f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 1836f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1837f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken = YYTRANSLATE (yychar); 1838f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1839f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1840f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1841f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* If the proper action on seeing token YYTOKEN is to reduce or to 1842f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org detect an error, take that action. */ 1843f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn += yytoken; 1844f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1845f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yydefault; 1846f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yytable[yyn]; 1847f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyn <= 0) 1848f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1849f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yytable_value_is_error (yyn)) 1850f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyerrlab; 1851f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = -yyn; 1852f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyreduce; 1853f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1854f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1855f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Count tokens shifted since error; after three, turn off error 1856f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org status. */ 1857f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyerrstatus) 1858f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerrstatus--; 1859f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1860f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Shift the lookahead token. */ 1861f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1862f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1863f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Discard the shifted token. */ 1864f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = YYEMPTY; 1865f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1866f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = yyn; 1867f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yyvsp = yylval; 1868f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yylsp = yylloc; 1869f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yynewstate; 1870f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1871f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1872f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-----------------------------------------------------------. 1873f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yydefault -- do the default action for the current state. | 1874f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-----------------------------------------------------------*/ 1875f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyydefault: 1876f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yydefact[yystate]; 1877f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyn == 0) 1878f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyerrlab; 1879f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyreduce; 1880f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1881f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1882f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-----------------------------. 1883f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyreduce -- Do a reduction. | 1884f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-----------------------------*/ 1885f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyreduce: 1886f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* yyn is the number of a rule to reduce with. */ 1887f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylen = yyr2[yyn]; 1888f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1889f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* If YYLEN is nonzero, implement the default value of the action: 1890f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org `$$ = $1'. 1891f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1892f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org Otherwise, the following line sets YYVAL to garbage. 1893f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org This behavior is undocumented and Bison 1894f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org users should not rely upon it. Assigning to YYVAL 1895f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org unconditionally makes the parser a bit smaller, and it avoids a 1896f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org GCC warning that YYVAL may be used uninitialized. */ 1897f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyval = yyvsp[1-yylen]; 1898f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1899f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Default location. */ 1900f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 1901f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_REDUCE_PRINT (yyn); 1902f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (yyn) 1903f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1904f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 4: 1905f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1906f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1907f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 190 "src/src/glsl/glcpp/glcpp-parse.y" 1908f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1909f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n"); 1910f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1911f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1912f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1913f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 5: 1914f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1915f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1916f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 193 "src/src/glsl/glcpp/glcpp-parse.y" 1917f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1918f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list)); 1919f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n"); 1920f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free ((yyvsp[(1) - (1)].token_list)); 1921f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1922f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1923f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1924f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 8: 1925f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1926f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1927f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 203 "src/src/glsl/glcpp/glcpp-parse.y" 1928f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1929f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival)); 1930f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1931f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1932f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1933f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 9: 1934f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1935f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1936f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 206 "src/src/glsl/glcpp/glcpp-parse.y" 1937f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1938f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival)); 1939f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1940f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1941f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1942f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 10: 1943f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1944f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1945f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 209 "src/src/glsl/glcpp/glcpp-parse.y" 1946f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1947f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->has_new_line_number = 1; 1948f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->new_line_number = (yyvsp[(2) - (3)].ival); 1949f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->output, 1950f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &parser->output_length, 1951f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "#line %" PRIiMAX "\n", 1952f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyvsp[(2) - (3)].ival)); 1953f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1954f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1955f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1956f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 11: 1957f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1958f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1959f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 217 "src/src/glsl/glcpp/glcpp-parse.y" 1960f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1961f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->has_new_line_number = 1; 1962f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->new_line_number = (yyvsp[(2) - (4)].ival); 1963f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->has_new_source_number = 1; 1964f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->new_source_number = (yyvsp[(3) - (4)].ival); 1965f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->output, 1966f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org &parser->output_length, 1967f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "#line %" PRIiMAX " %" PRIiMAX "\n", 1968f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].ival)); 1969f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1970f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1971f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1972f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 12: 1973f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1974f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1975f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 230 "src/src/glsl/glcpp/glcpp-parse.y" 1976f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1977f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list)); 1978f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1979f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1980f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1981f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 13: 1982f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1983f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1984f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 233 "src/src/glsl/glcpp/glcpp-parse.y" 1985f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1986f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list)); 1987f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1988f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1989f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1990f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 14: 1991f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1992f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 1993f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 236 "src/src/glsl/glcpp/glcpp-parse.y" 1994f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 1995f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list)); 1996f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 1997f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 1998f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1999f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 15: 2000f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2001f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2002f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 239 "src/src/glsl/glcpp/glcpp-parse.y" 2003f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2004f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str)); 2005f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro) { 2006f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_remove (parser->defines, (yyvsp[(2) - (3)].str)); 2007f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (macro); 2008f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2009f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free ((yyvsp[(2) - (3)].str)); 2010f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2011f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2012f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2013f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 16: 2014f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2015f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2016f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 247 "src/src/glsl/glcpp/glcpp-parse.y" 2017f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2018f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack == NULL || 2019f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type == SKIP_NO_SKIP) 2020f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2021f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_and_lex_from (parser, 2022f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org LINE_EXPANDED, (yyvsp[(2) - (3)].token_list)); 2023f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2024f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2025f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2026f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2027f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 17: 2028f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2029f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2030f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 255 "src/src/glsl/glcpp/glcpp-parse.y" 2031f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2032f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Be careful to only evaluate the 'if' expression if 2033f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * we are not skipping. When we are skipping, we 2034f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * simply push a new 0-valued 'if' onto the skip 2035f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * stack. 2036f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 2037f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * This avoids generating diagnostics for invalid 2038f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * expressions that are being skipped. */ 2039f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack == NULL || 2040f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type == SKIP_NO_SKIP) 2041f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2042f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_and_lex_from (parser, 2043f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org IF_EXPANDED, (yyvsp[(2) - (3)].token_list)); 2044f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2045f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2046f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2047f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), 0); 2048f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type = SKIP_TO_ENDIF; 2049f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2050f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2051f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2052f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2053f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 18: 2054f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2055f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2056f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 275 "src/src/glsl/glcpp/glcpp-parse.y" 2057f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2058f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* #if without an expression is only an error if we 2059f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * are not skipping */ 2060f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack == NULL || 2061f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type == SKIP_NO_SKIP) 2062f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2063f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error(& (yylsp[(1) - (2)]), parser, "#if with no expression"); 2064f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2065f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (2)]), 0); 2066f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2067f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2068f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2069f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 19: 2070f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2071f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2072f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 285 "src/src/glsl/glcpp/glcpp-parse.y" 2073f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2074f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); 2075f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free ((yyvsp[(2) - (4)].str)); 2076f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro != NULL); 2077f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2078f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2079f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2080f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 20: 2081f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2082f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2083f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 290 "src/src/glsl/glcpp/glcpp-parse.y" 2084f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2085f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str)); 2086f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free ((yyvsp[(2) - (4)].str)); 2087f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (4)]), macro == NULL); 2088f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2089f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2090f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2091f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 21: 2092f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2093f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2094f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 295 "src/src/glsl/glcpp/glcpp-parse.y" 2095f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2096f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Be careful to only evaluate the 'elif' expression 2097f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * if we are not skipping. When we are skipping, we 2098f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * simply change to a 0-valued 'elif' on the skip 2099f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * stack. 2100f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 2101f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * This avoids generating diagnostics for invalid 2102f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * expressions that are being skipped. */ 2103f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack && 2104f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type == SKIP_TO_ELSE) 2105f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2106f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_and_lex_from (parser, 2107f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ELIF_EXPANDED, (yyvsp[(2) - (3)].token_list)); 2108f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2109f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2110f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2111f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), 2112f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "elif", 0); 2113f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2114f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2115f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2116f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2117f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 22: 2118f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2119f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2120f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 315 "src/src/glsl/glcpp/glcpp-parse.y" 2121f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2122f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* #elif without an expression is an error unless we 2123f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * are skipping. */ 2124f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack && 2125f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type == SKIP_TO_ELSE) 2126f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2127f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error(& (yylsp[(1) - (2)]), parser, "#elif with no expression"); 2128f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2129f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2130f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2131f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), 2132f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "elif", 0); 2133f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_warning(& (yylsp[(1) - (2)]), parser, "ignoring illegal #elif without expression"); 2134f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2135f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2136f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2137f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2138f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 23: 2139f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2140f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2141f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 330 "src/src/glsl/glcpp/glcpp-parse.y" 2142f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2143f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (1)]), "else", 1); 2144f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2145f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2146f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2147f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 25: 2148f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2149f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2150f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 333 "src/src/glsl/glcpp/glcpp-parse.y" 2151f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2152f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (1)])); 2153f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2154f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2155f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2156f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 27: 2157f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2158f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2159f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 336 "src/src/glsl/glcpp/glcpp-parse.y" 2160f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2161f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro = hash_table_find (parser->defines, "__VERSION__"); 2162f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro) { 2163f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_remove (parser->defines, "__VERSION__"); 2164f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (macro); 2165f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2166f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define (parser, "__VERSION__", (yyvsp[(2) - (3)].ival)); 2167f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2168f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if ((yyvsp[(2) - (3)].ival) == 100) 2169f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define (parser, "GL_ES", 1); 2170f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2171f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Currently, all ES2 implementations support highp in the 2172f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * fragment shader, so we always define this macro in ES2. 2173f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * If we ever get a driver that doesn't support highp, we'll 2174f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * need to add a flag to the gl_context and check that here. 2175f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 2176f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if ((yyvsp[(2) - (3)].ival) >= 130 || (yyvsp[(2) - (3)].ival) == 100) 2177f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); 2178f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2179f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "#version %" PRIiMAX, (yyvsp[(2) - (3)].ival)); 2180f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2181f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2182f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2183f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 29: 2184f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2185f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2186f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 361 "src/src/glsl/glcpp/glcpp-parse.y" 2187f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2188f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) { 2189f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16); 2190f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else if ((yyvsp[(1) - (1)].str)[0] == '0') { 2191f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str), NULL, 8); 2192f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 2193f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = strtoll ((yyvsp[(1) - (1)].str), NULL, 10); 2194f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2195f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2196f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2197f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2198f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 30: 2199f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2200f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2201f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 370 "src/src/glsl/glcpp/glcpp-parse.y" 2202f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2203f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (1)].ival); 2204f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2205f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2206f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2207f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 32: 2208f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2209f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2210f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 376 "src/src/glsl/glcpp/glcpp-parse.y" 2211f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2212f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = 0; 2213f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2214f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2215f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2216f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 33: 2217f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2218f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2219f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 379 "src/src/glsl/glcpp/glcpp-parse.y" 2220f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2221f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival); 2222f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2223f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2224f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2225f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 34: 2226f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2227f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2228f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 382 "src/src/glsl/glcpp/glcpp-parse.y" 2229f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2230f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival); 2231f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2232f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2233f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2234f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 35: 2235f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2236f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2237f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 385 "src/src/glsl/glcpp/glcpp-parse.y" 2238f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2239f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); 2240f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2241f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2242f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2243f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 36: 2244f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2245f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2246f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 388 "src/src/glsl/glcpp/glcpp-parse.y" 2247f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2248f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival); 2249f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2250f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2251f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2252f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 37: 2253f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2254f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2255f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 391 "src/src/glsl/glcpp/glcpp-parse.y" 2256f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2257f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival); 2258f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2259f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2260f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2261f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 38: 2262f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2263f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2264f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 394 "src/src/glsl/glcpp/glcpp-parse.y" 2265f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2266f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival); 2267f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2268f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2269f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2270f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 39: 2271f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2272f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2273f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 397 "src/src/glsl/glcpp/glcpp-parse.y" 2274f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2275f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival); 2276f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2277f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2278f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2279f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 40: 2280f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2281f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2282f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 400 "src/src/glsl/glcpp/glcpp-parse.y" 2283f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2284f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival); 2285f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2286f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2287f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2288f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 41: 2289f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2290f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2291f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 403 "src/src/glsl/glcpp/glcpp-parse.y" 2292f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2293f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival); 2294f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2295f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2296f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2297f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 42: 2298f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2299f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2300f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 406 "src/src/glsl/glcpp/glcpp-parse.y" 2301f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2302f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival); 2303f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2304f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2305f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2306f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 43: 2307f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2308f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2309f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 409 "src/src/glsl/glcpp/glcpp-parse.y" 2310f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2311f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival); 2312f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2313f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2314f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2315f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 44: 2316f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2317f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2318f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 412 "src/src/glsl/glcpp/glcpp-parse.y" 2319f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2320f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival); 2321f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2322f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2323f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2324f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 45: 2325f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2326f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2327f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 415 "src/src/glsl/glcpp/glcpp-parse.y" 2328f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2329f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival); 2330f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2331f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2332f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2333f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 46: 2334f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2335f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2336f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 418 "src/src/glsl/glcpp/glcpp-parse.y" 2337f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2338f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival); 2339f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2340f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2341f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2342f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 47: 2343f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2344f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2345f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 421 "src/src/glsl/glcpp/glcpp-parse.y" 2346f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2347f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival); 2348f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2349f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2350f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2351f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 48: 2352f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2353f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2354f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 424 "src/src/glsl/glcpp/glcpp-parse.y" 2355f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2356f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if ((yyvsp[(3) - (3)].ival) == 0) { 2357f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (& (yylsp[(1) - (3)]), parser, 2358f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "zero modulus in preprocessor directive"); 2359f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 2360f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival); 2361f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2362f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2363f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2364f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2365f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 49: 2366f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2367f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2368f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 432 "src/src/glsl/glcpp/glcpp-parse.y" 2369f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2370f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if ((yyvsp[(3) - (3)].ival) == 0) { 2371f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (& (yylsp[(1) - (3)]), parser, 2372f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "division by 0 in preprocessor directive"); 2373f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 2374f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival); 2375f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2376f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2377f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2378f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2379f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 50: 2380f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2381f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2382f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 440 "src/src/glsl/glcpp/glcpp-parse.y" 2383f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2384f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival); 2385f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2386f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2387f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2388f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 51: 2389f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2390f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2391f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 443 "src/src/glsl/glcpp/glcpp-parse.y" 2392f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2393f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = ! (yyvsp[(2) - (2)].ival); 2394f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2395f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2396f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2397f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 52: 2398f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2399f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2400f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 446 "src/src/glsl/glcpp/glcpp-parse.y" 2401f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2402f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = ~ (yyvsp[(2) - (2)].ival); 2403f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2404f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2405f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2406f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 53: 2407f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2408f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2409f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 449 "src/src/glsl/glcpp/glcpp-parse.y" 2410f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2411f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = - (yyvsp[(2) - (2)].ival); 2412f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2413f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2414f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2415f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 54: 2416f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2417f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2418f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 452 "src/src/glsl/glcpp/glcpp-parse.y" 2419f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2420f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = + (yyvsp[(2) - (2)].ival); 2421f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2422f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2423f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2424f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 55: 2425f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2426f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2427f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 455 "src/src/glsl/glcpp/glcpp-parse.y" 2428f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2429f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.ival) = (yyvsp[(2) - (3)].ival); 2430f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2431f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2432f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2433f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 56: 2434f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2435f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2436f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 461 "src/src/glsl/glcpp/glcpp-parse.y" 2437f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2438f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.string_list) = _string_list_create (parser); 2439f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str)); 2440f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal ((yyval.string_list), (yyvsp[(1) - (1)].str)); 2441f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2442f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2443f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2444f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 57: 2445f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2446f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2447f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 466 "src/src/glsl/glcpp/glcpp-parse.y" 2448f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2449f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.string_list) = (yyvsp[(1) - (3)].string_list); 2450f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str)); 2451f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal ((yyval.string_list), (yyvsp[(3) - (3)].str)); 2452f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2453f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2454f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2455f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 58: 2456f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2457f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2458f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 474 "src/src/glsl/glcpp/glcpp-parse.y" 2459f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.token_list) = NULL; } 2460f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2461f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2462f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 60: 2463f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2464f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2465f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 479 "src/src/glsl/glcpp/glcpp-parse.y" 2466f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2467f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #"); 2468f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2469f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2470f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2471f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 61: 2472f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2473f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2474f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 485 "src/src/glsl/glcpp/glcpp-parse.y" 2475f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.token_list) = NULL; } 2476f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2477f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2478f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 64: 2479f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2480f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2481f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 491 "src/src/glsl/glcpp/glcpp-parse.y" 2482f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2483f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive"); 2484f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2485f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2486f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2487f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 65: 2488f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2489f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2490f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 498 "src/src/glsl/glcpp/glcpp-parse.y" 2491f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2492f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0; 2493f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_ival (parser, INTEGER, v); 2494f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2495f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2496f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2497f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 66: 2498f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2499f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2500f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 502 "src/src/glsl/glcpp/glcpp-parse.y" 2501f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2502f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0; 2503f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_ival (parser, INTEGER, v); 2504f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2505f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2506f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2507f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 68: 2508f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2509f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2510f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 511 "src/src/glsl/glcpp/glcpp-parse.y" 2511f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2512f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token_list) = _token_list_create (parser); 2513f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token)); 2514f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2515f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2516f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2517f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 69: 2518f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2519f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2520f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 515 "src/src/glsl/glcpp/glcpp-parse.y" 2521f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2522f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token_list) = (yyvsp[(1) - (2)].token_list); 2523f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); 2524f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2525f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2526f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2527f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 70: 2528f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2529f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2530f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 522 "src/src/glsl/glcpp/glcpp-parse.y" 2531f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2532f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->space_tokens = 1; 2533f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token_list) = _token_list_create (parser); 2534f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token)); 2535f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2536f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2537f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2538f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 71: 2539f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2540f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2541f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 527 "src/src/glsl/glcpp/glcpp-parse.y" 2542f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2543f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token_list) = (yyvsp[(1) - (2)].token_list); 2544f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token)); 2545f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2546f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2547f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2548f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 72: 2549f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2550f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2551f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 534 "src/src/glsl/glcpp/glcpp-parse.y" 2552f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2553f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str)); 2554f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token)->location = yylloc; 2555f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2556f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2557f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2558f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 73: 2559f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2560f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2561f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 538 "src/src/glsl/glcpp/glcpp-parse.y" 2562f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2563f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str)); 2564f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token)->location = yylloc; 2565f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2566f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2567f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2568f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 74: 2569f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2570f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2571f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 542 "src/src/glsl/glcpp/glcpp-parse.y" 2572f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2573f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival)); 2574f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token)->location = yylloc; 2575f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2576f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2577f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2578f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 75: 2579f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2580f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2581f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 546 "src/src/glsl/glcpp/glcpp-parse.y" 2582f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2583f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str)); 2584f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token)->location = yylloc; 2585f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2586f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2587f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2588f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 76: 2589f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2590f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2591f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 550 "src/src/glsl/glcpp/glcpp-parse.y" 2592f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2593f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token) = _token_create_ival (parser, SPACE, SPACE); 2594f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (yyval.token)->location = yylloc; 2595f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2596f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2597f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2598f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 77: 2599f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2600f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2601f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 557 "src/src/glsl/glcpp/glcpp-parse.y" 2602f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '['; } 2603f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2604f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2605f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 78: 2606f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2607f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2608f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 558 "src/src/glsl/glcpp/glcpp-parse.y" 2609f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = ']'; } 2610f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2611f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2612f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 79: 2613f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2614f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2615f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 559 "src/src/glsl/glcpp/glcpp-parse.y" 2616f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '('; } 2617f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2618f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2619f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 80: 2620f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2621f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2622f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 560 "src/src/glsl/glcpp/glcpp-parse.y" 2623f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = ')'; } 2624f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2625f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2626f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 81: 2627f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2628f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2629f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 561 "src/src/glsl/glcpp/glcpp-parse.y" 2630f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '{'; } 2631f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2632f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2633f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 82: 2634f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2635f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2636f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 562 "src/src/glsl/glcpp/glcpp-parse.y" 2637f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '}'; } 2638f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2639f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2640f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 83: 2641f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2642f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2643f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 563 "src/src/glsl/glcpp/glcpp-parse.y" 2644f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '.'; } 2645f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2646f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2647f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 84: 2648f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2649f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2650f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 564 "src/src/glsl/glcpp/glcpp-parse.y" 2651f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '&'; } 2652f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2653f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2654f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 85: 2655f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2656f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2657f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 565 "src/src/glsl/glcpp/glcpp-parse.y" 2658f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '*'; } 2659f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2660f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2661f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 86: 2662f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2663f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2664f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 566 "src/src/glsl/glcpp/glcpp-parse.y" 2665f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '+'; } 2666f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2667f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2668f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 87: 2669f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2670f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2671f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 567 "src/src/glsl/glcpp/glcpp-parse.y" 2672f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '-'; } 2673f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2674f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2675f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 88: 2676f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2677f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2678f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 568 "src/src/glsl/glcpp/glcpp-parse.y" 2679f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '~'; } 2680f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2681f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2682f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 89: 2683f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2684f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2685f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 569 "src/src/glsl/glcpp/glcpp-parse.y" 2686f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '!'; } 2687f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2688f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2689f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 90: 2690f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2691f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2692f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 570 "src/src/glsl/glcpp/glcpp-parse.y" 2693f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '/'; } 2694f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2695f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2696f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 91: 2697f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2698f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2699f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 571 "src/src/glsl/glcpp/glcpp-parse.y" 2700f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '%'; } 2701f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2702f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2703f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 92: 2704f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2705f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2706f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 572 "src/src/glsl/glcpp/glcpp-parse.y" 2707f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = LEFT_SHIFT; } 2708f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2709f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2710f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 93: 2711f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2712f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2713f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 573 "src/src/glsl/glcpp/glcpp-parse.y" 2714f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = RIGHT_SHIFT; } 2715f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2716f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2717f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 94: 2718f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2719f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2720f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 574 "src/src/glsl/glcpp/glcpp-parse.y" 2721f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '<'; } 2722f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2723f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2724f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 95: 2725f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2726f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2727f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 575 "src/src/glsl/glcpp/glcpp-parse.y" 2728f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '>'; } 2729f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2730f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2731f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 96: 2732f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2733f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2734f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 576 "src/src/glsl/glcpp/glcpp-parse.y" 2735f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = LESS_OR_EQUAL; } 2736f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2737f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2738f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 97: 2739f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2740f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2741f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 577 "src/src/glsl/glcpp/glcpp-parse.y" 2742f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = GREATER_OR_EQUAL; } 2743f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2744f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2745f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 98: 2746f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2747f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2748f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 578 "src/src/glsl/glcpp/glcpp-parse.y" 2749f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = EQUAL; } 2750f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2751f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2752f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 99: 2753f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2754f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2755f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 579 "src/src/glsl/glcpp/glcpp-parse.y" 2756f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = NOT_EQUAL; } 2757f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2758f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2759f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 100: 2760f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2761f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2762f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 580 "src/src/glsl/glcpp/glcpp-parse.y" 2763f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '^'; } 2764f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2765f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2766f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 101: 2767f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2768f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2769f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 581 "src/src/glsl/glcpp/glcpp-parse.y" 2770f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '|'; } 2771f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2772f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2773f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 102: 2774f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2775f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2776f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 582 "src/src/glsl/glcpp/glcpp-parse.y" 2777f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = AND; } 2778f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2779f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2780f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 103: 2781f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2782f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2783f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 583 "src/src/glsl/glcpp/glcpp-parse.y" 2784f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = OR; } 2785f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2786f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2787f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 104: 2788f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2789f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2790f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 584 "src/src/glsl/glcpp/glcpp-parse.y" 2791f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = ';'; } 2792f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2793f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2794f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 105: 2795f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2796f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2797f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 585 "src/src/glsl/glcpp/glcpp-parse.y" 2798f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = ','; } 2799f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2800f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2801f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 106: 2802f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2803f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2804f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 586 "src/src/glsl/glcpp/glcpp-parse.y" 2805f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = '='; } 2806f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2807f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2808f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case 107: 2809f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2810f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2811f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 587 "src/src/glsl/glcpp/glcpp-parse.y" 2812f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { (yyval.ival) = PASTE; } 2813f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2814f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2815f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2816f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2817f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 1806 of yacc.c */ 2818f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 2819 "src/chromium_gensrc/mesa/glcpp-parse.c" 2819f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org default: break; 2820f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2821f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* User semantic actions sometimes alter yychar, and that requires 2822f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org that yytoken be updated with the new translation. We take the 2823f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org approach of translating immediately before every use of yytoken. 2824f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org One alternative is translating here after every semantic action, 2825f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org but that translation would be missed if the semantic action invokes 2826f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 2827f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 2828f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org incorrect destructor might then be invoked immediately. In the 2829f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case of YYERROR or YYBACKUP, subsequent parser actions might lead 2830f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org to an incorrect destructor call or verbose syntax error message 2831f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org before the lookahead is translated. */ 2832f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 2833f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2834f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (yylen); 2835f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylen = 0; 2836f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_STACK_PRINT (yyss, yyssp); 2837f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2838f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yyvsp = yyval; 2839f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yylsp = yyloc; 2840f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2841f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Now `shift' the result of the reduction. Determine what state 2842f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org that goes to, based on the state we popped back to and the rule 2843f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org number reduced by. */ 2844f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2845f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yyr1[yyn]; 2846f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2847f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 2848f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2849f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = yytable[yystate]; 2850f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2851f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = yydefgoto[yyn - YYNTOKENS]; 2852f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2853f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yynewstate; 2854f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2855f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2856f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*------------------------------------. 2857f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyerrlab -- here on detecting error | 2858f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`------------------------------------*/ 2859f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyerrlab: 2860f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Make sure we have latest lookahead translation. See comments at 2861f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org user semantic actions for why this is necessary. */ 2862f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 2863f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2864f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* If not already recovering from an error, report this error. */ 2865f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yyerrstatus) 2866f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2867f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ++yynerrs; 2868f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if ! YYERROR_VERBOSE 2869f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (&yylloc, parser, YY_("syntax error")); 2870f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#else 2871f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 2872f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyssp, yytoken) 2873f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2874f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char const *yymsgp = YY_("syntax error"); 2875f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int yysyntax_error_status; 2876f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysyntax_error_status = YYSYNTAX_ERROR; 2877f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yysyntax_error_status == 0) 2878f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsgp = yymsg; 2879f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (yysyntax_error_status == 1) 2880f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2881f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yymsg != yymsgbuf) 2882f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_FREE (yymsg); 2883f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 2884f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yymsg) 2885f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2886f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsg = yymsgbuf; 2887f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsg_alloc = sizeof yymsgbuf; 2888f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysyntax_error_status = 2; 2889f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2890f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2891f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2892f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yysyntax_error_status = YYSYNTAX_ERROR; 2893f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yymsgp = yymsg; 2894f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2895f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2896f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (&yylloc, parser, yymsgp); 2897f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yysyntax_error_status == 2) 2898f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyexhaustedlab; 2899f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2900f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org# undef YYSYNTAX_ERROR 2901f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 2902f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2903f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2904f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror_range[1] = yylloc; 2905f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2906f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyerrstatus == 3) 2907f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2908f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* If just tried and failed to reuse lookahead token after an 2909f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org error, discard it. */ 2910f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2911f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar <= YYEOF) 2912f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2913f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Return failure if at end of input. */ 2914f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar == YYEOF) 2915f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYABORT; 2916f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2917f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 2918f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2919f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yydestruct ("Error: discarding", 2920f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken, &yylval, &yylloc, parser); 2921f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yychar = YYEMPTY; 2922f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2923f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2924f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2925f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Else will try to reuse lookahead token after shifting the error 2926f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token. */ 2927f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyerrlab1; 2928f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2929f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2930f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*---------------------------------------------------. 2931f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyerrorlab -- error raised explicitly by YYERROR. | 2932f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`---------------------------------------------------*/ 2933f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyerrorlab: 2934f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2935f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Pacify compilers like GCC when the user code never invokes 2936f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYERROR and the label yyerrorlab therefore never appears in user 2937f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org code. */ 2938f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (/*CONSTCOND*/ 0) 2939f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyerrorlab; 2940f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2941f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror_range[1] = yylsp[1-yylen]; 2942f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Do not reclaim the symbols of the rule which action triggered 2943f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org this YYERROR. */ 2944f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (yylen); 2945f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylen = 0; 2946f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_STACK_PRINT (yyss, yyssp); 2947f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = *yyssp; 2948f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyerrlab1; 2949f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2950f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2951f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-------------------------------------------------------------. 2952f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyerrlab1 -- common code for both syntax error and YYERROR. | 2953f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-------------------------------------------------------------*/ 2954f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyerrlab1: 2955f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerrstatus = 3; /* Each real token shifted decrements this. */ 2956f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2957f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (;;) 2958f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2959f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yypact[yystate]; 2960f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (!yypact_value_is_default (yyn)) 2961f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2962f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn += YYTERROR; 2963f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 2964f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 2965f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyn = yytable[yyn]; 2966f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (0 < yyn) 2967f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 2968f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2969f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2970f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2971f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Pop the current state because it cannot handle the error token. */ 2972f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyssp == yyss) 2973f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYABORT; 2974f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2975f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror_range[1] = *yylsp; 2976f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yydestruct ("Error: popping", 2977f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystos[yystate], yyvsp, yylsp, parser); 2978f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (1); 2979f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = *yyssp; 2980f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_STACK_PRINT (yyss, yyssp); 2981f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 2982f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2983f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yyvsp = yylval; 2984f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2985f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror_range[2] = yylloc; 2986f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Using YYLLOC is tempting, but would change the location of 2987f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org the lookahead. YYLOC is available though. */ 2988f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 2989f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *++yylsp = yyloc; 2990f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2991f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Shift the error token. */ 2992f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 2993f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2994f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystate = yyn; 2995f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yynewstate; 2996f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2997f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 2998f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-------------------------------------. 2999f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyacceptlab -- YYACCEPT comes here. | 3000f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-------------------------------------*/ 3001f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyacceptlab: 3002f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyresult = 0; 3003f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyreturn; 3004f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3005f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-----------------------------------. 3006f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyabortlab -- YYABORT comes here. | 3007f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-----------------------------------*/ 3008f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyabortlab: 3009f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyresult = 1; 3010f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org goto yyreturn; 3011f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3012f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if !defined(yyoverflow) || YYERROR_VERBOSE 3013f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/*-------------------------------------------------. 3014f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org| yyexhaustedlab -- memory exhaustion comes here. | 3015f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org`-------------------------------------------------*/ 3016f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyexhaustedlab: 3017f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (&yylloc, parser, YY_("memory exhausted")); 3018f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyresult = 2; 3019f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Fall through. */ 3020f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 3021f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3022f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyreturn: 3023f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yychar != YYEMPTY) 3024f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3025f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Make sure we have latest lookahead translation. See comments at 3026f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org user semantic actions for why this is necessary. */ 3027f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken = YYTRANSLATE (yychar); 3028f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yydestruct ("Cleanup: discarding lookahead", 3029f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yytoken, &yylval, &yylloc, parser); 3030f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3031f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Do not reclaim the symbols of the rule which action triggered 3032f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org this YYABORT or YYACCEPT. */ 3033f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (yylen); 3034f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YY_STACK_PRINT (yyss, yyssp); 3035f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (yyssp != yyss) 3036f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3037f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yydestruct ("Cleanup: popping", 3038f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yystos[*yyssp], yyvsp, yylsp, parser); 3039f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYPOPSTACK (1); 3040f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3041f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#ifndef yyoverflow 3042f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yyss != yyssa) 3043f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_FREE (yyss); 3044f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 3045f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#if YYERROR_VERBOSE 3046f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (yymsg != yymsgbuf) 3047f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYSTACK_FREE (yymsg); 3048f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#endif 3049f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Make sure YYID is used. */ 3050f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return YYID (yyresult); 3051f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3052f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3053f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3054f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3055f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Line 2067 of yacc.c */ 3056f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org#line 590 "src/src/glsl/glcpp/glcpp-parse.y" 3057f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3058f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3059f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstring_list_t * 3060f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_create (void *ctx) 3061f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3062f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_list_t *list; 3063f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3064f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list = ralloc (ctx, string_list_t); 3065f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = NULL; 3066f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = NULL; 3067f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3068f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return list; 3069f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3070f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3071f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3072f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_append_item (string_list_t *list, const char *str) 3073f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3074f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_node_t *node; 3075f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3076f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = ralloc (list, string_node_t); 3077f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->str = ralloc_strdup (node, str); 3078f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3079f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = NULL; 3080f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3081f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list->head == NULL) { 3082f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = node; 3083f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3084f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail->next = node; 3085f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3086f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3087f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = node; 3088f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3089f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3090f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 3091f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_contains (string_list_t *list, const char *member, int *index) 3092f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3093f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_node_t *node; 3094f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int i; 3095f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3096f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 3097f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3098f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3099f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (i = 0, node = list->head; node; i++, node = node->next) { 3100f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strcmp (node->str, member) == 0) { 3101f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (index) 3102f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *index = i; 3103f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 3104f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3105f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3106f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3107f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3108f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3109f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3110f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 3111f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_length (string_list_t *list) 3112f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3113f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int length = 0; 3114f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_node_t *node; 3115f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3116f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 3117f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3118f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3119f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = list->head; node; node = node->next) 3120f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org length++; 3121f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3122f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return length; 3123f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3124f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3125f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 3126f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_string_list_equal (string_list_t *a, string_list_t *b) 3127f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3128f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_node_t *node_a, *node_b; 3129f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3130f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (a == NULL && b == NULL) 3131f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 3132f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3133f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (a == NULL || b == NULL) 3134f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3135f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3136f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node_a = a->head, node_b = b->head; 3137f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_a && node_b; 3138f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_a = node_a->next, node_b = node_b->next) 3139f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3140f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strcmp (node_a->str, node_b->str)) 3141f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3142f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3143f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3144f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Catch the case of lists being different lengths, (which 3145f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * would cause the loop above to terminate after the shorter 3146f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * list). */ 3147f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return node_a == node_b; 3148f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3149f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3150f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgargument_list_t * 3151f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_create (void *ctx) 3152f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3153f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument_list_t *list; 3154f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3155f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list = ralloc (ctx, argument_list_t); 3156f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = NULL; 3157f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = NULL; 3158f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3159f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return list; 3160f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3161f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3162f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3163f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_append (argument_list_t *list, token_list_t *argument) 3164f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3165f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument_node_t *node; 3166f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3167f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = ralloc (list, argument_node_t); 3168f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->argument = argument; 3169f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3170f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = NULL; 3171f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3172f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list->head == NULL) { 3173f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = node; 3174f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3175f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail->next = node; 3176f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3177f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3178f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = node; 3179f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3180f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3181f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 3182f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_length (argument_list_t *list) 3183f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3184f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int length = 0; 3185f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument_node_t *node; 3186f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3187f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 3188f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3189f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3190f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = list->head; node; node = node->next) 3191f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org length++; 3192f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3193f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return length; 3194f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3195f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3196f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtoken_list_t * 3197f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_argument_list_member_at (argument_list_t *list, int index) 3198f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3199f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument_node_t *node; 3200f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int i; 3201f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3202f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 3203f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3204f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3205f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = list->head; 3206f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (i = 0; i < index; i++) { 3207f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = node->next; 3208f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node == NULL) 3209f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3210f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3211f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3212f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node) 3213f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return node->argument; 3214f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3215f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3216f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3217f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3218f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Note: This function ralloc_steal()s the str pointer. */ 3219f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtoken_t * 3220f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_create_str (void *ctx, int type, char *str) 3221f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3222f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *token; 3223f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3224f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token = ralloc (ctx, token_t); 3225f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->type = type; 3226f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->value.str = str; 3227f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3228f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal (token, str); 3229f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3230f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return token; 3231f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3232f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3233f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtoken_t * 3234f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_create_ival (void *ctx, int type, int ival) 3235f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3236f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *token; 3237f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3238f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token = ralloc (ctx, token_t); 3239f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->type = type; 3240f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->value.ival = ival; 3241f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3242f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return token; 3243f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3244f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3245f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtoken_list_t * 3246f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_create (void *ctx) 3247f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3248f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list; 3249f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3250f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list = ralloc (ctx, token_list_t); 3251f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = NULL; 3252f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = NULL; 3253f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail = NULL; 3254f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3255f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return list; 3256f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3257f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3258f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3259f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_append (token_list_t *list, token_t *token) 3260f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3261f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 3262f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3263f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = ralloc (list, token_node_t); 3264f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->token = token; 3265f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = NULL; 3266f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3267f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list->head == NULL) { 3268f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = node; 3269f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3270f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail->next = node; 3271f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3272f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3273f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = node; 3274f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (token->type != SPACE) 3275f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail = node; 3276f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3277f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3278f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3279f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_append_list (token_list_t *list, token_list_t *tail) 3280f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3281f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (tail == NULL || tail->head == NULL) 3282f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 3283f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3284f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list->head == NULL) { 3285f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = tail->head; 3286f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3287f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail->next = tail->head; 3288f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3289f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3290f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = tail->tail; 3291f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail = tail->non_space_tail; 3292f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3293f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3294f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 3295f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_copy (void *ctx, token_list_t *other) 3296f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3297f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *copy; 3298f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 3299f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3300f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other == NULL) 3301f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3302f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3303f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org copy = _token_list_create (ctx); 3304f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = other->head; node; node = node->next) { 3305f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *new_token = ralloc (copy, token_t); 3306f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *new_token = *node->token; 3307f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (copy, new_token); 3308f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3309f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3310f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return copy; 3311f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3312f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3313f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 3314f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_trim_trailing_space (token_list_t *list) 3315f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3316f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *tail, *next; 3317f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3318f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list->non_space_tail) { 3319f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org tail = list->non_space_tail->next; 3320f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail->next = NULL; 3321f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = list->non_space_tail; 3322f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3323f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (tail) { 3324f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org next = tail->next; 3325f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (tail); 3326f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org tail = next; 3327f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3328f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3329f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3330f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3331f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 3332f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_is_empty_ignoring_space (token_list_t *l) 3333f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3334f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *n; 3335f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3336f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (l == NULL) 3337f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 3338f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3339f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org n = l->head; 3340f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (n != NULL && n->token->type == SPACE) 3341f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org n = n->next; 3342f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3343f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return n == NULL; 3344f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3345f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3346f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgint 3347f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_equal_ignoring_space (token_list_t *a, token_list_t *b) 3348f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3349f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node_a, *node_b; 3350f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3351f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (a == NULL || b == NULL) { 3352f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int a_empty = _token_list_is_empty_ignoring_space(a); 3353f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int b_empty = _token_list_is_empty_ignoring_space(b); 3354f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return a_empty == b_empty; 3355f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3356f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3357f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_a = a->head; 3358f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_b = b->head; 3359f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3360f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (1) 3361f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3362f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_a == NULL && node_b == NULL) 3363f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3364f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3365f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_a == NULL || node_b == NULL) 3366f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3367f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3368f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_a->token->type == SPACE) { 3369f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_a = node_a->next; 3370f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 3371f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3372f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3373f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_b->token->type == SPACE) { 3374f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_b = node_b->next; 3375f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 3376f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3377f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3378f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_a->token->type != node_b->token->type) 3379f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3380f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3381f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (node_a->token->type) { 3382f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case INTEGER: 3383f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_a->token->value.ival != 3384f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_b->token->value.ival) 3385f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3386f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3387f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3388f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3389f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case IDENTIFIER: 3390f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case INTEGER_STRING: 3391f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case OTHER: 3392f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strcmp (node_a->token->value.str, 3393f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_b->token->value.str)) 3394f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3395f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 3396f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3397f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3398f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3399f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3400f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_a = node_a->next; 3401f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_b = node_b->next; 3402f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3403f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3404f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 3405f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3406f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3407f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 3408f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_print (char **out, size_t *len, token_t *token) 3409f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3410f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (token->type < 256) { 3411f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "%c", token->type); 3412f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 3413f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3414f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3415f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (token->type) { 3416f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case INTEGER: 3417f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "%" PRIiMAX, token->value.ival); 3418f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3419f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case IDENTIFIER: 3420f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case INTEGER_STRING: 3421f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case OTHER: 3422f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "%s", token->value.str); 3423f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3424f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case SPACE: 3425f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, " "); 3426f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3427f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case LEFT_SHIFT: 3428f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "<<"); 3429f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3430f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case RIGHT_SHIFT: 3431f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, ">>"); 3432f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3433f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case LESS_OR_EQUAL: 3434f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "<="); 3435f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3436f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case GREATER_OR_EQUAL: 3437f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, ">="); 3438f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3439f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case EQUAL: 3440f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "=="); 3441f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3442f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case NOT_EQUAL: 3443f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "!="); 3444f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3445f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case AND: 3446f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "&&"); 3447f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3448f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case OR: 3449f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "||"); 3450f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3451f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case PASTE: 3452f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, "##"); 3453f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3454f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case COMMA_FINAL: 3455f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (out, len, ","); 3456f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3457f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case PLACEHOLDER: 3458f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Nothing to print. */ 3459f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3460f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org default: 3461f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org assert(!"Error: Don't know how to print token."); 3462f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3463f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3464f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3465f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3466f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Return a new token (ralloc()ed off of 'token') formed by pasting 3467f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 'token' and 'other'. Note that this function may return 'token' or 3468f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 'other' directly rather than allocating anything new. 3469f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3470f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Caution: Only very cursory error-checking is performed to see if 3471f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * the final result is a valid single token. */ 3472f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_t * 3473f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_paste (glcpp_parser_t *parser, token_t *token, token_t *other) 3474f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3475f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *combined = NULL; 3476f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3477f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Pasting a placeholder onto anything makes no change. */ 3478f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == PLACEHOLDER) 3479f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return token; 3480f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3481f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* When 'token' is a placeholder, just return 'other'. */ 3482f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (token->type == PLACEHOLDER) 3483f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return other; 3484f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3485f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* A very few single-character punctuators can be combined 3486f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * with another to form a multi-character punctuator. */ 3487f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (token->type) { 3488f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '<': 3489f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '<') 3490f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, LEFT_SHIFT, LEFT_SHIFT); 3491f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (other->type == '=') 3492f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, LESS_OR_EQUAL, LESS_OR_EQUAL); 3493f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3494f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '>': 3495f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '>') 3496f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, RIGHT_SHIFT, RIGHT_SHIFT); 3497f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (other->type == '=') 3498f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, GREATER_OR_EQUAL, GREATER_OR_EQUAL); 3499f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3500f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '=': 3501f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '=') 3502f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, EQUAL, EQUAL); 3503f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3504f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '!': 3505f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '=') 3506f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, NOT_EQUAL, NOT_EQUAL); 3507f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3508f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '&': 3509f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '&') 3510f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, AND, AND); 3511f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3512f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case '|': 3513f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (other->type == '|') 3514f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_ival (token, OR, OR); 3515f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3516f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3517f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3518f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (combined != NULL) { 3519f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Inherit the location from the first token */ 3520f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined->location = token->location; 3521f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return combined; 3522f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3523f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3524f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Two string-valued tokens can usually just be mashed 3525f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * together. 3526f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3527f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * XXX: This isn't actually legitimate. Several things here 3528f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * should result in a diagnostic since the result cannot be a 3529f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * valid, single pre-processing token. For example, pasting 3530f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * "123" and "abc" is not legal, but we don't catch that 3531f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * here. */ 3532f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if ((token->type == IDENTIFIER || token->type == OTHER || token->type == INTEGER_STRING) && 3533f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (other->type == IDENTIFIER || other->type == OTHER || other->type == INTEGER_STRING)) 3534f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3535f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *str; 3536f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3537f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org str = ralloc_asprintf (token, "%s%s", token->value.str, 3538f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org other->value.str); 3539f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined = _token_create_str (token, token->type, str); 3540f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org combined->location = token->location; 3541f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return combined; 3542f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3543f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3544f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (&token->location, parser, ""); 3545f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->info_log, &parser->info_log_length, "Pasting \""); 3546f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_print (&parser->info_log, &parser->info_log_length, token); 3547f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->info_log, &parser->info_log_length, "\" and \""); 3548f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_print (&parser->info_log, &parser->info_log_length, other); 3549f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_asprintf_rewrite_tail (&parser->info_log, &parser->info_log_length, "\" does not give a valid preprocessing token.\n"); 3550f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3551f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return token; 3552f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3553f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3554f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 3555f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_print (glcpp_parser_t *parser, token_list_t *list) 3556f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3557f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 3558f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3559f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 3560f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 3561f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3562f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = list->head; node; node = node->next) 3563f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_print (&parser->output, &parser->output_length, node->token); 3564f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3565f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3566f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3567f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgyyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error) 3568f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3569f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error(locp, parser, "%s", error); 3570f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3571f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3572f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void add_builtin_define(glcpp_parser_t *parser, 3573f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *name, int value) 3574f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3575f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *tok; 3576f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list; 3577f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3578f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org tok = _token_create_ival (parser, INTEGER, value); 3579f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3580f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list = _token_list_create(parser); 3581f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append(list, tok); 3582f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _define_object_macro(parser, NULL, name, list); 3583f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3584f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3585f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_t * 3586f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_create (const struct gl_extensions *extensions, int api) 3587f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3588f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_t *parser; 3589f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int language_version; 3590f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3591f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser = ralloc (NULL, glcpp_parser_t); 3592f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3593f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_lex_init_extra (parser, &parser->scanner); 3594f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->defines = hash_table_ctor (32, hash_table_string_hash, 3595f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_string_compare); 3596f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->active = NULL; 3597f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lexing_if = 0; 3598f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->space_tokens = 1; 3599f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->newline_as_space = 0; 3600f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->in_control_line = 0; 3601f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->paren_count = 0; 3602f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3603f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack = NULL; 3604f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3605f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_list = NULL; 3606f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_node = NULL; 3607f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3608f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->output = ralloc_strdup(parser, ""); 3609f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->output_length = 0; 3610f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->info_log = ralloc_strdup(parser, ""); 3611f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->info_log_length = 0; 3612f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->error = 0; 3613f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3614f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->has_new_line_number = 0; 3615f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->new_line_number = 1; 3616f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->has_new_source_number = 0; 3617f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->new_source_number = 0; 3618f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3619f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Add pre-defined macros. */ 3620f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_draw_buffers", 1); 3621f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); 3622f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3623f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (api == API_OPENGLES2) 3624f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ES", 1); 3625f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3626f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions != NULL) { 3627f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->EXT_texture_array) { 3628f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_EXT_texture_array", 1); 3629f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3630f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3631f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_fragment_coord_conventions) 3632f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_fragment_coord_conventions", 3633f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 1); 3634f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3635f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_explicit_attrib_location) 3636f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_explicit_attrib_location", 1); 3637f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3638f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_shader_texture_lod) 3639f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1); 3640f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3641f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_draw_instanced) 3642f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_draw_instanced", 1); 3643f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3644f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_conservative_depth) { 3645f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_AMD_conservative_depth", 1); 3646f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_conservative_depth", 1); 3647f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3648f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3649f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->OES_EGL_image_external) 3650f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_OES_EGL_image_external", 1); 3651f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3652f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_shader_bit_encoding) 3653f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1); 3654f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3655f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (extensions->ARB_uniform_buffer_object) 3656f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "GL_ARB_uniform_buffer_object", 1); 3657f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3658f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3659f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org language_version = 110; 3660f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org add_builtin_define(parser, "__VERSION__", language_version); 3661f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3662f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return parser; 3663f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3664f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3665f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 3666f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_destroy (glcpp_parser_t *parser) 3667f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3668f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_lex_destroy (parser->scanner); 3669f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_dtor (parser->defines); 3670f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (parser); 3671f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3672f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3673f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgtypedef enum function_status 3674f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3675f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FUNCTION_STATUS_SUCCESS, 3676f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FUNCTION_NOT_A_FUNCTION, 3677f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org FUNCTION_UNBALANCED_PARENTHESES 3678f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} function_status_t; 3679f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3680f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Find a set of function-like macro arguments by looking for a 3681f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * balanced set of parentheses. 3682f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3683f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * When called, 'node' should be the opening-parenthesis token, (or 3684f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * perhaps preceeding SPACE tokens). Upon successful return *last will 3685f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * be the last consumed node, (corresponding to the closing right 3686f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * parenthesis). 3687f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3688f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Return values: 3689f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3690f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * FUNCTION_STATUS_SUCCESS: 3691f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3692f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Successfully parsed a set of function arguments. 3693f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3694f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * FUNCTION_NOT_A_FUNCTION: 3695f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3696f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Macro name not followed by a '('. This is not an error, but 3697f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * simply that the macro name should be treated as a non-macro. 3698f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3699f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * FUNCTION_UNBALANCED_PARENTHESES 3700f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3701f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Macro name is not followed by a balanced set of parentheses. 3702f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 3703f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic function_status_t 3704f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_arguments_parse (argument_list_t *arguments, 3705f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node, 3706f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t **last) 3707f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3708f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *argument; 3709f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int paren_count; 3710f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3711f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = node->next; 3712f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3713f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Ignore whitespace before first parenthesis. */ 3714f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (node && node->token->type == SPACE) 3715f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = node->next; 3716f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3717f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node == NULL || node->token->type != '(') 3718f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return FUNCTION_NOT_A_FUNCTION; 3719f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3720f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = node->next; 3721f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3722f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument = _token_list_create (arguments); 3723f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _argument_list_append (arguments, argument); 3724f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3725f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (paren_count = 1; node; node = node->next) { 3726f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node->token->type == '(') 3727f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3728f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org paren_count++; 3729f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3730f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (node->token->type == ')') 3731f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3732f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org paren_count--; 3733f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (paren_count == 0) 3734f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3735f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3736f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3737f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node->token->type == ',' && 3738f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org paren_count == 1) 3739f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3740f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_trim_trailing_space (argument); 3741f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument = _token_list_create (arguments); 3742f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _argument_list_append (arguments, argument); 3743f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3744f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else { 3745f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (argument->head == NULL) { 3746f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Don't treat initial whitespace as 3747f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * part of the arguement. */ 3748f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node->token->type == SPACE) 3749f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 3750f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3751f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (argument, node->token); 3752f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3753f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3754f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3755f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (paren_count) 3756f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return FUNCTION_UNBALANCED_PARENTHESES; 3757f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3758f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *last = node; 3759f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3760f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return FUNCTION_STATUS_SUCCESS; 3761f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3762f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3763f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 3764f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_token_list_create_with_one_space (void *ctx) 3765f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3766f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list; 3767f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *space; 3768f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3769f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list = _token_list_create (ctx); 3770f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org space = _token_create_ival (list, SPACE, SPACE); 3771f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (list, space); 3772f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3773f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return list; 3774f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3775f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3776f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Perform macro expansion on 'list', placing the resulting tokens 3777f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * into a new list which is initialized with a first token of type 3778f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 'head_token_type'. Then begin lexing from the resulting list, 3779f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * (return to the current lexing source when this list is exhausted). 3780f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 3781f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 3782f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_and_lex_from (glcpp_parser_t *parser, 3783f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int head_token_type, 3784f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list) 3785f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3786f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *expanded; 3787f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *token; 3788f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3789f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expanded = _token_list_create (parser); 3790f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token = _token_create_ival (parser, head_token_type, head_token_type); 3791f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (expanded, token); 3792f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_token_list (parser, list); 3793f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append_list (expanded, list); 3794f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_parser_lex_from (parser, expanded); 3795f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3796f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3797f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 3798f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_apply_pastes (glcpp_parser_t *parser, token_list_t *list) 3799f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3800f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 3801f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3802f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = list->head; 3803f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (node) 3804f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3805f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *next_non_space; 3806f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3807f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Look ahead for a PASTE token, skipping space. */ 3808f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org next_non_space = node->next; 3809f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (next_non_space && next_non_space->token->type == SPACE) 3810f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org next_non_space = next_non_space->next; 3811f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3812f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (next_non_space == NULL) 3813f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3814f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3815f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (next_non_space->token->type != PASTE) { 3816f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = next_non_space; 3817f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 3818f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3819f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3820f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Now find the next non-space token after the PASTE. */ 3821f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org next_non_space = next_non_space->next; 3822f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (next_non_space && next_non_space->token->type == SPACE) 3823f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org next_non_space = next_non_space->next; 3824f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3825f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (next_non_space == NULL) { 3826f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yyerror (&node->token->location, parser, "'##' cannot appear at either end of a macro expansion\n"); 3827f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 3828f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3829f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3830f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->token = _token_paste (parser, node->token, next_non_space->token); 3831f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = next_non_space->next; 3832f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (next_non_space == list->tail) 3833f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = node; 3834f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3835f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3836f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail = list->tail; 3837f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3838f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3839f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* This is a helper function that's essentially part of the 3840f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * implementation of _glcpp_parser_expand_node. It shouldn't be called 3841f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * except for by that function. 3842f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3843f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Returns NULL if node is a simple token with no expansion, (that is, 3844f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * although 'node' corresponds to an identifier defined as a 3845f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * function-like macro, it is not followed with a parenthesized 3846f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * argument list). 3847f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3848f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Compute the complete expansion of node (which is a function-like 3849f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * macro) and subsequent nodes which are arguments. 3850f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3851f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Returns the token list that results from the expansion and sets 3852f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * *last to the last node in the list that was consumed by the 3853f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * expansion. Specifically, *last will be set as follows: as the 3854f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * token of the closing right parenthesis. 3855f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 3856f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 3857f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_function (glcpp_parser_t *parser, 3858f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node, 3859f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t **last) 3860f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3861f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3862f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro; 3863f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier; 3864f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument_list_t *arguments; 3865f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org function_status_t status; 3866f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *substituted; 3867f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int parameter_index; 3868f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3869f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org identifier = node->token->value.str; 3870f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3871f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro = hash_table_find (parser->defines, identifier); 3872f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3873f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org assert (macro->is_function); 3874f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3875f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org arguments = _argument_list_create (parser); 3876f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org status = _arguments_parse (arguments, node, last); 3877f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3878f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org switch (status) { 3879f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case FUNCTION_STATUS_SUCCESS: 3880f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org break; 3881f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case FUNCTION_NOT_A_FUNCTION: 3882f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3883f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org case FUNCTION_UNBALANCED_PARENTHESES: 3884f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (&node->token->location, parser, "Macro %s call has unbalanced parentheses\n", identifier); 3885f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3886f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3887f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3888f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Replace a macro defined as empty with a SPACE token. */ 3889f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro->replacements == NULL) { 3890f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (arguments); 3891f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return _token_list_create_with_one_space (parser); 3892f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3893f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3894f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! ((_argument_list_length (arguments) == 3895f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _string_list_length (macro->parameters)) || 3896f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org (_string_list_length (macro->parameters) == 0 && 3897f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _argument_list_length (arguments) == 1 && 3898f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org arguments->head->argument->head == NULL))) 3899f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3900f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (&node->token->location, parser, 3901f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org "Error: macro %s invoked with %d arguments (expected %d)\n", 3902f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org identifier, 3903f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _argument_list_length (arguments), 3904f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _string_list_length (macro->parameters)); 3905f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3906f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3907f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3908f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Perform argument substitution on the replacement list. */ 3909f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org substituted = _token_list_create (arguments); 3910f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3911f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = macro->replacements->head; node; node = node->next) 3912f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3913f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node->token->type == IDENTIFIER && 3914f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _string_list_contains (macro->parameters, 3915f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->token->value.str, 3916f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ¶meter_index)) 3917f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 3918f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *argument; 3919f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument = _argument_list_member_at (arguments, 3920f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parameter_index); 3921f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Before substituting, we expand the argument 3922f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * tokens, or append a placeholder token for 3923f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * an empty argument. */ 3924f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (argument->head) { 3925f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *expanded_argument; 3926f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expanded_argument = _token_list_copy (parser, 3927f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org argument); 3928f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_token_list (parser, 3929f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expanded_argument); 3930f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append_list (substituted, 3931f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expanded_argument); 3932f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3933f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *new_token; 3934f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3935f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org new_token = _token_create_ival (substituted, 3936f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org PLACEHOLDER, 3937f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org PLACEHOLDER); 3938f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (substituted, new_token); 3939f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3940f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 3941f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (substituted, node->token); 3942f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3943f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3944f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3945f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* After argument substitution, and before further expansion 3946f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * below, implement token pasting. */ 3947f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3948f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_trim_trailing_space (substituted); 3949f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3950f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_apply_pastes (parser, substituted); 3951f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3952f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return substituted; 3953f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 3954f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3955f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Compute the complete expansion of node, (and subsequent nodes after 3956f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 'node' in the case that 'node' is a function-like macro and 3957f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * subsequent nodes are arguments). 3958f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3959f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Returns NULL if node is a simple token with no expansion. 3960f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3961f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Otherwise, returns the token list that results from the expansion 3962f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * and sets *last to the last node in the list that was consumed by 3963f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * the expansion. Specifically, *last will be set as follows: 3964f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3965f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * As 'node' in the case of object-like macro expansion. 3966f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 3967f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * As the token of the closing right parenthesis in the case of 3968f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * function-like macro expansion. 3969f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 3970f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic token_list_t * 3971f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_node (glcpp_parser_t *parser, 3972f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node, 3973f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t **last) 3974f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 3975f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *token = node->token; 3976f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier; 3977f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro; 3978f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3979f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* We only expand identifiers */ 3980f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (token->type != IDENTIFIER) { 3981f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* We change any COMMA into a COMMA_FINAL to prevent 3982f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * it being mistaken for an argument separator 3983f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * later. */ 3984f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (token->type == ',') { 3985f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->type = COMMA_FINAL; 3986f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token->value.ival = COMMA_FINAL; 3987f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3988f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3989f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3990f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 3991f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3992f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Look up this identifier in the hash table. */ 3993f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org identifier = token->value.str; 3994f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro = hash_table_find (parser->defines, identifier); 3995f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 3996f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Not a macro, so no expansion needed. */ 3997f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro == NULL) 3998f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NULL; 3999f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4000f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Finally, don't expand this macro if we're already actively 4001f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * expanding it, (to avoid infinite recursion). */ 4002f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (_parser_active_list_contains (parser, identifier)) { 4003f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* We change the token type here from IDENTIFIER to 4004f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * OTHER to prevent any future expansion of this 4005f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * unexpanded token. */ 4006f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org char *str; 4007f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *expansion; 4008f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_t *final; 4009f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4010f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org str = ralloc_strdup (parser, token->value.str); 4011f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org final = _token_create_str (parser, OTHER, str); 4012f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expansion = _token_list_create (parser); 4013f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (expansion, final); 4014f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *last = node; 4015f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return expansion; 4016f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4017f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4018f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! macro->is_function) 4019f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4020f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *replacement; 4021f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *last = node; 4022f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4023f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Replace a macro defined as empty with a SPACE token. */ 4024f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro->replacements == NULL) 4025f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return _token_list_create_with_one_space (parser); 4026f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4027f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org replacement = _token_list_copy (parser, macro->replacements); 4028f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_apply_pastes (parser, replacement); 4029f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return replacement; 4030f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4031f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4032f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return _glcpp_parser_expand_function (parser, node, last); 4033f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4034f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4035f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Push a new identifier onto the parser's active list. 4036f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 4037f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Here, 'marker' is the token node that appears in the list after the 4038f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * expansion of 'identifier'. That is, when the list iterator begins 4039f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * examining 'marker', then it is time to pop this node from the 4040f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * active stack. 4041f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 4042f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4043f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_push (glcpp_parser_t *parser, 4044f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier, 4045f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *marker) 4046f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4047f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org active_list_t *node; 4048f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4049f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = ralloc (parser->active, active_list_t); 4050f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->identifier = ralloc_strdup (node, identifier); 4051f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->marker = marker; 4052f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = parser->active; 4053f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4054f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->active = node; 4055f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4056f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4057f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4058f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_pop (glcpp_parser_t *parser) 4059f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4060f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org active_list_t *node = parser->active; 4061f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4062f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node == NULL) { 4063f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->active = NULL; 4064f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4065f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4066f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4067f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = parser->active->next; 4068f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (parser->active); 4069f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4070f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->active = node; 4071f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4072f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4073f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 4074f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_parser_active_list_contains (glcpp_parser_t *parser, const char *identifier) 4075f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4076f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org active_list_t *node; 4077f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4078f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->active == NULL) 4079f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 4080f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4081f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = parser->active; node; node = node->next) 4082f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strcmp (node->identifier, identifier) == 0) 4083f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 1; 4084f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4085f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 4086f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4087f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4088f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org/* Walk over the token list replacing nodes with their expansion. 4089f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * Whenever nodes are expanded the walking will walk over the new 4090f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * nodes, continuing to expand as necessary. The results are placed in 4091f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 'list' itself; 4092f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 4093f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4094f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_expand_token_list (glcpp_parser_t *parser, 4095f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list) 4096f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4097f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node_prev; 4098f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node, *last = NULL; 4099f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *expansion; 4100f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org active_list_t *active_initial = parser->active; 4101f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4102f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 4103f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4104f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4105f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_trim_trailing_space (list); 4106f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4107f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_prev = NULL; 4108f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = list->head; 4109f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4110f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (node) { 4111f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4112f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (parser->active && parser->active->marker == node) 4113f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _parser_active_list_pop (parser); 4114f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4115f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expansion = _glcpp_parser_expand_node (parser, node, &last); 4116f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (expansion) { 4117f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *n; 4118f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4119f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (n = node; n != last->next; n = n->next) 4120f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (parser->active && 4121f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->active->marker == n) 4122f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4123f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _parser_active_list_pop (parser); 4124f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4125f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4126f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _parser_active_list_push (parser, 4127f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->token->value.str, 4128f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org last->next); 4129f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4130f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Splice expansion into list, supporting a 4131f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * simple deletion if the expansion is 4132f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * empty. */ 4133f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (expansion->head) { 4134f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_prev) 4135f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_prev->next = expansion->head; 4136f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 4137f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = expansion->head; 4138f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org expansion->tail->next = last->next; 4139f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (last == list->tail) 4140f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = expansion->tail; 4141f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 4142f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node_prev) 4143f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_prev->next = last->next; 4144f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 4145f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->head = last->next; 4146f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (last == list->tail) 4147f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->tail = NULL; 4148f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4149f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 4150f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node_prev = node; 4151f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4152f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = node_prev ? node_prev->next : list->head; 4153f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4154f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4155f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Remove any lingering effects of this invocation on the 4156f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * active list. That is, pop until the list looks like it did 4157f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * at the beginning of this function. */ 4158f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org while (parser->active && parser->active != active_initial) 4159f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _parser_active_list_pop (parser); 4160f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4161f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org list->non_space_tail = list->tail; 4162f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4163f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4164f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 4165f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_print_expanded_token_list (glcpp_parser_t *parser, 4166f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *list) 4167f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4168f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (list == NULL) 4169f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4170f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4171f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _glcpp_parser_expand_token_list (parser, list); 4172f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4173f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_trim_trailing_space (list); 4174f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4175f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_print (parser, list); 4176f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4177f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4178f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4179f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc, 4180f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier) 4181f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4182f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* According to the GLSL specification, macro names starting with "__" 4183f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * or "GL_" are reserved for future use. So, don't allow them. 4184f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 4185f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strstr(identifier, "__")) { 4186f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n"); 4187f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4188f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (strncmp(identifier, "GL_", 3) == 0) { 4189f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n"); 4190f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4191f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4192f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4193f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 4194f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_macro_equal (macro_t *a, macro_t *b) 4195f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4196f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (a->is_function != b->is_function) 4197f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 4198f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4199f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (a->is_function) { 4200f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (! _string_list_equal (a->parameters, b->parameters)) 4201f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return 0; 4202f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4203f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4204f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return _token_list_equal_ignoring_space (a->replacements, 4205f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org b->replacements); 4206f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4207f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4208f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 4209f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_define_object_macro (glcpp_parser_t *parser, 4210f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *loc, 4211f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier, 4212f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *replacements) 4213f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4214f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro, *previous; 4215f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4216f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (loc != NULL) 4217f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _check_for_reserved_macro_name(parser, loc, identifier); 4218f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4219f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro = ralloc (parser, macro_t); 4220f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4221f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->is_function = 0; 4222f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->parameters = NULL; 4223f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->identifier = ralloc_strdup (macro, identifier); 4224f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->replacements = replacements; 4225f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal (macro, replacements); 4226f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4227f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org previous = hash_table_find (parser->defines, identifier); 4228f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (previous) { 4229f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (_macro_equal (macro, previous)) { 4230f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (macro); 4231f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4232f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4233f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "Redefinition of macro %s\n", 4234f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org identifier); 4235f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4236f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4237f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_insert (parser->defines, macro, identifier); 4238f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4239f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4240f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgvoid 4241f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_define_function_macro (glcpp_parser_t *parser, 4242f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org YYLTYPE *loc, 4243f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *identifier, 4244f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org string_list_t *parameters, 4245f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_list_t *replacements) 4246f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4247f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro, *previous; 4248f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4249f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _check_for_reserved_macro_name(parser, loc, identifier); 4250f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4251f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro = ralloc (parser, macro_t); 4252f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal (macro, parameters); 4253f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_steal (macro, replacements); 4254f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4255f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->is_function = 1; 4256f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->parameters = parameters; 4257f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->identifier = ralloc_strdup (macro, identifier); 4258f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro->replacements = replacements; 4259f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org previous = hash_table_find (parser->defines, identifier); 4260f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (previous) { 4261f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (_macro_equal (macro, previous)) { 4262f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (macro); 4263f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4264f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4265f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "Redefinition of macro %s\n", 4266f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org identifier); 4267f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4268f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4269f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org hash_table_insert (parser->defines, macro, identifier); 4270f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4271f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4272f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic int 4273f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_lex (YYSTYPE *yylval, YYLTYPE *yylloc, glcpp_parser_t *parser) 4274f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4275f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 4276f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int ret; 4277f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4278f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->lex_from_list == NULL) { 4279f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret = glcpp_lex (yylval, yylloc, parser->scanner); 4280f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4281f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* XXX: This ugly block of code exists for the sole 4282f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * purpose of converting a NEWLINE token into a SPACE 4283f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * token, but only in the case where we have seen a 4284f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * function-like macro name, but have not yet seen its 4285f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * closing parenthesis. 4286f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 4287f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * There's perhaps a more compact way to do this with 4288f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * mid-rule actions in the grammar. 4289f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * 4290f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * I'm definitely not pleased with the complexity of 4291f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org * this code here. 4292f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org */ 4293f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->newline_as_space) 4294f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4295f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (ret == '(') { 4296f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->paren_count++; 4297f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else if (ret == ')') { 4298f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->paren_count--; 4299f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->paren_count == 0) 4300f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->newline_as_space = 0; 4301f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else if (ret == NEWLINE) { 4302f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret = SPACE; 4303f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else if (ret != SPACE) { 4304f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->paren_count == 0) 4305f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->newline_as_space = 0; 4306f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4307f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4308f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (parser->in_control_line) 4309f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4310f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (ret == NEWLINE) 4311f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->in_control_line = 0; 4312f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4313f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (ret == HASH_DEFINE || 4314f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret == HASH_UNDEF || ret == HASH_IF || 4315f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret == HASH_IFDEF || ret == HASH_IFNDEF || 4316f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret == HASH_ELIF || ret == HASH_ELSE || 4317f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret == HASH_ENDIF || ret == HASH) 4318f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4319f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->in_control_line = 1; 4320f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4321f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else if (ret == IDENTIFIER) 4322f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org { 4323f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro_t *macro; 4324f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org macro = hash_table_find (parser->defines, 4325f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org yylval->str); 4326f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (macro && macro->is_function) { 4327f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->newline_as_space = 1; 4328f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->paren_count = 0; 4329f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4330f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4331f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4332f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return ret; 4333f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4334f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4335f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = parser->lex_from_node; 4336f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4337f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node == NULL) { 4338f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (parser->lex_from_list); 4339f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_list = NULL; 4340f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return NEWLINE; 4341f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4342f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4343f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org *yylval = node->token->value; 4344f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ret = node->token->type; 4345f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4346f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_node = node->next; 4347f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4348f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return ret; 4349f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4350f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4351f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4352f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgglcpp_parser_lex_from (glcpp_parser_t *parser, token_list_t *list) 4353f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4354f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org token_node_t *node; 4355f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4356f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org assert (parser->lex_from_list == NULL); 4357f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4358f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* Copy list, eliminating any space tokens. */ 4359f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_list = _token_list_create (parser); 4360f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4361f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org for (node = list->head; node; node = node->next) { 4362f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (node->token->type == SPACE) 4363f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org continue; 4364f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org _token_list_append (parser->lex_from_list, node->token); 4365f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4366f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4367f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (list); 4368f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4369f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_node = parser->lex_from_list->head; 4370f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4371f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org /* It's possible the list consisted of nothing but whitespace. */ 4372f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->lex_from_node == NULL) { 4373f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (parser->lex_from_list); 4374f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->lex_from_list = NULL; 4375f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4376f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4377f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4378f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4379f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_push_if (glcpp_parser_t *parser, YYLTYPE *loc, 4380f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org int condition) 4381f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4382f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org skip_type_t current = SKIP_NO_SKIP; 4383f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org skip_node_t *node; 4384f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4385f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack) 4386f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org current = parser->skip_stack->type; 4387f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4388f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = ralloc (parser, skip_node_t); 4389f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->loc = *loc; 4390f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4391f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (current == SKIP_NO_SKIP) { 4392f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (condition) 4393f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->type = SKIP_NO_SKIP; 4394f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org else 4395f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->type = SKIP_TO_ELSE; 4396f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 4397f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->type = SKIP_TO_ENDIF; 4398f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4399f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4400f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node->next = parser->skip_stack; 4401f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack = node; 4402f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4403f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4404f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4405f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_change_if (glcpp_parser_t *parser, YYLTYPE *loc, 4406f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org const char *type, int condition) 4407f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4408f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack == NULL) { 4409f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "%s without #if\n", type); 4410f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4411f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4412f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4413f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack->type == SKIP_TO_ELSE) { 4414f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (condition) 4415f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type = SKIP_NO_SKIP; 4416f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } else { 4417f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack->type = SKIP_TO_ENDIF; 4418f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4419f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4420f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4421f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.orgstatic void 4422f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org_glcpp_parser_skip_stack_pop (glcpp_parser_t *parser, YYLTYPE *loc) 4423f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org{ 4424f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org skip_node_t *node; 4425f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4426f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org if (parser->skip_stack == NULL) { 4427f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org glcpp_error (loc, parser, "#endif without #if\n"); 4428f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org return; 4429f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org } 4430f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4431f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org node = parser->skip_stack; 4432f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org parser->skip_stack = node->next; 4433f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org ralloc_free (node); 4434f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org} 4435f2304cf60bf51f05cc720689e8b89958f25ca5dakbr@chromium.org 4436