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