105436638acc7c010349a69c3395f1a57c642dc62Ying Wang -*- C -*- 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GLR skeleton for Bison 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copyright (C) 2002-2012 Free Software Foundation, Inc. 605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is free software: you can redistribute it and/or modify 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by 905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# the Free Software Foundation, either version 3 of the License, or 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# (at your option) any later version. 1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful, 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details. 1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License 1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# along with this program. If not, see <http://www.gnu.org/licenses/>. 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# If we are loaded by glr.cc, do not override c++.m4 definitions by 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# those of c.m4. 2305436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_if(b4_skeleton, ["glr.c"], 2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang [m4_include(b4_pkgdatadir/[c.m4])]) 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Default values. ## 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Stack parameters. 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_max], [10000]) 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_init], [200]) 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Pure/impure interfaces. ## 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_define_flag_if([pure]) 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# If glr.cc is including this file and thus has already set b4_pure_flag, 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# do not change the value of b4_pure_flag, and do not record a use of api.pure. 4305436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_ifndef([b4_pure_flag], 4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_percent_define_default([[api.pure]], [[false]]) 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang m4_define([b4_pure_flag], 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])]) 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_user_formals 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# The possible parse-params formal arguments preceded by a comma. 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This is not shared with yacc.c in c.m4 because GLR relies on ISO C 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# formal argument declarations. 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_user_formals], 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])]) 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lex_param 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------ 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Accumule in b4_lex_param all the yylex arguments. 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Yes, this is quite ugly... 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lex_param], 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_locations_if([, [[YYLTYPE *], [&yylloc]]])])dnl 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_lex_param], [, ]b4_lex_param))) 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_yyerror_args 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Optional effective arguments passed to yyerror: user args plus yylloc, and 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# a trailing comma. 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_yyerror_args], 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([yylocp, ])])dnl 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lyyerror_args 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ---------------- 7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Same as above, but on the lookahead, hence &yylloc instead of yylocp. 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lyyerror_args], 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([&yylloc, ])])dnl 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_pure_args 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------ 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Same as b4_yyerror_args, but with a leading comma. 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_pure_args], 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, yylocp])])[]b4_user_args]) 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lpure_args 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------- 9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Same as above, but on the lookahead, hence &yylloc instead of yylocp. 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lpure_args], 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, &yylloc])])[]b4_user_args]) 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_pure_formals 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Arguments passed to yyerror: user formals plus yylocp with leading comma. 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_pure_formals], 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, YYLTYPE *yylocp])])[]b4_user_formals]) 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_locuser_formals(LOC = yylocp) 10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# -------------------------------- 10905436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_locuser_formals], 11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_locations_if([, YYLTYPE *m4_default([$1], [yylocp])])[]b4_user_formals]) 11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_locuser_args(LOC = yylocp) 11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ----------------------------- 11505436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_locuser_args], 11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_locations_if([, m4_default([$1], [yylocp])])[]b4_user_args]) 11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Semantic Values. ## 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_value([TYPE]) 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------- 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>$. 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_value], 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[((*yyvalp)[]m4_ifval([$1], [.$1]))]) 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------------------------- 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# symbols on RHS. 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_value], 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))]) 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Locations. ## 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_location() 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ----------------- 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @$. 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_location], 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(*yylocp)]) 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_location(RULE-LENGTH, NUM) 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------------------------- 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @NUM, where the current rule has RULE-LENGTH symbols 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# on RHS. 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_location], 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yyloc)]) 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang## Declarations. ## 16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang## -------------- ## 16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# b4_shared_declarations 16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ---------------------- 16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Declaration that might either go into the header (if --defines) 16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# or open coded in the parser body. 16805436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_shared_declarations], 16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_declare_yydebug[ 17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[requires]])[ 17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_enums(b4_tokens)[ 17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_declare_yylstype[ 17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[ 17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[provides]])[]dnl 17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## -------------- ## 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Output files. ## 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## -------------- ## 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 18205436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_begin([b4_parser_file_name]) 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton implementation for Bison GLR parsers in C], 18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2002-2012])[ 18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* C GLR parser skeleton written by Paul Hilfinger. */ 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_identification 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 19005436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_code_get([[top]])[ 19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_if(b4_api_prefix, [yy], [], 19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[/* Substitute the type names. */ 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ 19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ 19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_if(b4_prefix, [yy], [], 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[/* Substitute the variable and function names. */ 19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyparse ]b4_prefix[parse 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylex ]b4_prefix[lex 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerror ]b4_prefix[error 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylval ]b4_prefix[lval 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yychar ]b4_prefix[char 20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yydebug ]b4_prefix[debug 20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ 20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylloc ]b4_prefix[lloc]])])[ 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the first part of user declarations. */ 20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_pre_prologue[ 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_null_define[ 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], 21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_shared_declarations])[ 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enabling verbose error messages. */ 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYERROR_VERBOSE 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR_VERBOSE 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE 1 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE ]b4_error_verbose_flag[ 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Default (constant) value used for initialization for null 22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang right-hand sides. Unlike the standard yacc.c template, here we set 22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang the default value of $$ to a zeroed-out value. Since the default 22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang value is undefined, this behavior is technically correct. */ 22605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YYSTYPE yyval_default;]b4_locations_if([[ 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YYLTYPE yyloc_default][]b4_yyloc_default;])[ 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the second part of user declarations. */ 23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_post_prologue 23105436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_code_get[]dnl 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[#include <stdio.h> 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdlib.h> 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <string.h> 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YY_ 23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined YYENABLE_NLS && YYENABLE_NLS 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if ENABLE_NLS 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_(Msgid) dgettext ("bison-runtime", Msgid) 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YY_ 24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_(Msgid) Msgid 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Suppress unused-variable warnings by "using" E. */ 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! defined lint || defined __GNUC__ 25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYUSE(E) ((void) (E)) 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYUSE(E) /* empty */ 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Identity function, used to suppress warnings about constant conditions. */ 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef lint 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYID(N) (N) 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([YYID], [static int], [[int i], [i]])[ 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return i; 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYFREE 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFREE free 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYMALLOC 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMALLOC malloc 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYREALLOC 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYREALLOC realloc 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYSIZEMAX ((size_t) -1) 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef __cplusplus 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef bool yybool; 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef unsigned char yybool; 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yytrue 1 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyfalse 0 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYSETJMP 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <setjmp.h> 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYJMP_BUF jmp_buf 28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYSETJMP(Env) setjmp (Env) 29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Pacify clang. */ 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0)) 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------. 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| GCC extensions. | 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------*/ 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef __attribute__ 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* This feature is available in gcc versions 2.5 and later. */ 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if (! defined __GNUC__ || __GNUC__ < 2 \ 30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define __attribute__(Spec) /* empty */ 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYASSERT 30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYFINAL -- State number of the termination state. */ 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYFINAL ]b4_final_state_number[ 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLAST -- Last index in YYTABLE. */ 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYLAST ]b4_last[ 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNTOKENS -- Number of terminals. */ 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNTOKENS ]b4_tokens_number[ 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNNTS -- Number of nonterminals. */ 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNNTS ]b4_nterms_number[ 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of rules. */ 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNRULES ]b4_rules_number[ 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of states. */ 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNSTATES ]b4_states_number[ 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXRHS ]b4_r2_max[ 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXLEFT -- Maximum number of symbols to the left of a handle 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project accessed by $0, $-1, etc., in any rule. */ 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXLEFT ]b4_max_left_semantic_context[ 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */ 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYUNDEFTOK ]b4_undef_token_number[ 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXUTOK ]b4_user_token_number_max[ 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYTRANSLATE(YYX) \ 33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_translate])[ yytranslate[] = 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_translate[ 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHS. */ 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_prhs])[ yyprhs[] = 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_prhs[ 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rhs])[ yyrhs[] = 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rhs[ 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rline])[ yyrline[] = 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rline[ 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *const yytname[] = 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_tname[ 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r1])[ yyr1[] = 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r1[ 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r2])[ yyr2[] = 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r2[ 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_dprec])[ yydprec[] = 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_dprec[ 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_merger])[ yymerger[] = 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_merger[ 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* YYDEFACT[S] -- default reduction number in state S. Performed when 39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYTABLE doesn't specify something else to do. Zero means the default 39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang is an error. */ 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defact])[ yydefact[] = 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defact[ 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPDEFGOTO[NTERM-NUM]. */ 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defgoto[ 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project STATE-NUM. */ 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYPACT_NINF ]b4_pact_ninf[ 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pact])[ yypact[] = 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pact[ 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPGOTO[NTERM-NUM]. */ 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pgoto[ 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positive, shift that token. If negative, reduce the rule which 42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang number is the opposite. If YYTABLE_NINF, syntax error. */ 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTABLE_NINF ]b4_table_ninf[ 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_table])[ yytable[] = 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_table[ 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project list of conflicting reductions corresponding to action entry for 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project state STATE-NUM in yytable. 0 means no conflicts. The list in 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyconfl is terminated by a rule number of 0. */ 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_conflict_list_heads])[ yyconflp[] = 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_conflict_list_heads[ 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0, pointed into by YYCONFLP. */ 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]dnl Do not use b4_int_type_for here, since there are places where 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl pointers onto yyconfl are taken, which type is "short int *". 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl We probably ought to introduce a type for confl. 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[static const short int yyconfl[] = 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_conflicting_rules[ 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_check])[ yycheck[] = 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_check[ 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project symbol of state STATE-NUM. */ 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_stos])[ yystos[] = 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_stos[ 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Error token number */ 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTERROR 1 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ 46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_yylloc_default_define[ 46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) 47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])[ 47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_yy_location_print_define[ 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLEX -- calling `yylex' with the right arguments. */ 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_pure_if( 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yynerrs 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yynerrs (yystackp->yyerrcnt) 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yychar 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yychar (yystackp->yyrawchar) 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yylval 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylval (yystackp->yyval) 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yylloc 485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylloc (yystackp->yyloc) 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_if(b4_prefix[], [yy], [], 487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[#define b4_prefix[]nerrs yynerrs 488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]char yychar 489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]lval yylval 490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]lloc yylloc])], 49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[YYSTYPE yylval;]b4_locations_if([[ 49205436638acc7c010349a69c3395f1a57c642dc62Ying WangYYLTYPE yylloc;]])[ 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yynerrs; 495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yychar;])[ 496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int YYEOF = 0; 498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int YYEMPTY = -2; 499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYCHK(YYE) \ 50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ 504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (0)) 505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYFPRINTF 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFPRINTF fprintf 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYDPRINTF(Args) \ 51305436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo { \ 51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yydebug) \ 51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF Args; \ 516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[ 519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 52105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo { \ 52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yydebug) \ 52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { \ 52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%s ", Title); \ 52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_symbol_print (stderr, Type, Value]b4_locuser_args([Location])[); \ 52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); \ 52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Nonzero means print parse trace. It is left uninitialized so that 531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project multiple parsers can coexist. */ 532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yydebug; 533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else /* !]b4_api_PREFIX[DEBUG */ 535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDPRINTF(Args) 537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !]b4_api_PREFIX[DEBUG */ 540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYINITDEPTH -- initial size of the parser's stacks. */ 54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YYINITDEPTH 543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYINITDEPTH ]b4_stack_depth_init[ 544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if the built-in stack extension method is used). 548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Do not make this value too large; the results are undefined if 550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project evaluated with infinite-precision integer arithmetic. */ 552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYMAXDEPTH 554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMAXDEPTH ]b4_stack_depth_max[ 555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Minimum number of free items on the stack allowed after an 558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project allocation. This is to allow allocation and initialization 559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to be completed by functions that call yyexpandGLRStack before the 560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack is expanded, thus insuring that all necessary pointers get 561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project properly redirected to new data. */ 562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYHEADROOM 2 563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYSTACKEXPANDABLE 565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if (! defined __cplusplus \ 56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ 56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)) 568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACKEXPANDABLE 1 569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACKEXPANDABLE 0 571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_RESERVE_GLRSTACK(Yystack) \ 57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang do { \ 57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (Yystack->yyspaceLeft < YYHEADROOM) \ 57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyexpandGLRStack (Yystack); \ 579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_RESERVE_GLRSTACK(Yystack) \ 58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang do { \ 58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (Yystack->yyspaceLeft < YYHEADROOM) \ 58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyMemoryExhausted (Yystack); \ 585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yystpcpy 592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yystpcpy stpcpy 594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDEST. */ 597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic char * 598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyystpcpy (char *yydest, const char *yysrc) 599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yyd = yydest; 601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *yys = yysrc; 602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((*yyd++ = *yys++) != '\0') 604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyd - 1; 607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yytnamerr 612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project quotes and backslashes, so that it's suitable for yyerror. The 614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project heuristic is that double-quoting is unnecessary unless the string 615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project contains an apostrophe, a comma, or backslash (other than 616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backslash-backslash). YYSTR is taken from yytname. If YYRES is 617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project null, do not copy; instead, return the length of what the result 618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project would have been. */ 619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic size_t 620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyytnamerr (char *yyres, const char *yystr) 621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yystr == '"') 623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyn = 0; 625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyp = yystr; 626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (*++yyp) 62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang case '\'': 63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang case ',': 63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto do_not_strip_quotes; 63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang case '\\': 63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*++yyp != '\\') 63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto do_not_strip_quotes; 63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Fall through. */ 63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang default: 63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyres) 64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyres[yyn] = *yyp; 64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn++; 64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang case '"': 64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyres) 64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyres[yyn] = '\0'; 64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyn; 64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do_not_strip_quotes: ; 650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyres) 653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return strlen (yystr); 654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystpcpy (yyres, yystr) - yyres; 656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* !YYERROR_VERBOSE */ 660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** State numbers, as in LALR(1) machine */ 662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef int yyStateNum; 663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Rule numbers, as in LALR(1) machine */ 665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef int yyRuleNum; 666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Grammar symbol */ 668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yySymbol; 669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Item references, as in LALR(1) machine */ 671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yyItemNum; 672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRState yyGLRState; 674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRStateSet yyGLRStateSet; 675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yySemanticOption yySemanticOption; 676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef union yyGLRStackItem yyGLRStackItem; 677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRStack yyGLRStack; 678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRState { 680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag: always true. */ 681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyisState; 682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag for yysemantics. If true, yysval applies, otherwise 683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yyfirstVal applies. */ 684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyresolved; 685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Number of corresponding LALR(1) machine state. */ 686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yylrState; 687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Preceding state in this stack */ 688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yypred; 689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Source position of the first token produced by my symbol */ 690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn; 691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project union { 692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** First in a chain of alternative reductions producing the 693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * non-terminal corresponding to this state, threaded through 694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yynext. */ 695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyfirstVal; 696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Semantic value for this state. */ 697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval; 69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } yysemantics;]b4_locations_if([[ 699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Source location for this state. */ 70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyloc;]])[ 701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRStateSet { 704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yystates; 705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** During nondeterministic operation, yylookaheadNeeds tracks which 706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * stacks have actually needed the current lookahead. During deterministic 707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * operation, yylookaheadNeeds[0] is not maintained since it would merely 708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * duplicate yychar != YYEMPTY. */ 709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool* yylookaheadNeeds; 710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize, yycapacity; 711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yySemanticOption { 714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag: always false. */ 715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyisState; 716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Rule number for this reduction */ 717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum yyrule; 718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** The last RHS state in the list of states to be reduced. */ 719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yystate; 720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** The lookahead for this reduction. */ 721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyrawchar; 72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yyval;]b4_locations_if([[ 72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyloc;]])[ 724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Next sibling in chain of options. To facilitate merging, 725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * options are chained in decreasing order by address. */ 726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yynext; 727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Type of the items in the GLR stack. The yyisState field 730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * indicates which item of the union is valid. */ 731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectunion yyGLRStackItem { 732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState yystate; 733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption yyoption; 734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRStack { 737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyerrState; 738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ /* To compute the location of the error token. */ 739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyerror_range[3];]])[ 740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_pure_if( 741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyerrcnt; 743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyrawchar; 74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yyval;]b4_locations_if([[ 74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyloc;]])[ 746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project])[ 747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYJMP_BUF yyexception_buffer; 748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyitems; 749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynextFree; 750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyspaceLeft; 751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yysplitPoint; 752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yylastDeleted; 753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStateSet yytops; 754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyexpandGLRStack (yyGLRStack* yystackp); 758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) 761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__noreturn__)); 762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) 764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yymsg != YY_NULL) 766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[yymsg); 767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLONGJMP (yystackp->yyexception_buffer, 1); 768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyMemoryExhausted (yyGLRStack* yystackp) 771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__noreturn__)); 772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyMemoryExhausted (yyGLRStack* yystackp) 774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLONGJMP (yystackp->yyexception_buffer, 2); 776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE 779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** A printable representation of TOKEN. */ 780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline const char* 781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyytokenName (yySymbol yytoken) 782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yytoken == YYEMPTY) 784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return ""; 785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytname[yytoken]; 787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting 791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred 792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * containing the pointer to the next state in the chain. */ 793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__)); 794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) 796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int i; 79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *s = yyvsp[yylow0].yystate.yypred; 799cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (i = yylow0-1; i >= yylow1; i -= 1) 800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (s->yyresolved); 802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvsp[i].yystate.yyresolved = yytrue; 80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;]b4_locations_if([[ 80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyvsp[i].yystate.yyloc = s->yyloc;]])[ 805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project s = yyvsp[i].yystate.yypred = s->yypred; 806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in 810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. 811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * For convenience, always return YYLOW1. */ 812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int yyfill (yyGLRStackItem *, int *, int, yybool) 813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__unused__)); 814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int 815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) 816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yynormal && yylow1 < *yylow) 818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfillin (yyvsp, *yylow, yylow1); 820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yylow = yylow1; 821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yylow1; 823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Perform user action for rule number YYN, with RHS length YYRHSLEN, 826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and top stack item YYVSP. YYLVALP points to place to put semantic 827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * value ($$), and yylocp points to place for location information 828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, 829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yyerr for YYERROR, yyabort for YYABORT. */ 830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static YYRESULTTAG 831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, 83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStack* yystackp, 83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE* yyvalp]b4_locuser_formals[) 834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yynormal __attribute__ ((__unused__)) = 83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yystackp->yysplitPoint == YY_NULL); 837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylow; 838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_parse_param_use[]dnl 839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[# undef yyerrok 840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yyerrok (yystackp->yyerrState = 0) 841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYACCEPT 842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYACCEPT return yyaccept 843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYABORT 844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYABORT return yyabort 845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR 846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR return yyerrok, yyerr 847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYRECOVERING 848cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYRECOVERING() (yystackp->yyerrState != 0) 849cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyclearin 850cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yyclearin (yychar = YYEMPTY) 851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYFILL 852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) 853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYBACKUP 85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYBACKUP(Token, Value) \ 855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \ 85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerrok, yyerr 857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 858cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylow = 1; 859cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyrhslen == 0) 860cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyvalp = yyval_default; 861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[ 863cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); 86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yyerror_range[1].yystate.yyloc = *yylocp; 865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])[ 866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 867cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_user_actions[ 869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: break; 870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyerrok 874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYABORT 875cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYACCEPT 876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR 877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYBACKUP 878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyclearin 879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYRECOVERING 880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 882cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) 885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 886cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yy0); 887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yy1); 888cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 890cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_mergers[ 892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: break; 893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Bison grammar-table manipulation. */ 897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yydestruct_generate([b4_c_ansi_function_def])[ 899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Number of symbols composing the right hand side of rule #RULE. */ 901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int 902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyrhsLength (yyRuleNum yyrule) 903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyr2[yyrule]; 905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[) 909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yyresolved) 911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct (yymsg, yystos[yys->yylrState], 91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yys->yysemantics.yysval]b4_locuser_args([&yys->yyloc])[); 913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 914cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 916cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) 91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yys->yysemantics.yyfirstVal) 91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%s unresolved ", yymsg); 92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%s incomplete ", yymsg); 92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_symbol_print (stderr, yystos[yys->yylrState], 92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_NULL]b4_locuser_args([&yys->yyloc])[); 92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yysemantics.yyfirstVal) 92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption *yyoption = yys->yysemantics.yyfirstVal; 93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yyrh; 93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyn; 93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule); 93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn > 0; 93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrh = yyrh->yypred, yyn -= 1) 93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestroyGLRState (yymsg, yyrh]b4_user_args[); 93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 939cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Left-hand-side symbol for rule #RULE. */ 942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yySymbol 943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyylhsNonterm (yyRuleNum yyrule) 944cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 945cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyr1[yyrule]; 946cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 947cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yypact_value_is_default(Yystate) \ 94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ 950cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 951cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** True iff LR state STATE has only a default reduction (regardless 952cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * of token). */ 953cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 954cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisDefaultedState (yyStateNum yystate) 955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yypact_value_is_default (yypact[yystate]); 957cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 958cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 959cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** The default reduction for STATE, assuming it has one. */ 960cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyRuleNum 961cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydefaultAction (yyStateNum yystate) 962cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 963cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yydefact[yystate]; 964cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 965cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yytable_value_is_error(Yytable_value) \ 96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ 968cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 969cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 970cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * Result R means 971cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R < 0: Reduce on rule -R. 972cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R = 0: Error. 973cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R > 0: Shift to state R. 974cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of 975cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * conflicting reductions. 976cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 977cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 978cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyygetLRActions (yyStateNum yystate, int yytoken, 97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang int* yyaction, const short int** yyconflicts) 980cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 981cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyindex = yypact[yystate] + yytoken; 98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypact_value_is_default (yypact[yystate]) 98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken) 984cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 985cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = -yydefact[yystate]; 986cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl; 987cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (! yytable_value_is_error (yytable[yyindex])) 989cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 990cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = yytable[yyindex]; 991cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl + yyconflp[yyindex]; 992cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 993cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 994cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 995cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = 0; 996cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl + yyconflp[yyindex]; 997cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 998cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 999cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1000cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyStateNum 1001cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyLRgotoState (yyStateNum yystate, yySymbol yylhs) 1002cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1003cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyr; 1004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yypgoto[yylhs - YYNTOKENS] + yystate; 1005cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate) 1006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytable[yyr]; 1007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1008cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yydefgoto[yylhs - YYNTOKENS]; 1009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1011cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 1012cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisShiftAction (int yyaction) 1013cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1014cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0 < yyaction; 1015cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1016cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1017cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 1018cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisErrorAction (int yyaction) 1019cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1020cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyaction == 0; 1021cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1022cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* GLRStates */ 1024cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1025cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Return a fresh GLRStackItem. Callers should call 1026cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient 1027cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * headroom. */ 1028cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1029cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyGLRStackItem* 1030cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState) 1031cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1032cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynewItem = yystackp->yynextFree; 1033cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= 1; 1034cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree += 1; 1035cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewItem->yystate.yyisState = yyisState; 1036cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yynewItem; 1037cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1038cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1039cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Add a new semantic action that will execute the action for rule 1040cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * RULENUM on the semantic values in RHS to the list of 1041cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * alternative actions for STATE. Assumes that RHS comes from 1042cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * stack #K of *STACKP. */ 1043cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1044cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate, 104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState* rhs, yyRuleNum yyrule) 1046cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1047cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yynewOption = 1048cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yynewGLRStackItem (yystackp, yyfalse)->yyoption; 1049cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yystate = rhs; 1050cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrule = yyrule; 1051cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yylookaheadNeeds[yyk]) 1052cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1053cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrawchar = yychar; 105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewOption->yyval = yylval;]b4_locations_if([ 105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewOption->yyloc = yylloc;])[ 1056cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1057cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1058cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrawchar = YYEMPTY; 1059cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yynext = yystate->yysemantics.yyfirstVal; 1060cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate->yysemantics.yyfirstVal = yynewOption; 1061cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1062cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_RESERVE_GLRSTACK (yystackp); 1063cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1064cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* GLRStacks */ 1066cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1067cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Initialize SET to a singleton set containing an empty stack. */ 1068cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1069cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyinitStateSet (yyGLRStateSet* yyset) 1070cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1071cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yysize = 1; 1072cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yycapacity = 16; 1073cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); 1074cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyset->yystates) 1075cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyset->yystates[0] = YY_NULL; 1077cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yylookaheadNeeds = 1078cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]); 1079cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyset->yylookaheadNeeds) 1080cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1081cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yystates); 1082cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1083cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1084cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytrue; 1085cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1086cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1087cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyfreeStateSet (yyGLRStateSet* yyset) 1088cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1089cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yystates); 1090cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yylookaheadNeeds); 1091cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1092cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1093cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Initialize STACK to a single empty stack, with total maximum 1094cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * capacity for all stacks of SIZE. */ 1095cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1096cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyinitGLRStack (yyGLRStack* yystackp, size_t yysize) 1097cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1098cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyerrState = 0; 1099cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynerrs = 0; 1100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft = yysize; 1101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyitems = 1102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]); 1103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yystackp->yyitems) 1104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = yystackp->yyitems; 110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yysplitPoint = YY_NULL; 110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yylastDeleted = YY_NULL; 1108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyinitStateSet (&yystackp->yytops); 1109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 1113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 1114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 1115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** If STACK is expandable, extend it. WARNING: Pointers into the 1117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack from outside should be considered invalid after this call. 1118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project We always expand when there are 1 or fewer items left AFTER an 1119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project allocation, so that we can avoid having external pointers exist 1120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project across an allocation. */ 1121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyexpandGLRStack (yyGLRStack* yystackp) 1123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynewItems; 1125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyp0, *yyp1; 112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yynewSize; 1127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyn; 112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysize = yystackp->yynextFree - yystackp->yyitems; 1129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH - YYHEADROOM < yysize) 1130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewSize = 2*yysize; 1132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH < yynewSize) 1133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewSize = YYMAXDEPTH; 1134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); 1135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yynewItems) 1136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize; 1138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0 < yyn; 1139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn -= 1, yyp0 += 1, yyp1 += 1) 1140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyp1 = *yyp0; 1142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*(yybool *) yyp0) 114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState* yys0 = &yyp0->yystate; 114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState* yys1 = &yyp1->yystate; 114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yys0->yypred != YY_NULL) 114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys1->yypred = 114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYRELOC (yyp0, yyp1, yys0->yypred, yystate); 114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULL) 115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys1->yysemantics.yyfirstVal = 115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption); 115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yyv0 = &yyp0->yyoption; 115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yyv1 = &yyp1->yyoption; 115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyv0->yystate != YY_NULL) 115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate); 115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyv0->yynext != YY_NULL) 116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption); 116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yysplitPoint != YY_NULL) 1164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems, 116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yysplitPoint, yystate); 1166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1) 116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yystates[yyn] != YY_NULL) 1169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyn] = 117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYRELOC (yystackp->yyitems, yynewItems, 117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yystates[yyn], yystate); 1172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yystackp->yyitems); 1173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyitems = yynewItems; 1174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = yynewItems + yysize; 1175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft = yynewSize - yysize; 1176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyfreeGLRStack (yyGLRStack* yystackp) 1181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yystackp->yyitems); 1183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfreeStateSet (&yystackp->yytops); 1184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Assuming that S is a GLRState somewhere on STACK, update the 1187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * splitpoint of STACK, if needed, so that it is at least as deep as 1188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * S. */ 1189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys) 1191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yysplitPoint != YY_NULL && yystackp->yysplitPoint > yys) 1193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = yys; 1194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Invalidate stack #K in STACK. */ 1197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyymarkStackDeleted (yyGLRStack* yystackp, size_t yyk) 1199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yystates[yyk] != YY_NULL) 1201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yylastDeleted = yystackp->yytops.yystates[yyk]; 120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yystates[yyk] = YY_NULL; 1203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Undelete the last stack that was marked as deleted. Can only be 1206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project done once after a deletion, and only when all other stacks have 1207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project been deleted. */ 1208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyundeleteLastStack (yyGLRStack* yystackp) 1210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yylastDeleted == YY_NULL || yystackp->yytops.yysize != 0) 1212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 1213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = yystackp->yylastDeleted; 1214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yysize = 1; 1215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); 121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yylastDeleted = YY_NULL; 1217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyremoveDeletes (yyGLRStack* yystackp) 1221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi, yyj; 1223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyi = yyj = 0; 1224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yyj < yystackp->yytops.yysize) 1225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yystates[yyi] == YY_NULL) 122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyi == yyj) 122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Removing dead stacks.\n")); 123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yysize -= 1; 123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi]; 123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* In the current implementation, it's unnecessary to copy 123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yylookaheadNeeds[yyi] since, after 123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyremoveDeletes returns, the parser immediately either enters 124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang deterministic operation or shifts a token. However, it doesn't 124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang hurt, and the code might evolve to need it. */ 124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yylookaheadNeeds[yyj] = 124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yylookaheadNeeds[yyi]; 124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyj != yyi) 124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", 124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyi, (unsigned long int) yyj)); 124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyj += 1; 125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyi += 1; 1252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Shift to a new state on stack #K of STACK, corresponding to LR state 1256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ 1257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, 125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yyposn, 126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE* yyvalp]b4_locations_if([, YYLTYPE* yylocp])[) 1261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; 1263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yylrState = yylrState; 1265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyposn = yyposn; 1266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyresolved = yytrue; 1267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yypred = yystackp->yytops.yystates[yyk]; 126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewState->yysemantics.yysval = *yyvalp;]b4_locations_if([ 126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewState->yyloc = *yylocp;])[ 1270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yynewState; 1271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_RESERVE_GLRSTACK (yystackp); 1273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Shift stack #K of YYSTACK, to a new state corresponding to LR 1276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * state YYLRSTATE, at input position YYPOSN, with the (unresolved) 1277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic value of YYRHS under the action for YYRULE. */ 1278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, 128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) 1281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; 1283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yylrState = yylrState; 1285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyposn = yyposn; 1286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyresolved = yyfalse; 1287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yypred = yystackp->yytops.yystates[yyk]; 128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewState->yysemantics.yyfirstVal = YY_NULL; 1289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yynewState; 1290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Invokes YY_RESERVE_GLRSTACK. */ 1292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyaddDeferredAction (yystackp, yyk, yynewState, rhs, yyrule); 1293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Pop the symbols consumed by reduction #RULE from the top of stack 1296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * #K of STACK, and perform the appropriate semantic action on their 1297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic values. Assumes that all ambiguities in semantic values 1298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * have been previously resolved. Set *VALP to the resulting value, 1299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and *LOCP to the computed location (if any). Return value is as 1300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * for userAction. */ 1301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline YYRESULTTAG 1302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE* yyvalp]b4_locuser_formals[) 1304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyrule); 1306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yysplitPoint == YY_NULL) 1308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Standard special case: single stack. */ 1310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* rhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; 1311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyk == 0); 1312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree -= yynrhs; 1313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += yynrhs; 1314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate; 131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyuserAction (yyrule, yynrhs, rhs, yystackp, 131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyvalp]b4_locuser_args[); 1317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* At present, doAction is never called in nondeterministic 1321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * mode, so this branch is never taken. It is here in 1322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * anticipation of a future feature that will allow immediate 1323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * evaluation of selected actions in nondeterministic mode. */ 1324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 1325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; 1327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred 132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang = yystackp->yytops.yystates[yyk];]b4_locations_if([[ 1329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynrhs == 0) 133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Set default location. */ 133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;]])[ 1332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yynrhs; yyi += 1) 133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys = yys->yypred; 133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYASSERT (yys); 133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyupdateSplit (yystackp, yys); 1338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yys; 1339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, 134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp, yyvalp]b4_locuser_args[); 1341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !]b4_api_PREFIX[DEBUG 1345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Args) 1346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_REDUCE_PRINT(Args) \ 134805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo { \ 134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yydebug) \ 135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yy_reduce_print Args; \ 1351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 1352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------------------------------------------------------. 1354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Report that the RULE is going to be reduced on stack #K. | 1355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------------------------------------------------------*/ 1356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static inline void 1358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyy_reduce_print (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE* yyvalp]b4_locuser_formals[) 1360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyrule); 1362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yynormal __attribute__ ((__unused__)) = 136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yystackp->yysplitPoint == YY_NULL); 1364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; 1365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylow = 1; 1366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYUSE (yyvalp);]b4_locations_if([ 136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYUSE (yylocp);])[ 1369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_parse_param_use[]dnl 1370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n", 137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk, yyrule - 1, 137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyrline[yyrule]); 1373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The symbols being reduced. */ 1374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yynrhs; yyi++) 1375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, " $%d = ", yyi + 1); 1377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang &]b4_rhs_value(yynrhs, yyi + 1)[ 137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl 138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang b4_user_args[); 138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 1382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Pop items off stack #K of STACK according to grammar rule RULE, 1387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and push back on the resulting nonterminal symbol. Perform the 1388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic action associated with RULE and store its value with the 1389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * newly pushed state, if FORCEEVAL or if STACK is currently 1390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * unambiguous. Otherwise, store the deferred semantic action with 1391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the new state. If the new state would have an identical input 1392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * position, LR state, and predecessor to an existing state on the stack, 1393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * it is identified with that existing state, eliminating stack #K from 1394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the STACK. In this case, the (necessarily deferred) semantic value is 1395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * added to the options for the existing state's semantic value. 1396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 1397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline YYRESULTTAG 1398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yybool yyforceEval]b4_user_formals[) 1400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn; 1402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyforceEval || yystackp->yysplitPoint == YY_NULL) 1404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yysval;]b4_locations_if([ 140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyloc;])[ 1407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_REDUCE_PRINT ((yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); 140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); 1410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc); 1411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (yystackp, yyk, 141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState, 141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylhsNonterm (yyrule)), 141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyposn, &yysval]b4_locations_if([, &yyloc])[); 1415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi; 1419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk]; 1421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yynewLRState; 1422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule); 142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 0 < yyn; yyn -= 1) 142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys = yys->yypred; 142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYASSERT (yys); 142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyupdateSplit (yystackp, yys); 1430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule)); 1431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, 143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n", 143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk, yyrule - 1, yynewLRState)); 1434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) 143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULL) 143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yysplit = yystackp->yysplitPoint; 143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yyp = yystackp->yytops.yystates[yyi]; 143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn) 144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyp->yylrState == yynewLRState && yyp->yypred == yys) 144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule); 144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymarkStackDeleted (yystackp, yyk); 144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", 144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk, 144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyi)); 144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyok; 144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp = yyp->yypred; 145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yys; 1454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule); 1455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic size_t 1460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyysplitStack (yyGLRStack* yystackp, size_t yyk) 1461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yysplitPoint == YY_NULL) 1463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyk == 0); 1465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = yystackp->yytops.yystates[yyk]; 1466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity) 1468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yynewStates; 1470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool* yynewLookaheadNeeds; 1471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynewStates = YY_NULL; 1473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yycapacity 147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang > (YYSIZEMAX / (2 * sizeof yynewStates[0]))) 147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyMemoryExhausted (yystackp); 1477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yycapacity *= 2; 1478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewStates = 148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yyGLRState**) YYREALLOC (yystackp->yytops.yystates, 148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yystackp->yytops.yycapacity 148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * sizeof yynewStates[0])); 148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yynewStates == YY_NULL) 148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyMemoryExhausted (yystackp); 1485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates = yynewStates; 1486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewLookaheadNeeds = 148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds, 148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (yystackp->yytops.yycapacity 149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * sizeof yynewLookaheadNeeds[0])); 149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yynewLookaheadNeeds == YY_NULL) 149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyMemoryExhausted (yystackp); 1493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds; 1494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yystackp->yytops.yysize] 1496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = yystackp->yytops.yystates[yyk]; 1497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize] 1498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = yystackp->yytops.yylookaheadNeeds[yyk]; 1499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yysize += 1; 1500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystackp->yytops.yysize-1; 1501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** True iff Y0 and Y1 represent identical options at the top level. 1504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * That is, they represent the same rule applied to RHS symbols 1505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * that produce the same terminal symbols. */ 1506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1) 1508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyy0->yyrule == yyy1->yyrule) 1510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys0, *yys1; 1512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, 151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn = yyrhsLength (yyy0->yyrule); 151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn > 0; 151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) 151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yys0->yyposn != yys1->yyposn) 151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyfalse; 1519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytrue; 1520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Assuming identicalOptions (Y0,Y1), destructively merge the 1526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * alternative semantic values for the RHS-symbols of Y1 and Y0. */ 1527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) 1529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys0, *yys1; 1531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, 1533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yyrhsLength (yyy0->yyrule); 1534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn > 0; 1535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) 1536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys0 == yys1) 153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 1539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yys0->yyresolved) 154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys1->yyresolved = yytrue; 154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys1->yysemantics.yysval = yys0->yysemantics.yysval; 154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yys1->yyresolved) 154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys0->yyresolved = yytrue; 154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys0->yysemantics.yysval = yys1->yysemantics.yysval; 154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 155005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal; 155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal; 155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (YYID (yytrue)) 155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyz1 == *yyz0p || yyz1 == YY_NULL) 155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (*yyz0p == YY_NULL) 155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yyz0p = yyz1; 156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (*yyz0p < yyz1) 156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yyz = *yyz0p; 156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yyz0p = yyz1; 156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyz1 = yyz1->yynext; 156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (*yyz0p)->yynext = yyz; 156805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 156905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyz0p = &(*yyz0p)->yynext; 157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 157105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal; 157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Y0 and Y1 represent two possible actions to take in a given 1577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * parsing state; return 0 if no combination is possible, 1578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ 1579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic int 1580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypreference (yySemanticOption* y0, yySemanticOption* y1) 1581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule; 1583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int p0 = yydprec[r0], p1 = yydprec[r1]; 1584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 == p1) 1586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1]) 158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 0; 1589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang return 1; 1591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 == 0 || p1 == 0) 1593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 1594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 < p1) 1595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 3; 1596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p1 < p0) 1597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 2; 1598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 1599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG yyresolveValue (yyGLRState* yys, 160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStack* yystackp]b4_user_formals[); 1603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the previous N states starting at and including state S. If result 1606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * != yyok, some states may have been left unresolved possibly with empty 1607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic option chains. Regardless of whether result = yyok, each state 1608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * has been left with consistent data so that yydestroyGLRState can be invoked 1609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * if necessary. */ 1610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveStates (yyGLRState* yys, int yyn, 161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStack* yystackp]b4_user_formals[) 1613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn) 1615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yys->yypred); 1617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp]b4_user_args[)); 1618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yys->yyresolved) 161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yyresolveValue (yys, yystackp]b4_user_args[)); 1620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the states for the RHS of OPT, perform its user action, and return 1625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the semantic value and location. Regardless of whether result = yyok, all 1626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * RHS states have been destroyed (assuming the user action destroys all RHS 1627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic values if invoked). */ 1628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp, 163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE* yyvalp]b4_locuser_formals[) 1631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; 163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yynrhs = yyrhsLength (yyopt->yyrule); 163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYRESULTTAG yyflag = 163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyresolveStates (yyopt->yystate, yynrhs, yystackp]b4_user_args[); 1636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag != yyok) 1637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys; 1639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1) 164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); 1641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;]b4_locations_if([[ 1645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynrhs == 0) 1646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Set default location. */ 1647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;]])[ 164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 164905436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychar_current = yychar; 165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yylval_current = yylval;]b4_locations_if([ 165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yylloc_current = yylloc;])[ 165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yyopt->yyrawchar; 165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yyopt->yyval;]b4_locations_if([ 165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yyopt->yyloc;])[ 165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyflag = yyuserAction (yyopt->yyrule, yynrhs, 165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, 165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp, yyvalp]b4_locuser_args[); 165805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yychar_current; 165905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yylval_current;]b4_locations_if([ 166005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yylloc_current;])[ 166105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 166505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 1666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportTree (yySemanticOption* yyx, int yyindent) 1668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyx->yyrule); 1670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 1671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yystates[1 + YYMAXRHS]; 1673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState yyleftmost_state; 1674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred) 1676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[yyi] = yys; 167705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yys == YY_NULL) 1678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyleftmost_state.yyposn = 0; 1680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[0] = &yyleftmost_state; 1681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[0] = yys; 1684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyx->yystate->yyposn < yys->yyposn + 1) 1686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n", 168705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), 168805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyx->yyrule - 1); 1689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n", 169105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), 169205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1), 169305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyx->yystate->yyposn); 1694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 1; yyi <= yynrhs; yyi += 1) 1695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates[yyi]->yyresolved) 169705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 169805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn) 169905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "", 170005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1])); 170105436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 170205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "", 170305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]), 170405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) (yystates[yyi - 1]->yyposn + 1), 170505436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yystates[yyi]->yyposn); 170605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 170805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2); 1709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static YYRESULTTAG 1714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportAmbiguity (yySemanticOption* yyx0, 171505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yyx1]b4_pure_formals[) 1716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyx0); 1718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyx1); 1719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 172005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 1721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Ambiguity detected.\n"); 1722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Option 1,\n"); 1723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportTree (yyx0, 2); 1724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\nOption 2,\n"); 1725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportTree (yyx1, 2); 1726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); 1727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[YY_("syntax is ambiguous")); 1730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyabort; 173105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}]b4_locations_if([[ 1732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Starting at and including state S1, resolve the location for each of the 1734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * previous N1 states that is unresolved. The first semantic option of a state 1735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * is always chosen. */ 1736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveLocations (yyGLRState* yys1, int yyn1, 173805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStack *yystackp]b4_user_formals[) 1739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn1) 1741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp]b4_user_args[); 1743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yys1->yyresolved) 174405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 174505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStackItem yyrhsloc[1 + YYMAXRHS]; 174605436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yynrhs; 174705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal; 174805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYASSERT (yyoption != YY_NULL); 174905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynrhs = yyrhsLength (yyoption->yyrule); 175005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yynrhs > 0) 175105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 175205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yys; 175305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyn; 175405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyresolveLocations (yyoption->yystate, yynrhs, 175505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp]b4_user_args[); 175605436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yys = yyoption->yystate, yyn = yynrhs; 175705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyn > 0; 175805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys = yys->yypred, yyn -= 1) 175905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrhsloc[yyn].yystate.yyloc = yys->yyloc; 176005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 176105436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 176205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 176305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Both yyresolveAction and yyresolveLocations traverse the GSS 176405436638acc7c010349a69c3395f1a57c642dc62Ying Wang in reverse rightmost order. It is only necessary to invoke 176505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyresolveLocations on a subforest for which yyresolveAction 176605436638acc7c010349a69c3395f1a57c642dc62Ying Wang would have been invoked next had an ambiguity not been 176705436638acc7c010349a69c3395f1a57c642dc62Ying Wang detected. Thus the location of the previous state (but not 176805436638acc7c010349a69c3395f1a57c642dc62Ying Wang necessarily the previous state itself) is guaranteed to be 176905436638acc7c010349a69c3395f1a57c642dc62Ying Wang resolved already. */ 177005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yyprevious = yyoption->yystate; 177105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrhsloc[0].yystate.yyloc = yyprevious->yyloc; 177205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 177305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 177405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychar_current = yychar; 177505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yylval_current = yylval; 177605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yylloc_current = yylloc; 177705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yyoption->yyrawchar; 177805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yyoption->yyval; 177905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yyoption->yyloc; 178005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs); 178105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yychar_current; 178205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yylval_current; 178305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yylloc_current; 178405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 178505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 178705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}]])[ 1788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the ambiguity represented in state S, perform the indicated 1790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * actions, and set the semantic value of S. If result != yyok, the chain of 1791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic options in S has been cleared instead or it has been left 1792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * unmodified except that redundant options may have been removed. Regardless 1793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * of whether result = yyok, S has been left with consistent data so that 1794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yydestroyGLRState can be invoked if necessary. */ 1795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) 1797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal; 179905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySemanticOption* yybest = yyoptionList; 1800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption** yypp; 180105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yybool yymerge = yyfalse; 1802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval; 180305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYRESULTTAG yyflag;]b4_locations_if([ 180405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE *yylocp = &yys->yyloc;])[ 1805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 180605436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yypp = &yyoptionList->yynext; *yypp != YY_NULL; ) 1807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyp = *yypp; 1809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyidenticalOptions (yybest, yyp)) 181105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 181205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymergeOptionSets (yybest, yyp); 181305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yypp = yyp->yynext; 181405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 181605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 181705436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (yypreference (yybest, yyp)) 181805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 181905436638acc7c010349a69c3395f1a57c642dc62Ying Wang case 0:]b4_locations_if([[ 182005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyresolveLocations (yys, 1, yystackp]b4_user_args[);]])[ 182105436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyreportAmbiguity (yybest, yyp]b4_pure_args[); 182205436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 182305436638acc7c010349a69c3395f1a57c642dc62Ying Wang case 1: 182405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymerge = yytrue; 182505436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 182605436638acc7c010349a69c3395f1a57c642dc62Ying Wang case 2: 182705436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 182805436638acc7c010349a69c3395f1a57c642dc62Ying Wang case 3: 182905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yybest = yyp; 183005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymerge = yyfalse; 183105436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 183205436638acc7c010349a69c3395f1a57c642dc62Ying Wang default: 183305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* This cannot happen so it is not worth a YYASSERT (yyfalse), 183405436638acc7c010349a69c3395f1a57c642dc62Ying Wang but some compilers complain if the default case is 183505436638acc7c010349a69c3395f1a57c642dc62Ying Wang omitted. */ 183605436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 183705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 183805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypp = &yyp->yynext; 183905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymerge) 1843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyp; 1845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyprec = yydprec[yybest->yyrule]; 184605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args[); 1847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag == yyok) 184805436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyp = yybest->yynext; yyp != YY_NULL; yyp = yyp->yynext) 184905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 185005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyprec == yydprec[yyp->yyrule]) 185105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 185205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYSTYPE yysval_other;]b4_locations_if([ 185305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yydummy;])[ 185405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyflag = yyresolveAction (yyp, yystackp, &yysval_other]b4_locuser_args([&yydummy])[); 185505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyflag != yyok) 185605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 185705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct ("Cleanup: discarding incompletely merged value for", 185805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystos[yys->yylrState], 185905436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yysval]b4_locuser_args[); 186005436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 186105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 186205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); 186305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 186405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 186705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args([yylocp])[); 1868cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag == yyok) 1870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yyresolved = yytrue; 1872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yysemantics.yysval = yysval; 1873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 187505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys->yysemantics.yyfirstVal = YY_NULL; 1876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveStack (yyGLRStack* yystackp]b4_user_formals[) 1881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 188205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yysplitPoint != YY_NULL) 1883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1886cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyn = 0, yys = yystackp->yytops.yystates[0]; 188805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys != yystackp->yysplitPoint; 188905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys = yys->yypred, yyn += 1) 189005436638acc7c010349a69c3395f1a57c642dc62Ying Wang continue; 1891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp 189205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_user_args[)); 1893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyycompressStack (yyGLRStack* yystackp) 1899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yyp, *yyq, *yyr; 1901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 190205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULL) 1903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 1904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 190505436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULL; 1906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp != yystackp->yysplitPoint; 1907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yyp, yyp = yyq, yyq = yyp->yypred) 1908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp->yypred = yyr; 1909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems; 1911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1; 1912cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems; 191305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yysplitPoint = YY_NULL; 191405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yylastDeleted = YY_NULL; 1915cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 191605436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (yyr != YY_NULL) 1917cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1918cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree->yystate = *yyr; 1919cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yyr->yypred; 1920cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate; 1921cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate; 1922cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree += 1; 1923cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= 1; 1924cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyprocessOneStack (yyGLRStack* yystackp, size_t yyk, 192905436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yyposn]b4_pure_formals[) 1930cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1931cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyaction; 1932cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const short int* yyconflicts; 1933cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum yyrule; 1934cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 193505436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (yystackp->yytops.yystates[yyk] != YY_NULL) 1936cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1937cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState; 1938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack %lu Entering state %d\n", 193905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk, yystate)); 1940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yystate != YYFINAL); 1942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyisDefaultedState (yystate)) 194405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 194505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrule = yydefaultAction (yystate); 194605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyrule == 0) 194705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 194805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Stack %lu dies.\n", 194905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk)); 195005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymarkStackDeleted (yystackp, yyk); 195105436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyok; 195205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 195305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yyglrReduce (yystackp, yyk, yyrule, yyfalse]b4_user_args[)); 195405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 1955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 195605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 195705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySymbol yytoken; 195805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yylookaheadNeeds[yyk] = yytrue; 195905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == YYEMPTY) 196005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 196105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Reading a token: ")); 196205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYLEX; 196305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 196405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 196505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar <= YYEOF) 196605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 196705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yytoken = YYEOF; 196805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Now at end of input.\n")); 196905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 197005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 197105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 197205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = YYTRANSLATE (yychar); 197305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 197405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 197505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 197605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); 197705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 197805436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (*yyconflicts != 0) 197905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 198005436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yynewStack = yysplitStack (yystackp, yyk); 198105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", 198205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yynewStack, 198305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk)); 198405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yyglrReduce (yystackp, yynewStack, 198505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *yyconflicts, yyfalse]b4_user_args[)); 198605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yyprocessOneStack (yystackp, yynewStack, 198705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyposn]b4_pure_args[)); 198805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyconflicts += 1; 198905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 199005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 199105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyisShiftAction (yyaction)) 199205436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 199305436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (yyisErrorAction (yyaction)) 199405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 199505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Stack %lu dies.\n", 199605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyk)); 199705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymarkStackDeleted (yystackp, yyk); 199805436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 199905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 200005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 200105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK (yyglrReduce (yystackp, yyk, -yyaction, 200205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyfalse]b4_user_args[)); 200305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2005cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 2006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2008cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 2009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[) 2010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 201105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yyerrState != 0) 201205436638acc7c010349a69c3395f1a57c642dc62Ying Wang return; 201305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ! YYERROR_VERBOSE 201405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_lyyerror_args[YY_("syntax error")); 201505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else 201605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 201705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 201805436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysize0 = yytnamerr (YY_NULL, yytokenName (yytoken)); 201905436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysize = yysize0; 202005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yybool yysize_overflow = yyfalse; 202105436638acc7c010349a69c3395f1a57c642dc62Ying Wang char* yymsg = YY_NULL; 202205436638acc7c010349a69c3395f1a57c642dc62Ying Wang enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 202305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Internationalized format string. */ 202405436638acc7c010349a69c3395f1a57c642dc62Ying Wang const char *yyformat = YY_NULL; 202505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Arguments of yyformat. */ 202605436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 202705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Number of reported tokens (one for the "unexpected", one per 202805436638acc7c010349a69c3395f1a57c642dc62Ying Wang "expected"). */ 202905436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yycount = 0; 203005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 203105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* There are many possibilities here to consider: 203205436638acc7c010349a69c3395f1a57c642dc62Ying Wang - If this state is a consistent state with a default action, then 203305436638acc7c010349a69c3395f1a57c642dc62Ying Wang the only way this function was invoked is if the default action 203405436638acc7c010349a69c3395f1a57c642dc62Ying Wang is an error action. In that case, don't check for expected 203505436638acc7c010349a69c3395f1a57c642dc62Ying Wang tokens because there are none. 203605436638acc7c010349a69c3395f1a57c642dc62Ying Wang - The only way there can be no lookahead present (in yychar) is if 203705436638acc7c010349a69c3395f1a57c642dc62Ying Wang this state is a consistent state with a default action. Thus, 203805436638acc7c010349a69c3395f1a57c642dc62Ying Wang detecting the absence of a lookahead is sufficient to determine 203905436638acc7c010349a69c3395f1a57c642dc62Ying Wang that there is no unexpected or expected token to report. In that 204005436638acc7c010349a69c3395f1a57c642dc62Ying Wang case, just report a simple "syntax error". 204105436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Don't assume there isn't a lookahead just because this state is a 204205436638acc7c010349a69c3395f1a57c642dc62Ying Wang consistent state with a default action. There might have been a 204305436638acc7c010349a69c3395f1a57c642dc62Ying Wang previous inconsistent state, consistent state with a non-default 204405436638acc7c010349a69c3395f1a57c642dc62Ying Wang action, or user semantic action that manipulated yychar. 204505436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Of course, the expected token list depends on states to have 204605436638acc7c010349a69c3395f1a57c642dc62Ying Wang correct lookahead information, and it depends on the parser not 204705436638acc7c010349a69c3395f1a57c642dc62Ying Wang to perform extra reductions after fetching a lookahead from the 204805436638acc7c010349a69c3395f1a57c642dc62Ying Wang scanner and before detecting a syntax error. Thus, state merging 204905436638acc7c010349a69c3395f1a57c642dc62Ying Wang (from LALR or IELR) and default reductions corrupt the expected 205005436638acc7c010349a69c3395f1a57c642dc62Ying Wang token list. However, the list is correct for canonical LR with 205105436638acc7c010349a69c3395f1a57c642dc62Ying Wang one exception: it will still contain any token that will not be 205205436638acc7c010349a69c3395f1a57c642dc62Ying Wang accepted due to an error action in a later state. 205305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */ 205405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytoken != YYEMPTY) 2055cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 205605436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyn = yypact[yystackp->yytops.yystates[0]->yylrState]; 205705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytokenName (yytoken); 205805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yypact_value_is_default (yyn)) 205905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 206005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Start YYX at -YYN if negative to avoid negative indexes in 206105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHECK. In other words, skip the first -YYN actions for this 206205436638acc7c010349a69c3395f1a57c642dc62Ying Wang state because they are default actions. */ 206305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxbegin = yyn < 0 ? -yyn : 0; 206405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Stay within bounds of both yycheck and yytname. */ 206505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychecklim = YYLAST - yyn + 1; 206605436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 206705436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyx; 206805436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyx = yyxbegin; yyx < yyxend; ++yyx) 206905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 207005436638acc7c010349a69c3395f1a57c642dc62Ying Wang && !yytable_value_is_error (yytable[yyx + yyn])) 207105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 207205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 207305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 207405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yycount = 1; 207505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysize0; 207605436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 207705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 207805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytokenName (yyx); 207905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 208005436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysz = yysize + yytnamerr (YY_NULL, yytokenName (yyx)); 208105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize_overflow |= yysz < yysize; 208205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysz; 208305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 208405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 208505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 208605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 208705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 208805436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (yycount) 208905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 209005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYCASE_(N, S) \ 209105436638acc7c010349a69c3395f1a57c642dc62Ying Wang case N: \ 209205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat = S; \ 209305436638acc7c010349a69c3395f1a57c642dc62Ying Wang break 209405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(0, YY_("syntax error")); 209505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(1, YY_("syntax error, unexpected %s")); 209605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 209705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 209805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 209905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 210005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef YYCASE_ 2101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 210205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 210305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 210405436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysz = yysize + strlen (yyformat); 210505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize_overflow |= yysz < yysize; 210605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yysize = yysz; 210705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 210805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 210905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yysize_overflow) 211005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yymsg = (char *) YYMALLOC (yysize); 211105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 211205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yymsg) 211305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 211405436638acc7c010349a69c3395f1a57c642dc62Ying Wang char *yyp = yymsg; 211505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyi = 0; 211605436638acc7c010349a69c3395f1a57c642dc62Ying Wang while ((*yyp = *yyformat)) 211705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 211805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 211905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 212005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp += yytnamerr (yyp, yyarg[yyi++]); 212105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat += 2; 212205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 212305436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 212405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 212505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp++; 212605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat++; 212705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 212805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 212905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_lyyerror_args[yymsg); 213005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFREE (yymsg); 213105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 213205436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 213305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 213405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror (]b4_lyyerror_args[YY_("syntax error")); 213505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyMemoryExhausted (yystackp); 213605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 213705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 213805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* YYERROR_VERBOSE */ 213905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yynerrs += 1; 2140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, 2143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval, and yylloc are the syntactic category, semantic value, and location 214405436638acc7c010349a69c3395f1a57c642dc62Ying Wang of the lookahead. */ 2145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 2146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[) 2147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyk; 2149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyj; 2150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yyerrState == 3) 2152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* We just shifted the error token and (perhaps) took some 2153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reductions. Skip tokens until we can proceed. */ 2154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 215605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySymbol yytoken; 215705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == YYEOF) 215805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyFail (yystackp][]b4_lpure_args[, YY_NULL); 215905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != YYEMPTY) 216005436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_locations_if([[ 216105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* We throw away the lookahead, but the error range 216205436638acc7c010349a69c3395f1a57c642dc62Ying Wang of the shifted error token must take it into account. */ 216305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yys = yystackp->yytops.yystates[0]; 216405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRStackItem yyerror_range[3]; 216505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[1].yystate.yyloc = yys->yyloc; 216605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[2].yystate.yyloc = yylloc; 216705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);]])[ 216805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = YYTRANSLATE (yychar); 216905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct ("Error: discarding", 217005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken, &yylval]b4_locuser_args([&yylloc])[); 217105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 217205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Reading a token: ")); 217305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYLEX; 217405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar <= YYEOF) 217505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 217605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yytoken = YYEOF; 217705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Now at end of input.\n")); 217805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 217905436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 218005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 218105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = YYTRANSLATE (yychar); 218205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 218305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 218405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyj = yypact[yystackp->yytops.yystates[0]->yylrState]; 218505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yypact_value_is_default (yyj)) 218605436638acc7c010349a69c3395f1a57c642dc62Ying Wang return; 218705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyj += yytoken; 218805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken) 218905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 219005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0) 219105436638acc7c010349a69c3395f1a57c642dc62Ying Wang return; 219205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 219305436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (! yytable_value_is_error (yytable[yyj])) 219405436638acc7c010349a69c3395f1a57c642dc62Ying Wang return; 2195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Reduce to one stack. */ 2198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1) 219905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yystates[yyk] != YY_NULL) 2200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyk >= yystackp->yytops.yysize) 220205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyFail (yystackp][]b4_lpure_args[, YY_NULL); 2203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1) 2204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymarkStackDeleted (yystackp, yyk); 2205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyremoveDeletes (yystackp); 2206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yycompressStack (yystackp); 2207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Now pop stack until we find a state that shifts the error token. */ 2209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyerrState = 3; 221005436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (yystackp->yytops.yystates[0] != YY_NULL) 2211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys = yystackp->yytops.yystates[0]; 2213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj = yypact[yys->yylrState]; 221405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! yypact_value_is_default (yyj)) 221505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 221605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyj += YYTERROR; 221705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR 221805436638acc7c010349a69c3395f1a57c642dc62Ying Wang && yyisShiftAction (yytable[yyj])) 221905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 222005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Shift the error token. */]b4_locations_if([[ 222105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* First adjust its location.*/ 222205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLTYPE yyerrloc; 222305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yyerror_range[2].yystate.yyloc = yylloc; 222405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);]])[ 222505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], 222605436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yylval, &yyerrloc); 222705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyglrShift (yystackp, 0, yytable[yyj], 222805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys->yyposn, &yylval]b4_locations_if([, &yyerrloc])[); 222905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yys = yystackp->yytops.yystates[0]; 223005436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 223105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 223205436638acc7c010349a69c3395f1a57c642dc62Ying Wang }]b4_locations_if([[ 223305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ 223405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yys->yypred != YY_NULL) 223505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestroyGLRState ("Error: popping", yys]b4_user_args[); 2236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = yys->yypred; 2237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree -= 1; 2238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += 1; 2239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 224005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystackp->yytops.yystates[0] == YY_NULL) 224105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyFail (yystackp][]b4_lpure_args[, YY_NULL); 2242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 224405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYCHK1(YYE) \ 224505436638acc7c010349a69c3395f1a57c642dc62Ying Wang do { \ 224605436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (YYE) { \ 224705436638acc7c010349a69c3395f1a57c642dc62Ying Wang case yyok: \ 224805436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; \ 224905436638acc7c010349a69c3395f1a57c642dc62Ying Wang case yyabort: \ 225005436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyabortlab; \ 225105436638acc7c010349a69c3395f1a57c642dc62Ying Wang case yyaccept: \ 225205436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyacceptlab; \ 225305436638acc7c010349a69c3395f1a57c642dc62Ying Wang case yyerr: \ 225405436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyuser_error; \ 225505436638acc7c010349a69c3395f1a57c642dc62Ying Wang default: \ 225605436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yybuglab; \ 225705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } \ 2258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 2259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------. 2262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyparse. | 2263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------*/ 2264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ 2266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyresult; 2268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack yystack; 2269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack* const yystackp = &yystack; 2270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn; 2271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Starting parse\n")); 2273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYEMPTY; 227505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylval = yyval_default;]b4_locations_if([ 227605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yylloc = yyloc_default;])[ 227705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]m4_ifdef([b4_initial_action], [ 227805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_pushdef([yylval], [], [yylloc])dnl 227905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* User initialization code. */ 228005436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_user_initial_action 228105436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_popdef])[]dnl 2282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 2283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyinitGLRStack (yystackp, YYINITDEPTH)) 2284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyexhaustedlab; 2285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (YYSETJMP (yystack.yyexception_buffer)) 2286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 0: break; 2288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 1: goto yyabortlab; 2289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 2: goto yyexhaustedlab; 2290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: goto yybuglab; 2291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 229205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyglrShift (&yystack, 0, 0, 0, &yylval]b4_locations_if([, &yylloc])[); 2293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn = 0; 2294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* For efficiency, we have two loops, the first of which is 229805436638acc7c010349a69c3395f1a57c642dc62Ying Wang specialized to deterministic operation (single stack, no 229905436638acc7c010349a69c3395f1a57c642dc62Ying Wang potential ambiguity). */ 2300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Standard mode */ 2301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 230205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 230305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyRuleNum yyrule; 230405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyaction; 230505436638acc7c010349a69c3395f1a57c642dc62Ying Wang const short int* yyconflicts; 230605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 230705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; 230805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 230905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystate == YYFINAL) 231005436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyacceptlab; 231105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyisDefaultedState (yystate)) 231205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 231305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyrule = yydefaultAction (yystate); 231405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyrule == 0) 231505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 231605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 231705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyreportSyntaxError (&yystack]b4_user_args[); 231805436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyuser_error; 231905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 232005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[)); 232105436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 232205436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 232305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 232405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySymbol yytoken; 232505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == YYEMPTY) 232605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 232705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Reading a token: ")); 232805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYLEX; 232905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 233005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 233105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar <= YYEOF) 233205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 233305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yytoken = YYEOF; 233405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Now at end of input.\n")); 233505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 233605436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 233705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 233805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = YYTRANSLATE (yychar); 233905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 234005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 234105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 234205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); 234305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (*yyconflicts != 0) 234405436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 234505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyisShiftAction (yyaction)) 234605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 234705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 234805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYEMPTY; 234905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyposn += 1; 235005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyglrShift (&yystack, 0, yyaction, yyposn, &yylval]b4_locations_if([, &yylloc])[); 235105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (0 < yystack.yyerrState) 235205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystack.yyerrState -= 1; 235305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 235405436638acc7c010349a69c3395f1a57c642dc62Ying Wang else if (yyisErrorAction (yyaction)) 235505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 235605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 235705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyreportSyntaxError (&yystack]b4_user_args[); 235805436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyuser_error; 235905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 236005436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 236105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[)); 236205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 236305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 236605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 236705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yySymbol yytoken_to_shift; 236805436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yys; 236905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 237005436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 237105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; 237205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 237305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* yyprocessOneStack returns one of three things: 237405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 237505436638acc7c010349a69c3395f1a57c642dc62Ying Wang - An error flag. If the caller is yyprocessOneStack, it 237605436638acc7c010349a69c3395f1a57c642dc62Ying Wang immediately returns as well. When the caller is finally 237705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyparse, it jumps to an error label via YYCHK1. 237805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 237905436638acc7c010349a69c3395f1a57c642dc62Ying Wang - yyok, but yyprocessOneStack has invoked yymarkStackDeleted 238005436638acc7c010349a69c3395f1a57c642dc62Ying Wang (&yystack, yys), which sets the top state of yys to NULL. Thus, 238105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyparse's following invocation of yyremoveDeletes will remove 238205436638acc7c010349a69c3395f1a57c642dc62Ying Wang the stack. 238305436638acc7c010349a69c3395f1a57c642dc62Ying Wang 238405436638acc7c010349a69c3395f1a57c642dc62Ying Wang - yyok, when ready to shift a token. 238505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 238605436638acc7c010349a69c3395f1a57c642dc62Ying Wang Except in the first case, yyparse will invoke yyremoveDeletes and 238705436638acc7c010349a69c3395f1a57c642dc62Ying Wang then shift the next token onto all remaining stacks. This 238805436638acc7c010349a69c3395f1a57c642dc62Ying Wang synchronization of the shift (that is, after all preceding 238905436638acc7c010349a69c3395f1a57c642dc62Ying Wang reductions on all stacks) helps prevent double destructor calls 239005436638acc7c010349a69c3395f1a57c642dc62Ying Wang on yylval in the event of memory exhaustion. */ 239105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 239205436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 239305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn]b4_lpure_args[)); 239405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyremoveDeletes (&yystack); 239505436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystack.yytops.yysize == 0) 239605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 239705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyundeleteLastStack (&yystack); 239805436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystack.yytops.yysize == 0) 239905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); 240005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); 240105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); 240205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 240305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyreportSyntaxError (&yystack]b4_user_args[); 240405436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyuser_error; 240505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 240605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 240705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* If any yyglrShift call fails, it will fail after shifting. Thus, 240805436638acc7c010349a69c3395f1a57c642dc62Ying Wang a copy of yylval will already be on stack 0 in the event of a 240905436638acc7c010349a69c3395f1a57c642dc62Ying Wang failure in the following loop. Thus, yychar is set to YYEMPTY 241005436638acc7c010349a69c3395f1a57c642dc62Ying Wang before the loop to make sure the user destructor for yylval isn't 241105436638acc7c010349a69c3395f1a57c642dc62Ying Wang called twice. */ 241205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken_to_shift = YYTRANSLATE (yychar); 241305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = YYEMPTY; 241405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyposn += 1; 241505436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 241605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 241705436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyaction; 241805436638acc7c010349a69c3395f1a57c642dc62Ying Wang const short int* yyconflicts; 241905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState; 242005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yygetLRActions (yystate, yytoken_to_shift, &yyaction, 242105436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yyconflicts); 242205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Note that yyconflicts were handled by yyprocessOneStack. */ 242305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys)); 242405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc); 242505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyglrShift (&yystack, yys, yyaction, yyposn, 242605436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yylval]b4_locations_if([, &yylloc])[); 242705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Stack %lu now in state #%d\n", 242805436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yys, 242905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystack.yytops.yystates[yys]->yylrState)); 243005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 243105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 243205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystack.yytops.yysize == 1) 243305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 243405436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); 243505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); 243605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yycompressStack (&yystack); 243705436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 243805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 243905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 2441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyuser_error: 2442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrecoverSyntaxError (&yystack]b4_user_args[); 2443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn = yystack.yytops.yystates[0]->yyposn; 2444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyacceptlab: 2447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 0; 2448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybuglab: 2451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyfalse); 2452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyabortlab; 2453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyabortlab: 2455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 1; 2456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyexhaustedlab: 2459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_lyyerror_args[YY_("memory exhausted")); 2460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 2; 2461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreturn: 246405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != YYEMPTY) 2465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Cleanup: discarding lookahead", 246605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYTRANSLATE (yychar), &yylval]b4_locuser_args([&yylloc])[); 2467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If the stack is well-formed, pop the stack until it is empty, 2469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project destroying its entries as we go. But free the stack regardless 2470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of whether it is well-formed. */ 2471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystack.yyitems) 2472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yystates = yystack.yytops.yystates; 2474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates) 247505436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 247605436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yysize = yystack.yytops.yysize; 247705436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yyk; 247805436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (yyk = 0; yyk < yysize; yyk += 1) 247905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystates[yyk]) 248005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 248105436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (yystates[yyk]) 248205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 248305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyGLRState *yys = yystates[yyk]; 248405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] 248505436638acc7c010349a69c3395f1a57c642dc62Ying Wang)[ if (yys->yypred != YY_NULL) 248605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); 248705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystates[yyk] = yys->yypred; 248805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystack.yynextFree -= 1; 248905436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystack.yyspaceLeft += 1; 249005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 249105436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 249205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 249305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfreeGLRStack (&yystack); 2495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Make sure YYID is used. */ 2498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return YYID (yyresult); 2499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* DEBUGGING ONLY */ 250205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 2503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yypstack (yyGLRStack* yystackp, size_t yyk) 2504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__unused__)); 2505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yypdumpstack (yyGLRStack* yystackp) __attribute__ ((__unused__)); 2506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyy_yypstack (yyGLRState* yys) 2509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yypred) 2511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_yypstack (yys->yypred); 251305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, " -> "); 2514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 251505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%d@@%lu", yys->yylrState, 251605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yys->yyposn); 2517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypstates (yyGLRState* yyst) 2521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 252205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyst == YY_NULL) 252305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "<null>"); 2524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_yypstack (yyst); 252605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 2527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypstack (yyGLRStack* yystackp, size_t yyk) 2531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypstates (yystackp->yytops.yystates[yyk]); 2533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 253505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYINDEX(YYX) \ 253605436638acc7c010349a69c3395f1a57c642dc62Ying Wang ((YYX) == YY_NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) 2537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypdumpstack (yyGLRStack* yystackp) 2541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyp; 2543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi; 2544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1) 2545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 254605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%3lu. ", 254705436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) (yyp - yystackp->yyitems)); 2548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*(yybool *) yyp) 254905436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 255005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 255105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp->yystate.yyresolved, yyp->yystate.yylrState, 255205436638acc7c010349a69c3395f1a57c642dc62Ying Wang (unsigned long int) yyp->yystate.yyposn, 255305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (long int) YYINDEX (yyp->yystate.yypred)); 255405436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (! yyp->yystate.yyresolved) 255505436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, ", firstVal: %ld", 255605436638acc7c010349a69c3395f1a57c642dc62Ying Wang (long int) YYINDEX (yyp->yystate 255705436638acc7c010349a69c3395f1a57c642dc62Ying Wang .yysemantics.yyfirstVal)); 255805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 2559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 256005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 256105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld", 256205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyp->yyoption.yyrule - 1, 256305436638acc7c010349a69c3395f1a57c642dc62Ying Wang (long int) YYINDEX (yyp->yyoption.yystate), 256405436638acc7c010349a69c3395f1a57c642dc62Ying Wang (long int) YYINDEX (yyp->yyoption.yynext)); 256505436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 256605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 2567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 256805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "Tops:"); 2569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) 257005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi, 257105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (long int) YYINDEX (yystackp->yytops.yystates[yyi])); 257205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYFPRINTF (stderr, "\n"); 2573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 257505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_epilogue[]dnl 257605436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_end() 2577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 257805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# glr.cc produces its own header. 257905436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_if(b4_skeleton, ["glr.c"], 258005436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_defines_if( 258105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_output_begin([b4_spec_defines_file]) 2582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton interface for Bison GLR parsers in C], 258305436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2002-2012])[ 2584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 258505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_cpp_guard_open([b4_spec_defines_file])[ 258605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_shared_declarations[ 258705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_cpp_guard_close([b4_spec_defines_file])[ 258805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_output_end() 258905436638acc7c010349a69c3395f1a57c642dc62Ying Wang])]) 2590