1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_divert(-1) -*- C -*- 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GLR skeleton for Bison 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is free software; you can redistribute it and/or modify 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# the Free Software Foundation; either version 2 of the License, or 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# (at your option) any later version. 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful, 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details. 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# along with this program; if not, write to the Free Software 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# 02110-1301 USA 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_include(b4_pkgdatadir/[c.m4]) 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Default values. ## 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ## 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Stack parameters. 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_max], [10000]) 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define_default([b4_stack_depth_init], [200]) 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Pure/impure interfaces. ## 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------------ ## 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_user_formals 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# The possible parse-params formal arguments preceded by a comma. 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This is not shared with yacc.c in c.m4 because GLR relies on ISO C 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# formal argument declarations. 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_user_formals], 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])]) 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lex_param 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------ 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Accumule in b4_lex_param all the yylex arguments. 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Yes, this is quite ugly... 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lex_param], 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_locations_if([, [[YYLTYPE *], [&yylloc]]])])dnl 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_lex_param], [, ]b4_lex_param))) 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_yyerror_args 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Optional effective arguments passed to yyerror: user args plus yylloc, and 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# a trailing comma. 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_yyerror_args], 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([yylocp, ])])dnl 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lyyerror_args 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ---------------- 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Same as above, but on the look-ahead, hence &yylloc instead of yylocp. 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lyyerror_args], 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([&yylloc, ])])dnl 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_pure_args 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------ 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Same as b4_yyerror_args, but with a leading comma. 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_pure_args], 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, yylocp])])[]b4_user_args]) 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lpure_args 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------- 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Same as above, but on the look-ahead, hence &yylloc instead of yylocp. 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lpure_args], 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, &yylloc])])[]b4_user_args]) 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_pure_formals 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------- 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Arguments passed to yyerror: user formals plus yylocp. 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_pure_formals], 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_pure_if([b4_locations_if([, YYLTYPE *yylocp])])[]b4_user_formals]) 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Semantic Values. ## 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------------- ## 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_value([TYPE]) 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------- 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>$. 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_value], 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[((*yyvalp)[]m4_ifval([$1], [.$1]))]) 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# -------------------------------------- 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# symbols on RHS. 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_value], 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))]) 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Locations. ## 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ----------- ## 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_lhs_location() 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ----------------- 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @$. 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_lhs_location], 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(*yylocp)]) 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# b4_rhs_location(RULE-LENGTH, NUM) 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------------------------- 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Expansion of @NUM, where the current rule has RULE-LENGTH symbols 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# on RHS. 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_rhs_location], 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yyloc)]) 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## -------------- ## 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Output files. ## 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## -------------- ## 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# We do want M4 expansion after # for CPP macros. 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_changecom() 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_divert(0)dnl 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project@output @output_parser_name@ 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton implementation for Bison GLR parsers in C], 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [2002, 2003, 2004, 2005, 2006]) 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* C GLR parser skeleton written by Paul Hilfinger. */ 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_identification 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_if(b4_prefix, [yy], [], 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[/* Substitute the variable and function names. */ 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyparse b4_prefix[]parse 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylex b4_prefix[]lex 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyerror b4_prefix[]error 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylval b4_prefix[]lval 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yychar b4_prefix[]char 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yydebug b4_prefix[]debug 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yynerrs b4_prefix[]nerrs 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylloc b4_prefix[]lloc]) 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl # b4_shared_declarations 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl # ---------------------- 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl # Declaration that might either go into the header (if --defines) 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl # or open coded in the parser body. 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_define([b4_shared_declarations], 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_token_enums(b4_tokens)[ 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the first part of user declarations. */ 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_pre_prologue[ 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]m4_ifdef([b4_stype], 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[typedef union m4_bregexp(b4_stype, [^{], [YYSTYPE ]) 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_stype 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Line __line__ of glr.c. */ 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_syncline([@oline@], [@ofile@]) 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE;], 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[typedef int YYSTYPE;])[ 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTYPE_IS_DECLARED 1 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTYPE_IS_TRIVIAL 1 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct YYLTYPE 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([ 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int first_line; 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int first_column; 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int last_line; 193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int last_column; 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project],[ 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char yydummy; 196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project])[ 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} YYLTYPE; 198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLTYPE_IS_DECLARED 1 199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLTYPE_IS_TRIVIAL 1 200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]]) 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_defines_if([#include @output_header_name@], 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [b4_shared_declarations])[ 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enabling traces. */ 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYDEBUG 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDEBUG ]b4_debug_flag[ 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enabling verbose error messages. */ 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYERROR_VERBOSE 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR_VERBOSE 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE 1 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR_VERBOSE ]b4_error_verbose_flag[ 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enabling the token table. */ 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYTOKEN_TABLE 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYTOKEN_TABLE ]b4_token_table[ 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Default (constant) value used for initialization for null 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project right-hand sides. Unlike the standard yacc.c template, 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project here we set the default value of $$ to a zeroed-out value. 227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Since the default value is undefined, this behavior is 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project technically correct. */ 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYSTYPE yyval_default; 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy the second part of user declarations. */ 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_post_prologue[ 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]/* Line __line__ of glr.c. */ 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_syncline([@oline@], [@ofile@]) 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdio.h> 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdlib.h> 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <string.h> 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <stdarg.h> 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YY_ 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if YYENABLE_NLS 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if ENABLE_NLS 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_(msgid) dgettext ("bison-runtime", msgid) 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YY_ 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_(msgid) msgid 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Suppress unused-variable warnings by "using" E. */ 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if ! defined lint || defined __GNUC__ 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYUSE(e) ((void) (e)) 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYUSE(e) /* empty */ 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Identity function, used to suppress warnings about constant conditions. */ 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef lint 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYID(n) (n) 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_function_def([YYID], [static int], [[int i], [i]])[ 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return i; 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYFREE 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFREE free 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYMALLOC 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMALLOC malloc 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYREALLOC 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYREALLOC realloc 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYSIZEMAX ((size_t) -1) 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef __cplusplus 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef bool yybool; 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef unsigned char yybool; 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yytrue 1 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyfalse 0 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYSETJMP 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <setjmp.h> 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYJMP_BUF jmp_buf 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSETJMP(env) setjmp (env) 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLONGJMP(env, val) longjmp (env, val) 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------. 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| GCC extensions. | 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------*/ 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef __attribute__ 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* This feature is available in gcc versions 2.5 and later. */ 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if (! defined __GNUC__ || __GNUC__ < 2 \ 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define __attribute__(Spec) /* empty */ 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([#define YYOPTIONAL_LOC(Name) Name],[ 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef __cplusplus 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYOPTIONAL_LOC(Name) /* empty */ 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif])[ 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYASSERT 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYFINAL -- State number of the termination state. */ 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYFINAL ]b4_final_state_number[ 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLAST -- Last index in YYTABLE. */ 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYLAST ]b4_last[ 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNTOKENS -- Number of terminals. */ 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNTOKENS ]b4_tokens_number[ 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNNTS -- Number of nonterminals. */ 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNNTS ]b4_nterms_number[ 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of rules. */ 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNRULES ]b4_rules_number[ 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYNRULES -- Number of states. */ 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYNSTATES ]b4_states_number[ 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXRHS ]b4_r2_max[ 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXLEFT -- Maximum number of symbols to the left of a handle 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project accessed by $0, $-1, etc., in any rule. */ 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXLEFT ]b4_max_left_semantic_context[ 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */ 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYUNDEFTOK ]b4_undef_token_number[ 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYMAXUTOK ]b4_user_token_number_max[ 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTRANSLATE(YYX) \ 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ((YYX <= 0) ? YYEOF : \ 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_translate])[ yytranslate[] = 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_translate[ 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHS. */ 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_prhs])[ yyprhs[] = 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_prhs[ 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rhs])[ yyrhs[] = 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rhs[ 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_rline])[ yyrline[] = 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rline[ 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char *const yytname[] = 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_tname[ 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r1])[ yyr1[] = 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r1[ 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_r2])[ yyr2[] = 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r2[ 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_dprec])[ yydprec[] = 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_dprec[ 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_merger])[ yymerger[] = 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_merger[ 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project doesn't specify something else to do. Zero means the default is an 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project error. */ 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defact])[ yydefact[] = 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defact[ 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPDEFGOTO[NTERM-NUM]. */ 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defgoto[ 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project STATE-NUM. */ 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYPACT_NINF ]b4_pact_ninf[ 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pact])[ yypact[] = 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pact[ 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYPGOTO[NTERM-NUM]. */ 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pgoto[ 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positive, shift that token. If negative, reduce the rule which 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project number is the opposite. If zero, do what YYDEFACT says. 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project If YYTABLE_NINF, syntax error. */ 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTABLE_NINF ]b4_table_ninf[ 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_table])[ yytable[] = 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_table[ 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project list of conflicting reductions corresponding to action entry for 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project state STATE-NUM in yytable. 0 means no conflicts. The list in 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyconfl is terminated by a rule number of 0. */ 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_conflict_list_heads])[ yyconflp[] = 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_conflict_list_heads[ 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0, pointed into by YYCONFLP. */ 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]dnl Do not use b4_int_type_for here, since there are places where 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl pointers onto yyconfl are taken, which type is "short int *". 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdnl We probably ought to introduce a type for confl. 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[static const short int yyconfl[] = 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_conflicting_rules[ 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_check])[ yycheck[] = 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_check[ 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project symbol of state STATE-NUM. */ 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const ]b4_int_type_for([b4_stos])[ yystos[] = 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_stos[ 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Prevent warning if -Wmissing-prototypes. */ 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_ansi_function_decl([yyparse], [int], b4_parse_param)[ 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Error token number */ 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYTERROR 1 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project If N is 0, then set CURRENT to the empty location which ends 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the previous symbol: RHS[0] (always defined). */ 487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ 489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) 490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYLLOC_DEFAULT 491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLLOC_DEFAULT(Current, Rhs, N) \ 492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do \ 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYID (N)) \ 494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else \ 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).first_line = (Current).last_line = \ 503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHSLOC (Rhs, 0).last_line; \ 504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Current).first_column = (Current).last_column = \ 505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHSLOC (Rhs, 0).last_column; \ 506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (0)) 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YY_LOCATION_PRINT -- Print the location on the stream. 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This macro was not mandated originally: define only if we know 511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project we won't break user code: when these are the locations we know. */ 512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_LOCATION_PRINT(File, Loc) \ 514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (File, "%d.%d-%d.%d", \ 515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Loc).first_line, (Loc).first_column, \ 516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (Loc).last_line, (Loc).last_column) 517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]],[ 519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYLLOC_DEFAULT 520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0) 521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project])[ 523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YY_LOCATION_PRINT 525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYLEX -- calling `yylex' with the right arguments. */ 530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ 531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_pure_if( 533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yynerrs 535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yynerrs (yystackp->yyerrcnt) 536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yychar 537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yychar (yystackp->yyrawchar) 538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yylval 539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylval (yystackp->yyval) 540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#undef yylloc 541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yylloc (yystackp->yyloc) 542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_if(b4_prefix[], [yy], [], 543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[#define b4_prefix[]nerrs yynerrs 544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]char yychar 545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]lval yylval 546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define b4_prefix[]lloc yylloc])], 547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[YYSTYPE yylval; 548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectYYLTYPE yylloc; 550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yynerrs; 552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yychar;])[ 553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int YYEOF = 0; 555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int YYEMPTY = -2; 556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; 558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYCHK(YYE) \ 560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ 561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (0)) 562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG 564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YYFPRINTF 566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFPRINTF fprintf 567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDPRINTF(Args) \ 570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF Args; \ 573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[ 576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%s ", Title); \ 582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, Type, \ 583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Value]b4_locations_if([, Location])[]b4_user_args[); \ 584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); \ 585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Nonzero means print parse trace. It is left uninitialized so that 589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project multiple parsers can coexist. */ 590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint yydebug; 591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else /* !YYDEBUG */ 593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYDPRINTF(Args) 595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* !YYDEBUG */ 598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYINITDEPTH -- initial size of the parser's stacks. */ 600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYINITDEPTH 601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYINITDEPTH ]b4_stack_depth_init[ 602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if the built-in stack extension method is used). 606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Do not make this value too large; the results are undefined if 608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project evaluated with infinite-precision integer arithmetic. */ 610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYMAXDEPTH 612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYMAXDEPTH ]b4_stack_depth_max[ 613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Minimum number of free items on the stack allowed after an 616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project allocation. This is to allow allocation and initialization 617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to be completed by functions that call yyexpandGLRStack before the 618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack is expanded, thus insuring that all necessary pointers get 619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project properly redirected to new data. */ 620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYHEADROOM 2 621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YYSTACKEXPANDABLE 623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if (! defined __cplusplus \ 624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project || (]b4_locations_if([[defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && ]])[defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)) 626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACKEXPANDABLE 1 627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYSTACKEXPANDABLE 0 629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_RESERVE_GLRSTACK(Yystack) \ 634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do { \ 635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (Yystack->yyspaceLeft < YYHEADROOM) \ 636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyexpandGLRStack (Yystack); \ 637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_RESERVE_GLRSTACK(Yystack) \ 640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do { \ 641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (Yystack->yyspaceLeft < YYHEADROOM) \ 642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (Yystack); \ 643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yystpcpy 650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yystpcpy stpcpy 652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# else 653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDEST. */ 655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic char * 656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyystpcpy (char *yydest, const char *yysrc) 657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yyd = yydest; 659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char *yys = yysrc; 660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((*yyd++ = *yys++) != '\0') 662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyd - 1; 665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef yytnamerr 670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project quotes and backslashes, so that it's suitable for yyerror. The 672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project heuristic is that double-quoting is unnecessary unless the string 673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project contains an apostrophe, a comma, or backslash (other than 674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backslash-backslash). YYSTR is taken from yytname. If YYRES is 675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project null, do not copy; instead, return the length of what the result 676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project would have been. */ 677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic size_t 678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyytnamerr (char *yyres, const char *yystr) 679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yystr == '"') 681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyn = 0; 683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyp = yystr; 684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (*++yyp) 687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\'': 689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case ',': 690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\\': 693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*++yyp != '\\') 694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Fall through. */ 696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyres) 698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyres[yyn] = *yyp; 699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn++; 700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '"': 703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyres) 704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyres[yyn] = '\0'; 705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyn; 706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do_not_strip_quotes: ; 708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyres) 711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return strlen (yystr); 712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystpcpy (yyres, yystr) - yyres; 714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* !YYERROR_VERBOSE */ 718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** State numbers, as in LALR(1) machine */ 720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef int yyStateNum; 721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Rule numbers, as in LALR(1) machine */ 723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef int yyRuleNum; 724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Grammar symbol */ 726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yySymbol; 727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Item references, as in LALR(1) machine */ 729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef short int yyItemNum; 730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRState yyGLRState; 732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRStateSet yyGLRStateSet; 733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yySemanticOption yySemanticOption; 734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef union yyGLRStackItem yyGLRStackItem; 735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct yyGLRStack yyGLRStack; 736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRState { 738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag: always true. */ 739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyisState; 740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag for yysemantics. If true, yysval applies, otherwise 741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yyfirstVal applies. */ 742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyresolved; 743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Number of corresponding LALR(1) machine state. */ 744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yylrState; 745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Preceding state in this stack */ 746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yypred; 747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Source position of the first token produced by my symbol */ 748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn; 749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project union { 750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** First in a chain of alternative reductions producing the 751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * non-terminal corresponding to this state, threaded through 752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yynext. */ 753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyfirstVal; 754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Semantic value for this state. */ 755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval; 756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } yysemantics; 757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Source location for this state. */ 758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yyloc; 759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRStateSet { 762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yystates; 763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** During nondeterministic operation, yylookaheadNeeds tracks which 764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * stacks have actually needed the current lookahead. During deterministic 765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * operation, yylookaheadNeeds[0] is not maintained since it would merely 766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * duplicate yychar != YYEMPTY. */ 767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool* yylookaheadNeeds; 768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize, yycapacity; 769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yySemanticOption { 772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Type tag: always false. */ 773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyisState; 774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Rule number for this reduction */ 775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum yyrule; 776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** The last RHS state in the list of states to be reduced. */ 777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yystate; 778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** The lookahead for this reduction. */ 779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyrawchar; 780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yyval; 781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yyloc; 782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /** Next sibling in chain of options. To facilitate merging, 783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * options are chained in decreasing order by address. */ 784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yynext; 785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Type of the items in the GLR stack. The yyisState field 788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * indicates which item of the union is valid. */ 789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectunion yyGLRStackItem { 790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState yystate; 791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption yyoption; 792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstruct yyGLRStack { 795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyerrState; 796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ /* To compute the location of the error token. */ 797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyerror_range[3];]])[ 798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_pure_if( 799cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyerrcnt; 801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyrawchar; 802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yyval; 803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yyloc; 804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project])[ 805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYJMP_BUF yyexception_buffer; 806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyitems; 807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynextFree; 808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyspaceLeft; 809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yysplitPoint; 810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yylastDeleted; 811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStateSet yytops; 812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyexpandGLRStack (yyGLRStack* yystackp); 816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) 819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__noreturn__)); 820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) 822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymsg != NULL) 824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[yymsg); 825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLONGJMP (yystackp->yyexception_buffer, 1); 826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyMemoryExhausted (yyGLRStack* yystackp) 829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__noreturn__)); 830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyMemoryExhausted (yyGLRStack* yystackp) 832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLONGJMP (yystackp->yyexception_buffer, 2); 834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 836cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG || YYERROR_VERBOSE 837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** A printable representation of TOKEN. */ 838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline const char* 839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyytokenName (yySymbol yytoken) 840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yytoken == YYEMPTY) 842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return ""; 843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytname[yytoken]; 845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 848cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting 849cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred 850cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * containing the pointer to the next state in the chain. */ 851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__)); 852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) 854cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* s; 856cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int i; 857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project s = yyvsp[yylow0].yystate.yypred; 858cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (i = yylow0-1; i >= yylow1; i -= 1) 859cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 860cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (s->yyresolved); 861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvsp[i].yystate.yyresolved = yytrue; 862cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval; 863cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvsp[i].yystate.yyloc = s->yyloc; 864cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project s = yyvsp[i].yystate.yypred = s->yypred; 865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 867cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 868cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in 869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. 870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * For convenience, always return YYLOW1. */ 871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int yyfill (yyGLRStackItem *, int *, int, yybool) 872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__unused__)); 873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int 874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) 875cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yynormal && yylow1 < *yylow) 877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfillin (yyvsp, *yylow, yylow1); 879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yylow = yylow1; 880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yylow1; 882cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Perform user action for rule number YYN, with RHS length YYRHSLEN, 885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and top stack item YYVSP. YYLVALP points to place to put semantic 886cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * value ($$), and yylocp points to place for location information 887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, 888cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yyerr for YYERROR, yyabort for YYABORT. */ 889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static YYRESULTTAG 890cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, 891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE* yyvalp, 892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE* YYOPTIONAL_LOC (yylocp), 893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack* yystackp 894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_user_formals[) 895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yynormal __attribute__ ((__unused__)) = 897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yystackp->yysplitPoint == NULL); 898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylow; 899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_parse_param_use[]dnl 900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[# undef yyerrok 901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yyerrok (yystackp->yyerrState = 0) 902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYACCEPT 903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYACCEPT return yyaccept 904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYABORT 905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYABORT return yyabort 906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR 907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYERROR return yyerrok, yyerr 908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYRECOVERING 909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYRECOVERING() (yystackp->yyerrState != 0) 910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyclearin 911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define yyclearin (yychar = YYEMPTY) 912cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYFILL 913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) 914cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYBACKUP 915cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYBACKUP(Token, Value) \ 916cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \ 917cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrok, yyerr 918cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 919cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylow = 1; 920cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyrhslen == 0) 921cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyvalp = yyval_default; 922cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 923cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval; 924cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); 925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystackp->yyerror_range[1].yystate.yyloc = *yylocp; 926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])[ 927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 929cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_actions 930cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Line __line__ of glr.c. */ 931cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_syncline([@oline@], [@ofile@])[ 932cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: break; 933cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 934cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 935cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 936cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyerrok 937cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYABORT 938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYACCEPT 939cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYERROR 940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYBACKUP 941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef yyclearin 942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef YYRECOVERING 943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 944cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 945cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 946cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 947cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) 948cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 949cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yy0); 950cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yy1); 951cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 952cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 953cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 954cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_mergers[ 955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: break; 956cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 957cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 958cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 959cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Bison grammar-table manipulation. */ 960cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 961cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_yydestruct_generate([b4_c_ansi_function_def])[ 962cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 963cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Number of symbols composing the right hand side of rule #RULE. */ 964cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline int 965cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyrhsLength (yyRuleNum yyrule) 966cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 967cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyr2[yyrule]; 968cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 969cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 970cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 971cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[) 972cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 973cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yyresolved) 974cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct (yymsg, yystos[yys->yylrState], 975cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yys->yysemantics.yysval]b4_locations_if([, &yys->yyloc])[]b4_user_args[); 976cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 977cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 978cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG 979cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) 980cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 981cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yysemantics.yyfirstVal) 982cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%s unresolved ", yymsg); 983cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 984cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%s incomplete ", yymsg); 985cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, yystos[yys->yylrState], 986cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project NULL]b4_locations_if([, &yys->yyloc])[]b4_user_args[); 987cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); 988cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 989cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 990cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 991cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yysemantics.yyfirstVal) 992cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 993cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption *yyoption = yys->yysemantics.yyfirstVal; 994cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yyrh; 995cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 996cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule); 997cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn > 0; 998cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrh = yyrh->yypred, yyn -= 1) 999cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestroyGLRState (yymsg, yyrh]b4_user_args[); 1000cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1001cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1002cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1003cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Left-hand-side symbol for rule #RULE. */ 1005cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yySymbol 1006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyylhsNonterm (yyRuleNum yyrule) 1007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1008cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyr1[yyrule]; 1009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1011cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyis_pact_ninf(yystate) \ 1012cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), [1], 1013cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [0], 1014cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [((yystate) == YYPACT_NINF)])[ 1015cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1016cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** True iff LR state STATE has only a default reduction (regardless 1017cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * of token). */ 1018cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 1019cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisDefaultedState (yyStateNum yystate) 1020cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1021cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyis_pact_ninf (yypact[yystate]); 1022cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1023cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1024cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** The default reduction for STATE, assuming it has one. */ 1025cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyRuleNum 1026cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydefaultAction (yyStateNum yystate) 1027cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1028cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yydefact[yystate]; 1029cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1030cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1031cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define yyis_table_ninf(yytable_value) \ 1032cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]m4_if(m4_eval(b4_table_ninf < b4_table_min), [1], 1033cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [YYID (0)], 1034cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [((yytable_value) == YYTABLE_NINF)])[ 1035cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1036cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. 1037cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * Result R means 1038cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R < 0: Reduce on rule -R. 1039cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R = 0: Error. 1040cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * R > 0: Shift to state R. 1041cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of 1042cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * conflicting reductions. 1043cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 1044cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1045cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyygetLRActions (yyStateNum yystate, int yytoken, 1046cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int* yyaction, const short int** yyconflicts) 1047cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1048cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyindex = yypact[yystate] + yytoken; 1049cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken) 1050cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1051cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = -yydefact[yystate]; 1052cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl; 1053cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1054cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (! yyis_table_ninf (yytable[yyindex])) 1055cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1056cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = yytable[yyindex]; 1057cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl + yyconflp[yyindex]; 1058cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1059cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1060cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1061cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyaction = 0; 1062cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts = yyconfl + yyconflp[yyindex]; 1063cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1064cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1065cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1066cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyStateNum 1067cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyLRgotoState (yyStateNum yystate, yySymbol yylhs) 1068cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1069cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyr; 1070cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yypgoto[yylhs - YYNTOKENS] + yystate; 1071cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate) 1072cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytable[yyr]; 1073cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1074cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yydefgoto[yylhs - YYNTOKENS]; 1075cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1076cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1077cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 1078cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisShiftAction (int yyaction) 1079cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1080cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0 < yyaction; 1081cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1082cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1083cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yybool 1084cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyisErrorAction (int yyaction) 1085cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1086cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyaction == 0; 1087cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1088cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1089cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* GLRStates */ 1090cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1091cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Return a fresh GLRStackItem. Callers should call 1092cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient 1093cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * headroom. */ 1094cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1095cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline yyGLRStackItem* 1096cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState) 1097cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1098cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynewItem = yystackp->yynextFree; 1099cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= 1; 1100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree += 1; 1101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewItem->yystate.yyisState = yyisState; 1102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yynewItem; 1103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Add a new semantic action that will execute the action for rule 1106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * RULENUM on the semantic values in RHS to the list of 1107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * alternative actions for STATE. Assumes that RHS comes from 1108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * stack #K of *STACKP. */ 1109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate, 1111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* rhs, yyRuleNum yyrule) 1112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yynewOption = 1114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yynewGLRStackItem (yystackp, yyfalse)->yyoption; 1115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yystate = rhs; 1116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrule = yyrule; 1117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yylookaheadNeeds[yyk]) 1118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrawchar = yychar; 1120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyval = yylval; 1121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyloc = yylloc; 1122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yyrawchar = YYEMPTY; 1125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewOption->yynext = yystate->yysemantics.yyfirstVal; 1126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate->yysemantics.yyfirstVal = yynewOption; 1127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_RESERVE_GLRSTACK (yystackp); 1129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* GLRStacks */ 1132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Initialize SET to a singleton set containing an empty stack. */ 1134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyinitStateSet (yyGLRStateSet* yyset) 1136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yysize = 1; 1138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yycapacity = 16; 1139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); 1140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyset->yystates) 1141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yystates[0] = NULL; 1143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyset->yylookaheadNeeds = 1144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]); 1145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyset->yylookaheadNeeds) 1146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yystates); 1148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytrue; 1151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yyfreeStateSet (yyGLRStateSet* yyset) 1154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yystates); 1156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yyset->yylookaheadNeeds); 1157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Initialize STACK to a single empty stack, with total maximum 1160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * capacity for all stacks of SIZE. */ 1161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyinitGLRStack (yyGLRStack* yystackp, size_t yysize) 1163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyerrState = 0; 1165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynerrs = 0; 1166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft = yysize; 1167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyitems = 1168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]); 1169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yystackp->yyitems) 1170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = yystackp->yyitems; 1172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = NULL; 1173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yylastDeleted = NULL; 1174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyinitStateSet (&yystackp->yytops); 1175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYSTACKEXPANDABLE 1179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ 1180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE 1181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** If STACK is expandable, extend it. WARNING: Pointers into the 1183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stack from outside should be considered invalid after this call. 1184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project We always expand when there are 1 or fewer items left AFTER an 1185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project allocation, so that we can avoid having external pointers exist 1186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project across an allocation. */ 1187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyexpandGLRStack (yyGLRStack* yystackp) 1189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yynewItems; 1191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyp0, *yyp1; 1192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize, yynewSize; 1193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyn; 1194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize = yystackp->yynextFree - yystackp->yyitems; 1195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH - YYHEADROOM < yysize) 1196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewSize = 2*yysize; 1198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYMAXDEPTH < yynewSize) 1199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewSize = YYMAXDEPTH; 1200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); 1201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yynewItems) 1202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize; 1204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0 < yyn; 1205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn -= 1, yyp0 += 1, yyp1 += 1) 1206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyp1 = *yyp0; 1208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*(yybool *) yyp0) 1209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys0 = &yyp0->yystate; 1211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys1 = &yyp1->yystate; 1212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys0->yypred != NULL) 1213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys1->yypred = 1214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRELOC (yyp0, yyp1, yys0->yypred, yystate); 1215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != NULL) 1216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys1->yysemantics.yyfirstVal = 1217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRELOC(yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption); 1218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyv0 = &yyp0->yyoption; 1222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyv1 = &yyp1->yyoption; 1223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyv0->yystate != NULL) 1224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate); 1225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyv0->yynext != NULL) 1226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption); 1227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yysplitPoint != NULL) 1230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems, 1231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint, yystate); 1232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1) 1234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yystates[yyn] != NULL) 1235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyn] = 1236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRELOC (yystackp->yyitems, yynewItems, 1237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyn], yystate); 1238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yystackp->yyitems); 1239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyitems = yynewItems; 1240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = yynewItems + yysize; 1241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft = yynewSize - yysize; 1242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyfreeGLRStack (yyGLRStack* yystackp) 1247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yystackp->yyitems); 1249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfreeStateSet (&yystackp->yytops); 1250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Assuming that S is a GLRState somewhere on STACK, update the 1253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * splitpoint of STACK, if needed, so that it is at least as deep as 1254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * S. */ 1255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys) 1257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yysplitPoint != NULL && yystackp->yysplitPoint > yys) 1259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = yys; 1260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Invalidate stack #K in STACK. */ 1263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyymarkStackDeleted (yyGLRStack* yystackp, size_t yyk) 1265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yystates[yyk] != NULL) 1267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yylastDeleted = yystackp->yytops.yystates[yyk]; 1268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = NULL; 1269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Undelete the last stack that was marked as deleted. Can only be 1272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project done once after a deletion, and only when all other stacks have 1273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project been deleted. */ 1274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyundeleteLastStack (yyGLRStack* yystackp) 1276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yylastDeleted == NULL || yystackp->yytops.yysize != 0) 1278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 1279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = yystackp->yylastDeleted; 1280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yysize = 1; 1281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); 1282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yylastDeleted = NULL; 1283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyremoveDeletes (yyGLRStack* yystackp) 1287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi, yyj; 1289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyi = yyj = 0; 1290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yyj < yystackp->yytops.yysize) 1291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yystates[yyi] == NULL) 1293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyi == yyj) 1295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Removing dead stacks.\n")); 1297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yysize -= 1; 1299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi]; 1303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* In the current implementation, it's unnecessary to copy 1304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yyi] since, after 1305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyremoveDeletes returns, the parser immediately either enters 1306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project deterministic operation or shifts a token. However, it doesn't 1307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project hurt, and the code might evolve to need it. */ 1308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yyj] = 1309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yyi]; 1310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyj != yyi) 1311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", 1313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyi, (unsigned long int) yyj)); 1314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj += 1; 1316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyi += 1; 1318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Shift to a new state on stack #K of STACK, corresponding to LR state 1322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ 1323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, 1325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn, 1326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE* yyvalp, YYLTYPE* yylocp) 1327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; 1329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yylrState = yylrState; 1331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyposn = yyposn; 1332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyresolved = yytrue; 1333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yypred = yystackp->yytops.yystates[yyk]; 1334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yysemantics.yysval = *yyvalp; 1335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyloc = *yylocp; 1336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yynewState; 1337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_RESERVE_GLRSTACK (yystackp); 1339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Shift stack #K of YYSTACK, to a new state corresponding to LR 1342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * state YYLRSTATE, at input position YYPOSN, with the (unresolved) 1343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic value of YYRHS under the action for YYRULE. */ 1344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline void 1345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, 1346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) 1347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; 1349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yylrState = yylrState; 1351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyposn = yyposn; 1352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yyresolved = yyfalse; 1353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yypred = yystackp->yytops.yystates[yyk]; 1354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewState->yysemantics.yyfirstVal = NULL; 1355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yynewState; 1356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Invokes YY_RESERVE_GLRSTACK. */ 1358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyaddDeferredAction (yystackp, yyk, yynewState, rhs, yyrule); 1359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Pop the symbols consumed by reduction #RULE from the top of stack 1362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * #K of STACK, and perform the appropriate semantic action on their 1363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic values. Assumes that all ambiguities in semantic values 1364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * have been previously resolved. Set *VALP to the resulting value, 1365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and *LOCP to the computed location (if any). Return value is as 1366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * for userAction. */ 1367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline YYRESULTTAG 1368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 1369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[) 1370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyrule); 1372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yysplitPoint == NULL) 1374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Standard special case: single stack. */ 1376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* rhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; 1377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyk == 0); 1378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree -= yynrhs; 1379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += yynrhs; 1380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate; 1381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyuserAction (yyrule, yynrhs, rhs, 1382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvalp, yylocp, yystackp]b4_user_args[); 1383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* At present, doAction is never called in nondeterministic 1387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * mode, so this branch is never taken. It is here in 1388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * anticipation of a future feature that will allow immediate 1389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * evaluation of selected actions in nondeterministic mode. */ 1390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 1391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; 1393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred 1394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = yystackp->yytops.yystates[yyk];]b4_locations_if([[ 1395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynrhs == 0) 1396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Set default location. */ 1397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;]])[ 1398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yynrhs; yyi += 1) 1399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yys->yypred; 1401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yys); 1402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyupdateSplit (yystackp, yys); 1404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yys; 1405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, 1406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvalp, yylocp, yystackp]b4_user_args[); 1407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if !YYDEBUG 1411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Args) 1412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 1413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Args) \ 1414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 1415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug) \ 1416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_reduce_print Args; \ 1417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (YYID (0)) 1418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------------------------------------------------------. 1420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Report that the RULE is going to be reduced on stack #K. | 1421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------------------------------------------------------*/ 1422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static inline void 1424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyy_reduce_print (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 1425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[) 1426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyrule); 1428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yynormal __attribute__ ((__unused__)) = 1429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yystackp->yysplitPoint == NULL); 1430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; 1431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylow = 1; 1432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 1433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyvalp); 1434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yylocp); 1435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_parse_param_use[]dnl 1436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n", 1437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk, yyrule - 1, 1438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyrline[yyrule]); 1439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The symbols being reduced. */ 1440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yynrhs; yyi++) 1441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, " $%d = ", yyi + 1); 1443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &]b4_rhs_value(yynrhs, yyi + 1)[ 1445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl 1446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_user_args[); 1447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "\n"); 1448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Pop items off stack #K of STACK according to grammar rule RULE, 1453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * and push back on the resulting nonterminal symbol. Perform the 1454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic action associated with RULE and store its value with the 1455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * newly pushed state, if FORCEEVAL or if STACK is currently 1456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * unambiguous. Otherwise, store the deferred semantic action with 1457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the new state. If the new state would have an identical input 1458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * position, LR state, and predecessor to an existing state on the stack, 1459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * it is identified with that existing state, eliminating stack #K from 1460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the STACK. In this case, the (necessarily deferred) semantic value is 1461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * added to the options for the existing state's semantic value. 1462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project */ 1463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic inline YYRESULTTAG 1464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, 1465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yyforceEval]b4_user_formals[) 1466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn; 1468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyforceEval || yystackp->yysplitPoint == NULL) 1470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval; 1472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yyloc; 1473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_REDUCE_PRINT ((yystackp, yyk, yyrule, &yysval, &yyloc]b4_user_args[)); 1475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yydoAction (yystackp, yyk, yyrule, &yysval, 1476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yyloc]b4_user_args[)); 1477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc); 1478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (yystackp, yyk, 1479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState, 1480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylhsNonterm (yyrule)), 1481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn, &yysval, &yyloc); 1482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi; 1486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk]; 1488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yynewLRState; 1489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule); 1491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0 < yyn; yyn -= 1) 1492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yys->yypred; 1494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yys); 1495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyupdateSplit (yystackp, yys); 1497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule)); 1498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, 1499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n", 1500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk, yyrule - 1, yynewLRState)); 1501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) 1502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyi != yyk && yystackp->yytops.yystates[yyi] != NULL) 1503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yyp, *yysplit = yystackp->yysplitPoint; 1505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp = yystackp->yytops.yystates[yyi]; 1506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn) 1507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyp->yylrState == yynewLRState && yyp->yypred == yys) 1509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule); 1511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymarkStackDeleted (yystackp, yyk); 1512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", 1513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk, 1514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyi)); 1515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp = yyp->yypred; 1518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yyk] = yys; 1521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule); 1522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic size_t 1527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyysplitStack (yyGLRStack* yystackp, size_t yyk) 1528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yysplitPoint == NULL) 1530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyk == 0); 1532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = yystackp->yytops.yystates[yyk]; 1533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity) 1535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yynewStates; 1537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool* yynewLookaheadNeeds; 1538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewStates = NULL; 1540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yycapacity 1542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project > (YYSIZEMAX / (2 * sizeof yynewStates[0]))) 1543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yycapacity *= 2; 1545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewStates = 1547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yyGLRState**) YYREALLOC (yystackp->yytops.yystates, 1548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yystackp->yytops.yycapacity 1549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * sizeof yynewStates[0])); 1550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynewStates == NULL) 1551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates = yynewStates; 1553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewLookaheadNeeds = 1555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds, 1556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (yystackp->yytops.yycapacity 1557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * sizeof yynewLookaheadNeeds[0])); 1558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynewLookaheadNeeds == NULL) 1559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 1560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds; 1561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[yystackp->yytops.yysize] 1563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = yystackp->yytops.yystates[yyk]; 1564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize] 1565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project = yystackp->yytops.yylookaheadNeeds[yyk]; 1566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yysize += 1; 1567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystackp->yytops.yysize-1; 1568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** True iff Y0 and Y1 represent identical options at the top level. 1571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * That is, they represent the same rule applied to RHS symbols 1572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * that produce the same terminal symbols. */ 1573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic yybool 1574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1) 1575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyy0->yyrule == yyy1->yyrule) 1577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys0, *yys1; 1579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, 1581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yyrhsLength (yyy0->yyrule); 1582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn > 0; 1583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) 1584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys0->yyposn != yys1->yyposn) 1585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yytrue; 1587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyfalse; 1590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Assuming identicalOptions (Y0,Y1), destructively merge the 1593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * alternative semantic values for the RHS-symbols of Y1 and Y0. */ 1594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) 1596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys0, *yys1; 1598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, 1600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yyrhsLength (yyy0->yyrule); 1601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn > 0; 1602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) 1603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys0 == yys1) 1605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yys0->yyresolved) 1607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys1->yyresolved = yytrue; 1609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys1->yysemantics.yysval = yys0->yysemantics.yysval; 1610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yys1->yyresolved) 1612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys0->yyresolved = yytrue; 1614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys0->yysemantics.yysval = yys1->yysemantics.yysval; 1615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1618cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption** yyz0p; 1619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyz1; 1620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyz0p = &yys0->yysemantics.yyfirstVal; 1621cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyz1 = yys1->yysemantics.yyfirstVal; 1622cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 1623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyz1 == *yyz0p || yyz1 == NULL) 1625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (*yyz0p == NULL) 1627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyz0p = yyz1; 1629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (*yyz0p < yyz1) 1632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyz = *yyz0p; 1634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyz0p = yyz1; 1635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyz1 = yyz1->yynext; 1636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (*yyz0p)->yynext = yyz; 1637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyz0p = &(*yyz0p)->yynext; 1639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal; 1641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Y0 and Y1 represent two possible actions to take in a given 1646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * parsing state; return 0 if no combination is possible, 1647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ 1648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic int 1649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypreference (yySemanticOption* y0, yySemanticOption* y1) 1650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule; 1652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int p0 = yydprec[r0], p1 = yydprec[r1]; 1653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 == p1) 1655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1]) 1657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 1658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 1; 1660cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 == 0 || p1 == 0) 1662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 1663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p0 < p1) 1664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 3; 1665cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (p1 < p0) 1666cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 2; 1667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return 0; 1668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1670cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG yyresolveValue (yyGLRState* yys, 1671cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack* yystackp]b4_user_formals[); 1672cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1674cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the previous N states starting at and including state S. If result 1675cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * != yyok, some states may have been left unresolved possibly with empty 1676cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic option chains. Regardless of whether result = yyok, each state 1677cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * has been left with consistent data so that yydestroyGLRState can be invoked 1678cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * if necessary. */ 1679cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1680cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveStates (yyGLRState* yys, int yyn, 1681cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack* yystackp]b4_user_formals[) 1682cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1683cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn) 1684cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1685cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yys->yypred); 1686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp]b4_user_args[)); 1687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yys->yyresolved) 1688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyresolveValue (yys, yystackp]b4_user_args[)); 1689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the states for the RHS of OPT, perform its user action, and return 1694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * the semantic value and location. Regardless of whether result = yyok, all 1695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * RHS states have been destroyed (assuming the user action destroys all RHS 1696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic values if invoked). */ 1697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp, 1699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[) 1700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; 1702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs; 1703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yychar_current; 1704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yylval_current; 1705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yylloc_current; 1706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRESULTTAG yyflag; 1707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynrhs = yyrhsLength (yyopt->yyrule); 1709cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyflag = yyresolveStates (yyopt->yystate, yynrhs, yystackp]b4_user_args[); 1710cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag != yyok) 1711cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1712cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys; 1713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1) 1714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); 1715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1717cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1718cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;]b4_locations_if([[ 1719cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynrhs == 0) 1720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Set default location. */ 1721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;]])[ 1722cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar_current = yychar; 1723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval_current = yylval; 1724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc_current = yylloc; 1725cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yyopt->yyrawchar; 1726cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = yyopt->yyval; 1727cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc = yyopt->yyloc; 1728cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyflag = yyuserAction (yyopt->yyrule, yynrhs, 1729cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, 1730cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyvalp, yylocp, yystackp]b4_user_args[); 1731cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yychar_current; 1732cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = yylval_current; 1733cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc = yylloc_current; 1734cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1735cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1736cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1737cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG 1738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportTree (yySemanticOption* yyx, int yyindent) 1740cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyrhsLength (yyx->yyrule); 1742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi; 1743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yystates[1 + YYMAXRHS]; 1745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState yyleftmost_state; 1746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred) 1748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[yyi] = yys; 1749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys == NULL) 1750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyleftmost_state.yyposn = 0; 1752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[0] = &yyleftmost_state; 1753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[0] = yys; 1756cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyx->yystate->yyposn < yys->yyposn + 1) 1758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n", 1759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), 1760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyx->yyrule - 1); 1761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n", 1763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), 1764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1), 1765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyx->yystate->yyposn); 1766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 1; yyi <= yynrhs; yyi += 1) 1767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates[yyi]->yyresolved) 1769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn) 1771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "", 1772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1])); 1773cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "", 1775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]), 1776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) (yystates[yyi - 1]->yyposn + 1), 1777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yystates[yyi]->yyposn); 1778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2); 1781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static YYRESULTTAG 1786cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportAmbiguity (yySemanticOption* yyx0, 1787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyx1]b4_pure_formals[) 1788cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyx0); 1790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyx1); 1791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYDEBUG 1793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Ambiguity detected.\n"); 1794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "Option 1,\n"); 1795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportTree (yyx0, 2); 1796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\nOption 2,\n"); 1797cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportTree (yyx1, 2); 1798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFPRINTF (stderr, "\n"); 1799cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1800cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_yyerror_args[YY_("syntax is ambiguous")); 1802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyabort; 1803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Starting at and including state S1, resolve the location for each of the 1806cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * previous N1 states that is unresolved. The first semantic option of a state 1807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * is always chosen. */ 1808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveLocations (yyGLRState* yys1, int yyn1, 1810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack *yystackp]b4_user_formals[) 1811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn1) 1813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp]b4_user_args[); 1815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yys1->yyresolved) 1816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption *yyoption; 1818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyrhsloc[1 + YYMAXRHS]; 1819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs; 1820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yychar_current; 1821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yylval_current; 1822cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yylloc_current; 1823cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyoption = yys1->yysemantics.yyfirstVal; 1824cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyoption != NULL); 1825cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynrhs = yyrhsLength (yyoption->yyrule); 1826cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yynrhs > 0) 1827cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1828cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys; 1829cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresolveLocations (yyoption->yystate, yynrhs, 1831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp]b4_user_args[); 1832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = yyoption->yystate, yyn = yynrhs; 1833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn > 0; 1834cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yys->yypred, yyn -= 1) 1835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsloc[yyn].yystate.yyloc = yys->yyloc; 1836cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1837cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1838cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1839cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Both yyresolveAction and yyresolveLocations traverse the GSS 1840cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project in reverse rightmost order. It is only necessary to invoke 1841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresolveLocations on a subforest for which yyresolveAction 1842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project would have been invoked next had an ambiguity not been 1843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project detected. Thus the location of the previous state (but not 1844cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project necessarily the previous state itself) is guaranteed to be 1845cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project resolved already. */ 1846cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yyprevious = yyoption->yystate; 1847cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhsloc[0].yystate.yyloc = yyprevious->yyloc; 1848cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1849cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar_current = yychar; 1850cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval_current = yylval; 1851cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc_current = yylloc; 1852cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yyoption->yyrawchar; 1853cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = yyoption->yyval; 1854cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc = yyoption->yyloc; 1855cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs); 1856cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yychar_current; 1857cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = yylval_current; 1858cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc = yylloc_current; 1859cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1860cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1861cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1862cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1863cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/** Resolve the ambiguity represented in state S, perform the indicated 1864cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * actions, and set the semantic value of S. If result != yyok, the chain of 1865cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * semantic options in S has been cleared instead or it has been left 1866cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * unmodified except that redundant options may have been removed. Regardless 1867cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * of whether result = yyok, S has been left with consistent data so that 1868cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * yydestroyGLRState can be invoked if necessary. */ 1869cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) 1871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal; 1873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yybest; 1874cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption** yypp; 1875cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yymerge; 1876cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval; 1877cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRESULTTAG yyflag; 1878cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE *yylocp = &yys->yyloc; 1879cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1880cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybest = yyoptionList; 1881cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymerge = yyfalse; 1882cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yypp = &yyoptionList->yynext; *yypp != NULL; ) 1883cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1884cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyp = *yypp; 1885cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1886cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyidenticalOptions (yybest, yyp)) 1887cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1888cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymergeOptionSets (yybest, yyp); 1889cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yypp = yyp->yynext; 1890cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1891cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1892cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1893cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yypreference (yybest, yyp)) 1894cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1895cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 0: 1896cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresolveLocations (yys, 1, yystackp]b4_user_args[); 1897cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyreportAmbiguity (yybest, yyp]b4_pure_args[); 1898cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1899cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 1: 1900cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymerge = yytrue; 1901cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1902cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 2: 1903cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1904cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 3: 1905cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybest = yyp; 1906cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymerge = yyfalse; 1907cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1908cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 1909cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* This cannot happen so it is not worth a YYASSERT (yyfalse), 1910cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project but some compilers complain if the default case is 1911cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project omitted. */ 1912cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1914cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypp = &yyp->yynext; 1915cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1916cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1917cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1918cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymerge) 1919cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1920cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySemanticOption* yyp; 1921cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyprec = yydprec[yybest->yyrule]; 1922cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyflag = yyresolveAction (yybest, yystackp, &yysval, 1923cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocp]b4_user_args[); 1924cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag == yyok) 1925cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp = yybest->yynext; yyp != NULL; yyp = yyp->yynext) 1926cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1927cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyprec == yydprec[yyp->yyrule]) 1928cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1929cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTYPE yysval_other; 1930cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yydummy; 1931cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyflag = yyresolveAction (yyp, yystackp, &yysval_other, 1932cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yydummy]b4_user_args[); 1933cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag != yyok) 1934cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1935cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Cleanup: discarding incompletely merged value for", 1936cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystos[yys->yylrState], 1937cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yysval]b4_locations_if([, yylocp])[]b4_user_args[); 1938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 1939cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1940cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); 1941cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1942cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1943cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1944cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1945cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp]b4_user_args[); 1946cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1947cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyflag == yyok) 1948cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1949cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yyresolved = yytrue; 1950cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yysemantics.yysval = yysval; 1951cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1952cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1953cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yysemantics.yyfirstVal = NULL; 1954cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyflag; 1955cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1956cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1957cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 1958cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyresolveStack (yyGLRStack* yystackp]b4_user_formals[) 1959cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1960cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yysplitPoint != NULL) 1961cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1962cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yys; 1963cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 1964cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1965cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyn = 0, yys = yystackp->yytops.yystates[0]; 1966cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys != yystackp->yysplitPoint; 1967cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yys->yypred, yyn += 1) 1968cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 1969cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp 1970cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_user_args[)); 1971cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1972cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 1973cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 1974cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1975cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 1976cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyycompressStack (yyGLRStack* yystackp) 1977cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 1978cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState* yyp, *yyq, *yyr; 1979cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1980cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == NULL) 1981cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 1982cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1983cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = NULL; 1984cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp != yystackp->yysplitPoint; 1985cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yyp, yyp = yyq, yyq = yyp->yypred) 1986cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp->yypred = yyr; 1987cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1988cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems; 1989cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1; 1990cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems; 1991cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yysplitPoint = NULL; 1992cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yylastDeleted = NULL; 1993cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1994cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yyr != NULL) 1995cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1996cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree->yystate = *yyr; 1997cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr = yyr->yypred; 1998cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate; 1999cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate; 2000cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree += 1; 2001cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft -= 1; 2002cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2003cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2005cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic YYRESULTTAG 2006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyprocessOneStack (yyGLRStack* yystackp, size_t yyk, 2007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn]b4_pure_formals[) 2008cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyaction; 2010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const short int* yyconflicts; 2011cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum yyrule; 2012cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2013cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yystackp->yytops.yystates[yyk] != NULL) 2014cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2015cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState; 2016cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack %lu Entering state %d\n", 2017cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk, yystate)); 2018cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2019cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yystate != YYFINAL); 2020cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2021cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyisDefaultedState (yystate)) 2022cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2023cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrule = yydefaultAction (yystate); 2024cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyrule == 0) 2025cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2026cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack %lu dies.\n", 2027cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk)); 2028cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymarkStackDeleted (yystackp, yyk); 2029cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 2030cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2031cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyglrReduce (yystackp, yyk, yyrule, yyfalse]b4_user_args[)); 2032cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2033cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2034cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2035cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySymbol yytoken; 2036cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yyk] = yytrue; 2037cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == YYEMPTY) 2038cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2039cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Reading a token: ")); 2040cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYLEX; 2041cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2042cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2043cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2044cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2045cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2046cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); 2047cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2048cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (*yyconflicts != 0) 2049cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2050cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yynewStack = yysplitStack (yystackp, yyk); 2051cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", 2052cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yynewStack, 2053cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk)); 2054cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyglrReduce (yystackp, yynewStack, 2055cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yyconflicts, yyfalse]b4_user_args[)); 2056cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyprocessOneStack (yystackp, yynewStack, 2057cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn]b4_pure_args[)); 2058cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyconflicts += 1; 2059cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2060cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2061cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyisShiftAction (yyaction)) 2062cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2063cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yyisErrorAction (yyaction)) 2064cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2065cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack %lu dies.\n", 2066cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyk)); 2067cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymarkStackDeleted (yystackp, yyk); 2068cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2069cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2070cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2071cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK (yyglrReduce (yystackp, yyk, -yyaction, 2072cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfalse]b4_user_args[)); 2073cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2074cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2075cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyok; 2076cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2077cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2078cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 2079cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[) 2080cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2081cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yyerrState == 0) 2082cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2083cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYERROR_VERBOSE 2084cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 2085cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yypact[yystackp->yytops.yystates[0]->yylrState]; 2086cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (YYPACT_NINF < yyn && yyn <= YYLAST) 2087cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2088cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySymbol yytoken = YYTRANSLATE (yychar); 2089cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize0 = yytnamerr (NULL, yytokenName (yytoken)); 2090cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize = yysize0; 2091cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize1; 2092cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybool yysize_overflow = yyfalse; 2093cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char* yymsg = NULL; 2094cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 2095cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 2096cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyx; 2097cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yyfmt; 2098cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyf; 2099cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static char const yyunexpected[] = "syntax error, unexpected %s"; 2100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static char const yyexpecting[] = ", expecting %s"; 2101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static char const yyor[] = " or %s"; 2102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char yyformat[sizeof yyunexpected 2103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project + sizeof yyexpecting - 1 2104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 2105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project * (sizeof yyor - 1))]; 2106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyprefix = yyexpecting; 2107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Start YYX at -YYN if negative to avoid negative indexes in 2109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHECK. */ 2110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyxbegin = yyn < 0 ? -yyn : 0; 2111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Stay within bounds of both yycheck and yytname. */ 2113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yychecklim = YYLAST - yyn + 1; 2114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 2115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yycount = 1; 2116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyarg[0] = yytokenName (yytoken); 2118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfmt = yystpcpy (yyformat, yyunexpected); 2119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyx = yyxbegin; yyx < yyxend; ++yyx) 2121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 2122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 2124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yycount = 1; 2126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize = yysize0; 2127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyformat[sizeof yyunexpected - 1] = '\0'; 2128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyarg[yycount++] = yytokenName (yyx); 2131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize1 = yysize + yytnamerr (NULL, yytokenName (yyx)); 2132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize_overflow |= yysize1 < yysize; 2133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize = yysize1; 2134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfmt = yystpcpy (yyfmt, yyprefix); 2135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyprefix = yyor; 2136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyf = YY_(yyformat); 2139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize1 = yysize + strlen (yyf); 2140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize_overflow |= yysize1 < yysize; 2141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysize = yysize1; 2142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yysize_overflow) 2144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymsg = (char *) YYMALLOC (yysize); 2145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yymsg) 2147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char *yyp = yymsg; 2149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyi = 0; 2150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((*yyp = *yyf)) 2151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 2153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp += yytnamerr (yyp, yyarg[yyi++]); 2155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyf += 2; 2156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp++; 2160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyf++; 2161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_lyyerror_args[yymsg); 2164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYFREE (yymsg); 2165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_lyyerror_args[YY_("syntax error")); 2169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyMemoryExhausted (yystackp); 2170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* YYERROR_VERBOSE */ 2174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_lyyerror_args[YY_("syntax error")); 2175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynerrs += 1; 2176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, 2180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval, and yylloc are the syntactic category, semantic value, and location 2181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of the look-ahead. */ 2182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*ARGSUSED*/ static void 2183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectyyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[) 2184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyk; 2186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyj; 2187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yyerrState == 3) 2189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* We just shifted the error token and (perhaps) took some 2190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reductions. Skip tokens until we can proceed. */ 2191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySymbol yytoken; 2194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == YYEOF) 2195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyFail (yystackp][]b4_lpure_args[, NULL); 2196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar != YYEMPTY) 2197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {]b4_locations_if([[ 2198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* We throw away the lookahead, but the error range 2199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of the shifted error token must take it into account. */ 2200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys = yystackp->yytops.yystates[0]; 2201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem yyerror_range[3]; 2202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror_range[1].yystate.yyloc = yys->yyloc; 2203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror_range[2].yystate.yyloc = yylloc; 2204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);]])[ 2205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Error: discarding", 2207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); 2208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Reading a token: ")); 2210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYLEX; 2211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj = yypact[yystackp->yytops.yystates[0]->yylrState]; 2214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyis_pact_ninf (yyj)) 2215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 2216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj += yytoken; 2217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken) 2218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0) 2220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 2221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yytable[yyj] != 0 && ! yyis_table_ninf (yytable[yyj])) 2223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return; 2224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Reduce to one stack. */ 2227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1) 2228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yystates[yyk] != NULL) 2229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyk >= yystackp->yytops.yysize) 2231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyFail (yystackp][]b4_lpure_args[, NULL); 2232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1) 2233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yymarkStackDeleted (yystackp, yyk); 2234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyremoveDeletes (yystackp); 2235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yycompressStack (yystackp); 2236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Now pop stack until we find a state that shifts the error token. */ 2238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyerrState = 3; 2239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yystackp->yytops.yystates[0] != NULL) 2240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys = yystackp->yytops.yystates[0]; 2242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj = yypact[yys->yylrState]; 2243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyis_pact_ninf (yyj)) 2244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyj += YYTERROR; 2246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR 2247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && yyisShiftAction (yytable[yyj])) 2248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shift the error token having adjusted its location. */ 2250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLTYPE yyerrloc;]b4_locations_if([[ 2251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyerror_range[2].yystate.yyloc = yylloc; 2252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);]])[ 2253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], 2254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yylval, &yyerrloc); 2255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (yystackp, 0, yytable[yyj], 2256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys->yyposn, &yylval, &yyerrloc); 2257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yys = yystackp->yytops.yystates[0]; 2258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ 2262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestroyGLRState ("Error: popping", yys]b4_user_args[); 2263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yystates[0] = yys->yypred; 2264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yynextFree -= 1; 2265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yyspaceLeft += 1; 2266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystackp->yytops.yystates[0] == NULL) 2268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyFail (yystackp][]b4_lpure_args[, NULL); 2269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYCHK1(YYE) \ 2272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do { \ 2273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (YYE) { \ 2274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case yyok: \ 2275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; \ 2276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case yyabort: \ 2277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyabortlab; \ 2278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case yyaccept: \ 2279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyacceptlab; \ 2280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case yyerr: \ 2281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyuser_error; \ 2282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: \ 2283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yybuglab; \ 2284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 2285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } while (YYID (0)) 2286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------. 2289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| yyparse. | 2290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------*/ 2291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ 2293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyresult; 2295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack yystack; 2296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStack* const yystackp = &yystack; 2297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyposn; 2298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Starting parse\n")); 2300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYEMPTY; 2302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylval = yyval_default; 2303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([ 2304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if YYLTYPE_IS_TRIVIAL 2305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc.first_line = yylloc.last_line = 1; 2306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylloc.first_column = yylloc.last_column = 0; 2307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 2308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]) 2309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_initial_action], [ 2310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_pushdef([b4_at_dollar], [yylloc])dnl 2311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_pushdef([b4_dollar_dollar], [yylval])dnl 2312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* User initialization code. */ 2313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project b4_initial_action 2314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_popdef([b4_dollar_dollar])dnl 2315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_popdef([b4_at_dollar])dnl 2316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Line __line__ of glr.c. */ 2317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_syncline([@oline@], [@ofile@])])dnl 2318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 2319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyinitGLRStack (yystackp, YYINITDEPTH)) 2320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyexhaustedlab; 2321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (YYSETJMP (yystack.yyexception_buffer)) 2322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 0: break; 2324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 1: goto yyabortlab; 2325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 2: goto yyexhaustedlab; 2326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: goto yybuglab; 2327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc); 2329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn = 0; 2330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* For efficiency, we have two loops, the first of which is 2334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project specialized to deterministic operation (single stack, no 2335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project potential ambiguity). */ 2336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Standard mode */ 2337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyRuleNum yyrule; 2340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyaction; 2341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const short int* yyconflicts; 2342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; 2344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystate == YYFINAL) 2346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyacceptlab; 2347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyisDefaultedState (yystate)) 2348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrule = yydefaultAction (yystate); 2350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyrule == 0) 2351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 2353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportSyntaxError (&yystack]b4_user_args[); 2354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyuser_error; 2355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[)); 2357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySymbol yytoken; 2361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == YYEMPTY) 2362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Reading a token: ")); 2364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYLEX; 2365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = YYTRANSLATE (yychar); 2370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); 2371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yyconflicts != 0) 2372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyisShiftAction (yyaction)) 2374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar != YYEOF) 2377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYEMPTY; 2378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn += 1; 2379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc); 2380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yystack.yyerrState) 2381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystack.yyerrState -= 1; 2382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else if (yyisErrorAction (yyaction)) 2384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 2386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportSyntaxError (&yystack]b4_user_args[); 2387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyuser_error; 2388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[)); 2391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (YYID (yytrue)) 2395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yySymbol yytoken_to_shift; 2397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yys; 2398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 2400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; 2401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* yyprocessOneStack returns one of three things: 2403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project - An error flag. If the caller is yyprocessOneStack, it 2405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project immediately returns as well. When the caller is finally 2406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyparse, it jumps to an error label via YYCHK1. 2407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project - yyok, but yyprocessOneStack has invoked yymarkStackDeleted 2409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (&yystack, yys), which sets the top state of yys to NULL. Thus, 2410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyparse's following invocation of yyremoveDeletes will remove 2411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the stack. 2412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project - yyok, when ready to shift a token. 2414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Except in the first case, yyparse will invoke yyremoveDeletes and 2416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project then shift the next token onto all remaining stacks. This 2417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project synchronization of the shift (that is, after all preceding 2418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project reductions on all stacks) helps prevent double destructor calls 2419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project on yylval in the event of memory exhaustion. */ 2420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 2422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn]b4_lpure_args[)); 2423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyremoveDeletes (&yystack); 2424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystack.yytops.yysize == 0) 2425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyundeleteLastStack (&yystack); 2427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystack.yytops.yysize == 0) 2428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); 2429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); 2430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); 2431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ 2432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreportSyntaxError (&yystack]b4_user_args[); 2433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyuser_error; 2434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If any yyglrShift call fails, it will fail after shifting. Thus, 2437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project a copy of yylval will already be on stack 0 in the event of a 2438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project failure in the following loop. Thus, yychar is set to YYEMPTY 2439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project before the loop to make sure the user destructor for yylval isn't 2440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project called twice. */ 2441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken_to_shift = YYTRANSLATE (yychar); 2442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = YYEMPTY; 2443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn += 1; 2444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yys = 0; yys < yystack.yytops.yysize; yys += 1) 2445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyaction; 2447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const short int* yyconflicts; 2448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState; 2449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yygetLRActions (yystate, yytoken_to_shift, &yyaction, 2450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yyconflicts); 2451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Note that yyconflicts were handled by yyprocessOneStack. */ 2452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys)); 2453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc); 2454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyglrShift (&yystack, yys, yyaction, yyposn, 2455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yylval, &yylloc); 2456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Stack %lu now in state #%d\n", 2457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yys, 2458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystack.yytops.yystates[yys]->yylrState)); 2459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystack.yytops.yysize == 1) 2462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); 2464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); 2465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yycompressStack (&yystack); 2466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue; 2470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyuser_error: 2471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrecoverSyntaxError (&yystack]b4_user_args[); 2472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyposn = yystack.yytops.yystates[0]->yyposn; 2473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyacceptlab: 2476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 0; 2477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybuglab: 2480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYASSERT (yyfalse); 2481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyabortlab; 2482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyabortlab: 2484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 1; 2485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyexhaustedlab: 2488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerror (]b4_lyyerror_args[YY_("memory exhausted")); 2489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 2; 2490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 2491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreturn: 2493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar != YYEOF && yychar != YYEMPTY) 2494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct ("Cleanup: discarding lookahead", 2495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYTRANSLATE (yychar), 2496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); 2497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If the stack is well-formed, pop the stack until it is empty, 2499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project destroying its entries as we go. But free the stack regardless 2500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project of whether it is well-formed. */ 2501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystack.yyitems) 2502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState** yystates = yystack.yytops.yystates; 2504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates) 2505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yysize = yystack.yytops.yysize; 2507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyk; 2508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyk = 0; yyk < yysize; yyk += 1) 2509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystates[yyk]) 2510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2511cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while (yystates[yyk]) 2512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRState *yys = yystates[yyk]; 2514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] 2515cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project)[ yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); 2516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystates[yyk] = yys->yypred; 2517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystack.yynextFree -= 1; 2518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystack.yyspaceLeft += 1; 2519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2520cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 2521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyfreeGLRStack (&yystack); 2524cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2525cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2526cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Make sure YYID is used. */ 2527cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return YYID (yyresult); 2528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2530cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* DEBUGGING ONLY */ 2531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef YYDEBUG 2532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yypstack (yyGLRStack* yystackp, size_t yyk) 2533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project __attribute__ ((__unused__)); 2534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void yypdumpstack (yyGLRStack* yystackp) __attribute__ ((__unused__)); 2535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyy_yypstack (yyGLRState* yys) 2538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2539cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yys->yypred) 2540cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2541cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_yypstack (yys->yypred); 2542cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, " -> "); 2543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "%d@@%lu", yys->yylrState, (unsigned long int) yys->yyposn); 2545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2546cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2547cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2548cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypstates (yyGLRState* yyst) 2549cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyst == NULL) 2551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "<null>"); 2552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_yypstack (yyst); 2554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "\n"); 2555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypstack (yyGLRStack* yystackp, size_t yyk) 2559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypstates (yystackp->yytops.yystates[yyk]); 2561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYINDEX(YYX) \ 2564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) 2565cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2566cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2567cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 2568cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectyypdumpstack (yyGLRStack* yystackp) 2569cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 2570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyGLRStackItem* yyp; 2571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project size_t yyi; 2572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1) 2573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "%3lu. ", (unsigned long int) (yyp - yystackp->yyitems)); 2575cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*(yybool *) yyp) 2576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2577cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld", 2578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp->yystate.yyresolved, yyp->yystate.yylrState, 2579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (unsigned long int) yyp->yystate.yyposn, 2580cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (long int) YYINDEX (yyp->yystate.yypred)); 2581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (! yyp->yystate.yyresolved) 2582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, ", firstVal: %ld", 2583cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (long int) YYINDEX (yyp->yystate.yysemantics.yyfirstVal)); 2584cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2585cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 2586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 2587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "Option. rule: %d, state: %ld, next: %ld", 2588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyp->yyoption.yyrule - 1, 2589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (long int) YYINDEX (yyp->yyoption.yystate), 2590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (long int) YYINDEX (yyp->yyoption.yynext)); 2591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "\n"); 2593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 2594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "Tops:"); 2595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) 2596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "%lu: %ld; ", (unsigned long int) yyi, 2597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project (long int) YYINDEX (yystackp->yytops.yystates[yyi])); 2598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, "\n"); 2599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 2600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 2601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project] 2602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_epilogue 2604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_defines_if( 2605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[@output @output_header_name@ 2606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton interface for Bison GLR parsers in C], 2607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [2002, 2003, 2004, 2005, 2006]) 2608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_shared_declarations 2610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern YYSTYPE b4_prefix[]lval; 2612cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2613cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_locations_if([b4_pure_if([], 2614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[extern YYLTYPE b4_prefix[]lloc;]) 2615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]) 2616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]) 2617