105436638acc7c010349a69c3395f1a57c642dc62Ying Wang -*- C -*- 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Yacc compatible skeleton for Bison 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, 605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Inc. 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is free software: you can redistribute it and/or modify 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by 1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# the Free Software Foundation, either version 3 of the License, or 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# (at your option) any later version. 1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful, 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details. 1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License 1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# along with this program. If not, see <http://www.gnu.org/licenses/>. 2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Check the value of %define api.push-pull. 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_default([[api.push-pull]], [[pull]]) 2305436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_check_values([[[[api.push-pull]], 2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[pull]], [[push]], [[both]]]]) 2505436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]]) 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_define_flag_if([push]) m4_define([b4_push_flag], [[1]]) 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_case(b4_percent_define_get([[api.push-pull]]), 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [pull], [m4_define([b4_push_flag], [[0]])], 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang [push], [m4_define([b4_pull_flag], [[0]])]) 3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing 3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the 3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# behavior of Bison at all when push parsing is already requested. 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_define_flag_if([use_push_for_pull]) 3505436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_use_push_for_pull_if([ 3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])], 3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang [m4_define([b4_push_flag], [[1]])])]) 3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Check the value of %define parse.lac and friends, where LAC stands for 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# lookahead correction. 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_default([[parse.lac]], [[none]]) 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]]) 4305436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_default([[parse.lac.memory-trace]], [[failures]]) 4405436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]], 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[[parse.lac.memory-trace]], 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[failures]], [[full]]]]) 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_define_flag_if([lac]) 4805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_lac_flag], 4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang [m4_if(b4_percent_define_get([[parse.lac]]), 5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [none], [[0]], [[1]])]) 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_include(b4_pkgdatadir/[c.m4]) 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Default values. ## 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Stack parameters. 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_max], [10000]) 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_init], [200]) 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Pure/impure interfaces. ## 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6705436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_default([[api.pure]], [[false]]) 6805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_check_values([[[[api.pure]], 6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[false]], [[true]], [[]], [[full]]]]) 7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7105436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_pure_flag], [[0]]) 7205436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_case(b4_percent_define_get([[api.pure]]), 7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang [false], [m4_define([b4_pure_flag], [[0]])], 7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang [true], [m4_define([b4_pure_flag], [[1]])], 7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [], [m4_define([b4_pure_flag], [[1]])], 7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [full], [m4_define([b4_pure_flag], [[2]])]) 7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 7805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_pure_if], 7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[m4_case(b4_pure_flag, 8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [0], [$2], 8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [1], [$1], 8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2], [$1])]) 8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang [m4_fatal([invalid api.pure value: ]$1)])]) 8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_yyerror_arg_loc_if(ARG) 8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# -------------------------- 8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Expand ARG iff yyerror is to be given a location as argument. 8805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_yyerror_arg_loc_if], 8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_locations_if([m4_case(b4_pure_flag, 9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [1], [m4_ifset([b4_parse_param], [$1])], 9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2], [$1])])]) 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_yyerror_args 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Arguments passed to yyerror: user args plus yylloc. 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_yyerror_args], 9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_yyerror_arg_loc_if([&yylloc, ])dnl 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lex_param 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------ 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Accumulate in b4_lex_param all the yylex arguments. 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lex_param arrives quoted twice, but we want to keep only one level. 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lex_param], 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_lex_param], b4_lex_param))) 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------ ## 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Data Types. ## 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------ ## 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_int_type(MIN, MAX) 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------------- 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Return the smallest int type able to handle numbers ranging from 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MIN to MAX (included). Overwrite the version from c.m4, which 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# uses only C89 types, so that the user can override the shorter 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# types, and so that pre-C89 compilers are handled correctly. 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_int_type], 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8], 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_ints_in($@, [-128], [127]), [1], [yytype_int8], 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_ints_in($@, [0], [65535]), [1], [yytype_uint16], 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16], 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project m4_eval([0 <= $1]), [1], [unsigned int], 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [int])]) 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Semantic Values. ## 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_value([TYPE]) 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------- 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>$. 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_value], 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(yyval[]m4_ifval([$1], [.$1]))]) 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------------------------- 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# symbols on RHS. 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_value], 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))]) 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Locations. ## 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_location() 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ----------------- 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @$. 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_location], 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(yyloc)]) 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_location(RULE-LENGTH, NUM) 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------------------------- 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @NUM, where the current rule has RULE-LENGTH symbols 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# on RHS. 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_location], 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(yylsp@{($2) - ($1)@})]) 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang## Declarations. ## 17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_declare_scanner_communication_variables 17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ------------------------------------------ 17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Declare the variables that are global, or local to YYPARSE if 18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# pure-parser. 18105436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_declare_scanner_communication_variables], [[ 18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The lookahead symbol. */ 18305436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yychar; 18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_pure_if([[ 18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Suppress an incorrect diagnostic about yylval being uninitialized. */ 18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang _Pragma ("GCC diagnostic push") \ 19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang _Pragma ("GCC diagnostic pop") 19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Default value used for initialization, for pacifying older GCCs 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang or non-GCC compilers. */ 19705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YYSTYPE yyval_default; 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_INITIAL_VALUE(Value) = Value 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_locations_if([[ 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YYLTYPE yyloc_default][]b4_yyloc_default[;]])])[ 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_IGNORE_MAYBE_UNINITIALIZED_END 20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_INITIAL_VALUE 20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_INITIAL_VALUE(Value) /* Nothing. */ 20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The semantic value of the lookahead symbol. */ 21005436638acc7c010349a69c3395f1a57c642dc62Ying WangYYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[ 21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Location data for the lookahead symbol. */ 21305436638acc7c010349a69c3395f1a57c642dc62Ying WangYYLTYPE yylloc]b4_pure_if([ = yyloc_default], [b4_yyloc_default])[; 21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])b4_pure_if([], [[ 21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Number of syntax errors so far. */ 21705436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yynerrs;]])]) 21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_declare_parser_state_variables 22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# --------------------------------- 22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Declare all the variables that are needed to maintain the parser state 22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# between calls to yypush_parse. 22405436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_declare_parser_state_variables], [b4_pure_if([[ 22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Number of syntax errors so far. */ 22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yynerrs; 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])[ 22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yystate; 22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Number of tokens to shift before error messages enabled. */ 23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyerrstatus; 23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The stacks and their tools: 23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang `yyss': related to states. 23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang `yyvs': related to semantic values.]b4_locations_if([[ 23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang `yyls': related to locations.]])[ 23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang Refer to the stacks through separate pointers, to allow yyoverflow 23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang to reallocate them elsewhere. */ 23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The state stack. */ 24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 yyssa[YYINITDEPTH]; 24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyss; 24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyssp; 24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The semantic value stack. */ 24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yyvsa[YYINITDEPTH]; 24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE *yyvs; 24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE *yyvsp;]b4_locations_if([[ 24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The location stack. */ 25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yylsa[YYINITDEPTH]; 25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE *yyls; 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE *yylsp; 25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The locations where the error started and ended. */ 25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyerror_range[3];]])[ 25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yystacksize;]b4_lac_if([[ 25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@}; 26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyes; 26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yyes_capacity;]])]) 26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_declare_yyparse_push_ 26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ------------------------ 26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Declaration of yyparse (and dependencies) when using the push parser 26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# (including in pull mode). 26905436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_declare_yyparse_push_], 27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[#ifndef YYPUSH_MORE_DEFINED 27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYPUSH_MORE_DEFINED 27205436638acc7c010349a69c3395f1a57c642dc62Ying Wangenum { YYPUSH_MORE = 4 }; 27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct ]b4_prefix[pstate ]b4_prefix[pstate; 27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param) 27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang])b4_c_function_decl([b4_prefix[push_parse]], [[int]], 27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([, 28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[int pushed_char]], [[pushed_char]]], 28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([, 28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [, 28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_parse_param])) 28405436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]], 28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [, 28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_parse_param]))]) 28705436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]], 28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[void]], []]) 28905436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_c_function_decl([b4_prefix[pstate_delete]], [[void]], 29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[b4_prefix[pstate *ps]], [[ps]]])dnl 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_declare_yyparse_ 29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ------------------- 29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# When not the push parser. 29605436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_declare_yyparse_], 29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[#ifdef YYPARSE_PARAM 29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_decl(b4_prefix[parse], [int], 29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ 30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else /* ! YYPARSE_PARAM */ 30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[ 30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* ! YYPARSE_PARAM */]dnl 30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_declare_yyparse 30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ------------------ 30805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_declare_yyparse], 30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_push_if([b4_declare_yyparse_push_], 31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_declare_yyparse_])[]dnl 31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_shared_declarations 31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ---------------------- 31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Declaration that might either go into the header (if --defines) 31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# or open coded in the parser body. 31805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_shared_declarations], 31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_cpp_guard_open([b4_spec_defines_file])[ 32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_declare_yydebug[ 32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[requires]])[ 32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_enums_defines(b4_tokens)[ 32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_declare_yylstype[ 32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_declare_yyparse[ 32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[provides]])[ 32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_cpp_guard_close([b4_spec_defines_file])[]dnl 32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang## Output files. ## 33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33405436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_begin([b4_parser_file_name]) 33505436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_copyright([Bison implementation for Yacc-like parsers in C], 33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [1984, 1989-1990, 2000-2012])[ 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* C LALR(1) parser skeleton written by Richard Stallman, by 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project simplifying the original so-called "semantic" parser. */ 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* All symbols defined below should begin with yy or YY, to avoid 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project infringing on user name space. This should be done even for local 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project variables, as they might otherwise be expanded by user macros. 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project There are some unavoidable exceptions within include files to 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project define necessary library symbols; they are noted "INFRINGES ON 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project USER NAME SPACE" below. */ 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_identification 34905436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_code_get([[top]])[]dnl 35005436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_if(b4_api_prefix, [yy], [], 35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[/* Substitute the type names. */ 35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ 35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ 35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_if(b4_prefix, [yy], [], 35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[/* Substitute the variable and function names. */]b4_pull_if([[ 35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyparse ]b4_prefix[parse]])b4_push_if([[ 35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypush_parse ]b4_prefix[push_parse]b4_pull_if([[ 35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypull_parse ]b4_prefix[pull_parse]])[ 35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypstate_new ]b4_prefix[pstate_new 36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypstate_delete ]b4_prefix[pstate_delete 36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypstate ]b4_prefix[pstate]])[ 36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylex ]b4_prefix[lex 36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerror ]b4_prefix[error 36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylval ]b4_prefix[lval 36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yychar ]b4_prefix[char 36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yydebug ]b4_prefix[debug 36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ 36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylloc ]b4_prefix[lloc]])])[ 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the first part of user declarations. */ 37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_pre_prologue[ 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_null_define[ 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enabling verbose error messages. */ 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYERROR_VERBOSE 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR_VERBOSE 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE 1 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE ]b4_error_verbose_flag[ 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_ifval(m4_quote(b4_spec_defines_file), 38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[/* In a future release of Bison, this section will be replaced 38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang by #include "@basename(]b4_spec_defines_file[@)". */ 38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])dnl 38705436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_shared_declarations[ 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the second part of user declarations. */ 39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_post_prologue 39105436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_code_get[]dnl 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[#ifdef short 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef short 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYTYPE_UINT8 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef YYTYPE_UINT8 yytype_uint8; 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef unsigned char yytype_uint8; 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYTYPE_INT8 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef YYTYPE_INT8 yytype_int8; 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#elif ]b4_c_modern[ 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef signed char yytype_int8; 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yytype_int8; 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYTYPE_UINT16 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef YYTYPE_UINT16 yytype_uint16; 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef unsigned short int yytype_uint16; 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYTYPE_INT16 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef YYTYPE_INT16 yytype_int16; 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yytype_int16; 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYSIZE_T 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifdef __SIZE_TYPE__ 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSIZE_T __SIZE_TYPE__ 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# elif defined size_t 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSIZE_T size_t 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# elif ! defined YYSIZE_T && ]b4_c_modern[ 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSIZE_T size_t 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSIZE_T unsigned int 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YY_ 43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined YYENABLE_NLS && YYENABLE_NLS 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if ENABLE_NLS 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_(Msgid) dgettext ("bison-runtime", Msgid) 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YY_ 44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_(Msgid) Msgid 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Suppress unused-variable warnings by "using" E. */ 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! defined lint || defined __GNUC__ 45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYUSE(E) ((void) (E)) 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYUSE(E) /* empty */ 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Identity function, used to suppress warnings about constant conditions. */ 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef lint 45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYID(N) (N) 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[ 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyi; 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[ 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The parser invokes alloca or malloc; define the necessary symbols. */]dnl 47005436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_push_if([], [b4_lac_if([], [[ 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifdef YYSTACK_USE_ALLOCA 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if YYSTACK_USE_ALLOCA 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifdef __GNUC__ 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC __builtin_alloca 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# elif defined __BUILTIN_VA_ARG_INCR 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# elif defined _AIX 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC __alloca 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# elif defined _MSC_VER 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define alloca _alloca 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC alloca 48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && ]b4_c_modern[ 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef EXIT_SUCCESS 48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define EXIT_SUCCESS 0 490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif]])])[ 495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifdef YYSTACK_ALLOC 497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pacify GCC's `empty if-body' warning. */ 498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYSTACK_ALLOC_MAXIMUM 500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The OS might guarantee only one guard page at the bottom of the stack, 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project and a page size can be as small as 4096 bytes. So we cannot safely 502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to allow for a few compiler-allocated temporary stack slots. */ 504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC YYMALLOC 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_FREE YYFREE 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYSTACK_ALLOC_MAXIMUM 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if (defined __cplusplus && ! defined EXIT_SUCCESS \ 513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && ! ((defined YYMALLOC || defined malloc) \ 514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && (defined YYFREE || defined free))) 515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef EXIT_SUCCESS 51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define EXIT_SUCCESS 0 518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYMALLOC 521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMALLOC malloc 52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! defined malloc && ! defined EXIT_SUCCESS && ]b4_c_modern[ 523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYFREE 527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFREE free 52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! defined free && ! defined EXIT_SUCCESS && ]b4_c_modern[ 529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid free (void *); /* INFRINGES ON USER NAME SPACE */ 530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif]b4_lac_if([[ 53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCOPY_NEEDED 1]])[ 53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[ 535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if (! defined yyoverflow \ 538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && (! defined __cplusplus \ 53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ 54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL))) 541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* A type that is properly aligned for any stack member. */ 543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectunion yyalloc 544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 yyss_alloc; 54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yyvs_alloc;]b4_locations_if([ 54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyls_alloc;])[ 54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}; 549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* The size of the maximum gap between one aligned stack and the next. */ 551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* The size of an array large to enough to hold all stacks, each with 554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project N elements. */ 555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if( 556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[# define YYSTACK_BYTES(N) \ 557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project + 2 * YYSTACK_GAP_MAXIMUM)], 559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[# define YYSTACK_BYTES(N) \ 560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project + YYSTACK_GAP_MAXIMUM)])[ 562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCOPY_NEEDED 1 564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Relocate STACK from its old location to the new one. The 566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project local variables YYSIZE and YYSTACKSIZE give the old and new number of 567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project elements in the stack, and YYPTR gives the new location of the 568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack. Advance YYPTR to a properly aligned location for the next 569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack. */ 57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do \ 572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSIZE_T yynewbytes; \ 57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang Stack = &yyptr->Stack_alloc; \ 576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyptr += yynewbytes / sizeof (*yyptr); \ 578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (0)) 580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined YYCOPY_NEEDED && YYCOPY_NEEDED 58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy COUNT objects from SRC to DST. The source and destination do 58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang not overlap. */ 58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef YYCOPY 58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __GNUC__ && 1 < __GNUC__ 58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCOPY(Dst, Src, Count) \ 58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else 59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCOPY(Dst, Src, Count) \ 59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang do \ 59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yyi; \ 59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyi = 0; yyi < (Count); yyi++) \ 59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (Dst)[yyi] = (Src)[yyi]; \ 59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (YYID (0)) 59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif 60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YYCOPY_NEEDED */ 60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYFINAL -- State number of the termination state. */ 604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYFINAL ]b4_final_state_number[ 605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLAST -- Last index in YYTABLE. */ 606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYLAST ]b4_last[ 607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNTOKENS -- Number of terminals. */ 609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNTOKENS ]b4_tokens_number[ 610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNNTS -- Number of nonterminals. */ 611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNNTS ]b4_nterms_number[ 612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of rules. */ 613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNRULES ]b4_rules_number[ 614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of states. */ 615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNSTATES ]b4_states_number[ 616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYUNDEFTOK ]b4_undef_token_number[ 619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXUTOK ]b4_user_token_number_max[ 620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTRANSLATE(YYX) \ 622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_translate])[ yytranslate[] = 626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_translate[ 628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHS. */ 633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_prhs])[ yyprhs[] = 634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_prhs[ 636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rhs])[ yyrhs[] = 640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rhs[ 642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rline])[ yyrline[] = 646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rline[ 648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ 652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *const yytname[] = 655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_tname[ 657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifdef YYPRINT 661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project token YYLEX-NUM. */ 663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_toknum])[ yytoknum[] = 664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_toknum[ 666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r1])[ yyr1[] = 671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r1[ 673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r2])[ yyr2[] = 677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r2[ 679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. 68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang Performed when YYTABLE doesn't specify something else to do. Zero 683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project means the default is an error. */ 684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defact])[ yydefact[] = 685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defact[ 687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYDEFGOTO[NTERM-NUM]. */ 690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = 691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defgoto[ 693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project STATE-NUM. */ 697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYPACT_NINF ]b4_pact_ninf[ 698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pact])[ yypact[] = 699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pact[ 701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPGOTO[NTERM-NUM]. */ 704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = 705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pgoto[ 707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positive, shift that token. If negative, reduce the rule which 71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang number is the opposite. If YYTABLE_NINF, syntax error. */ 712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTABLE_NINF ]b4_table_ninf[ 713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_table])[ yytable[] = 714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_table[ 716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypact_value_is_default(Yystate) \ 71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ 72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yytable_value_is_error(Yytable_value) \ 72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ 72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_check])[ yycheck[] = 725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_check[ 727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project symbol of state STATE-NUM. */ 731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_stos])[ yystos[] = 732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_stos[ 734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyerrok (yyerrstatus = 0) 737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyclearin (yychar = YYEMPTY) 738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYEMPTY (-2) 739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYEOF 0 740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYACCEPT goto yyacceptlab 742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYABORT goto yyabortlab 743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYERROR goto yyerrorlab 744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Like YYERROR except do call yyerror. This remains here temporarily 747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to ease the transition to the new meaning of YYERROR, for GCC. 74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang Once GCC version 2 has supplanted version 1, this can go. However, 74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFAIL appears to be in use. Nevertheless, it is formally deprecated 75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang in Bison 2.4.2's NEWS entry, where a plan to phase it out is 75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang discussed. */ 752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYFAIL goto yyerrlab 75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined YYFAIL 75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* This is here to suppress warnings from the GCC cpp's 75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang -Wunused-macros. Normally we don't worry about that warning, but 75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang some users do, and we want to make it easy for users to remove 75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFAIL uses, which will produce warnings from Bison 2.5. */ 75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYRECOVERING() (!!yyerrstatus) 762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYBACKUP(Token, Value) \ 76405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo \ 76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == YYEMPTY) \ 76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = (Token); \ 76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = (Value); \ 76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYPOPSTACK (yylen); \ 77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystate = *yyssp; \]b4_lac_if([[ 77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_DISCARD ("YYBACKUP"); \]])[ 77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yybackup; \ 77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang else \ 77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ 777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYERROR; \ 778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectwhile (YYID (0)) 780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Error token number */ 782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTERROR 1 783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYERRCODE 256 784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ 78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_yylloc_default_define[ 787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])[ 78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_yy_location_print_define[ 790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLEX -- calling `yylex' with the right arguments. */ 792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYLEX_PARAM 793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM) 794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enable debugging if requested. */ 79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYFPRINTF 802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFPRINTF fprintf 804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDPRINTF(Args) \ 807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF Args; \ 810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%s ", Title); \ 817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, \ 818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Type, Value]b4_locations_if([, Location])[]b4_user_args[); \ 819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); \ 820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yy_symbol_print_generate([b4_c_function_def])[ 824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------------------------------------------. 826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yy_stack_print -- Print the state stack from its BOTTOM up to its | 827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| TOP (included). | 828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------------------------------------------*/ 829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([yy_stack_print], [static void], 83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[yytype_int16 *yybottom], [yybottom]], 83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[yytype_int16 *yytop], [yytop]])[ 833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Stack now"); 83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (; yybottom <= yytop; yybottom++) 83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yybot = *yybottom; 83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, " %d", yybot); 83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); 841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_STACK_PRINT(Bottom, Top) \ 844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_stack_print ((Bottom), (Top)); \ 847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 848cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 849cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 850cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------------------------. 851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Report that the YYRULE is going to be reduced. | 852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------------------------*/ 853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 854cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([yy_reduce_print], [static void], 855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [[YYSTYPE *yyvsp], [yyvsp]], 856cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_locations_if([[[YYLTYPE *yylsp], [yylsp]], 857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [, 85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_parse_param]))[ 859cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 860cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyr2[yyrule]; 861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 862cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project unsigned long int yylno = yyrline[yyrule]; 863cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 864cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrule - 1, yylno); 865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The symbols being reduced. */ 866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yynrhs; yyi++) 867cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, " $%d = ", yyi + 1); 869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &]b4_rhs_value(yynrhs, yyi + 1)[ 871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl 872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_user_args[); 87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 875cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Rule) \ 878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \ 881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 882cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Nonzero means print parse trace. It is left uninitialized so that 884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project multiple parsers can coexist. */ 885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yydebug; 88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else /* !]b4_api_PREFIX[DEBUG */ 887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDPRINTF(Args) 888cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_STACK_PRINT(Bottom, Top) 890cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Rule) 89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !]b4_api_PREFIX[DEBUG */ 892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYINITDEPTH -- initial size of the parser's stacks. */ 895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYINITDEPTH 896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYINITDEPTH ]b4_stack_depth_init[ 897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if the built-in stack extension method is used). 901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Do not make this value too large; the results are undefined if 903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project evaluated with infinite-precision integer arithmetic. */ 905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYMAXDEPTH 907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMAXDEPTH ]b4_stack_depth_max[ 90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_lac_if([[ 90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Given a state stack such that *YYBOTTOM is its bottom, such that 91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty 91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang stack, and such that *YYCAPACITY is the maximum number of elements it 91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang can hold without a reallocation, make sure there is enough room to 91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang store YYADD more elements. If not, allocate a new stack using 91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM, 91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *YYTOP, and *YYCAPACITY to reflect the new capacity and memory 91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack 91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang using YYSTACK_FREE. Return 0 if successful or if no reallocation is 91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang required. Return 1 if memory is exhausted. */ 92005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int 92105436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd, 92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yydebug_prefix, 92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yydebug_suffix, 925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 **yybottom, 92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yybottom_no_free, 92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 **yytop, yytype_int16 *yytop_empty) 92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize_old = 93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1; 93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize_new = yysize_old + yyadd; 93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yycapacity < yysize_new) 93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yyalloc = 2 * yysize_new; 93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yybottom_new; 93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Use YYMAXDEPTH for maximum stack size given that the stack 93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang should never need to grow larger than the main state stack 93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang needs to grow without LAC. */ 94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (YYMAXDEPTH < yysize_new) 94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix, 94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydebug_suffix)); 94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (YYMAXDEPTH < yyalloc) 94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyalloc = YYMAXDEPTH; 94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yybottom_new = 94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new); 95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yybottom_new) 95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix, 95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydebug_suffix)); 95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yytop != yytop_empty) 95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCOPY (yybottom_new, *yybottom, yysize_old); 95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yytop = yybottom_new + (yysize_old - 1); 96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yybottom != yybottom_no_free) 96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_FREE (*yybottom); 96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yybottom = yybottom_new; 96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]), 96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [full], [[ 96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix, 96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyalloc, yydebug_suffix));]])[ 96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 0; 97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Establish the initial context for the current lookahead if no initial 97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang context is currently established. 97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang We define a context as a snapshot of the parser stacks. We define 97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang the initial context for a lookahead as the context in which the 97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang parser initially examines that lookahead in order to select a 97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang syntactic action. Thus, if the lookahead eventually proves 97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang syntactically unacceptable (possibly in a later context reached via a 98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang series of reductions), the initial context can be used to determine 98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang the exact set of tokens that would be syntactically acceptable in the 98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang lookahead's place. Moreover, it is the context after which any 98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang further semantic actions would be erroneous because they would be 98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang determined by a syntactically unacceptable token. 98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_ESTABLISH should be invoked when a reduction is about to be 98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang performed in an inconsistent state (which, for the purposes of LAC, 98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang includes consistent states that don't know they're consistent because 98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang their default reductions have been disabled). Iff there is a 99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang lookahead token, it should also be invoked before reporting a syntax 99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang error. This latter case is for the sake of the debugging output. 99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as 99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang follows. If no initial context is currently established for the 99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang current lookahead, then check if that lookahead can eventually be 99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang shifted if syntactic actions continue from the current context. 99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang Report a syntax error if it cannot. */ 99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_LAC_ESTABLISH \ 99905436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo { \ 100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yy_lac_established) \ 100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, \ 100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang "LAC: initial context established for %s\n", \ 100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytname[yytoken])); \ 100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_lac_established = 1; \ 100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yy_lac_status = \ 100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \ 100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_status == 2) \ 101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyexhaustedlab; \ 101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_status == 1) \ 101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyerrlab; \ 101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang} while (YYID (0)) 101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Discard any previous initial lookahead context because of Event, 101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang which may be a lookahead change or an invalidation of the currently 101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang established initial context for the current lookahead. 102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang The most common example of a lookahead change is a shift. An example 102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang of both cases is syntax error recovery. That is, a syntax error 102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang occurs when the lookahead is syntactically erroneous for the 102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang currently established initial context, so error recovery manipulates 102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang the parser stacks to try to find a new initial context in which the 102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang current lookahead is syntactically acceptable. If it fails to find 102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang such a context, it discards the lookahead. */ 102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_LAC_DISCARD(Event) \ 103005436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo { \ 103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_established) \ 103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yydebug) \ 103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "LAC: initial context discarded due to " \ 103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang Event "\n"); \ 103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_lac_established = 0; \ 103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang} while (YYID (0)) 103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_LAC_DISCARD(Event) yy_lac_established = 0 104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can 104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang eventually (after perhaps some reductions) be shifted, return 1 if 104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang not, or return 2 if memory is exhausted. As preconditions and 104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang postconditions: *YYES_CAPACITY is the allocated size of the array to 104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang which *YYES points, and either *YYES = YYESA or *YYES points to an 104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang array allocated with YYSTACK_ALLOC. yy_lac may overwrite the 104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang contents of either array, alter *YYES and *YYES_CAPACITY, and free 105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang any old *YYES other than YYESA. */ 105105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int 105205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_lac (yytype_int16 *yyesa, yytype_int16 **yyes, 105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken) 105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyes_prev = yyssp; 105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyesp = yyes_prev; 105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken])); 105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytoken == YYUNDEFTOK) 105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " Always Err\n")); 106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (1) 106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyrule = yypact[*yyesp]; 106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypact_value_is_default (yyrule) 106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang || (yyrule += yytoken) < 0 || YYLAST < yyrule 106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang || yycheck[yyrule] != yytoken) 106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrule = yydefact[*yyesp]; 107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyrule == 0) 107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " Err\n")); 107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrule = yytable[yyrule]; 108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytable_value_is_error (yyrule)) 108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " Err\n")); 108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (0 < yyrule) 108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " S%d\n", yyrule)); 108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 0; 108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrule = -yyrule; 109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yylen = yyr2[yyrule]; 109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " R%d", yyrule - 1)); 109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyesp != yyes_prev) 109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize = yyesp - *yyes + 1; 109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yylen < yysize) 109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyesp -= yylen; 110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylen = 0; 110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylen -= yysize; 110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyesp = yyes_prev; 110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yylen) 111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyesp = yyes_prev -= yylen; 111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yystate; 111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yylhs = yyr1[yyrule] - YYNTOKENS; 111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystate = yypgoto[yylhs] + *yyesp; 111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystate < 0 || YYLAST < yystate 111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang || yycheck[yystate] != *yyesp) 111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystate = yydefgoto[yylhs]; 112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystate = yytable[yystate]; 112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyesp == yyes_prev) 112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyesp = *yyes; 112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yyesp = yystate; 112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_stack_realloc (yyes_capacity, 1, 113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang " (", ")", 113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyes, yyesa, &yyesp, yyes_prev)) 113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "\n")); 113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 2; 113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *++yyesp = yystate; 114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, " G%d", yystate)); 114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}]])[ 1145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 1148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yystrlen 1150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if defined __GLIBC__ && defined _STRING_H 1151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yystrlen strlen 1152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 1153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Return the length of YYSTR. */ 1154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([yystrlen], [static YYSIZE_T], 1155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [[const char *yystr], [yystr]])[ 1156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSIZE_T yylen; 1158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yylen = 0; yystr[yylen]; yylen++) 1159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 1160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yylen; 1161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yystpcpy 1166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yystpcpy stpcpy 1168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 1169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDEST. */ 1171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([yystpcpy], [static char *], 1172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[ 1173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yyd = yydest; 1175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *yys = yysrc; 1176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((*yyd++ = *yys++) != '\0') 1178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 1179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyd - 1; 1181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yytnamerr 1186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project quotes and backslashes, so that it's suitable for yyerror. The 1188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project heuristic is that double-quoting is unnecessary unless the string 1189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project contains an apostrophe, a comma, or backslash (other than 1190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backslash-backslash). YYSTR is taken from yytname. If YYRES is 1191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project null, do not copy; instead, return the length of what the result 1192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project would have been. */ 1193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYSIZE_T 1194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyytnamerr (char *yyres, const char *yystr) 1195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yystr == '"') 1197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSIZE_T yyn = 0; 1199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyp = yystr; 1200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 1202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (*++yyp) 1203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\'': 1205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case ',': 1206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 1207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\\': 1209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*++yyp != '\\') 1210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 1211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Fall through. */ 1212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 1213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyres) 1214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyres[yyn] = *yyp; 1215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn++; 1216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '"': 1219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyres) 1220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyres[yyn] = '\0'; 1221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyn; 1222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do_not_strip_quotes: ; 1224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyres) 1227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystrlen (yystr); 1228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystpcpy (yyres, yystr) - yyres; 1230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang about the unexpected token YYTOKEN for the state stack whose top is 123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSSP.]b4_lac_if([[ In order to see if a particular token T is a 123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[ 123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang not large enough to hold the message. In that case, also set 124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *YYMSG_ALLOC to the required number of bytes. Return 2 if the 124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang required number of bytes is too large to store]b4_lac_if([[ or if 124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_lac returned 2]])[. */ 124305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int 124405436638acc7c010349a69c3395f1a57c642dc62Ying Wangyysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes, 124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken) 1247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); 124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize = yysize0; 125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Internationalized format string. */ 125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang const char *yyformat = YY_NULL; 125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Arguments of yyformat. */ 125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Number of reported tokens (one for the "unexpected", one per 125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang "expected"). */ 125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yycount = 0; 125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* There are many possibilities here to consider: 126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Assume YYFAIL is not used. It's too flawed to consider. See 126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> 126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang for details. YYERROR is fine as it does not invoke this 126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang function. 126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang - If this state is a consistent state with a default action, then 126505436638acc7c010349a69c3395f1a57c642dc62Ying Wang the only way this function was invoked is if the default action 126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang is an error action. In that case, don't check for expected 126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang tokens because there are none. 126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang - The only way there can be no lookahead present (in yychar) is if 126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang this state is a consistent state with a default action. Thus, 127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang detecting the absence of a lookahead is sufficient to determine 127105436638acc7c010349a69c3395f1a57c642dc62Ying Wang that there is no unexpected or expected token to report. In that 127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang case, just report a simple "syntax error". 127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Don't assume there isn't a lookahead just because this state is a 127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang consistent state with a default action. There might have been a 127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang previous inconsistent state, consistent state with a non-default 127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang action, or user semantic action that manipulated yychar.]b4_lac_if([[ 127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang In the first two cases, it might appear that the current syntax 127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang error should have been detected in the previous state when yy_lac 127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang was invoked. However, at that time, there might have been a 128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang different syntax error that discarded a different initial context 128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang during error recovery, leaving behind the current lookahead.]], [[ 128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Of course, the expected token list depends on states to have 128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang correct lookahead information, and it depends on the parser not 128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang to perform extra reductions after fetching a lookahead from the 128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang scanner and before detecting a syntax error. Thus, state merging 128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (from LALR or IELR) and default reductions corrupt the expected 128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang token list. However, the list is correct for canonical LR with 128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang one exception: it will still contain any token that will not be 128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang accepted due to an error action in a later state.]])[ 129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */ 129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytoken != YYEMPTY) 1292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyn = yypact[*yyssp];]b4_lac_if([[ 129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[ 129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytname[yytoken]; 129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yypact_value_is_default (yyn)) 129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_lac_if([], [[ 129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Start YYX at -YYN if negative to avoid negative indexes in 129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHECK. In other words, skip the first -YYN actions for 130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang this state because they are default actions. */ 130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxbegin = yyn < 0 ? -yyn : 0; 130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Stay within bounds of both yycheck and yytname. */ 130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychecklim = YYLAST - yyn + 1; 130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[ 130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyx;]b4_lac_if([[ 130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyx = 0; yyx < YYNTOKENS; ++yyx) 130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyx != YYTERROR && yyx != YYUNDEFTOK) 130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity, 131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyssp, yyx); 131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_status == 2) 131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 2; 131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_lac_status == 1) 131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang continue; 131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]], [[ 131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyx = yyxbegin; yyx < yyxend; ++yyx) 132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang && !yytable_value_is_error (yytable[yyx + yyn])) 132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]])[ 132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yycount = 1; 132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysize0; 132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytname[yyx]; 133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); 133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! (yysize <= yysize1 133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 2; 133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysize1; 133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]b4_lac_if([[ 133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ]b4_api_PREFIX[DEBUG 134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (yydebug) 134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "No expected tokens.\n"); 134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif]])[ 134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (yycount) 134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCASE_(N, S) \ 134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang case N: \ 134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat = S; \ 135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang break 135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(0, YY_("syntax error")); 135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(1, YY_("syntax error, unexpected %s")); 135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef YYCASE_ 135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSIZE_T yysize1 = yysize + yystrlen (yyformat); 136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 2; 136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysize1; 136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yymsg_alloc < yysize) 136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yymsg_alloc = 2 * yysize; 137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! (yysize <= *yymsg_alloc 137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 1374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 137505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Avoid sprintf, as that infringes on the user's name space. 137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang Don't have undefined behavior even if the translation 137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang produced a string with the wrong number of "%s"s. */ 137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang char *yyp = *yymsg; 138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyi = 0; 138205436638acc7c010349a69c3395f1a57c642dc62Ying Wang while ((*yyp = *yyformat) != '\0') 138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp += yytnamerr (yyp, yyarg[yyi++]); 138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat += 2; 138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 138905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp++; 139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat++; 139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 0; 1395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* YYERROR_VERBOSE */ 1397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yydestruct_generate([b4_c_function_def])[ 1399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_pure_if([], [ 1401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140205436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_declare_scanner_communication_variables])[]b4_push_if([[ 1403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct yypstate 140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_declare_parser_state_variables[ 140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Used to determine if this is the first time this instance has 140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang been used. */ 140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yynew; 140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang };]b4_pure_if([], [[ 1410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 141105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char yypstate_allocated = 0;]])b4_pull_if([ 1412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 141305436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_c_function_def([[yyparse]], [[int]], b4_parse_param)[ 141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yypull_parse (YY_NULL]m4_ifset([b4_parse_param], 141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[, ]b4_c_args(b4_parse_param)])[); 141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 1418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([[yypull_parse]], [[int]], 142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [, 142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_parse_param]))[ 142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yystatus; 142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypstate *yyps_local;]b4_pure_if([[ 142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychar; 142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yylval;]b4_locations_if([[ 142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang static YYLTYPE yyloc_default][]b4_yyloc_default[; 142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yylloc = yyloc_default;]])])[ 142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyps) 143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps_local = yyps; 143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps_local = yypstate_new (); 143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps_local) 143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_pure_if([[ 143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[ 143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yypstate_allocated) 143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[ 143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 2; 144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang do { 144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYLEX; 144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystatus = 144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])[); 144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } while (yystatus == YYPUSH_MORE); 144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps) 144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypstate_delete (yyps_local); 144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yystatus; 145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}]])[ 145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initialize the parser data structure. */ 145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([[yypstate_new]], [[yypstate *]])[ 145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypstate *yyps;]b4_pure_if([], [[ 145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypstate_allocated) 145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang return YY_NULL;]])[ 145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps = (yypstate *) malloc (sizeof *yyps); 145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps) 146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang return YY_NULL; 146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps->yynew = 1;]b4_pure_if([], [[ 146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypstate_allocated = 1;]])[ 146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyps; 146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 1465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([[yypstate_delete]], [[void]], 146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[yypstate *yyps]], [[yyps]]])[ 146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{ 146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yyoverflow 147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* If the stack was reallocated but the parse did not complete, then the 147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang stack still needs to be freed. */ 147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps->yynew && yyps->yyss != yyps->yyssa) 147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_FREE (yyps->yyss); 147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_lac_if([[ 147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps->yynew && yyps->yyes != yyps->yyesa) 147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_FREE (yyps->yyes);]])[ 147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang free (yyps);]b4_pure_if([], [[ 147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypstate_allocated = 0;]])[ 147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_pure_if([[ 148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[ 148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yystate yyps->yystate 148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerrstatus yyps->yyerrstatus 148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyssa yyps->yyssa 148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyss yyps->yyss 148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyssp yyps->yyssp 148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyvsa yyps->yyvsa 148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyvs yyps->yyvs 148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyvsp yyps->yyvsp]b4_locations_if([[ 149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylsa yyps->yylsa 149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyls yyps->yyls 149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylsp yyps->yylsp 149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerror_range yyps->yyerror_range]])[ 149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yystacksize yyps->yystacksize]b4_lac_if([[ 149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyesa yyps->yyesa 149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyes yyps->yyes 149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyes_capacity yyps->yyes_capacity]])[ 149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*---------------. 150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang| yypush_parse. | 150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang`---------------*/ 150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([[yypush_parse]], [[int]], 150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[yypstate *yyps]], [[yyps]]]b4_pure_if([, 150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[int yypushed_char]], [[yypushed_char]]], 150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([, 150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [, 150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_parse_param]))], [[ 1510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------. 1513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyparse. | 1514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------*/ 1515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYPARSE_PARAM 151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([yyparse], [int], 151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ 1519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else /* ! YYPARSE_PARAM */ 152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_function_def([yyparse], [int], b4_parse_param)[ 152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]])[ 152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{]b4_pure_if([b4_declare_scanner_communication_variables 152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang])b4_push_if([b4_pure_if([], [[ 152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yypushed_char = yychar; 152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yypushed_val = yylval;]b4_locations_if([[ 152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yypushed_loc = yylloc;]]) 152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang])], 152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_declare_parser_state_variables 152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang])b4_lac_if([[ 153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yy_lac_established = 0;]])[ 1531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyresult; 153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Lookahead token as an internal (translated) token number. */ 1534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yytoken = 0; 153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* The variables used to return semantic value and location from the 153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang action routines. */ 153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yyval;]b4_locations_if([[ 153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyloc;]])[ 153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 1541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Buffer for error messages, and its allocated size. */ 1542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char yymsgbuf[128]; 1543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yymsg = yymsgbuf; 1544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[) 1548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The number of symbols on the RHS of the reduced rule. 1550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Keep to zero when no symbol should be popped. */ 155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yylen = 0;]b4_push_if([[ 155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps->yynew) 155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn = yypact[yystate]; 155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyread_pushed_token; 155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]])[ 155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyssp = yyss = yyssa; 156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyvsp = yyvs = yyvsa;]b4_locations_if([[ 156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylsp = yyls = yylsa;]])[ 156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystacksize = YYINITDEPTH;]b4_lac_if([[ 156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyes = yyesa; 156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyes_capacity = sizeof yyesa / sizeof *yyes; 156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (YYMAXDEPTH < yyes_capacity) 156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyes_capacity = YYMAXDEPTH;]])[ 1568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Starting parse\n")); 1570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = 0; 1572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrstatus = 0; 1573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynerrs = 0; 157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYEMPTY; /* Cause a token to be read. */ 157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_ifdef([b4_initial_action], [ 157605436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [], 157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl 157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* User initialization code. */ 157905436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_user_initial_action 158005436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_popdef[]dnl 1581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; 158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])])dnl 158305436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_locations_if([[ yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[; 1584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])dnl 1585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ goto yysetstate; 1586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------------------------------------. 1588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yynewstate -- Push a new state, which is found in yystate. | 1589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------------------------------------*/ 1590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewstate: 1591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* In all cases, when you get here, the value and location stacks 1592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project have just been pushed. So pushing a state here evens the stacks. */ 1593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyssp++; 1594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysetstate: 1596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyssp = yystate; 1597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyss + yystacksize - 1 <= yyssp) 1599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Get the current used size of the three stacks, in elements. */ 1601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSIZE_T yysize = yyssp - yyss + 1; 1602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef yyoverflow 1604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Give user a chance to reallocate the stack. Use copies of 1606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project these so that the &'s don't force the real ones into 1607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project memory. */ 1608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE *yyvs1 = yyvs; 160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytype_int16 *yyss1 = yyss;]b4_locations_if([ 161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE *yyls1 = yyls;])[ 1611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Each stack pointer address is followed by the size of the 1613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project data in use in that stack, in bytes. This used to be a 1614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project conditional around just the two extra args, but that might 1615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project be undefined if yyoverflow is a macro. */ 1616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyoverflow (YY_("memory exhausted"), 1617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yyss1, yysize * sizeof (*yyssp), 161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([ 161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yyls1, yysize * sizeof (*yylsp),])[ 1620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yystacksize); 162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([ 162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyls = yyls1;])[ 1623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyss = yyss1; 1624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvs = yyvs1; 1625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else /* no yyoverflow */ 1627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYSTACK_RELOCATE 1628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyexhaustedlab; 1629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 1630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Extend the stack our own way. */ 1631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH <= yystacksize) 1632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyexhaustedlab; 1633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystacksize *= 2; 1634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH < yystacksize) 1635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystacksize = YYMAXDEPTH; 1636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytype_int16 *yyss1 = yyss; 1639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project union yyalloc *yyptr = 1640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyptr) 1642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyexhaustedlab; 164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_RELOCATE (yyss_alloc, yyss); 164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([ 164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_RELOCATE (yyls_alloc, yyls);])[ 1646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYSTACK_RELOCATE 1647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyss1 != yyssa) 1648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTACK_FREE (yyss1); 1649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 1651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* no yyoverflow */ 1652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyssp = yyss + yysize - 1; 165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyvsp = yyvs + yysize - 1;]b4_locations_if([ 165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylsp = yyls + yysize - 1;])[ 1656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yystacksize)); 1659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyss + yystacksize - 1 <= yyssp) 1661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYABORT; 1662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 166605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystate == YYFINAL) 166705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYACCEPT; 166805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yybackup; 1670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------. 1672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yybackup. | 1673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------*/ 1674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyybackup: 1675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Do appropriate processing given the current state. Read a 167705436638acc7c010349a69c3395f1a57c642dc62Ying Wang lookahead token if we need one and don't already have one. */ 1678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 167905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* First try to decide what to do without reference to lookahead token. */ 1680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yypact[yystate]; 168105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypact_value_is_default (yyn)) 1682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yydefault; 1683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 168405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Not known => get a lookahead token if don't already have one. */ 1685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 168605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == YYEMPTY) 168805436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_push_if([[ 168905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yyps->yynew) 169005436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_use_push_for_pull_if([], [[ 169105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Return for a new token:\n"));]])[ 169205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyresult = YYPUSH_MORE; 169305436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yypushreturn; 169405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 169505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps->yynew = 0;]b4_pure_if([], [[ 169605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Restoring the pushed token is only necessary for the first 169705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypush_parse invocation since subsequent invocations don't overwrite 169805436638acc7c010349a69c3395f1a57c642dc62Ying Wang it before jumping to yyread_pushed_token. */ 169905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yypushed_char; 170005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yypushed_val;]b4_locations_if([[ 170105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yypushed_loc;]])])[ 170205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyyread_pushed_token:]])[ 170305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[ 170405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yypushed_char; 170505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypushed_val) 170605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = *yypushed_val;]b4_locations_if([[ 170705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypushed_loc) 170805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = *yypushed_loc;]])])], [[ 170905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYLEX;]])[ 1710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar <= YYEOF) 1713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yytoken = YYEOF; 1715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Now at end of input.\n")); 1716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 1720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If the proper action on seeing token YYTOKEN is to reduce or to 1724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project detect an error, take that action. */ 1725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn += yytoken; 172605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[ 172705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 172805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_ESTABLISH; 172905436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yydefault; 173005436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]], [[ 173105436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yydefault;]])[ 1732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yytable[yyn]; 1733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyn <= 0) 1734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 173505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytable_value_is_error (yyn)) 173605436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyerrlab;]b4_lac_if([[ 173705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_ESTABLISH;]])[ 1738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = -yyn; 1739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreduce; 1740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Count tokens shifted since error; after three, turn off error 1743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project status. */ 1744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyerrstatus) 1745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrstatus--; 1746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 174705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Shift the lookahead token. */ 1748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 175005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Discard the shifted token. */ 175105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYEMPTY;]b4_lac_if([[ 175205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_DISCARD ("shift");]])[ 1753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yyn; 175505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *++yyvsp = yylval; 175705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_IGNORE_MAYBE_UNINITIALIZED_END 1758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([ *++yylsp = yylloc;])[ 1759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 1760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------------------------------------------------. 1763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yydefault -- do the default action for the current state. | 1764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------------------------------------------------*/ 1765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyydefault: 1766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yydefact[yystate]; 1767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyn == 0) 1768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab; 1769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreduce; 1770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------------------. 1773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyreduce -- Do a reduction. | 1774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------------------*/ 1775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyreduce: 1776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* yyn is the number of a rule to reduce with. */ 1777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = yyr2[yyn]; 1778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If YYLEN is nonzero, implement the default value of the action: 1780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `$$ = $1'. 1781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Otherwise, the following line sets YYVAL to garbage. 1783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This behavior is undocumented and Bison 1784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project users should not rely upon it. Assigning to YYVAL 1785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project unconditionally makes the parser a bit smaller, and it avoids a 1786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project GCC warning that YYVAL may be used uninitialized. */ 1787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyval = yyvsp[1-yylen]; 1788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if( 1790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[ /* Default location. */ 1791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[ 179205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_REDUCE_PRINT (yyn);]b4_lac_if([[ 179305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 179405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychar_backup = yychar; 179505436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (yyn) 179605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 179705436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_user_actions[ 179805436638acc7c010349a69c3395f1a57c642dc62Ying Wang default: break; 179905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 180005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar_backup != yychar) 180105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_DISCARD ("yychar change"); 180205436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]], [[ 1803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 1804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 180505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_user_actions[ 1806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: break; 180705436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]])[ 180805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* User semantic actions sometimes alter yychar, and that requires 180905436638acc7c010349a69c3395f1a57c642dc62Ying Wang that yytoken be updated with the new translation. We take the 181005436638acc7c010349a69c3395f1a57c642dc62Ying Wang approach of translating immediately before every use of yytoken. 181105436638acc7c010349a69c3395f1a57c642dc62Ying Wang One alternative is translating here after every semantic action, 181205436638acc7c010349a69c3395f1a57c642dc62Ying Wang but that translation would be missed if the semantic action invokes 181305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 181405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 181505436638acc7c010349a69c3395f1a57c642dc62Ying Wang incorrect destructor might then be invoked immediately. In the 181605436638acc7c010349a69c3395f1a57c642dc62Ying Wang case of YYERROR or YYBACKUP, subsequent parser actions might lead 181705436638acc7c010349a69c3395f1a57c642dc62Ying Wang to an incorrect destructor call or verbose syntax error message 181805436638acc7c010349a69c3395f1a57c642dc62Ying Wang before the lookahead is translated. */ 1819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 1820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYPOPSTACK (yylen); 1822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = 0; 1823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (yyss, yyssp); 1824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 182505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *++yyvsp = yyval;]b4_locations_if([ 182605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *++yylsp = yyloc;])[ 1827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Now `shift' the result of the reduction. Determine what state 1829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project that goes to, based on the state we popped back to and the rule 1830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project number reduced by. */ 1831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yyr1[yyn]; 1833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 1835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 1836cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yytable[yystate]; 1837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yydefgoto[yyn - YYNTOKENS]; 1839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 1841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------------. 1844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyerrlab -- here on detecting error | 1845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------------*/ 1846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyerrlab: 184705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Make sure we have latest lookahead translation. See comments at 184805436638acc7c010349a69c3395f1a57c642dc62Ying Wang user semantic actions for why this is necessary. */ 184905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 185005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 1851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If not already recovering from an error, report this error. */ 1852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yyerrstatus) 1853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1854cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ++yynerrs; 1855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! YYERROR_VERBOSE 1856cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[YY_("syntax error")); 1857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 185805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[ 185905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyesa, &yyes, &yyes_capacity, \]])[ 186005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyssp, yytoken) 1861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 186205436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yymsgp = YY_("syntax error"); 186305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yysyntax_error_status;]b4_lac_if([[ 186405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != YYEMPTY) 186505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_ESTABLISH;]])[ 186605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysyntax_error_status = YYSYNTAX_ERROR; 186705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yysyntax_error_status == 0) 186805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsgp = yymsg; 186905436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (yysyntax_error_status == 1) 187005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 187105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yymsg != yymsgbuf) 187205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_FREE (yymsg); 187305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 187405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yymsg) 187505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 187605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsg = yymsgbuf; 187705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsg_alloc = sizeof yymsgbuf; 187805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysyntax_error_status = 2; 187905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 188005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 188105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 188205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysyntax_error_status = YYSYNTAX_ERROR; 188305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsgp = yymsg; 188405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 188505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 188605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_yyerror_args[yymsgp); 188705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yysyntax_error_status == 2) 188805436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyexhaustedlab; 1889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 189005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef YYSYNTAX_ERROR 1891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 189405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yyerror_range[1] = yylloc;]])[ 1895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyerrstatus == 3) 1897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 189805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* If just tried and failed to reuse lookahead token after an 1899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project error, discard it. */ 1900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar <= YYEOF) 1902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Return failure if at end of input. */ 1904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == YYEOF) 1905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYABORT; 1906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Error: discarding", 1910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); 1911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYEMPTY; 1912cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1914cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 191505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Else will try to reuse lookahead token after shifting the error 1916cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project token. */ 1917cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab1; 1918cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1919cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1920cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*---------------------------------------------------. 1921cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyerrorlab -- error raised explicitly by YYERROR. | 1922cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`---------------------------------------------------*/ 1923cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyerrorlab: 1924cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pacify compilers like GCC when the user code never invokes 1926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYERROR and the label yyerrorlab therefore never appears in user 1927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project code. */ 1928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (/*CONSTCOND*/ 0) 1929cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrorlab; 1930cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 193105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen]; 1932cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])[ /* Do not reclaim the symbols of the rule which action triggered 1933cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this YYERROR. */ 1934cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYPOPSTACK (yylen); 1935cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = 0; 1936cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (yyss, yyssp); 1937cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = *yyssp; 1938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab1; 1939cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------------------------------. 1942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyerrlab1 -- common code for both syntax error and YYERROR. | 1943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------------------------------*/ 1944cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyerrlab1: 1945cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrstatus = 3; /* Each real token shifted decrements this. */ 1946cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1947cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 1948cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1949cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yypact[yystate]; 195005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yypact_value_is_default (yyn)) 1951cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1952cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn += YYTERROR; 1953cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 1954cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yytable[yyn]; 1956cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn) 1957cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1958cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1959cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1960cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1961cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pop the current state because it cannot handle the error token. */ 1962cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyssp == yyss) 1963cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYABORT; 1964cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 196505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yyerror_range[1] = *yylsp;]])[ 1966cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Error: popping", 1967cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); 1968cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYPOPSTACK (1); 1969cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = *yyssp; 1970cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (yyss, yyssp); 197105436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]b4_lac_if([[ 1972cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 197305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* If the stack popping above didn't lose the initial context for the 197405436638acc7c010349a69c3395f1a57c642dc62Ying Wang current lookahead token, the shift below will for sure. */ 197505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_LAC_DISCARD ("error recovery");]])[ 1976cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 197705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1978cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *++yyvsp = yylval; 197905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_IGNORE_MAYBE_UNINITIALIZED_END 1980cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ 198105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[2] = yylloc; 1982cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Using YYLLOC is tempting, but would change the location of 198305436638acc7c010349a69c3395f1a57c642dc62Ying Wang the lookahead. YYLOC is available though. */ 198405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 1985cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *++yylsp = yyloc;]])[ 1986cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1987cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shift the error token. */ 1988cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 1989cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1990cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yyn; 1991cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 1992cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1993cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1994cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------. 1995cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyacceptlab -- YYACCEPT comes here. | 1996cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------*/ 1997cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyacceptlab: 1998cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 0; 1999cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2000cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2001cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------------------------. 2002cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyabortlab -- YYABORT comes here. | 2003cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------------------------*/ 2004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyabortlab: 2005cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 1; 2006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 200805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[ 2009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------------------. 2010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyexhaustedlab -- memory exhaustion comes here. | 2011cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------------------*/ 2012cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyexhaustedlab: 2013cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[YY_("memory exhausted")); 2014cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 2; 2015cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Fall through. */ 2016cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 2017cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2018cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyreturn: 201905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != YYEMPTY) 202005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 202105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Make sure we have latest lookahead translation. See comments at 202205436638acc7c010349a69c3395f1a57c642dc62Ying Wang user semantic actions for why this is necessary. */ 202305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = YYTRANSLATE (yychar); 202405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct ("Cleanup: discarding lookahead", 202505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); 202605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2027cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Do not reclaim the symbols of the rule which action triggered 2028cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this YYABORT or YYACCEPT. */ 2029cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYPOPSTACK (yylen); 2030cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (yyss, yyssp); 2031cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yyssp != yyss) 2032cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2033cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Cleanup: popping", 2034cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); 2035cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYPOPSTACK (1); 2036cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2037cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef yyoverflow 2038cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyss != yyssa) 2039cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTACK_FREE (yyss); 204005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_lac_if([[ 204105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyes != yyesa) 204205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTACK_FREE (yyes);]])b4_push_if([[ 204305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyps->yynew = 1; 204405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 204505436638acc7c010349a69c3395f1a57c642dc62Ying Wangyypushreturn:]])[ 2046cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 2047cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymsg != yymsgbuf) 2048cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTACK_FREE (yymsg); 2049cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 2050cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Make sure YYID is used. */ 2051cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return YYID (yyresult); 205205436638acc7c010349a69c3395f1a57c642dc62Ying Wang} 2053cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2054cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 205505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_epilogue[]dnl 205605436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_end() 2057cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 205805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_defines_if( 205905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_output_begin([b4_spec_defines_file])[ 206005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_copyright([Bison interface for Yacc-like parsers in C], 206105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [1984, 1989-1990, 2000-2012])[ 2062cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 206305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_shared_declarations[ 206405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_output_end() 206505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 2066