1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# C++ skeleton for Bison 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copyright (C) 2002-2012 Free Software Foundation, Inc. 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is free software: you can redistribute it and/or modify 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# it under the terms of the GNU General Public License as published by 705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# the Free Software Foundation, either version 3 of the License, or 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# (at your option) any later version. 905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful, 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details. 1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License 1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# along with this program. If not, see <http://www.gnu.org/licenses/>. 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_include(b4_pkgdatadir/[c++.m4]) 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2005436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([b4_parser_class_name], 2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_percent_define_get([[parser_class_name]])]) 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# The header is mandatory. 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_defines_if([], 2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_define_ifdef([[api.location.type]], [], 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [# Backward compatibility. 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang m4_define([b4_location_constructors]) 3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang m4_include(b4_pkgdatadir/[location.cc])]) 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_include(b4_pkgdatadir/[stack.hh]) 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_defines_if( 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[b4_output_begin([b4_spec_defines_file]) 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton interface for Bison LALR(1) parsers in C++], 3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2002-2012]) 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** 3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ** \file ]b4_spec_defines_file[ 4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang ** Define the ]b4_namespace_ref[::parser class. 4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */ 4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* C++ LALR(1) parser skeleton written by Akim Demaille. */ 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_cpp_guard_open([b4_spec_defines_file])[ 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[requires]])[ 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <string> 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <iostream> 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "stack.hh" 5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_define_ifdef([[api.location.type]], [], 5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[#include "location.hh"]])[ 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_YYDEBUG_define[ 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_namespace_open[ 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// A Bison parser. 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project class ]b4_parser_class_name[ 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project public: 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Symbol semantic values. 6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef ]b4_api_PREFIX[STYPE 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]m4_ifdef([b4_stype], 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ union semantic_type 6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 6805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_user_stype 6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang };], 7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang[m4_if(b4_tag_seen_flag, 0, 7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[ typedef int semantic_type;]], 7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[ 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang typedef ]b4_api_PREFIX[STYPE semantic_type; 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Symbol locations. 7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang typedef ]b4_percent_define_get([[api.location.type]], 7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang [[location]])[ location_type; 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Tokens. 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct token 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_token_enums(b4_tokens)[ 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Token type. 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef token::yytokentype token_type; 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Build a parser object. 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[ (]b4_parse_param_decl[); 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual ~]b4_parser_class_name[ (); 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Parse. 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \returns 0 iff parsing succeeded. 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual int parse (); 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The current debugging stream. 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project std::ostream& debug_stream () const; 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Set the current debugging stream. 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void set_debug_stream (std::ostream &); 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Type for debugging levels. 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef int debug_level_type; 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The current debugging level. 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project debug_level_type debug_level () const; 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Set the current debugging level. 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void set_debug_level (debug_level_type l); 10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project private: 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Report a syntax error. 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param loc where the syntax error is found. 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param msg a description of the syntax error. 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual void error (const location_type& loc, const std::string& msg); 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Generate an error message. 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param state the state where the error occurred. 11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// \param tok the lookahead token. 11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang virtual std::string yysyntax_error_ (int yystate, int tok); 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \brief Report a symbol value on the debug stream. 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yytype The token type. 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yyvaluep Its semantic value. 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yylocationp Its location. 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual void yy_symbol_value_print_ (int yytype, 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const semantic_type* yyvaluep, 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const location_type* yylocationp); 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \brief Report a symbol on the debug stream. 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yytype The token type. 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yyvaluep Its semantic value. 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yylocationp Its location. 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual void yy_symbol_print_ (int yytype, 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const semantic_type* yyvaluep, 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const location_type* yylocationp); 13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// State numbers. 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef int state_type; 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// State stack type. 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef stack<state_type> state_stack_type; 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Semantic value stack type. 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef stack<semantic_type> semantic_stack_type; 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// location stack type. 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef stack<location_type> location_stack_type; 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The state stack. 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project state_stack_type yystate_stack_; 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The semantic value stack. 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project semantic_stack_type yysemantic_stack_; 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The location stack. 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project location_stack_type yylocation_stack_; 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// Whether the given \c yypact_ value indicates a defaulted state. 15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// \param yyvalue the value to check 15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang static bool yy_pact_value_is_default_ (int yyvalue); 15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// Whether the given \c yytable_ value indicates a syntax error. 15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// \param yyvalue the value to check 16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang static bool yy_table_value_is_error_ (int yyvalue); 16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Internal symbol numbers. 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef ]b4_int_type_for([b4_translate])[ token_number_type; 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Tables. */ 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For a state, the index in \a yytable_ of its portion. 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_pact])[ yypact_[]; 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_; 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// For a state, default reduction number. 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Unless\a yytable_ specifies something else to do. 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Zero means the default is an error. 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_defact])[ yydefact_[]; 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_pgoto])[ yypgoto_[]; 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_defgoto])[ yydefgoto_[]; 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// What to do in a state. 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \a yytable_[yypact_[s]]: what to do in state \a s. 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// - if positive, shift that token. 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// - if negative, reduce the rule which number is the opposite. 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// - if zero, do what YYDEFACT says. 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_table])[ yytable_[]; 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_; 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_check])[ yycheck_[]; 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For a state, its accessing symbol. 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_stos])[ yystos_[]; 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For a rule, its LHS. 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_r1])[ yyr1_[]; 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For a rule, its RHS length. 19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([ 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Convert the symbol name \a n to a form suitable for a diagnostic. 19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang static std::string yytnamerr_ (const char *n);])[ 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ 19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// For a symbol, its name in clear. 20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang static const char* const yytname_[]; 20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// A type to store symbol numbers and -1. 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type; 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// A `-1'-separated list of the rules' RHS. 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const rhs_number_type yyrhs_[]; 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For each rule, the index of the first RHS symbol in \a yyrhs_. 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_prhs])[ yyprhs_[]; 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For each rule, its source line number. 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_rline])[ yyrline_[]; 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// For each scanner token number, its symbol number. 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const ]b4_int_type_for([b4_toknum])[ yytoken_number_[]; 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Report on the debug stream that the rule \a r is going to be reduced. 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual void yy_reduce_print_ (int r); 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Print the state stack on the debug stream. 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project virtual void yystack_print_ (); 21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Debugging. */ 21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yydebug_; 21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang std::ostream* yycdebug_; 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Convert a scanner token number \a t to a symbol number. 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project token_number_type yytranslate_ (int t); 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \brief Reclaim the memory associated to a symbol. 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yymsg Why this token is reclaimed. 22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// If null, do not display the symbol, just free it. 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yytype The symbol type. 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yyvaluep Its semantic value. 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// \param yylocationp Its location. 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project inline void yydestruct_ (const char* yymsg, 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yytype, 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project semantic_type* yyvaluep, 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project location_type* yylocationp); 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Pop \a n symbols the three stacks. 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project inline void yypop_ (unsigned int n = 1); 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Constants. */ 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyeof_; 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* LAST_ -- Last index in TABLE_. */ 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yylast_; 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yynnts_; 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyempty_; 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyfinal_; 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyterror_; 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyerrcode_; 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const int yyntokens_; 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const unsigned int yyuser_token_number_max_; 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static const token_number_type yyundef_token_; 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]b4_parse_param_vars[ 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_namespace_close[ 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_define_flag_if([[global_tokens_and_yystype]], 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[b4_token_defines(b4_tokens) 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef ]b4_api_PREFIX[STYPE 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Redirection for backward compatibility. */ 26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project])[ 26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get([[provides]])[ 26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_cpp_guard_close([b4_spec_defines_file]) 26505436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_end() 26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]) 26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang 26905436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_begin([b4_parser_file_name]) 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++], 27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang [2002-2012]) 27205436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_percent_code_get([[top]])[]dnl 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_if(b4_prefix, [yy], [], 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project// Take the name prefix into account. 27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yylex b4_prefix[]lex])[ 27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* First part of user declarations. */ 27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_pre_prologue[ 28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_defines_if([[ 28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include "@basename(]b4_spec_defines_file[@)"]])[ 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* User implementation prologue. */ 28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_user_post_prologue[ 28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_percent_code_get[ 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_null_define[ 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef YY_ 29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined YYENABLE_NLS && YYENABLE_NLS 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# if ENABLE_NLS 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */ 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_(msgid) dgettext ("bison-runtime", msgid) 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ifndef YY_ 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_(msgid) msgid 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# endif 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYRHSLOC(Rhs, K) ((Rhs)[K]) 30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_yylloc_default_define[ 30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Suppress unused-variable warnings by "using" E. */ 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYUSE(e) ((void) (e)) 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Enable debugging if requested. */ 30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang 31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A pseudo ostream that takes yydebug_ into account. */ 31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCDEBUG if (yydebug_) (*yycdebug_) 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug_) \ 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { \ 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << Title << ' '; \ 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_print_ ((Type), (Value), (Location)); \ 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << std::endl; \ 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } \ 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (false) 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_REDUCE_PRINT(Rule) \ 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug_) \ 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_reduce_print_ (Rule); \ 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (false) 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define YY_STACK_PRINT() \ 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdo { \ 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yydebug_) \ 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystack_print_ (); \ 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} while (false) 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else /* !]b4_api_PREFIX[DEBUG */ 33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang 33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YYCDEBUG if (false) std::cerr 33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type) 34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_REDUCE_PRINT(Rule) static_cast<void>(0) 34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_STACK_PRINT() static_cast<void>(0) 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !]b4_api_PREFIX[DEBUG */ 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyerrok (yyerrstatus_ = 0) 34605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyclearin (yychar = yyempty_) 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYACCEPT goto yyacceptlab 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYABORT goto yyabortlab 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define YYERROR goto yyerrorlab 35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYRECOVERING() (!!yyerrstatus_) 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_namespace_open[]b4_error_verbose_if([[ 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Return YYSTR after stripping away unnecessary quotes and 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project backslashes, so that it's suitable for yyerror. The heuristic is 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project that double-quoting is unnecessary unless the string contains an 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project apostrophe, a comma, or backslash (other than backslash-backslash). 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYSTR is taken from yytname. */ 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project std::string 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yytnamerr_ (const char *yystr) 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*yystr == '"') 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project std::string yyr = ""; 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project char const *yyp = yystr; 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (*++yyp) 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\'': 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case ',': 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '\\': 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (*++yyp != '\\') 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto do_not_strip_quotes; 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Fall through. */ 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyr += *yyp; 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case '"': 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyr; 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do_not_strip_quotes: ; 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yystr; 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])[ 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// Build a parser object. 39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [ 39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang :])[ 39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false), 39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[ 39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif]b4_parse_param_cons[ 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name::~b4_parser_class_name[ () 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*--------------------------------. 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | Print this symbol on YYOUTPUT. | 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `--------------------------------*/ 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project inline void 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const semantic_type* yyvaluep, const location_type* yylocationp) 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yylocationp); 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyvaluep); 41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang std::ostream& yyo = debug_stream (); 41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang std::ostream& yyoutput = yyo; 42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYUSE (yyoutput); 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yytype) 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[ default: 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yy_symbol_print_ (int yytype, 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const semantic_type* yyvaluep, const location_type* yylocationp) 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm") 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project << ' ' << yytname_[yytype] << " (" 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project << *yylocationp << ": "; 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << ')'; 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yydestruct_ (const char* yymsg, 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yytype, semantic_type* yyvaluep, location_type* yylocationp) 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yylocationp); 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yymsg); 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYUSE (yyvaluep); 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yymsg) 45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yytype) 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[ 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yypop_ (unsigned int n) 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate_stack_.pop (n); 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_.pop (n); 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_.pop (n); 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project std::ostream& 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::debug_stream () const 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return *yycdebug_; 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::set_debug_stream (std::ostream& o) 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yycdebug_ = &o; 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::debug_level_type 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::debug_level () const 485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yydebug_; 487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 490cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::set_debug_level (debug_level_type l) 491cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydebug_ = l; 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif 49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang inline bool 49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue) 49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyvalue == yypact_ninf_; 50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang inline bool 50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue) 50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyvalue == yytable_ninf_; 50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::parse () 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// Lookahead and lookahead in internal form. 512cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yychar = yyempty_; 513cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yytoken = 0; 514cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang // State. 516cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyn; 517cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yylen = 0; 518cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yystate = 0; 519cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Error handling. 521cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynerrs_ = 0; 522cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyerrstatus_ = 0; 523cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// Semantic value of the lookahead. 52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang static semantic_type yyval_default; 52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang semantic_type yylval = yyval_default; 52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /// Location of the lookahead. 528cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project location_type yylloc; 529cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// The locations where the error started and ended. 53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang location_type yyerror_range[3]; 531cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 532cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// $$. 533cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project semantic_type yyval; 534cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /// @@$. 535cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project location_type yyloc; 536cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 537cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yyresult; 538cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang // FIXME: This shoud be completely indented. It is not yet to 54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang // avoid gratuitous conflicts when merging into the master branch. 54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang try 54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 543cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCDEBUG << "Starting parse" << std::endl; 544cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 545cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]m4_ifdef([b4_initial_action], [ 54605436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_pushdef([yylval], [], [yylloc])dnl 54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* User initialization code. */ 54805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_user_initial_action 54905436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_dollar_popdef])[]dnl 550cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 551cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project [ /* Initialize the stacks. The initial state will be pushed in 552cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewstate, since the latter expects the semantical and the 553cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project location values to have been already stored, initialize these 554cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stacks with a primary value. */ 555cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate_stack_ = state_stack_type (0); 556cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_ = semantic_stack_type (0); 557cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_ = location_stack_type (0); 558cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_.push (yylval); 559cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_.push (yylloc); 560cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 561cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* New state. */ 562cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yynewstate: 563cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate_stack_.push (yystate); 564cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCDEBUG << "Entering state " << yystate << std::endl; 56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Accept? */ 56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yystate == yyfinal_) 56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyacceptlab; 56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 570cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yybackup; 571cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 572cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Backup. */ 573cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yybackup: 574cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Try to take a decision without lookahead. */ 576cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yypact_[yystate]; 57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_pact_value_is_default_ (yyn)) 578cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yydefault; 579cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Read a lookahead token. */ 581cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar == yyempty_) 582cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCDEBUG << "Reading a token: "; 58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = ]b4_c_function_call([yylex], [int], 58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang [b4_api_PREFIX[STYPE*], [&yylval]][]dnl 586cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectb4_locations_if([, [[location*], [&yylloc]]])dnl 587cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectm4_ifdef([b4_lex_param], [, ]b4_lex_param))[; 588cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 589cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 590cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Convert token to internal form. */ 591cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yychar <= yyeof_) 592cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 593cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yychar = yytoken = yyeof_; 594cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYCDEBUG << "Now at end of input." << std::endl; 595cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 596cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 597cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 598cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yytoken = yytranslate_ (yychar); 599cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 600cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 601cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 602cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If the proper action on seeing token YYTOKEN is to reduce or to 603cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project detect an error, take that action. */ 604cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn += yytoken; 605cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) 606cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yydefault; 607cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 608cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Reduce or error. */ 609cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yytable_[yyn]; 610cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyn <= 0) 611cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yy_table_value_is_error_ (yyn)) 61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang goto yyerrlab; 614cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = -yyn; 615cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreduce; 616cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 617cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Shift the lookahead token. */ 619cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 620cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Discard the token being shifted. */ 62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yyempty_; 623cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 624cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_.push (yylval); 625cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_.push (yylloc); 626cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 627cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Count tokens shifted since error; after three, turn off error 628cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project status. */ 629cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyerrstatus_) 630cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project --yyerrstatus_; 631cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 632cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yyn; 633cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 634cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 635cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*-----------------------------------------------------------. 636cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | yydefault -- do the default action for the current state. | 637cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `-----------------------------------------------------------*/ 638cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydefault: 639cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yydefact_[yystate]; 640cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyn == 0) 641cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab; 642cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreduce; 643cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 644cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*-----------------------------. 645cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | yyreduce -- Do a reduction. | 646cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `-----------------------------*/ 647cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreduce: 648cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = yyr2_[yyn]; 649cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If YYLEN is nonzero, implement the default value of the action: 650cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `$$ = $1'. Otherwise, use the top of the stack. 651cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 652cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Otherwise, the following line sets YYVAL to garbage. 653cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This behavior is undocumented and Bison 654cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project users should not rely upon it. */ 655cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yylen) 656cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyval = yysemantic_stack_[yylen - 1]; 657cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 658cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyval = yysemantic_stack_[0]; 659cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Compute the default @@$. 661cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 662cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project slice<location_type, location_stack_type> slice (yylocation_stack_, yylen); 663cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYLLOC_DEFAULT (yyloc, slice, yylen); 664cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Perform the reduction. 667cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_REDUCE_PRINT (yyn); 668cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (yyn) 669cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_user_actions[ 67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang default: 67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 673cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* User semantic actions sometimes alter yychar, and that requires 67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang that yytoken be updated with the new translation. We take the 67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang approach of translating immediately before every use of yytoken. 67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang One alternative is translating here after every semantic action, 67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang but that translation would be missed if the semantic action 68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang invokes YYABORT, YYACCEPT, or YYERROR immediately after altering 68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar. In the case of YYABORT or YYACCEPT, an incorrect 68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang destructor might then be invoked immediately. In the case of 68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYERROR, subsequent parser actions might lead to an incorrect 68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang destructor call or verbose syntax error message before the 68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang lookahead is translated. */ 686cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); 687cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 688cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypop_ (yylen); 689cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = 0; 690cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (); 691cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 692cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_.push (yyval); 693cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_.push (yyloc); 694cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 695cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shift the result of the reduction. */ 696cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yyr1_[yyn]; 697cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0]; 698cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yystate && yystate <= yylast_ 699cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project && yycheck_[yystate] == yystate_stack_[0]) 700cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yytable_[yystate]; 701cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 702cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yydefgoto_[yyn - yyntokens_]; 703cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 704cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 705cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*------------------------------------. 706cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | yyerrlab -- here on detecting error | 707cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `------------------------------------*/ 708cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrlab: 70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Make sure we have latest lookahead translation. See comments at 71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang user semantic actions for why this is necessary. */ 71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = yytranslate_ (yychar); 71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang 713cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* If not already recovering from an error, report this error. */ 714cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (!yyerrstatus_) 715cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 716cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ++yynerrs_; 71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == yyempty_) 71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = yyempty_; 71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang error (yylloc, yysyntax_error_ (yystate, yytoken)); 720cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 721cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[1] = yylloc; 723cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yyerrstatus_ == 3) 724cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* If just tried and failed to reuse lookahead token after an 72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang error, discard it. */ 72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar <= yyeof_) 72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Return failure if at end of input. */ 73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar == yyeof_) 73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYABORT; 73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); 73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar = yyempty_; 73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 738cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 739cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Else will try to reuse lookahead token after shifting the error 741cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project token. */ 742cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab1; 743cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 744cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 745cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*---------------------------------------------------. 746cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | yyerrorlab -- error raised explicitly by YYERROR. | 747cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `---------------------------------------------------*/ 748cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrorlab: 749cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 750cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pacify compilers like GCC when the user code never invokes 751cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYERROR and the label yyerrorlab therefore never appears in user 752cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project code. */ 753cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (false) 754cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrorlab; 755cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[1] = yylocation_stack_[yylen - 1]; 757cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Do not reclaim the symbols of the rule which action triggered 758cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this YYERROR. */ 759cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypop_ (yylen); 760cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylen = 0; 761cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yystate_stack_[0]; 762cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyerrlab1; 763cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 764cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /*-------------------------------------------------------------. 765cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | yyerrlab1 -- common code for both syntax error and YYERROR. | 766cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `-------------------------------------------------------------*/ 767cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrlab1: 768cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyerrstatus_ = 3; /* Each real token shifted decrements this. */ 769cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 770cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (;;) 771cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 772cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yypact_[yystate]; 77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yy_pact_value_is_default_ (yyn)) 774cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 775cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn += yyterror_; 776cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) 777cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 778cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyn = yytable_[yyn]; 779cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (0 < yyn) 780cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 781cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 782cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 783cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 784cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Pop the current state because it cannot handle the error token. */ 785cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (yystate_stack_.height () == 1) 78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYABORT; 787cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[1] = yylocation_stack_[0]; 789cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yydestruct_ ("Error: popping", 790cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystos_[yystate], 791cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &yysemantic_stack_[0], &yylocation_stack_[0]); 792cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypop_ (); 793cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yystate_stack_[0]; 794cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_STACK_PRINT (); 795cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 796cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyerror_range[2] = yylloc; 798cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project // Using YYLLOC is tempting, but would change the location of 79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang // the lookahead. YYLOC is available though. 80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYLLOC_DEFAULT (yyloc, yyerror_range, 2); 801cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yysemantic_stack_.push (yylval); 802cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yylocation_stack_.push (yyloc); 803cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 804cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Shift the error token. */ 805cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT ("Shifting", yystos_[yyn], 80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yysemantic_stack_[0], &yylocation_stack_[0]); 807cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 808cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yystate = yyn; 809cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yynewstate; 810cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 811cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Accept. */ 812cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyacceptlab: 813cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 0; 814cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 815cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 816cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Abort. */ 817cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyabortlab: 818cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyresult = 1; 819cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project goto yyreturn; 820cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 821cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyreturn: 82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != yyempty_) 82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Make sure we have latest lookahead translation. See comments 82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang at user semantic actions for why this is necessary. */ 82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = yytranslate_ (yychar); 82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, 82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yylloc); 82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 830cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 831cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Do not reclaim the symbols of the rule which action triggered 832cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project this YYABORT or YYACCEPT. */ 833cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yypop_ (yylen); 83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (1 < yystate_stack_.height ()) 835cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct_ ("Cleanup: popping", 83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystos_[yystate_stack_[0]], 83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yysemantic_stack_[0], 83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yylocation_stack_[0]); 84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypop_ (); 841cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 842cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 843cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyresult; 84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang catch (...) 84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCDEBUG << "Exception caught: cleaning lookahead and stack" 84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang << std::endl; 84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Do not try to display the values of the reclaimed symbols, 85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang // as their printer might throw an exception. 85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yychar != yyempty_) 85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Make sure we have latest lookahead translation. See 85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang comments at user semantic actions for why this is 85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang necessary. */ 85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yytoken = yytranslate_ (yychar); 85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc); 85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang while (1 < yystate_stack_.height ()) 86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang yydestruct_ (YY_NULL, 86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang yystos_[yystate_stack_[0]], 86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yysemantic_stack_[0], 86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang &yylocation_stack_[0]); 86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang yypop_ (); 86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang throw; 86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 870cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 871cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 872cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project // Generate an error message. 873cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project std::string 87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ]b4_parser_class_name[::yysyntax_error_ (]dnl 87505436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_error_verbose_if([int yystate, int yytoken], 87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang [int, int])[) 87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang {]b4_error_verbose_if([[ 87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang std::string yyres; 87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Number of reported tokens (one for the "unexpected", one per 88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang // "expected"). 88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yycount = 0; 88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Its maximum. 88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Arguments of yyformat. 88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang 88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* There are many possibilities here to consider: 88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang - If this state is a consistent state with a default action, then 88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang the only way this function was invoked is if the default action 89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang is an error action. In that case, don't check for expected 89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang tokens because there are none. 89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang - The only way there can be no lookahead present (in yytoken) is 89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang if this state is a consistent state with a default action. 89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang Thus, detecting the absence of a lookahead is sufficient to 89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang determine that there is no unexpected or expected token to 89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang report. In that case, just report a simple "syntax error". 89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Don't assume there isn't a lookahead just because this state is 89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang a consistent state with a default action. There might have 89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang been a previous inconsistent state, consistent state with a 90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang non-default action, or user semantic action that manipulated 90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yychar. 90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang - Of course, the expected token list depends on states to have 90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang correct lookahead information, and it depends on the parser not 90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang to perform extra reductions after fetching a lookahead from the 90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang scanner and before detecting a syntax error. Thus, state 90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang merging (from LALR or IELR) and default reductions corrupt the 90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang expected token list. However, the list is correct for 90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang canonical LR with one exception: it will still contain any 90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang token that will not be accepted due to an error action in a 91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang later state. 91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */ 91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yytoken != yyempty_) 913cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytname_[yytoken]; 91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyn = yypact_[yystate]; 91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (!yy_pact_value_is_default_ (yyn)) 91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Start YYX at -YYN if negative to avoid negative indexes in 91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCHECK. In other words, skip the first -YYN actions for 92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang this state because they are default actions. */ 92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxbegin = yyn < 0 ? -yyn : 0; 92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* Stay within bounds of both yycheck and yytname. */ 92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yychecklim = yylast_ - yyn + 1; 92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; 92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (int yyx = yyxbegin; yyx < yyxend; ++yyx) 92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ 92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang && !yy_table_value_is_error_ (yytable_[yyx + yyn])) 92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yycount = 1; 93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang break; 93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyarg[yycount++] = yytname_[yyx]; 93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 938cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang 94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang char const* yyformat = YY_NULL; 94105436638acc7c010349a69c3395f1a57c642dc62Ying Wang switch (yycount) 94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYCASE_(N, S) \ 94405436638acc7c010349a69c3395f1a57c642dc62Ying Wang case N: \ 94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyformat = S; \ 94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang break 94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(0, YY_("syntax error")); 94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(1, YY_("syntax error, unexpected %s")); 94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef YYCASE_ 95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang 95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang // Argument number. 95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang size_t yyi = 0; 95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang for (char const* yyp = yyformat; *yyp; ++yyp) 95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) 96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang { 96105436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyres += yytnamerr_ (yyarg[yyi++]); 96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ++yyp; 96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang } 96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang else 96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang yyres += *yyp; 96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang return yyres;]], [[ 96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang return YY_("syntax error");]])[ 968cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 969cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 970cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 971cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 972cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project STATE-NUM. */ 973cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[; 974cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_pact])[ 975cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yypact_[] = 976cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 977cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pact[ 978cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 979cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang /* YYDEFACT[S] -- default reduction number in state S. Performed when 98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang YYTABLE doesn't specify something else to do. Zero means the 98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang default is an error. */ 983cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_defact])[ 984cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yydefact_[] = 985cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 986cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defact[ 987cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 988cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 989cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYPGOTO[NTERM-NUM]. */ 990cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_pgoto])[ 991cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yypgoto_[] = 992cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 993cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_pgoto[ 994cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 995cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 996cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYDEFGOTO[NTERM-NUM]. */ 997cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_defgoto])[ 998cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yydefgoto_[] = 999cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1000cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_defgoto[ 1001cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1002cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1003cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1004cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project positive, shift that token. If negative, reduce the rule which 100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang number is the opposite. If YYTABLE_NINF_, syntax error. */ 1006cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[; 1007cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_table])[ 1008cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yytable_[] = 1009cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1010cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_table[ 1011cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1012cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1013cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYCHECK. */ 1014cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_check])[ 1015cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yycheck_[] = 1016cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1017cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_check[ 1018cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1019cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1020cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* STOS_[STATE-NUM] -- The (internal number of the) accessing 1021cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project symbol of state STATE-NUM. */ 1022cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_stos])[ 1023cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yystos_[] = 1024cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1025cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_stos[ 1026cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1027cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if ]b4_api_PREFIX[DEBUG 1029cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding 1030cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project to YYLEX-NUM. */ 1031cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_toknum])[ 1032cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yytoken_number_[] = 1033cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1034cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_toknum[ 1035cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1036cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 1037cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1038cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1039cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_r1])[ 1040cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yyr1_[] = 1041cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1042cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r1[ 1043cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1044cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1045cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 1046cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_r2])[ 1047cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yyr2_[] = 1048cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1049cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_r2[ 1050cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1051cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ 1053cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 1054cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project First, the terminals, then, starting at \a yyntokens_, nonterminals. */ 1055cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const char* 1056cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_parser_class_name[::yytname_[] = 1057cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1058cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_tname[ 1059cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1060cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ 1062cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 1063cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_parser_class_name[::rhs_number_type 1064cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yyrhs_[] = 1065cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1066cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rhs[ 1067cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1068cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1069cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 1070cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YYRHS. */ 1071cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_prhs])[ 1072cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yyprhs_[] = 1073cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1074cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_prhs[ 1075cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1076cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1077cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 1078cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_int_type_for([b4_rline])[ 1079cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yyrline_[] = 1080cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1081cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_rline[ 1082cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1083cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1084cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project // Print the state stack on the debug stream. 1085cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 1086cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yystack_print_ () 1087cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1088cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << "Stack now"; 1089cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (state_stack_type::const_iterator i = yystate_stack_.begin (); 1090cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project i != yystate_stack_.end (); ++i) 1091cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << ' ' << *i; 1092cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << std::endl; 1093cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1094cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1095cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project // Report on the debug stream that the rule \a yyrule is going to be reduced. 1096cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project void 1097cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yy_reduce_print_ (int yyrule) 1098cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1099cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project unsigned int yylno = yyrline_[yyrule]; 1100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int yynrhs = yyr2_[yyrule]; 1101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Print the symbols being reduced, and their result. */ 1102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project *yycdebug_ << "Reducing stack by rule " << yyrule - 1 110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang << " (line " << yylno << "):" << std::endl; 1104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* The symbols being reduced. */ 1105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project for (int yyi = 0; yyi < yynrhs; yyi++) 1106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", 1107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yyrhs_[yyprhs_[yyrule] + yyi], 1108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &]b4_rhs_value(yynrhs, yyi + 1)[, 1109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &]b4_rhs_location(yynrhs, yyi + 1)[); 1110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif // ]b4_api_PREFIX[DEBUG 1112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 1114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::token_number_type 1115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_parser_class_name[::yytranslate_ (int t) 1116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project static 1118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const token_number_type 1119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project translate_table[] = 1120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 1121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ]b4_translate[ 1122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project }; 1123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if ((unsigned int) t <= yyuser_token_number_max_) 1124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return translate_table[t]; 1125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 1126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project return yyundef_token_; 1127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 1128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyeof_ = 0; 1130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yylast_ = ]b4_last[; 1131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[; 1132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyempty_ = -2; 1133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[; 1134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyterror_ = 1; 1135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyerrcode_ = 256; 1136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[; 1137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[; 1139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[; 1140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_namespace_close[ 114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]b4_epilogue[]dnl 114305436638acc7c010349a69c3395f1a57c642dc62Ying Wangb4_output_end() 1144