use std::convert::TryInto;
use crate::{ParserOptions, ParserResult};
use crate::{Token};
use crate::{Lexer, Builder, CurrentArgStack, StaticEnvironment, MaxNumparamStack, VariablesStack};
use crate::lex_states::*;
use crate::{Context as ParserContext, ContextItem};
use crate::builder::{LoopType, KeywordCmd, LogicalOp, PKwLabel, ArgsType};
use crate::builder::clone_value;
use crate::parse_value::ParseValue as Value;
use crate::parse_value::*;
use crate::Node;
use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
use crate::error::Diagnostics;
use crate::token_rewriter::{LexStateAction, RewriteAction, TokenRewriter};
use crate::debug_level;
use crate::containers::{Ptr, MaybePtr, List, ptr::UnPtr, maybe_ptr::MaybePtrNone, StringPtr};
use crate::source::CustomDecoder;
#[derive(Debug)]
pub struct Parser {
pub yylexer: Lexer,
#[allow(dead_code)]
yy_error_verbose: bool,
yynerrs: i32,
pub yydebug: bool,
yyerrstatus_: i32,
result: MaybePtr<Node>,
builder: Builder,
current_arg_stack: CurrentArgStack,
pub static_env: StaticEnvironment,
context: ParserContext,
last_token_type: i32,
max_numparam_stack: MaxNumparamStack,
pattern_variables: VariablesStack,
pattern_hash_keys: VariablesStack,
tokens: List<Token>,
diagnostics: Diagnostics,
token_rewriter: TokenRewriter,
record_tokens: bool,
}
#[inline]
fn i32_to_usize(v: i32) -> usize {
v.try_into().unwrap()
}
pub fn token_name(id: i32) -> &'static str {
let first_token = Lexer::YYerror;
if id > first_token + 1 {
let pos: usize = (id - first_token + 1)
.try_into()
.expect("failed to cast token id into usize, is it negative?");
Lexer::TOKEN_NAMES[pos]
} else if id == 0 {
"EOF"
} else {
panic!("token_name fails, {} (first token = {})", id, first_token)
}
}
#[derive(Clone, PartialEq)]
#[repr(C)]
pub struct Loc {
pub begin: usize,
pub end: usize,
}
type YYLoc = Loc ;
impl YYLoc {
pub fn to_range(&self) -> std::ops::Range<usize> {
self.begin..self.end
}
}
impl Default for YYLoc {
fn default() -> Self {
Self { begin: 0, end: 0 }
}
}
impl Parser {
#[allow(dead_code)]
const BISON_VERSION: &'static str = "30705";
}
fn make_yylloc(rhs: &YYStack, n: usize) -> YYLoc {
if 0 < n {
YYLoc { begin: rhs.location_at(n - 1).begin, end: rhs.location_at(0).end }
} else {
YYLoc { begin: rhs.location_at(0).end, end: rhs.location_at(0).end }
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct SymbolKind { value: i32 }
impl SymbolKind {
#[allow(non_upper_case_globals)]
const S_YYEOF: i32 = 0;
#[allow(non_upper_case_globals)]
const S_YYerror: i32 = 1;
#[allow(non_upper_case_globals)]
const S_YYUNDEF: i32 = 2;
#[allow(non_upper_case_globals)]
const S_kCLASS: i32 = 3;
#[allow(non_upper_case_globals)]
const S_kMODULE: i32 = 4;
#[allow(non_upper_case_globals)]
const S_kDEF: i32 = 5;
#[allow(non_upper_case_globals)]
const S_kUNDEF: i32 = 6;
#[allow(non_upper_case_globals)]
const S_kBEGIN: i32 = 7;
#[allow(non_upper_case_globals)]
const S_kRESCUE: i32 = 8;
#[allow(non_upper_case_globals)]
const S_kENSURE: i32 = 9;
#[allow(non_upper_case_globals)]
const S_kEND: i32 = 10;
#[allow(non_upper_case_globals)]
const S_kIF: i32 = 11;
#[allow(non_upper_case_globals)]
const S_kUNLESS: i32 = 12;
#[allow(non_upper_case_globals)]
const S_kTHEN: i32 = 13;
#[allow(non_upper_case_globals)]
const S_kELSIF: i32 = 14;
#[allow(non_upper_case_globals)]
const S_kELSE: i32 = 15;
#[allow(non_upper_case_globals)]
const S_kCASE: i32 = 16;
#[allow(non_upper_case_globals)]
const S_kWHEN: i32 = 17;
#[allow(non_upper_case_globals)]
const S_kWHILE: i32 = 18;
#[allow(non_upper_case_globals)]
const S_kUNTIL: i32 = 19;
#[allow(non_upper_case_globals)]
const S_kFOR: i32 = 20;
#[allow(non_upper_case_globals)]
const S_kBREAK: i32 = 21;
#[allow(non_upper_case_globals)]
const S_kNEXT: i32 = 22;
#[allow(non_upper_case_globals)]
const S_kREDO: i32 = 23;
#[allow(non_upper_case_globals)]
const S_kRETRY: i32 = 24;
#[allow(non_upper_case_globals)]
const S_kIN: i32 = 25;
#[allow(non_upper_case_globals)]
const S_kDO: i32 = 26;
#[allow(non_upper_case_globals)]
const S_kDO_COND: i32 = 27;
#[allow(non_upper_case_globals)]
const S_kDO_BLOCK: i32 = 28;
#[allow(non_upper_case_globals)]
const S_kDO_LAMBDA: i32 = 29;
#[allow(non_upper_case_globals)]
const S_kRETURN: i32 = 30;
#[allow(non_upper_case_globals)]
const S_kYIELD: i32 = 31;
#[allow(non_upper_case_globals)]
const S_kSUPER: i32 = 32;
#[allow(non_upper_case_globals)]
const S_kSELF: i32 = 33;
#[allow(non_upper_case_globals)]
const S_kNIL: i32 = 34;
#[allow(non_upper_case_globals)]
const S_kTRUE: i32 = 35;
#[allow(non_upper_case_globals)]
const S_kFALSE: i32 = 36;
#[allow(non_upper_case_globals)]
const S_kAND: i32 = 37;
#[allow(non_upper_case_globals)]
const S_kOR: i32 = 38;
#[allow(non_upper_case_globals)]
const S_kNOT: i32 = 39;
#[allow(non_upper_case_globals)]
const S_kIF_MOD: i32 = 40;
#[allow(non_upper_case_globals)]
const S_kUNLESS_MOD: i32 = 41;
#[allow(non_upper_case_globals)]
const S_kWHILE_MOD: i32 = 42;
#[allow(non_upper_case_globals)]
const S_kUNTIL_MOD: i32 = 43;
#[allow(non_upper_case_globals)]
const S_kRESCUE_MOD: i32 = 44;
#[allow(non_upper_case_globals)]
const S_kALIAS: i32 = 45;
#[allow(non_upper_case_globals)]
const S_kDEFINED: i32 = 46;
#[allow(non_upper_case_globals)]
const S_klBEGIN: i32 = 47;
#[allow(non_upper_case_globals)]
const S_klEND: i32 = 48;
#[allow(non_upper_case_globals)]
const S_k__LINE__: i32 = 49;
#[allow(non_upper_case_globals)]
const S_k__FILE__: i32 = 50;
#[allow(non_upper_case_globals)]
const S_k__ENCODING__: i32 = 51;
#[allow(non_upper_case_globals)]
const S_tIDENTIFIER: i32 = 52;
#[allow(non_upper_case_globals)]
const S_tFID: i32 = 53;
#[allow(non_upper_case_globals)]
const S_tGVAR: i32 = 54;
#[allow(non_upper_case_globals)]
const S_tIVAR: i32 = 55;
#[allow(non_upper_case_globals)]
const S_tCONSTANT: i32 = 56;
#[allow(non_upper_case_globals)]
const S_tCVAR: i32 = 57;
#[allow(non_upper_case_globals)]
const S_tLABEL: i32 = 58;
#[allow(non_upper_case_globals)]
const S_tINTEGER: i32 = 59;
#[allow(non_upper_case_globals)]
const S_tFLOAT: i32 = 60;
#[allow(non_upper_case_globals)]
const S_tRATIONAL: i32 = 61;
#[allow(non_upper_case_globals)]
const S_tIMAGINARY: i32 = 62;
#[allow(non_upper_case_globals)]
const S_tCHAR: i32 = 63;
#[allow(non_upper_case_globals)]
const S_tNTH_REF: i32 = 64;
#[allow(non_upper_case_globals)]
const S_tBACK_REF: i32 = 65;
#[allow(non_upper_case_globals)]
const S_tSTRING_CONTENT: i32 = 66;
#[allow(non_upper_case_globals)]
const S_tREGEXP_END: i32 = 67;
#[allow(non_upper_case_globals)]
const S_tDOT: i32 = 68;
#[allow(non_upper_case_globals)]
const S_tBACKSLASH: i32 = 69;
#[allow(non_upper_case_globals)]
const S_tSP: i32 = 70;
#[allow(non_upper_case_globals)]
const S_tSLASH_T: i32 = 71;
#[allow(non_upper_case_globals)]
const S_tSLASH_F: i32 = 72;
#[allow(non_upper_case_globals)]
const S_tSLASH_R: i32 = 73;
#[allow(non_upper_case_globals)]
const S_tVTAB: i32 = 74;
#[allow(non_upper_case_globals)]
const S_tUPLUS: i32 = 75;
#[allow(non_upper_case_globals)]
const S_tUMINUS: i32 = 76;
#[allow(non_upper_case_globals)]
const S_tPOW: i32 = 77;
#[allow(non_upper_case_globals)]
const S_tCMP: i32 = 78;
#[allow(non_upper_case_globals)]
const S_tEQ: i32 = 79;
#[allow(non_upper_case_globals)]
const S_tEQQ: i32 = 80;
#[allow(non_upper_case_globals)]
const S_tNEQ: i32 = 81;
#[allow(non_upper_case_globals)]
const S_tGEQ: i32 = 82;
#[allow(non_upper_case_globals)]
const S_tLEQ: i32 = 83;
#[allow(non_upper_case_globals)]
const S_tANDOP: i32 = 84;
#[allow(non_upper_case_globals)]
const S_tOROP: i32 = 85;
#[allow(non_upper_case_globals)]
const S_tMATCH: i32 = 86;
#[allow(non_upper_case_globals)]
const S_tNMATCH: i32 = 87;
#[allow(non_upper_case_globals)]
const S_tDOT2: i32 = 88;
#[allow(non_upper_case_globals)]
const S_tDOT3: i32 = 89;
#[allow(non_upper_case_globals)]
const S_tBDOT2: i32 = 90;
#[allow(non_upper_case_globals)]
const S_tBDOT3: i32 = 91;
#[allow(non_upper_case_globals)]
const S_tAREF: i32 = 92;
#[allow(non_upper_case_globals)]
const S_tASET: i32 = 93;
#[allow(non_upper_case_globals)]
const S_tLSHFT: i32 = 94;
#[allow(non_upper_case_globals)]
const S_tRSHFT: i32 = 95;
#[allow(non_upper_case_globals)]
const S_tANDDOT: i32 = 96;
#[allow(non_upper_case_globals)]
const S_tCOLON2: i32 = 97;
#[allow(non_upper_case_globals)]
const S_tCOLON3: i32 = 98;
#[allow(non_upper_case_globals)]
const S_tOP_ASGN: i32 = 99;
#[allow(non_upper_case_globals)]
const S_tASSOC: i32 = 100;
#[allow(non_upper_case_globals)]
const S_tLPAREN: i32 = 101;
#[allow(non_upper_case_globals)]
const S_tLPAREN_ARG: i32 = 102;
#[allow(non_upper_case_globals)]
const S_tRPAREN: i32 = 103;
#[allow(non_upper_case_globals)]
const S_tLBRACK: i32 = 104;
#[allow(non_upper_case_globals)]
const S_tLBRACE: i32 = 105;
#[allow(non_upper_case_globals)]
const S_tLBRACE_ARG: i32 = 106;
#[allow(non_upper_case_globals)]
const S_tSTAR: i32 = 107;
#[allow(non_upper_case_globals)]
const S_tDSTAR: i32 = 108;
#[allow(non_upper_case_globals)]
const S_tAMPER: i32 = 109;
#[allow(non_upper_case_globals)]
const S_tLAMBDA: i32 = 110;
#[allow(non_upper_case_globals)]
const S_tSYMBEG: i32 = 111;
#[allow(non_upper_case_globals)]
const S_tSTRING_BEG: i32 = 112;
#[allow(non_upper_case_globals)]
const S_tXSTRING_BEG: i32 = 113;
#[allow(non_upper_case_globals)]
const S_tREGEXP_BEG: i32 = 114;
#[allow(non_upper_case_globals)]
const S_tWORDS_BEG: i32 = 115;
#[allow(non_upper_case_globals)]
const S_tQWORDS_BEG: i32 = 116;
#[allow(non_upper_case_globals)]
const S_tSYMBOLS_BEG: i32 = 117;
#[allow(non_upper_case_globals)]
const S_tQSYMBOLS_BEG: i32 = 118;
#[allow(non_upper_case_globals)]
const S_tSTRING_END: i32 = 119;
#[allow(non_upper_case_globals)]
const S_tSTRING_DEND: i32 = 120;
#[allow(non_upper_case_globals)]
const S_tSTRING_DBEG: i32 = 121;
#[allow(non_upper_case_globals)]
const S_tSTRING_DVAR: i32 = 122;
#[allow(non_upper_case_globals)]
const S_tLAMBEG: i32 = 123;
#[allow(non_upper_case_globals)]
const S_tLABEL_END: i32 = 124;
#[allow(non_upper_case_globals)]
const S_tCOMMA: i32 = 125;
#[allow(non_upper_case_globals)]
const S_tLCURLY: i32 = 126;
#[allow(non_upper_case_globals)]
const S_tRCURLY: i32 = 127;
#[allow(non_upper_case_globals)]
const S_tLBRACK2: i32 = 128;
#[allow(non_upper_case_globals)]
const S_tEQL: i32 = 129;
#[allow(non_upper_case_globals)]
const S_tPIPE: i32 = 130;
#[allow(non_upper_case_globals)]
const S_tAMPER2: i32 = 131;
#[allow(non_upper_case_globals)]
const S_tGT: i32 = 132;
#[allow(non_upper_case_globals)]
const S_tLT: i32 = 133;
#[allow(non_upper_case_globals)]
const S_tBACK_REF2: i32 = 134;
#[allow(non_upper_case_globals)]
const S_tCARET: i32 = 135;
#[allow(non_upper_case_globals)]
const S_tLPAREN2: i32 = 136;
#[allow(non_upper_case_globals)]
const S_tRBRACK: i32 = 137;
#[allow(non_upper_case_globals)]
const S_tSEMI: i32 = 138;
#[allow(non_upper_case_globals)]
const S_tSPACE: i32 = 139;
#[allow(non_upper_case_globals)]
const S_tNL: i32 = 140;
#[allow(non_upper_case_globals)]
const S_tPLUS: i32 = 141;
#[allow(non_upper_case_globals)]
const S_tMINUS: i32 = 142;
#[allow(non_upper_case_globals)]
const S_tSTAR2: i32 = 143;
#[allow(non_upper_case_globals)]
const S_tDIVIDE: i32 = 144;
#[allow(non_upper_case_globals)]
const S_tPERCENT: i32 = 145;
#[allow(non_upper_case_globals)]
const S_tTILDE: i32 = 146;
#[allow(non_upper_case_globals)]
const S_tBANG: i32 = 147;
#[allow(non_upper_case_globals)]
const S_tLOWEST: i32 = 148;
#[allow(non_upper_case_globals)]
const S_tEH: i32 = 149;
#[allow(non_upper_case_globals)]
const S_tCOLON: i32 = 150;
#[allow(non_upper_case_globals)]
const S_tUMINUS_NUM: i32 = 151;
#[allow(non_upper_case_globals)]
const S_tLAST_TOKEN: i32 = 152;
#[allow(non_upper_case_globals)]
const S_YYACCEPT: i32 = 153;
#[allow(non_upper_case_globals)]
const S_program: i32 = 154;
#[allow(non_upper_case_globals)]
const S_155_1: i32 = 155;
#[allow(non_upper_case_globals)]
const S_top_compstmt: i32 = 156;
#[allow(non_upper_case_globals)]
const S_top_stmts: i32 = 157;
#[allow(non_upper_case_globals)]
const S_top_stmt: i32 = 158;
#[allow(non_upper_case_globals)]
const S_begin_block: i32 = 159;
#[allow(non_upper_case_globals)]
const S_bodystmt: i32 = 160;
#[allow(non_upper_case_globals)]
const S_compstmt: i32 = 161;
#[allow(non_upper_case_globals)]
const S_stmts: i32 = 162;
#[allow(non_upper_case_globals)]
const S_stmt_or_begin: i32 = 163;
#[allow(non_upper_case_globals)]
const S_164_2: i32 = 164;
#[allow(non_upper_case_globals)]
const S_stmt: i32 = 165;
#[allow(non_upper_case_globals)]
const S_166_3: i32 = 166;
#[allow(non_upper_case_globals)]
const S_command_asgn: i32 = 167;
#[allow(non_upper_case_globals)]
const S_command_rhs: i32 = 168;
#[allow(non_upper_case_globals)]
const S_expr: i32 = 169;
#[allow(non_upper_case_globals)]
const S_170_4: i32 = 170;
#[allow(non_upper_case_globals)]
const S_171_5: i32 = 171;
#[allow(non_upper_case_globals)]
const S_def_name: i32 = 172;
#[allow(non_upper_case_globals)]
const S_defn_head: i32 = 173;
#[allow(non_upper_case_globals)]
const S_defs_head: i32 = 174;
#[allow(non_upper_case_globals)]
const S_175_6: i32 = 175;
#[allow(non_upper_case_globals)]
const S_expr_value: i32 = 176;
#[allow(non_upper_case_globals)]
const S_expr_value_do: i32 = 177;
#[allow(non_upper_case_globals)]
const S_178_7: i32 = 178;
#[allow(non_upper_case_globals)]
const S_command_call: i32 = 179;
#[allow(non_upper_case_globals)]
const S_block_command: i32 = 180;
#[allow(non_upper_case_globals)]
const S_cmd_brace_block: i32 = 181;
#[allow(non_upper_case_globals)]
const S_182_8: i32 = 182;
#[allow(non_upper_case_globals)]
const S_fcall: i32 = 183;
#[allow(non_upper_case_globals)]
const S_command: i32 = 184;
#[allow(non_upper_case_globals)]
const S_mlhs: i32 = 185;
#[allow(non_upper_case_globals)]
const S_mlhs_inner: i32 = 186;
#[allow(non_upper_case_globals)]
const S_mlhs_basic: i32 = 187;
#[allow(non_upper_case_globals)]
const S_mlhs_item: i32 = 188;
#[allow(non_upper_case_globals)]
const S_mlhs_head: i32 = 189;
#[allow(non_upper_case_globals)]
const S_mlhs_post: i32 = 190;
#[allow(non_upper_case_globals)]
const S_mlhs_node: i32 = 191;
#[allow(non_upper_case_globals)]
const S_lhs: i32 = 192;
#[allow(non_upper_case_globals)]
const S_cname: i32 = 193;
#[allow(non_upper_case_globals)]
const S_cpath: i32 = 194;
#[allow(non_upper_case_globals)]
const S_fname: i32 = 195;
#[allow(non_upper_case_globals)]
const S_fitem: i32 = 196;
#[allow(non_upper_case_globals)]
const S_undef_list: i32 = 197;
#[allow(non_upper_case_globals)]
const S_198_9: i32 = 198;
#[allow(non_upper_case_globals)]
const S_op: i32 = 199;
#[allow(non_upper_case_globals)]
const S_reswords: i32 = 200;
#[allow(non_upper_case_globals)]
const S_arg: i32 = 201;
#[allow(non_upper_case_globals)]
const S_relop: i32 = 202;
#[allow(non_upper_case_globals)]
const S_rel_expr: i32 = 203;
#[allow(non_upper_case_globals)]
const S_arg_value: i32 = 204;
#[allow(non_upper_case_globals)]
const S_aref_args: i32 = 205;
#[allow(non_upper_case_globals)]
const S_arg_rhs: i32 = 206;
#[allow(non_upper_case_globals)]
const S_paren_args: i32 = 207;
#[allow(non_upper_case_globals)]
const S_opt_paren_args: i32 = 208;
#[allow(non_upper_case_globals)]
const S_opt_call_args: i32 = 209;
#[allow(non_upper_case_globals)]
const S_call_args: i32 = 210;
#[allow(non_upper_case_globals)]
const S_command_args: i32 = 211;
#[allow(non_upper_case_globals)]
const S_212_10: i32 = 212;
#[allow(non_upper_case_globals)]
const S_block_arg: i32 = 213;
#[allow(non_upper_case_globals)]
const S_opt_block_arg: i32 = 214;
#[allow(non_upper_case_globals)]
const S_args: i32 = 215;
#[allow(non_upper_case_globals)]
const S_mrhs_arg: i32 = 216;
#[allow(non_upper_case_globals)]
const S_mrhs: i32 = 217;
#[allow(non_upper_case_globals)]
const S_primary: i32 = 218;
#[allow(non_upper_case_globals)]
const S_219_11: i32 = 219;
#[allow(non_upper_case_globals)]
const S_220_12: i32 = 220;
#[allow(non_upper_case_globals)]
const S_221_13: i32 = 221;
#[allow(non_upper_case_globals)]
const S_222_14: i32 = 222;
#[allow(non_upper_case_globals)]
const S_223_15: i32 = 223;
#[allow(non_upper_case_globals)]
const S_224_16: i32 = 224;
#[allow(non_upper_case_globals)]
const S_225_17: i32 = 225;
#[allow(non_upper_case_globals)]
const S_226_18: i32 = 226;
#[allow(non_upper_case_globals)]
const S_primary_value: i32 = 227;
#[allow(non_upper_case_globals)]
const S_k_begin: i32 = 228;
#[allow(non_upper_case_globals)]
const S_k_if: i32 = 229;
#[allow(non_upper_case_globals)]
const S_k_unless: i32 = 230;
#[allow(non_upper_case_globals)]
const S_k_while: i32 = 231;
#[allow(non_upper_case_globals)]
const S_k_until: i32 = 232;
#[allow(non_upper_case_globals)]
const S_k_case: i32 = 233;
#[allow(non_upper_case_globals)]
const S_k_for: i32 = 234;
#[allow(non_upper_case_globals)]
const S_k_class: i32 = 235;
#[allow(non_upper_case_globals)]
const S_k_module: i32 = 236;
#[allow(non_upper_case_globals)]
const S_k_def: i32 = 237;
#[allow(non_upper_case_globals)]
const S_k_do: i32 = 238;
#[allow(non_upper_case_globals)]
const S_k_do_block: i32 = 239;
#[allow(non_upper_case_globals)]
const S_k_rescue: i32 = 240;
#[allow(non_upper_case_globals)]
const S_k_ensure: i32 = 241;
#[allow(non_upper_case_globals)]
const S_k_when: i32 = 242;
#[allow(non_upper_case_globals)]
const S_k_else: i32 = 243;
#[allow(non_upper_case_globals)]
const S_k_elsif: i32 = 244;
#[allow(non_upper_case_globals)]
const S_k_end: i32 = 245;
#[allow(non_upper_case_globals)]
const S_k_return: i32 = 246;
#[allow(non_upper_case_globals)]
const S_then: i32 = 247;
#[allow(non_upper_case_globals)]
const S_do: i32 = 248;
#[allow(non_upper_case_globals)]
const S_if_tail: i32 = 249;
#[allow(non_upper_case_globals)]
const S_opt_else: i32 = 250;
#[allow(non_upper_case_globals)]
const S_for_var: i32 = 251;
#[allow(non_upper_case_globals)]
const S_f_marg: i32 = 252;
#[allow(non_upper_case_globals)]
const S_f_marg_list: i32 = 253;
#[allow(non_upper_case_globals)]
const S_f_margs: i32 = 254;
#[allow(non_upper_case_globals)]
const S_f_rest_marg: i32 = 255;
#[allow(non_upper_case_globals)]
const S_f_any_kwrest: i32 = 256;
#[allow(non_upper_case_globals)]
const S_block_args_tail: i32 = 257;
#[allow(non_upper_case_globals)]
const S_opt_block_args_tail: i32 = 258;
#[allow(non_upper_case_globals)]
const S_excessed_comma: i32 = 259;
#[allow(non_upper_case_globals)]
const S_block_param: i32 = 260;
#[allow(non_upper_case_globals)]
const S_opt_block_param: i32 = 261;
#[allow(non_upper_case_globals)]
const S_block_param_def: i32 = 262;
#[allow(non_upper_case_globals)]
const S_opt_bv_decl: i32 = 263;
#[allow(non_upper_case_globals)]
const S_bv_decls: i32 = 264;
#[allow(non_upper_case_globals)]
const S_bvar: i32 = 265;
#[allow(non_upper_case_globals)]
const S_lambda: i32 = 266;
#[allow(non_upper_case_globals)]
const S_267_19: i32 = 267;
#[allow(non_upper_case_globals)]
const S_268_20: i32 = 268;
#[allow(non_upper_case_globals)]
const S_f_larglist: i32 = 269;
#[allow(non_upper_case_globals)]
const S_lambda_body: i32 = 270;
#[allow(non_upper_case_globals)]
const S_271_21: i32 = 271;
#[allow(non_upper_case_globals)]
const S_272_22: i32 = 272;
#[allow(non_upper_case_globals)]
const S_do_block: i32 = 273;
#[allow(non_upper_case_globals)]
const S_274_23: i32 = 274;
#[allow(non_upper_case_globals)]
const S_block_call: i32 = 275;
#[allow(non_upper_case_globals)]
const S_method_call: i32 = 276;
#[allow(non_upper_case_globals)]
const S_brace_block: i32 = 277;
#[allow(non_upper_case_globals)]
const S_278_24: i32 = 278;
#[allow(non_upper_case_globals)]
const S_279_25: i32 = 279;
#[allow(non_upper_case_globals)]
const S_brace_body: i32 = 280;
#[allow(non_upper_case_globals)]
const S_281_26: i32 = 281;
#[allow(non_upper_case_globals)]
const S_do_body: i32 = 282;
#[allow(non_upper_case_globals)]
const S_283_27: i32 = 283;
#[allow(non_upper_case_globals)]
const S_case_args: i32 = 284;
#[allow(non_upper_case_globals)]
const S_case_body: i32 = 285;
#[allow(non_upper_case_globals)]
const S_cases: i32 = 286;
#[allow(non_upper_case_globals)]
const S_p_case_body: i32 = 287;
#[allow(non_upper_case_globals)]
const S_288_28: i32 = 288;
#[allow(non_upper_case_globals)]
const S_289_29: i32 = 289;
#[allow(non_upper_case_globals)]
const S_p_cases: i32 = 290;
#[allow(non_upper_case_globals)]
const S_p_top_expr: i32 = 291;
#[allow(non_upper_case_globals)]
const S_p_top_expr_body: i32 = 292;
#[allow(non_upper_case_globals)]
const S_p_expr: i32 = 293;
#[allow(non_upper_case_globals)]
const S_p_as: i32 = 294;
#[allow(non_upper_case_globals)]
const S_p_alt: i32 = 295;
#[allow(non_upper_case_globals)]
const S_p_lparen: i32 = 296;
#[allow(non_upper_case_globals)]
const S_p_lbracket: i32 = 297;
#[allow(non_upper_case_globals)]
const S_p_expr_basic: i32 = 298;
#[allow(non_upper_case_globals)]
const S_299_30: i32 = 299;
#[allow(non_upper_case_globals)]
const S_300_31: i32 = 300;
#[allow(non_upper_case_globals)]
const S_p_args: i32 = 301;
#[allow(non_upper_case_globals)]
const S_p_args_head: i32 = 302;
#[allow(non_upper_case_globals)]
const S_p_args_tail: i32 = 303;
#[allow(non_upper_case_globals)]
const S_p_find: i32 = 304;
#[allow(non_upper_case_globals)]
const S_p_rest: i32 = 305;
#[allow(non_upper_case_globals)]
const S_p_args_post: i32 = 306;
#[allow(non_upper_case_globals)]
const S_p_arg: i32 = 307;
#[allow(non_upper_case_globals)]
const S_p_kwargs: i32 = 308;
#[allow(non_upper_case_globals)]
const S_p_kwarg: i32 = 309;
#[allow(non_upper_case_globals)]
const S_p_kw: i32 = 310;
#[allow(non_upper_case_globals)]
const S_p_kw_label: i32 = 311;
#[allow(non_upper_case_globals)]
const S_p_kwrest: i32 = 312;
#[allow(non_upper_case_globals)]
const S_p_kwnorest: i32 = 313;
#[allow(non_upper_case_globals)]
const S_p_any_kwrest: i32 = 314;
#[allow(non_upper_case_globals)]
const S_p_value: i32 = 315;
#[allow(non_upper_case_globals)]
const S_p_primitive: i32 = 316;
#[allow(non_upper_case_globals)]
const S_p_variable: i32 = 317;
#[allow(non_upper_case_globals)]
const S_p_var_ref: i32 = 318;
#[allow(non_upper_case_globals)]
const S_p_const: i32 = 319;
#[allow(non_upper_case_globals)]
const S_opt_rescue: i32 = 320;
#[allow(non_upper_case_globals)]
const S_exc_list: i32 = 321;
#[allow(non_upper_case_globals)]
const S_exc_var: i32 = 322;
#[allow(non_upper_case_globals)]
const S_opt_ensure: i32 = 323;
#[allow(non_upper_case_globals)]
const S_literal: i32 = 324;
#[allow(non_upper_case_globals)]
const S_strings: i32 = 325;
#[allow(non_upper_case_globals)]
const S_string: i32 = 326;
#[allow(non_upper_case_globals)]
const S_string1: i32 = 327;
#[allow(non_upper_case_globals)]
const S_xstring: i32 = 328;
#[allow(non_upper_case_globals)]
const S_regexp: i32 = 329;
#[allow(non_upper_case_globals)]
const S_words: i32 = 330;
#[allow(non_upper_case_globals)]
const S_word_list: i32 = 331;
#[allow(non_upper_case_globals)]
const S_word: i32 = 332;
#[allow(non_upper_case_globals)]
const S_symbols: i32 = 333;
#[allow(non_upper_case_globals)]
const S_symbol_list: i32 = 334;
#[allow(non_upper_case_globals)]
const S_qwords: i32 = 335;
#[allow(non_upper_case_globals)]
const S_qsymbols: i32 = 336;
#[allow(non_upper_case_globals)]
const S_qword_list: i32 = 337;
#[allow(non_upper_case_globals)]
const S_qsym_list: i32 = 338;
#[allow(non_upper_case_globals)]
const S_string_contents: i32 = 339;
#[allow(non_upper_case_globals)]
const S_xstring_contents: i32 = 340;
#[allow(non_upper_case_globals)]
const S_regexp_contents: i32 = 341;
#[allow(non_upper_case_globals)]
const S_string_content: i32 = 342;
#[allow(non_upper_case_globals)]
const S_343_32: i32 = 343;
#[allow(non_upper_case_globals)]
const S_344_33: i32 = 344;
#[allow(non_upper_case_globals)]
const S_345_34: i32 = 345;
#[allow(non_upper_case_globals)]
const S_346_35: i32 = 346;
#[allow(non_upper_case_globals)]
const S_347_36: i32 = 347;
#[allow(non_upper_case_globals)]
const S_348_37: i32 = 348;
#[allow(non_upper_case_globals)]
const S_string_dvar: i32 = 349;
#[allow(non_upper_case_globals)]
const S_symbol: i32 = 350;
#[allow(non_upper_case_globals)]
const S_ssym: i32 = 351;
#[allow(non_upper_case_globals)]
const S_sym: i32 = 352;
#[allow(non_upper_case_globals)]
const S_dsym: i32 = 353;
#[allow(non_upper_case_globals)]
const S_numeric: i32 = 354;
#[allow(non_upper_case_globals)]
const S_simple_numeric: i32 = 355;
#[allow(non_upper_case_globals)]
const S_user_variable: i32 = 356;
#[allow(non_upper_case_globals)]
const S_keyword_variable: i32 = 357;
#[allow(non_upper_case_globals)]
const S_var_ref: i32 = 358;
#[allow(non_upper_case_globals)]
const S_var_lhs: i32 = 359;
#[allow(non_upper_case_globals)]
const S_backref: i32 = 360;
#[allow(non_upper_case_globals)]
const S_superclass: i32 = 361;
#[allow(non_upper_case_globals)]
const S_362_38: i32 = 362;
#[allow(non_upper_case_globals)]
const S_f_opt_paren_args: i32 = 363;
#[allow(non_upper_case_globals)]
const S_f_paren_args: i32 = 364;
#[allow(non_upper_case_globals)]
const S_f_arglist: i32 = 365;
#[allow(non_upper_case_globals)]
const S_366_39: i32 = 366;
#[allow(non_upper_case_globals)]
const S_args_tail: i32 = 367;
#[allow(non_upper_case_globals)]
const S_opt_args_tail: i32 = 368;
#[allow(non_upper_case_globals)]
const S_f_args: i32 = 369;
#[allow(non_upper_case_globals)]
const S_args_forward: i32 = 370;
#[allow(non_upper_case_globals)]
const S_f_bad_arg: i32 = 371;
#[allow(non_upper_case_globals)]
const S_f_norm_arg: i32 = 372;
#[allow(non_upper_case_globals)]
const S_f_arg_asgn: i32 = 373;
#[allow(non_upper_case_globals)]
const S_f_arg_item: i32 = 374;
#[allow(non_upper_case_globals)]
const S_f_arg: i32 = 375;
#[allow(non_upper_case_globals)]
const S_f_label: i32 = 376;
#[allow(non_upper_case_globals)]
const S_f_kw: i32 = 377;
#[allow(non_upper_case_globals)]
const S_f_block_kw: i32 = 378;
#[allow(non_upper_case_globals)]
const S_f_block_kwarg: i32 = 379;
#[allow(non_upper_case_globals)]
const S_f_kwarg: i32 = 380;
#[allow(non_upper_case_globals)]
const S_kwrest_mark: i32 = 381;
#[allow(non_upper_case_globals)]
const S_f_no_kwarg: i32 = 382;
#[allow(non_upper_case_globals)]
const S_f_kwrest: i32 = 383;
#[allow(non_upper_case_globals)]
const S_f_opt: i32 = 384;
#[allow(non_upper_case_globals)]
const S_f_block_opt: i32 = 385;
#[allow(non_upper_case_globals)]
const S_f_block_optarg: i32 = 386;
#[allow(non_upper_case_globals)]
const S_f_optarg: i32 = 387;
#[allow(non_upper_case_globals)]
const S_restarg_mark: i32 = 388;
#[allow(non_upper_case_globals)]
const S_f_rest_arg: i32 = 389;
#[allow(non_upper_case_globals)]
const S_blkarg_mark: i32 = 390;
#[allow(non_upper_case_globals)]
const S_f_block_arg: i32 = 391;
#[allow(non_upper_case_globals)]
const S_opt_f_block_arg: i32 = 392;
#[allow(non_upper_case_globals)]
const S_singleton: i32 = 393;
#[allow(non_upper_case_globals)]
const S_394_40: i32 = 394;
#[allow(non_upper_case_globals)]
const S_assoc_list: i32 = 395;
#[allow(non_upper_case_globals)]
const S_assocs: i32 = 396;
#[allow(non_upper_case_globals)]
const S_assoc: i32 = 397;
#[allow(non_upper_case_globals)]
const S_operation: i32 = 398;
#[allow(non_upper_case_globals)]
const S_operation2: i32 = 399;
#[allow(non_upper_case_globals)]
const S_operation3: i32 = 400;
#[allow(non_upper_case_globals)]
const S_dot_or_colon: i32 = 401;
#[allow(non_upper_case_globals)]
const S_call_op: i32 = 402;
#[allow(non_upper_case_globals)]
const S_call_op2: i32 = 403;
#[allow(non_upper_case_globals)]
const S_opt_terms: i32 = 404;
#[allow(non_upper_case_globals)]
const S_opt_nl: i32 = 405;
#[allow(non_upper_case_globals)]
const S_rparen: i32 = 406;
#[allow(non_upper_case_globals)]
const S_rbracket: i32 = 407;
#[allow(non_upper_case_globals)]
const S_rbrace: i32 = 408;
#[allow(non_upper_case_globals)]
const S_trailer: i32 = 409;
#[allow(non_upper_case_globals)]
const S_term: i32 = 410;
#[allow(non_upper_case_globals)]
const S_terms: i32 = 411;
#[allow(non_upper_case_globals)]
const S_none: i32 = 412;
const VALUES_: &'static [SymbolKind] = &[
SymbolKind { value: SymbolKind::S_YYEOF },
SymbolKind { value: SymbolKind::S_YYerror },
SymbolKind { value: SymbolKind::S_YYUNDEF },
SymbolKind { value: SymbolKind::S_kCLASS },
SymbolKind { value: SymbolKind::S_kMODULE },
SymbolKind { value: SymbolKind::S_kDEF },
SymbolKind { value: SymbolKind::S_kUNDEF },
SymbolKind { value: SymbolKind::S_kBEGIN },
SymbolKind { value: SymbolKind::S_kRESCUE },
SymbolKind { value: SymbolKind::S_kENSURE },
SymbolKind { value: SymbolKind::S_kEND },
SymbolKind { value: SymbolKind::S_kIF },
SymbolKind { value: SymbolKind::S_kUNLESS },
SymbolKind { value: SymbolKind::S_kTHEN },
SymbolKind { value: SymbolKind::S_kELSIF },
SymbolKind { value: SymbolKind::S_kELSE },
SymbolKind { value: SymbolKind::S_kCASE },
SymbolKind { value: SymbolKind::S_kWHEN },
SymbolKind { value: SymbolKind::S_kWHILE },
SymbolKind { value: SymbolKind::S_kUNTIL },
SymbolKind { value: SymbolKind::S_kFOR },
SymbolKind { value: SymbolKind::S_kBREAK },
SymbolKind { value: SymbolKind::S_kNEXT },
SymbolKind { value: SymbolKind::S_kREDO },
SymbolKind { value: SymbolKind::S_kRETRY },
SymbolKind { value: SymbolKind::S_kIN },
SymbolKind { value: SymbolKind::S_kDO },
SymbolKind { value: SymbolKind::S_kDO_COND },
SymbolKind { value: SymbolKind::S_kDO_BLOCK },
SymbolKind { value: SymbolKind::S_kDO_LAMBDA },
SymbolKind { value: SymbolKind::S_kRETURN },
SymbolKind { value: SymbolKind::S_kYIELD },
SymbolKind { value: SymbolKind::S_kSUPER },
SymbolKind { value: SymbolKind::S_kSELF },
SymbolKind { value: SymbolKind::S_kNIL },
SymbolKind { value: SymbolKind::S_kTRUE },
SymbolKind { value: SymbolKind::S_kFALSE },
SymbolKind { value: SymbolKind::S_kAND },
SymbolKind { value: SymbolKind::S_kOR },
SymbolKind { value: SymbolKind::S_kNOT },
SymbolKind { value: SymbolKind::S_kIF_MOD },
SymbolKind { value: SymbolKind::S_kUNLESS_MOD },
SymbolKind { value: SymbolKind::S_kWHILE_MOD },
SymbolKind { value: SymbolKind::S_kUNTIL_MOD },
SymbolKind { value: SymbolKind::S_kRESCUE_MOD },
SymbolKind { value: SymbolKind::S_kALIAS },
SymbolKind { value: SymbolKind::S_kDEFINED },
SymbolKind { value: SymbolKind::S_klBEGIN },
SymbolKind { value: SymbolKind::S_klEND },
SymbolKind { value: SymbolKind::S_k__LINE__ },
SymbolKind { value: SymbolKind::S_k__FILE__ },
SymbolKind { value: SymbolKind::S_k__ENCODING__ },
SymbolKind { value: SymbolKind::S_tIDENTIFIER },
SymbolKind { value: SymbolKind::S_tFID },
SymbolKind { value: SymbolKind::S_tGVAR },
SymbolKind { value: SymbolKind::S_tIVAR },
SymbolKind { value: SymbolKind::S_tCONSTANT },
SymbolKind { value: SymbolKind::S_tCVAR },
SymbolKind { value: SymbolKind::S_tLABEL },
SymbolKind { value: SymbolKind::S_tINTEGER },
SymbolKind { value: SymbolKind::S_tFLOAT },
SymbolKind { value: SymbolKind::S_tRATIONAL },
SymbolKind { value: SymbolKind::S_tIMAGINARY },
SymbolKind { value: SymbolKind::S_tCHAR },
SymbolKind { value: SymbolKind::S_tNTH_REF },
SymbolKind { value: SymbolKind::S_tBACK_REF },
SymbolKind { value: SymbolKind::S_tSTRING_CONTENT },
SymbolKind { value: SymbolKind::S_tREGEXP_END },
SymbolKind { value: SymbolKind::S_tDOT },
SymbolKind { value: SymbolKind::S_tBACKSLASH },
SymbolKind { value: SymbolKind::S_tSP },
SymbolKind { value: SymbolKind::S_tSLASH_T },
SymbolKind { value: SymbolKind::S_tSLASH_F },
SymbolKind { value: SymbolKind::S_tSLASH_R },
SymbolKind { value: SymbolKind::S_tVTAB },
SymbolKind { value: SymbolKind::S_tUPLUS },
SymbolKind { value: SymbolKind::S_tUMINUS },
SymbolKind { value: SymbolKind::S_tPOW },
SymbolKind { value: SymbolKind::S_tCMP },
SymbolKind { value: SymbolKind::S_tEQ },
SymbolKind { value: SymbolKind::S_tEQQ },
SymbolKind { value: SymbolKind::S_tNEQ },
SymbolKind { value: SymbolKind::S_tGEQ },
SymbolKind { value: SymbolKind::S_tLEQ },
SymbolKind { value: SymbolKind::S_tANDOP },
SymbolKind { value: SymbolKind::S_tOROP },
SymbolKind { value: SymbolKind::S_tMATCH },
SymbolKind { value: SymbolKind::S_tNMATCH },
SymbolKind { value: SymbolKind::S_tDOT2 },
SymbolKind { value: SymbolKind::S_tDOT3 },
SymbolKind { value: SymbolKind::S_tBDOT2 },
SymbolKind { value: SymbolKind::S_tBDOT3 },
SymbolKind { value: SymbolKind::S_tAREF },
SymbolKind { value: SymbolKind::S_tASET },
SymbolKind { value: SymbolKind::S_tLSHFT },
SymbolKind { value: SymbolKind::S_tRSHFT },
SymbolKind { value: SymbolKind::S_tANDDOT },
SymbolKind { value: SymbolKind::S_tCOLON2 },
SymbolKind { value: SymbolKind::S_tCOLON3 },
SymbolKind { value: SymbolKind::S_tOP_ASGN },
SymbolKind { value: SymbolKind::S_tASSOC },
SymbolKind { value: SymbolKind::S_tLPAREN },
SymbolKind { value: SymbolKind::S_tLPAREN_ARG },
SymbolKind { value: SymbolKind::S_tRPAREN },
SymbolKind { value: SymbolKind::S_tLBRACK },
SymbolKind { value: SymbolKind::S_tLBRACE },
SymbolKind { value: SymbolKind::S_tLBRACE_ARG },
SymbolKind { value: SymbolKind::S_tSTAR },
SymbolKind { value: SymbolKind::S_tDSTAR },
SymbolKind { value: SymbolKind::S_tAMPER },
SymbolKind { value: SymbolKind::S_tLAMBDA },
SymbolKind { value: SymbolKind::S_tSYMBEG },
SymbolKind { value: SymbolKind::S_tSTRING_BEG },
SymbolKind { value: SymbolKind::S_tXSTRING_BEG },
SymbolKind { value: SymbolKind::S_tREGEXP_BEG },
SymbolKind { value: SymbolKind::S_tWORDS_BEG },
SymbolKind { value: SymbolKind::S_tQWORDS_BEG },
SymbolKind { value: SymbolKind::S_tSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tQSYMBOLS_BEG },
SymbolKind { value: SymbolKind::S_tSTRING_END },
SymbolKind { value: SymbolKind::S_tSTRING_DEND },
SymbolKind { value: SymbolKind::S_tSTRING_DBEG },
SymbolKind { value: SymbolKind::S_tSTRING_DVAR },
SymbolKind { value: SymbolKind::S_tLAMBEG },
SymbolKind { value: SymbolKind::S_tLABEL_END },
SymbolKind { value: SymbolKind::S_tCOMMA },
SymbolKind { value: SymbolKind::S_tLCURLY },
SymbolKind { value: SymbolKind::S_tRCURLY },
SymbolKind { value: SymbolKind::S_tLBRACK2 },
SymbolKind { value: SymbolKind::S_tEQL },
SymbolKind { value: SymbolKind::S_tPIPE },
SymbolKind { value: SymbolKind::S_tAMPER2 },
SymbolKind { value: SymbolKind::S_tGT },
SymbolKind { value: SymbolKind::S_tLT },
SymbolKind { value: SymbolKind::S_tBACK_REF2 },
SymbolKind { value: SymbolKind::S_tCARET },
SymbolKind { value: SymbolKind::S_tLPAREN2 },
SymbolKind { value: SymbolKind::S_tRBRACK },
SymbolKind { value: SymbolKind::S_tSEMI },
SymbolKind { value: SymbolKind::S_tSPACE },
SymbolKind { value: SymbolKind::S_tNL },
SymbolKind { value: SymbolKind::S_tPLUS },
SymbolKind { value: SymbolKind::S_tMINUS },
SymbolKind { value: SymbolKind::S_tSTAR2 },
SymbolKind { value: SymbolKind::S_tDIVIDE },
SymbolKind { value: SymbolKind::S_tPERCENT },
SymbolKind { value: SymbolKind::S_tTILDE },
SymbolKind { value: SymbolKind::S_tBANG },
SymbolKind { value: SymbolKind::S_tLOWEST },
SymbolKind { value: SymbolKind::S_tEH },
SymbolKind { value: SymbolKind::S_tCOLON },
SymbolKind { value: SymbolKind::S_tUMINUS_NUM },
SymbolKind { value: SymbolKind::S_tLAST_TOKEN },
SymbolKind { value: SymbolKind::S_YYACCEPT },
SymbolKind { value: SymbolKind::S_program },
SymbolKind { value: SymbolKind::S_155_1 },
SymbolKind { value: SymbolKind::S_top_compstmt },
SymbolKind { value: SymbolKind::S_top_stmts },
SymbolKind { value: SymbolKind::S_top_stmt },
SymbolKind { value: SymbolKind::S_begin_block },
SymbolKind { value: SymbolKind::S_bodystmt },
SymbolKind { value: SymbolKind::S_compstmt },
SymbolKind { value: SymbolKind::S_stmts },
SymbolKind { value: SymbolKind::S_stmt_or_begin },
SymbolKind { value: SymbolKind::S_164_2 },
SymbolKind { value: SymbolKind::S_stmt },
SymbolKind { value: SymbolKind::S_166_3 },
SymbolKind { value: SymbolKind::S_command_asgn },
SymbolKind { value: SymbolKind::S_command_rhs },
SymbolKind { value: SymbolKind::S_expr },
SymbolKind { value: SymbolKind::S_170_4 },
SymbolKind { value: SymbolKind::S_171_5 },
SymbolKind { value: SymbolKind::S_def_name },
SymbolKind { value: SymbolKind::S_defn_head },
SymbolKind { value: SymbolKind::S_defs_head },
SymbolKind { value: SymbolKind::S_175_6 },
SymbolKind { value: SymbolKind::S_expr_value },
SymbolKind { value: SymbolKind::S_expr_value_do },
SymbolKind { value: SymbolKind::S_178_7 },
SymbolKind { value: SymbolKind::S_command_call },
SymbolKind { value: SymbolKind::S_block_command },
SymbolKind { value: SymbolKind::S_cmd_brace_block },
SymbolKind { value: SymbolKind::S_182_8 },
SymbolKind { value: SymbolKind::S_fcall },
SymbolKind { value: SymbolKind::S_command },
SymbolKind { value: SymbolKind::S_mlhs },
SymbolKind { value: SymbolKind::S_mlhs_inner },
SymbolKind { value: SymbolKind::S_mlhs_basic },
SymbolKind { value: SymbolKind::S_mlhs_item },
SymbolKind { value: SymbolKind::S_mlhs_head },
SymbolKind { value: SymbolKind::S_mlhs_post },
SymbolKind { value: SymbolKind::S_mlhs_node },
SymbolKind { value: SymbolKind::S_lhs },
SymbolKind { value: SymbolKind::S_cname },
SymbolKind { value: SymbolKind::S_cpath },
SymbolKind { value: SymbolKind::S_fname },
SymbolKind { value: SymbolKind::S_fitem },
SymbolKind { value: SymbolKind::S_undef_list },
SymbolKind { value: SymbolKind::S_198_9 },
SymbolKind { value: SymbolKind::S_op },
SymbolKind { value: SymbolKind::S_reswords },
SymbolKind { value: SymbolKind::S_arg },
SymbolKind { value: SymbolKind::S_relop },
SymbolKind { value: SymbolKind::S_rel_expr },
SymbolKind { value: SymbolKind::S_arg_value },
SymbolKind { value: SymbolKind::S_aref_args },
SymbolKind { value: SymbolKind::S_arg_rhs },
SymbolKind { value: SymbolKind::S_paren_args },
SymbolKind { value: SymbolKind::S_opt_paren_args },
SymbolKind { value: SymbolKind::S_opt_call_args },
SymbolKind { value: SymbolKind::S_call_args },
SymbolKind { value: SymbolKind::S_command_args },
SymbolKind { value: SymbolKind::S_212_10 },
SymbolKind { value: SymbolKind::S_block_arg },
SymbolKind { value: SymbolKind::S_opt_block_arg },
SymbolKind { value: SymbolKind::S_args },
SymbolKind { value: SymbolKind::S_mrhs_arg },
SymbolKind { value: SymbolKind::S_mrhs },
SymbolKind { value: SymbolKind::S_primary },
SymbolKind { value: SymbolKind::S_219_11 },
SymbolKind { value: SymbolKind::S_220_12 },
SymbolKind { value: SymbolKind::S_221_13 },
SymbolKind { value: SymbolKind::S_222_14 },
SymbolKind { value: SymbolKind::S_223_15 },
SymbolKind { value: SymbolKind::S_224_16 },
SymbolKind { value: SymbolKind::S_225_17 },
SymbolKind { value: SymbolKind::S_226_18 },
SymbolKind { value: SymbolKind::S_primary_value },
SymbolKind { value: SymbolKind::S_k_begin },
SymbolKind { value: SymbolKind::S_k_if },
SymbolKind { value: SymbolKind::S_k_unless },
SymbolKind { value: SymbolKind::S_k_while },
SymbolKind { value: SymbolKind::S_k_until },
SymbolKind { value: SymbolKind::S_k_case },
SymbolKind { value: SymbolKind::S_k_for },
SymbolKind { value: SymbolKind::S_k_class },
SymbolKind { value: SymbolKind::S_k_module },
SymbolKind { value: SymbolKind::S_k_def },
SymbolKind { value: SymbolKind::S_k_do },
SymbolKind { value: SymbolKind::S_k_do_block },
SymbolKind { value: SymbolKind::S_k_rescue },
SymbolKind { value: SymbolKind::S_k_ensure },
SymbolKind { value: SymbolKind::S_k_when },
SymbolKind { value: SymbolKind::S_k_else },
SymbolKind { value: SymbolKind::S_k_elsif },
SymbolKind { value: SymbolKind::S_k_end },
SymbolKind { value: SymbolKind::S_k_return },
SymbolKind { value: SymbolKind::S_then },
SymbolKind { value: SymbolKind::S_do },
SymbolKind { value: SymbolKind::S_if_tail },
SymbolKind { value: SymbolKind::S_opt_else },
SymbolKind { value: SymbolKind::S_for_var },
SymbolKind { value: SymbolKind::S_f_marg },
SymbolKind { value: SymbolKind::S_f_marg_list },
SymbolKind { value: SymbolKind::S_f_margs },
SymbolKind { value: SymbolKind::S_f_rest_marg },
SymbolKind { value: SymbolKind::S_f_any_kwrest },
SymbolKind { value: SymbolKind::S_block_args_tail },
SymbolKind { value: SymbolKind::S_opt_block_args_tail },
SymbolKind { value: SymbolKind::S_excessed_comma },
SymbolKind { value: SymbolKind::S_block_param },
SymbolKind { value: SymbolKind::S_opt_block_param },
SymbolKind { value: SymbolKind::S_block_param_def },
SymbolKind { value: SymbolKind::S_opt_bv_decl },
SymbolKind { value: SymbolKind::S_bv_decls },
SymbolKind { value: SymbolKind::S_bvar },
SymbolKind { value: SymbolKind::S_lambda },
SymbolKind { value: SymbolKind::S_267_19 },
SymbolKind { value: SymbolKind::S_268_20 },
SymbolKind { value: SymbolKind::S_f_larglist },
SymbolKind { value: SymbolKind::S_lambda_body },
SymbolKind { value: SymbolKind::S_271_21 },
SymbolKind { value: SymbolKind::S_272_22 },
SymbolKind { value: SymbolKind::S_do_block },
SymbolKind { value: SymbolKind::S_274_23 },
SymbolKind { value: SymbolKind::S_block_call },
SymbolKind { value: SymbolKind::S_method_call },
SymbolKind { value: SymbolKind::S_brace_block },
SymbolKind { value: SymbolKind::S_278_24 },
SymbolKind { value: SymbolKind::S_279_25 },
SymbolKind { value: SymbolKind::S_brace_body },
SymbolKind { value: SymbolKind::S_281_26 },
SymbolKind { value: SymbolKind::S_do_body },
SymbolKind { value: SymbolKind::S_283_27 },
SymbolKind { value: SymbolKind::S_case_args },
SymbolKind { value: SymbolKind::S_case_body },
SymbolKind { value: SymbolKind::S_cases },
SymbolKind { value: SymbolKind::S_p_case_body },
SymbolKind { value: SymbolKind::S_288_28 },
SymbolKind { value: SymbolKind::S_289_29 },
SymbolKind { value: SymbolKind::S_p_cases },
SymbolKind { value: SymbolKind::S_p_top_expr },
SymbolKind { value: SymbolKind::S_p_top_expr_body },
SymbolKind { value: SymbolKind::S_p_expr },
SymbolKind { value: SymbolKind::S_p_as },
SymbolKind { value: SymbolKind::S_p_alt },
SymbolKind { value: SymbolKind::S_p_lparen },
SymbolKind { value: SymbolKind::S_p_lbracket },
SymbolKind { value: SymbolKind::S_p_expr_basic },
SymbolKind { value: SymbolKind::S_299_30 },
SymbolKind { value: SymbolKind::S_300_31 },
SymbolKind { value: SymbolKind::S_p_args },
SymbolKind { value: SymbolKind::S_p_args_head },
SymbolKind { value: SymbolKind::S_p_args_tail },
SymbolKind { value: SymbolKind::S_p_find },
SymbolKind { value: SymbolKind::S_p_rest },
SymbolKind { value: SymbolKind::S_p_args_post },
SymbolKind { value: SymbolKind::S_p_arg },
SymbolKind { value: SymbolKind::S_p_kwargs },
SymbolKind { value: SymbolKind::S_p_kwarg },
SymbolKind { value: SymbolKind::S_p_kw },
SymbolKind { value: SymbolKind::S_p_kw_label },
SymbolKind { value: SymbolKind::S_p_kwrest },
SymbolKind { value: SymbolKind::S_p_kwnorest },
SymbolKind { value: SymbolKind::S_p_any_kwrest },
SymbolKind { value: SymbolKind::S_p_value },
SymbolKind { value: SymbolKind::S_p_primitive },
SymbolKind { value: SymbolKind::S_p_variable },
SymbolKind { value: SymbolKind::S_p_var_ref },
SymbolKind { value: SymbolKind::S_p_const },
SymbolKind { value: SymbolKind::S_opt_rescue },
SymbolKind { value: SymbolKind::S_exc_list },
SymbolKind { value: SymbolKind::S_exc_var },
SymbolKind { value: SymbolKind::S_opt_ensure },
SymbolKind { value: SymbolKind::S_literal },
SymbolKind { value: SymbolKind::S_strings },
SymbolKind { value: SymbolKind::S_string },
SymbolKind { value: SymbolKind::S_string1 },
SymbolKind { value: SymbolKind::S_xstring },
SymbolKind { value: SymbolKind::S_regexp },
SymbolKind { value: SymbolKind::S_words },
SymbolKind { value: SymbolKind::S_word_list },
SymbolKind { value: SymbolKind::S_word },
SymbolKind { value: SymbolKind::S_symbols },
SymbolKind { value: SymbolKind::S_symbol_list },
SymbolKind { value: SymbolKind::S_qwords },
SymbolKind { value: SymbolKind::S_qsymbols },
SymbolKind { value: SymbolKind::S_qword_list },
SymbolKind { value: SymbolKind::S_qsym_list },
SymbolKind { value: SymbolKind::S_string_contents },
SymbolKind { value: SymbolKind::S_xstring_contents },
SymbolKind { value: SymbolKind::S_regexp_contents },
SymbolKind { value: SymbolKind::S_string_content },
SymbolKind { value: SymbolKind::S_343_32 },
SymbolKind { value: SymbolKind::S_344_33 },
SymbolKind { value: SymbolKind::S_345_34 },
SymbolKind { value: SymbolKind::S_346_35 },
SymbolKind { value: SymbolKind::S_347_36 },
SymbolKind { value: SymbolKind::S_348_37 },
SymbolKind { value: SymbolKind::S_string_dvar },
SymbolKind { value: SymbolKind::S_symbol },
SymbolKind { value: SymbolKind::S_ssym },
SymbolKind { value: SymbolKind::S_sym },
SymbolKind { value: SymbolKind::S_dsym },
SymbolKind { value: SymbolKind::S_numeric },
SymbolKind { value: SymbolKind::S_simple_numeric },
SymbolKind { value: SymbolKind::S_user_variable },
SymbolKind { value: SymbolKind::S_keyword_variable },
SymbolKind { value: SymbolKind::S_var_ref },
SymbolKind { value: SymbolKind::S_var_lhs },
SymbolKind { value: SymbolKind::S_backref },
SymbolKind { value: SymbolKind::S_superclass },
SymbolKind { value: SymbolKind::S_362_38 },
SymbolKind { value: SymbolKind::S_f_opt_paren_args },
SymbolKind { value: SymbolKind::S_f_paren_args },
SymbolKind { value: SymbolKind::S_f_arglist },
SymbolKind { value: SymbolKind::S_366_39 },
SymbolKind { value: SymbolKind::S_args_tail },
SymbolKind { value: SymbolKind::S_opt_args_tail },
SymbolKind { value: SymbolKind::S_f_args },
SymbolKind { value: SymbolKind::S_args_forward },
SymbolKind { value: SymbolKind::S_f_bad_arg },
SymbolKind { value: SymbolKind::S_f_norm_arg },
SymbolKind { value: SymbolKind::S_f_arg_asgn },
SymbolKind { value: SymbolKind::S_f_arg_item },
SymbolKind { value: SymbolKind::S_f_arg },
SymbolKind { value: SymbolKind::S_f_label },
SymbolKind { value: SymbolKind::S_f_kw },
SymbolKind { value: SymbolKind::S_f_block_kw },
SymbolKind { value: SymbolKind::S_f_block_kwarg },
SymbolKind { value: SymbolKind::S_f_kwarg },
SymbolKind { value: SymbolKind::S_kwrest_mark },
SymbolKind { value: SymbolKind::S_f_no_kwarg },
SymbolKind { value: SymbolKind::S_f_kwrest },
SymbolKind { value: SymbolKind::S_f_opt },
SymbolKind { value: SymbolKind::S_f_block_opt },
SymbolKind { value: SymbolKind::S_f_block_optarg },
SymbolKind { value: SymbolKind::S_f_optarg },
SymbolKind { value: SymbolKind::S_restarg_mark },
SymbolKind { value: SymbolKind::S_f_rest_arg },
SymbolKind { value: SymbolKind::S_blkarg_mark },
SymbolKind { value: SymbolKind::S_f_block_arg },
SymbolKind { value: SymbolKind::S_opt_f_block_arg },
SymbolKind { value: SymbolKind::S_singleton },
SymbolKind { value: SymbolKind::S_394_40 },
SymbolKind { value: SymbolKind::S_assoc_list },
SymbolKind { value: SymbolKind::S_assocs },
SymbolKind { value: SymbolKind::S_assoc },
SymbolKind { value: SymbolKind::S_operation },
SymbolKind { value: SymbolKind::S_operation2 },
SymbolKind { value: SymbolKind::S_operation3 },
SymbolKind { value: SymbolKind::S_dot_or_colon },
SymbolKind { value: SymbolKind::S_call_op },
SymbolKind { value: SymbolKind::S_call_op2 },
SymbolKind { value: SymbolKind::S_opt_terms },
SymbolKind { value: SymbolKind::S_opt_nl },
SymbolKind { value: SymbolKind::S_rparen },
SymbolKind { value: SymbolKind::S_rbracket },
SymbolKind { value: SymbolKind::S_rbrace },
SymbolKind { value: SymbolKind::S_trailer },
SymbolKind { value: SymbolKind::S_term },
SymbolKind { value: SymbolKind::S_terms },
SymbolKind { value: SymbolKind::S_none }
];
pub(crate) fn get(n: i32) -> &'static SymbolKind {
&Self::VALUES_[i32_to_usize(n)]
}
pub(crate) fn code(&self) -> i32 {
self.value
}
#[allow(non_upper_case_globals)]
const yynames_: &'static [&'static str] = &[ "end-of-input", "error", "invalid token", "`class'", "`module'",
"`def'", "`undef'", "`begin'", "`rescue'", "`ensure'", "`end'", "`if'",
"`unless'", "`then'", "`elsif'", "`else'", "`case'", "`when'", "`while'",
"`until'", "`for'", "`break'", "`next'", "`redo'", "`retry'", "`in'",
"`do'", "`do' for condition", "`do' for block", "`do' for lambda",
"`return'", "`yield'", "`super'", "`self'", "`nil'", "`true'", "`false'",
"`and'", "`or'", "`not'", "`if' modifier", "`unless' modifier",
"`while' modifier", "`until' modifier", "`rescue' modifier", "`alias'",
"`defined?'", "`BEGIN'", "`END'", "`__LINE__'", "`__FILE__'",
"`__ENCODING__'", "local variable or method", "method",
"global variable", "instance variable", "constant", "class variable",
"label", "integer literal", "float literal", "rational literal",
"imaginary literal", "char literal", "numbered reference",
"back reference", "literal content", "tREGEXP_END", "tDOT", "backslash",
"escaped space", "escaped horizontal tab", "escaped form feed",
"escaped carriage return", "escaped vertical tab", "unary+", "unary-",
"**", "<=>", "==", "===", "!=", ">=", "<=", "&&", "||", "=~", "!~", "..",
"...", "(..", "(...", "[]", "[]=", "<<", ">>", "&.", "::",
":: at EXPR_BEG", "operator-assignment", "=>", "(", "( arg", ")", "[",
"{", "{ arg", "*", "**arg", "&", "->", "symbol literal", "string begin",
"backtick literal", "regexp literal", "word list", "verbatim word list",
"symbol list", "verbatim symbol list", "string end", "tRCURLY",
"tSTRING_DBEG", "tSTRING_DVAR", "tLAMBEG", "tLABEL_END", ",",
"{ (tLCURLY)", "}", "[ (tLBRACK2)", "=", "|", "& (tAMPER2)", ">", "<",
"`", "^", "( (tLPAREN2)", "]", ";", " ", "\n", "+", "-", "* (tSTAR2)",
"/", "%", "~", "!", "tLOWEST", "tEH", "tCOLON", "tUMINUS_NUM",
"tLAST_TOKEN", "$accept", "program", "@1", "top_compstmt", "top_stmts",
"top_stmt", "begin_block", "bodystmt", "compstmt", "stmts",
"stmt_or_begin", "$@2", "stmt", "@3", "command_asgn", "command_rhs",
"expr", "@4", "@5", "def_name", "defn_head", "defs_head", "@6",
"expr_value", "expr_value_do", "@7", "command_call", "block_command",
"cmd_brace_block", "@8", "fcall", "command", "mlhs", "mlhs_inner",
"mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post", "mlhs_node", "lhs",
"cname", "cpath", "fname", "fitem", "undef_list", "@9", "op", "reswords",
"arg", "relop", "rel_expr", "arg_value", "aref_args", "arg_rhs",
"paren_args", "opt_paren_args", "opt_call_args", "call_args",
"command_args", "@10", "block_arg", "opt_block_arg", "args", "mrhs_arg",
"mrhs", "primary", "@11", "@12", "@13", "@14", "@15", "@16", "@17",
"@18", "primary_value", "k_begin", "k_if", "k_unless", "k_while",
"k_until", "k_case", "k_for", "k_class", "k_module", "k_def", "k_do",
"k_do_block", "k_rescue", "k_ensure", "k_when", "k_else", "k_elsif",
"k_end", "k_return", "then", "do", "if_tail", "opt_else", "for_var",
"f_marg", "f_marg_list", "f_margs", "f_rest_marg", "f_any_kwrest",
"block_args_tail", "opt_block_args_tail", "excessed_comma",
"block_param", "opt_block_param", "block_param_def", "opt_bv_decl",
"bv_decls", "bvar", "lambda", "@19", "@20", "f_larglist", "lambda_body",
"@21", "@22", "do_block", "@23", "block_call", "method_call",
"brace_block", "@24", "@25", "brace_body", "@26", "do_body", "@27",
"case_args", "case_body", "cases", "p_case_body", "@28", "@29",
"p_cases", "p_top_expr", "p_top_expr_body", "p_expr", "p_as", "p_alt",
"p_lparen", "p_lbracket", "p_expr_basic", "@30", "@31", "p_args",
"p_args_head", "p_args_tail", "p_find", "p_rest", "p_args_post", "p_arg",
"p_kwargs", "p_kwarg", "p_kw", "p_kw_label", "p_kwrest", "p_kwnorest",
"p_any_kwrest", "p_value", "p_primitive", "p_variable", "p_var_ref",
"p_const", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
"strings", "string", "string1", "xstring", "regexp", "words",
"word_list", "word", "symbols", "symbol_list", "qwords", "qsymbols",
"qword_list", "qsym_list", "string_contents", "xstring_contents",
"regexp_contents", "string_content", "@32", "@33", "@34", "@35", "@36",
"@37", "string_dvar", "symbol", "ssym", "sym", "dsym", "numeric",
"simple_numeric", "user_variable", "keyword_variable", "var_ref",
"var_lhs", "backref", "superclass", "@38", "f_opt_paren_args",
"f_paren_args", "f_arglist", "@39", "args_tail", "opt_args_tail",
"f_args", "args_forward", "f_bad_arg", "f_norm_arg", "f_arg_asgn",
"f_arg_item", "f_arg", "f_label", "f_kw", "f_block_kw", "f_block_kwarg",
"f_kwarg", "kwrest_mark", "f_no_kwarg", "f_kwrest", "f_opt",
"f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
"f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
"singleton", "@40", "assoc_list", "assocs", "assoc", "operation",
"operation2", "operation3", "dot_or_colon", "call_op", "call_op2",
"opt_terms", "opt_nl", "rparen", "rbracket", "rbrace", "trailer", "term",
"terms", "none", "<<NULL>>" ] ;
pub(crate) fn name(&self) -> String {
let code: usize = self.code().try_into().unwrap();
Self::yynames_[code].to_owned()
}
}
const DYMMY_SYMBOL_KIND: SymbolKind = SymbolKind { value: 0 };
impl Lexer {
#[allow(non_upper_case_globals, dead_code)]
pub const END_OF_INPUT: i32 = 0;
#[allow(non_upper_case_globals, dead_code)]
pub const YYerror: i32 = 256;
#[allow(non_upper_case_globals, dead_code)]
pub const YYUNDEF: i32 = 257;
#[allow(non_upper_case_globals, dead_code)]
pub const kCLASS: i32 = 258;
#[allow(non_upper_case_globals, dead_code)]
pub const kMODULE: i32 = 259;
#[allow(non_upper_case_globals, dead_code)]
pub const kDEF: i32 = 260;
#[allow(non_upper_case_globals, dead_code)]
pub const kUNDEF: i32 = 261;
#[allow(non_upper_case_globals, dead_code)]
pub const kBEGIN: i32 = 262;
#[allow(non_upper_case_globals, dead_code)]
pub const kRESCUE: i32 = 263;
#[allow(non_upper_case_globals, dead_code)]
pub const kENSURE: i32 = 264;
#[allow(non_upper_case_globals, dead_code)]
pub const kEND: i32 = 265;
#[allow(non_upper_case_globals, dead_code)]
pub const kIF: i32 = 266;
#[allow(non_upper_case_globals, dead_code)]
pub const kUNLESS: i32 = 267;
#[allow(non_upper_case_globals, dead_code)]
pub const kTHEN: i32 = 268;
#[allow(non_upper_case_globals, dead_code)]
pub const kELSIF: i32 = 269;
#[allow(non_upper_case_globals, dead_code)]
pub const kELSE: i32 = 270;
#[allow(non_upper_case_globals, dead_code)]
pub const kCASE: i32 = 271;
#[allow(non_upper_case_globals, dead_code)]
pub const kWHEN: i32 = 272;
#[allow(non_upper_case_globals, dead_code)]
pub const kWHILE: i32 = 273;
#[allow(non_upper_case_globals, dead_code)]
pub const kUNTIL: i32 = 274;
#[allow(non_upper_case_globals, dead_code)]
pub const kFOR: i32 = 275;
#[allow(non_upper_case_globals, dead_code)]
pub const kBREAK: i32 = 276;
#[allow(non_upper_case_globals, dead_code)]
pub const kNEXT: i32 = 277;
#[allow(non_upper_case_globals, dead_code)]
pub const kREDO: i32 = 278;
#[allow(non_upper_case_globals, dead_code)]
pub const kRETRY: i32 = 279;
#[allow(non_upper_case_globals, dead_code)]
pub const kIN: i32 = 280;
#[allow(non_upper_case_globals, dead_code)]
pub const kDO: i32 = 281;
#[allow(non_upper_case_globals, dead_code)]
pub const kDO_COND: i32 = 282;
#[allow(non_upper_case_globals, dead_code)]
pub const kDO_BLOCK: i32 = 283;
#[allow(non_upper_case_globals, dead_code)]
pub const kDO_LAMBDA: i32 = 284;
#[allow(non_upper_case_globals, dead_code)]
pub const kRETURN: i32 = 285;
#[allow(non_upper_case_globals, dead_code)]
pub const kYIELD: i32 = 286;
#[allow(non_upper_case_globals, dead_code)]
pub const kSUPER: i32 = 287;
#[allow(non_upper_case_globals, dead_code)]
pub const kSELF: i32 = 288;
#[allow(non_upper_case_globals, dead_code)]
pub const kNIL: i32 = 289;
#[allow(non_upper_case_globals, dead_code)]
pub const kTRUE: i32 = 290;
#[allow(non_upper_case_globals, dead_code)]
pub const kFALSE: i32 = 291;
#[allow(non_upper_case_globals, dead_code)]
pub const kAND: i32 = 292;
#[allow(non_upper_case_globals, dead_code)]
pub const kOR: i32 = 293;
#[allow(non_upper_case_globals, dead_code)]
pub const kNOT: i32 = 294;
#[allow(non_upper_case_globals, dead_code)]
pub const kIF_MOD: i32 = 295;
#[allow(non_upper_case_globals, dead_code)]
pub const kUNLESS_MOD: i32 = 296;
#[allow(non_upper_case_globals, dead_code)]
pub const kWHILE_MOD: i32 = 297;
#[allow(non_upper_case_globals, dead_code)]
pub const kUNTIL_MOD: i32 = 298;
#[allow(non_upper_case_globals, dead_code)]
pub const kRESCUE_MOD: i32 = 299;
#[allow(non_upper_case_globals, dead_code)]
pub const kALIAS: i32 = 300;
#[allow(non_upper_case_globals, dead_code)]
pub const kDEFINED: i32 = 301;
#[allow(non_upper_case_globals, dead_code)]
pub const klBEGIN: i32 = 302;
#[allow(non_upper_case_globals, dead_code)]
pub const klEND: i32 = 303;
#[allow(non_upper_case_globals, dead_code)]
pub const k__LINE__: i32 = 304;
#[allow(non_upper_case_globals, dead_code)]
pub const k__FILE__: i32 = 305;
#[allow(non_upper_case_globals, dead_code)]
pub const k__ENCODING__: i32 = 306;
#[allow(non_upper_case_globals, dead_code)]
pub const tIDENTIFIER: i32 = 307;
#[allow(non_upper_case_globals, dead_code)]
pub const tFID: i32 = 308;
#[allow(non_upper_case_globals, dead_code)]
pub const tGVAR: i32 = 309;
#[allow(non_upper_case_globals, dead_code)]
pub const tIVAR: i32 = 310;
#[allow(non_upper_case_globals, dead_code)]
pub const tCONSTANT: i32 = 311;
#[allow(non_upper_case_globals, dead_code)]
pub const tCVAR: i32 = 312;
#[allow(non_upper_case_globals, dead_code)]
pub const tLABEL: i32 = 313;
#[allow(non_upper_case_globals, dead_code)]
pub const tINTEGER: i32 = 314;
#[allow(non_upper_case_globals, dead_code)]
pub const tFLOAT: i32 = 315;
#[allow(non_upper_case_globals, dead_code)]
pub const tRATIONAL: i32 = 316;
#[allow(non_upper_case_globals, dead_code)]
pub const tIMAGINARY: i32 = 317;
#[allow(non_upper_case_globals, dead_code)]
pub const tCHAR: i32 = 318;
#[allow(non_upper_case_globals, dead_code)]
pub const tNTH_REF: i32 = 319;
#[allow(non_upper_case_globals, dead_code)]
pub const tBACK_REF: i32 = 320;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_CONTENT: i32 = 321;
#[allow(non_upper_case_globals, dead_code)]
pub const tREGEXP_END: i32 = 322;
#[allow(non_upper_case_globals, dead_code)]
pub const tDOT: i32 = 323;
#[allow(non_upper_case_globals, dead_code)]
pub const tBACKSLASH: i32 = 324;
#[allow(non_upper_case_globals, dead_code)]
pub const tSP: i32 = 325;
#[allow(non_upper_case_globals, dead_code)]
pub const tSLASH_T: i32 = 326;
#[allow(non_upper_case_globals, dead_code)]
pub const tSLASH_F: i32 = 327;
#[allow(non_upper_case_globals, dead_code)]
pub const tSLASH_R: i32 = 328;
#[allow(non_upper_case_globals, dead_code)]
pub const tVTAB: i32 = 329;
#[allow(non_upper_case_globals, dead_code)]
pub const tUPLUS: i32 = 330;
#[allow(non_upper_case_globals, dead_code)]
pub const tUMINUS: i32 = 331;
#[allow(non_upper_case_globals, dead_code)]
pub const tPOW: i32 = 332;
#[allow(non_upper_case_globals, dead_code)]
pub const tCMP: i32 = 333;
#[allow(non_upper_case_globals, dead_code)]
pub const tEQ: i32 = 334;
#[allow(non_upper_case_globals, dead_code)]
pub const tEQQ: i32 = 335;
#[allow(non_upper_case_globals, dead_code)]
pub const tNEQ: i32 = 336;
#[allow(non_upper_case_globals, dead_code)]
pub const tGEQ: i32 = 337;
#[allow(non_upper_case_globals, dead_code)]
pub const tLEQ: i32 = 338;
#[allow(non_upper_case_globals, dead_code)]
pub const tANDOP: i32 = 339;
#[allow(non_upper_case_globals, dead_code)]
pub const tOROP: i32 = 340;
#[allow(non_upper_case_globals, dead_code)]
pub const tMATCH: i32 = 341;
#[allow(non_upper_case_globals, dead_code)]
pub const tNMATCH: i32 = 342;
#[allow(non_upper_case_globals, dead_code)]
pub const tDOT2: i32 = 343;
#[allow(non_upper_case_globals, dead_code)]
pub const tDOT3: i32 = 344;
#[allow(non_upper_case_globals, dead_code)]
pub const tBDOT2: i32 = 345;
#[allow(non_upper_case_globals, dead_code)]
pub const tBDOT3: i32 = 346;
#[allow(non_upper_case_globals, dead_code)]
pub const tAREF: i32 = 347;
#[allow(non_upper_case_globals, dead_code)]
pub const tASET: i32 = 348;
#[allow(non_upper_case_globals, dead_code)]
pub const tLSHFT: i32 = 349;
#[allow(non_upper_case_globals, dead_code)]
pub const tRSHFT: i32 = 350;
#[allow(non_upper_case_globals, dead_code)]
pub const tANDDOT: i32 = 351;
#[allow(non_upper_case_globals, dead_code)]
pub const tCOLON2: i32 = 352;
#[allow(non_upper_case_globals, dead_code)]
pub const tCOLON3: i32 = 353;
#[allow(non_upper_case_globals, dead_code)]
pub const tOP_ASGN: i32 = 354;
#[allow(non_upper_case_globals, dead_code)]
pub const tASSOC: i32 = 355;
#[allow(non_upper_case_globals, dead_code)]
pub const tLPAREN: i32 = 356;
#[allow(non_upper_case_globals, dead_code)]
pub const tLPAREN_ARG: i32 = 357;
#[allow(non_upper_case_globals, dead_code)]
pub const tRPAREN: i32 = 358;
#[allow(non_upper_case_globals, dead_code)]
pub const tLBRACK: i32 = 359;
#[allow(non_upper_case_globals, dead_code)]
pub const tLBRACE: i32 = 360;
#[allow(non_upper_case_globals, dead_code)]
pub const tLBRACE_ARG: i32 = 361;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTAR: i32 = 362;
#[allow(non_upper_case_globals, dead_code)]
pub const tDSTAR: i32 = 363;
#[allow(non_upper_case_globals, dead_code)]
pub const tAMPER: i32 = 364;
#[allow(non_upper_case_globals, dead_code)]
pub const tLAMBDA: i32 = 365;
#[allow(non_upper_case_globals, dead_code)]
pub const tSYMBEG: i32 = 366;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_BEG: i32 = 367;
#[allow(non_upper_case_globals, dead_code)]
pub const tXSTRING_BEG: i32 = 368;
#[allow(non_upper_case_globals, dead_code)]
pub const tREGEXP_BEG: i32 = 369;
#[allow(non_upper_case_globals, dead_code)]
pub const tWORDS_BEG: i32 = 370;
#[allow(non_upper_case_globals, dead_code)]
pub const tQWORDS_BEG: i32 = 371;
#[allow(non_upper_case_globals, dead_code)]
pub const tSYMBOLS_BEG: i32 = 372;
#[allow(non_upper_case_globals, dead_code)]
pub const tQSYMBOLS_BEG: i32 = 373;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_END: i32 = 374;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_DEND: i32 = 375;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_DBEG: i32 = 376;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTRING_DVAR: i32 = 377;
#[allow(non_upper_case_globals, dead_code)]
pub const tLAMBEG: i32 = 378;
#[allow(non_upper_case_globals, dead_code)]
pub const tLABEL_END: i32 = 379;
#[allow(non_upper_case_globals, dead_code)]
pub const tCOMMA: i32 = 380;
#[allow(non_upper_case_globals, dead_code)]
pub const tLCURLY: i32 = 381;
#[allow(non_upper_case_globals, dead_code)]
pub const tRCURLY: i32 = 382;
#[allow(non_upper_case_globals, dead_code)]
pub const tLBRACK2: i32 = 383;
#[allow(non_upper_case_globals, dead_code)]
pub const tEQL: i32 = 384;
#[allow(non_upper_case_globals, dead_code)]
pub const tPIPE: i32 = 385;
#[allow(non_upper_case_globals, dead_code)]
pub const tAMPER2: i32 = 386;
#[allow(non_upper_case_globals, dead_code)]
pub const tGT: i32 = 387;
#[allow(non_upper_case_globals, dead_code)]
pub const tLT: i32 = 388;
#[allow(non_upper_case_globals, dead_code)]
pub const tBACK_REF2: i32 = 389;
#[allow(non_upper_case_globals, dead_code)]
pub const tCARET: i32 = 390;
#[allow(non_upper_case_globals, dead_code)]
pub const tLPAREN2: i32 = 391;
#[allow(non_upper_case_globals, dead_code)]
pub const tRBRACK: i32 = 392;
#[allow(non_upper_case_globals, dead_code)]
pub const tSEMI: i32 = 393;
#[allow(non_upper_case_globals, dead_code)]
pub const tSPACE: i32 = 394;
#[allow(non_upper_case_globals, dead_code)]
pub const tNL: i32 = 395;
#[allow(non_upper_case_globals, dead_code)]
pub const tPLUS: i32 = 396;
#[allow(non_upper_case_globals, dead_code)]
pub const tMINUS: i32 = 397;
#[allow(non_upper_case_globals, dead_code)]
pub const tSTAR2: i32 = 398;
#[allow(non_upper_case_globals, dead_code)]
pub const tDIVIDE: i32 = 399;
#[allow(non_upper_case_globals, dead_code)]
pub const tPERCENT: i32 = 400;
#[allow(non_upper_case_globals, dead_code)]
pub const tTILDE: i32 = 401;
#[allow(non_upper_case_globals, dead_code)]
pub const tBANG: i32 = 402;
#[allow(non_upper_case_globals, dead_code)]
pub const tLOWEST: i32 = 403;
#[allow(non_upper_case_globals, dead_code)]
pub const tEH: i32 = 404;
#[allow(non_upper_case_globals, dead_code)]
pub const tCOLON: i32 = 405;
#[allow(non_upper_case_globals, dead_code)]
pub const tUMINUS_NUM: i32 = 406;
#[allow(non_upper_case_globals, dead_code)]
pub const tLAST_TOKEN: i32 = 407;
#[allow(dead_code)]
const EOF: i32 = Self::END_OF_INPUT;
#[allow(dead_code)]
pub(crate) const TOKEN_NAMES: &'static [&'static str] = & [
"END_OF_INPUT",
"YYerror",
"YYUNDEF",
"kCLASS",
"kMODULE",
"kDEF",
"kUNDEF",
"kBEGIN",
"kRESCUE",
"kENSURE",
"kEND",
"kIF",
"kUNLESS",
"kTHEN",
"kELSIF",
"kELSE",
"kCASE",
"kWHEN",
"kWHILE",
"kUNTIL",
"kFOR",
"kBREAK",
"kNEXT",
"kREDO",
"kRETRY",
"kIN",
"kDO",
"kDO_COND",
"kDO_BLOCK",
"kDO_LAMBDA",
"kRETURN",
"kYIELD",
"kSUPER",
"kSELF",
"kNIL",
"kTRUE",
"kFALSE",
"kAND",
"kOR",
"kNOT",
"kIF_MOD",
"kUNLESS_MOD",
"kWHILE_MOD",
"kUNTIL_MOD",
"kRESCUE_MOD",
"kALIAS",
"kDEFINED",
"klBEGIN",
"klEND",
"k__LINE__",
"k__FILE__",
"k__ENCODING__",
"tIDENTIFIER",
"tFID",
"tGVAR",
"tIVAR",
"tCONSTANT",
"tCVAR",
"tLABEL",
"tINTEGER",
"tFLOAT",
"tRATIONAL",
"tIMAGINARY",
"tCHAR",
"tNTH_REF",
"tBACK_REF",
"tSTRING_CONTENT",
"tREGEXP_END",
"tDOT",
"tBACKSLASH",
"tSP",
"tSLASH_T",
"tSLASH_F",
"tSLASH_R",
"tVTAB",
"tUPLUS",
"tUMINUS",
"tPOW",
"tCMP",
"tEQ",
"tEQQ",
"tNEQ",
"tGEQ",
"tLEQ",
"tANDOP",
"tOROP",
"tMATCH",
"tNMATCH",
"tDOT2",
"tDOT3",
"tBDOT2",
"tBDOT3",
"tAREF",
"tASET",
"tLSHFT",
"tRSHFT",
"tANDDOT",
"tCOLON2",
"tCOLON3",
"tOP_ASGN",
"tASSOC",
"tLPAREN",
"tLPAREN_ARG",
"tRPAREN",
"tLBRACK",
"tLBRACE",
"tLBRACE_ARG",
"tSTAR",
"tDSTAR",
"tAMPER",
"tLAMBDA",
"tSYMBEG",
"tSTRING_BEG",
"tXSTRING_BEG",
"tREGEXP_BEG",
"tWORDS_BEG",
"tQWORDS_BEG",
"tSYMBOLS_BEG",
"tQSYMBOLS_BEG",
"tSTRING_END",
"tSTRING_DEND",
"tSTRING_DBEG",
"tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tCOMMA",
"tLCURLY",
"tRCURLY",
"tLBRACK2",
"tEQL",
"tPIPE",
"tAMPER2",
"tGT",
"tLT",
"tBACK_REF2",
"tCARET",
"tLPAREN2",
"tRBRACK",
"tSEMI",
"tSPACE",
"tNL",
"tPLUS",
"tMINUS",
"tSTAR2",
"tDIVIDE",
"tPERCENT",
"tTILDE",
"tBANG",
"tLOWEST",
"tEH",
"tCOLON",
"tUMINUS_NUM",
"tLAST_TOKEN",
]
;
}
impl Parser {
fn yycdebug(&self, s: &str) {
if self.yydebug {
eprintln!("{}", s);
}
}
}
type YYValue = Value ;
#[derive(Clone, Debug)]
struct YYStackItem {
state: i32,
value: YYValue,
loc: YYLoc,
}
#[derive(Clone, Debug)]
pub struct YYStack {
stack: Vec<YYStackItem>,
}
impl YYStack {
pub(crate) fn new() -> Self {
Self {
stack: Vec::with_capacity(20),
}
}
pub(crate) fn push(&mut self, state: i32, value: YYValue, loc: YYLoc) {
self.stack.push(YYStackItem { state, value, loc });
}
pub(crate) fn pop(&mut self) {
self.stack.pop();
}
pub(crate) fn pop_n(&mut self, num: usize) {
let len = self.stack.len() - num;
self.stack.truncate(len);
}
pub(crate) fn state_at(&self, i: usize) -> i32 {
self.stack[self.len() - 1 - i].state
}
pub(crate) fn location_at(&self, i: usize) -> &YYLoc {
&self.stack[self.len() - 1 - i].loc
}
pub(crate) fn borrow_value_at(&self, i: usize) -> &YYValue {
&self.stack[self.len() - 1 - i].value
}
pub(crate) fn owned_value_at(&mut self, i: usize) -> YYValue {
let len = self.len();
std::mem::take(&mut self.stack[len - 1 - i].value)
}
pub(crate) fn len(&self) -> usize {
self.stack.len()
}
}
impl std::fmt::Display for YYStack {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let states = self.stack.iter().map(|e| e.state.to_string()).collect::<Vec<String>>().join(" ");
let values = self.stack.iter().map(|e| format!("{:?}", e.value)).collect::<Vec<String>>().join(" ");
f.write_fmt(format_args!("Stack now states = {} / values = {:?} ", states, values))
}
}
impl Parser {
pub(crate) const YYACCEPT: i32 = 0;
pub(crate) const YYABORT: i32 = 1;
pub(crate) const YYERROR: i32 = 2;
pub(crate) const YYERRLAB: i32 = 3;
pub(crate) const YYNEWSTATE: i32 = 4;
pub(crate) const YYDEFAULT: i32 = 5;
pub(crate) const YYREDUCE: i32 = 6;
pub(crate) const YYERRLAB1: i32 = 7;
#[allow(dead_code)]
pub(crate) const YYRETURN: i32 = 8;
#[allow(dead_code)]
pub(crate) fn recovering(&self) -> bool {
self.yyerrstatus_ == 0
}
fn yy_lr_goto_state(&self, yystate: i32, yysym: i32) -> i32 {
let idx = i32_to_usize(yysym - Self::YYNTOKENS_);
let yyr = Self::yypgoto_[idx] + yystate;
if 0 <= yyr && yyr <= Self::YYLAST_ {
let yyr = i32_to_usize(yyr);
if Self::yycheck_[yyr] == yystate {
return Self::yytable_[yyr];
}
}
Self::yydefgoto_[idx]
}
fn yyaction(&mut self, yyn: i32, yystack: &mut YYStack, yylen: &mut usize) -> Result<i32, ()> {
#[allow(unused_assignments)]
let mut yyval: YYValue = YYValue::Uninitialized;
let yyloc: YYLoc = make_yylloc(&yystack, *yylen);
self.yy_reduce_print(yyn, yystack);
match yyn {
2 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
self.current_arg_stack.push(None);
self.max_numparam_stack.push();
yyval = Value::None;
},
3 =>
{
let top_compstmt = MaybeNode::from(yystack.owned_value_at(0));
self.result = top_compstmt.map(Box::new).into();
yyval = Value::None;
self.current_arg_stack.pop();
self.max_numparam_stack.pop();
},
4 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
);
},
5 =>
{
yyval = Value::NodeList( vec![] );
},
6 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
7 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
8 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
9 =>
{
yyval = yystack.owned_value_at(0);
},
10 =>
{
let BeginBlock { begin_t, body, end_t } = BeginBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.preexe( Token::from(yystack.owned_value_at(1)), begin_t, body, end_t)
);
},
11 =>
{
yyval = Value::new_begin_block(
BeginBlock {
begin_t: Token::from(yystack.owned_value_at(2)),
body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
12 =>
{
let compound_stmt = MaybeBoxedNode::from(yystack.owned_value_at(4));
let rescue_bodies = NodeList::from(yystack.owned_value_at(3));
if rescue_bodies.is_empty() {
return self.yyerror(&yystack.location_at (2), DiagnosticMessage::ElseWithoutRescue);
}
let else_ = Some(( Token::from(yystack.owned_value_at(2)), MaybeBoxedNode::from(yystack.owned_value_at(1)) ));
let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
else_,
ensure
)
);
},
13 =>
{
let compound_stmt = MaybeBoxedNode::from(yystack.owned_value_at(2));
let rescue_bodies = NodeList::from(yystack.owned_value_at(1));
let ensure = OptEnsure::from(yystack.owned_value_at(0)).map(|ensure| (ensure.ensure_t, ensure.body));
yyval = Value::MaybeNode(
self.builder.begin_body(
compound_stmt,
rescue_bodies,
None,
ensure
)
);
},
14 =>
{
yyval = Value::MaybeNode(
self.builder.compstmt( NodeList::from(yystack.owned_value_at(1)))
);
},
15 =>
{
yyval = Value::NodeList( vec![] );
},
16 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
17 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
18 =>
{
yyval = Value::NodeList( vec![] );
},
19 =>
{
yyval = yystack.owned_value_at(0);
},
20 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::BeginNotAtTopLevel);
},
21 =>
{
yyval = Value::None;
},
22 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
23 =>
{
yyval = Value::Node(
self.builder.alias( Token::from(yystack.owned_value_at(3)), BoxedNode::from(yystack.owned_value_at(2)), BoxedNode::from(yystack.owned_value_at(0)))
);
},
24 =>
{
yyval = Value::Node(
self.builder.alias(
Token::from(yystack.owned_value_at(2)),
self.builder.gvar( Token::from(yystack.owned_value_at(1))),
self.builder.gvar( Token::from(yystack.owned_value_at(0))),
)
)
},
25 =>
{
yyval = Value::Node(
self.builder.alias(
Token::from(yystack.owned_value_at(2)),
self.builder.gvar( Token::from(yystack.owned_value_at(1))),
self.builder.back_ref( Token::from(yystack.owned_value_at(0))),
)
)
},
26 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::AliasNthRef);
},
27 =>
{
yyval = Value::Node(
self.builder.undef_method(
Token::from(yystack.owned_value_at(1)),
NodeList::from(yystack.owned_value_at(0))
)
)
},
28 =>
{
yyval = Value::Node(
self.builder.condition_mod(
Some( BoxedNode::from(yystack.owned_value_at(2))),
None,
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0)),
)
);
},
29 =>
{
yyval = Value::Node(
self.builder.condition_mod(
None,
Some( BoxedNode::from(yystack.owned_value_at(2))),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0)),
)
);
},
30 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::While,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0)),
)
);
},
31 =>
{
yyval = Value::Node(
self.builder.loop_mod(
LoopType::Until,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0)),
)
);
},
32 =>
{
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some( BoxedNode::from(yystack.owned_value_at(2))),
vec![*rescue_body],
None,
None,
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
33 =>
{
if self.context.is_in_def() {
self.warn(&yystack.location_at (3), DiagnosticMessage::EndInMethod);
}
yyval = Value::Node(
self.builder.postexe(
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
34 =>
{
yyval = yystack.owned_value_at(0);
},
35 =>
{
let command_call = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
command_call
)
);
},
36 =>
{
let mrhs = self.builder.array(
None,
NodeList::from(yystack.owned_value_at(0)),
None
);
self.value_expr(&mrhs)?;
yyval = Value::Node(
self.builder.assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
mrhs
)
);
},
37 =>
{
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
let mrhs_arg = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&mrhs_arg)?;
let begin_body = self.builder.begin_body(
Some(mrhs_arg),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)");
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
begin_body
)
);
},
38 =>
{
yyval = Value::Node(
self.builder.multi_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
39 =>
{
yyval = yystack.owned_value_at(0);
},
40 =>
{
yyval = Value::Node(
self.builder.assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
41 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
42 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
BoxedNode::from(yystack.owned_value_at(5)),
Token::from(yystack.owned_value_at(4)),
NodeList::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
43 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
44 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
45 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
46 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
47 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
48 =>
{
let command_call = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&command_call)?;
yyval = Value::Node(command_call);
},
49 =>
{
let command_call = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&command_call)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(command_call),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
50 =>
{
yyval = yystack.owned_value_at(0);
},
51 =>
{
yyval = yystack.owned_value_at(0);
},
52 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
53 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
54 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(2)),
None,
Some( BoxedNode::from(yystack.owned_value_at(0))),
None
)?
);
},
55 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(1)),
None,
Some( BoxedNode::from(yystack.owned_value_at(0))),
None
)?
);
},
56 =>
{
let arg = match yystack.borrow_value_at(1) {
Value::Node(node) => node,
other => unreachable!("expected Node, got {:?}", other)
};
self.value_expr(arg)?;
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = false;
self.pattern_variables.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
57 =>
{
self.pattern_variables.pop();
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.match_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
58 =>
{
let arg = match yystack.borrow_value_at(1) {
Value::Node(node) => node,
other => unreachable!("expected Node, got {:?}", other)
};
self.value_expr(arg)?;
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = false;
self.pattern_variables.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
59 =>
{
self.pattern_variables.pop();
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.match_pattern_p(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
60 =>
{
yyval = yystack.owned_value_at(0);
},
61 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.current_arg_stack.push(None);
yyval = yystack.owned_value_at(0);
},
62 =>
{
self.context.push_def();
yyval = Value::new_defn_head(
DefnHead {
def_t: Token::from(yystack.owned_value_at(1)),
name_t: Token::from(yystack.owned_value_at(0))
}
);
},
63 =>
{
self.yylexer.lex_state.set(EXPR_FNAME);
yyval = Value::None;
},
64 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN|EXPR_LABEL);
self.context.push_defs();
yyval = Value::new_defs_head(
DefsHead {
def_t: Token::from(yystack.owned_value_at(4)),
definee: BoxedNode::from(yystack.owned_value_at(3)),
dot_t: Token::from(yystack.owned_value_at(2)),
name_t: Token::from(yystack.owned_value_at(0))
}
);
},
65 =>
{
let expr = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&expr)?;
yyval = Value::Node(expr);
},
66 =>
{
self.yylexer.cond.push(true);
yyval = Value::None;
},
67 =>
{
self.yylexer.cond.pop();
yyval = Value::new_expr_value_do(
ExprValueDo {
value: BoxedNode::from(yystack.owned_value_at(1)),
do_t: Token::from(yystack.owned_value_at(0))
}
);
},
68 =>
{
yyval = yystack.owned_value_at(0);
},
69 =>
{
yyval = yystack.owned_value_at(0);
},
70 =>
{
yyval = yystack.owned_value_at(0);
},
71 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
72 =>
{
self.context.push_block();
yyval = Value::None;
},
73 =>
{
self.context.pop();
let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
yyval = Value::new_cmd_brace_block(
CmdBraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
74 =>
{
yyval = yystack.owned_value_at(0);
},
75 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
76 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
77 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
78 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
79 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
80 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let CmdBraceBlock { begin_t, args_type, body, end_t } = CmdBraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
81 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
82 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
83 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
84 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
85 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::from(yystack.owned_value_at(1)),
None,
NodeList::from(yystack.owned_value_at(0)),
None
)?
);
},
86 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
87 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
Some( BoxedNode::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
88 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
89 =>
{
let mlhs_items: Vec<Node> = match Node::from(yystack.owned_value_at(1)) {
Node::Mlhs(mlhs) => mlhs.items.into(),
other => unreachable!("unsupported mlhs item {:?}", other)
};
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
mlhs_items,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
90 =>
{
yyval = yystack.owned_value_at(0);
},
91 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
92 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
93 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(4));
let mlhs_node = self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(1 + mlhs_post.len());
nodes.push(*mlhs_node);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
94 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( *self.builder.splat( Token::from(yystack.owned_value_at(0)), None) );
yyval = Value::NodeList(nodes);
},
95 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let splat = self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
96 =>
{
yyval = Value::NodeList(vec![ *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0)))) ]);
},
97 =>
{
let mut nodes;
let splat = self.builder.splat( Token::from(yystack.owned_value_at(3)), Some( BoxedNode::from(yystack.owned_value_at(2))));
let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
98 =>
{
yyval = Value::NodeList(vec![ *self.builder.splat( Token::from(yystack.owned_value_at(0)), None) ]);
},
99 =>
{
let mut nodes;
let splat = self.builder.splat( Token::from(yystack.owned_value_at(2)), None);
let mut mlhs_post = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + mlhs_post.len());
nodes.push(*splat);
nodes.append(&mut mlhs_post);
yyval = Value::NodeList(nodes);
},
100 =>
{
yyval = yystack.owned_value_at(0);
},
101 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
Some( BoxedNode::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
102 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(1)) ]);
},
103 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(1)) );
yyval = Value::NodeList(nodes);
},
104 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
105 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
106 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
107 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
108 =>
{
yyval = Value::Node(
self.builder.index_asgn(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
109 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
op_t,
Token::from(yystack.owned_value_at(0))
)
);
},
110 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
111 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
if op_t.token_type == Lexer::tANDDOT {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::CsendInsideMasgn);
}
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
op_t,
Token::from(yystack.owned_value_at(0))
)
);
},
112 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)?
);
},
113 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)?
);
},
114 =>
{
yyval = Value::Node(
self.builder.assignable(
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
115 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
116 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
117 =>
{
yyval = Value::Node(
self.builder.index_asgn(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
)
},
118 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
119 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
120 =>
{
yyval = Value::Node(
self.builder.attr_asgn(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
121 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
)?
);
},
122 =>
{
yyval = Value::Node(
self.builder.assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
)?
);
},
123 =>
{
yyval = Value::Node(
self.builder.assignable(
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
124 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ClassOrModuleNameMustBeConstant);
},
125 =>
{
yyval = yystack.owned_value_at(0);
},
126 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
127 =>
{
yyval = Value::Node(
self.builder.const_( Token::from(yystack.owned_value_at(0)))
);
},
128 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
129 =>
{
yyval = yystack.owned_value_at(0);
},
130 =>
{
yyval = yystack.owned_value_at(0);
},
131 =>
{
yyval = yystack.owned_value_at(0);
},
132 =>
{
self.yylexer.lex_state.set(EXPR_ENDFN);
yyval = yystack.owned_value_at(0);
},
133 =>
{
yyval = yystack.owned_value_at(0);
},
134 =>
{
yyval = Value::Node(
self.builder.symbol_internal( Token::from(yystack.owned_value_at(0)))
);
},
135 =>
{
yyval = yystack.owned_value_at(0);
},
136 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
137 =>
{
self.yylexer.lex_state.set(EXPR_FNAME|EXPR_FITEM);
yyval = Value::None;
},
138 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
139 =>
{ yyval = yystack.owned_value_at(0); },
140 =>
{ yyval = yystack.owned_value_at(0); },
141 =>
{ yyval = yystack.owned_value_at(0); },
142 =>
{ yyval = yystack.owned_value_at(0); },
143 =>
{ yyval = yystack.owned_value_at(0); },
144 =>
{ yyval = yystack.owned_value_at(0); },
145 =>
{ yyval = yystack.owned_value_at(0); },
146 =>
{ yyval = yystack.owned_value_at(0); },
147 =>
{ yyval = yystack.owned_value_at(0); },
148 =>
{ yyval = yystack.owned_value_at(0); },
149 =>
{ yyval = yystack.owned_value_at(0); },
150 =>
{ yyval = yystack.owned_value_at(0); },
151 =>
{ yyval = yystack.owned_value_at(0); },
152 =>
{ yyval = yystack.owned_value_at(0); },
153 =>
{ yyval = yystack.owned_value_at(0); },
154 =>
{ yyval = yystack.owned_value_at(0); },
155 =>
{ yyval = yystack.owned_value_at(0); },
156 =>
{ yyval = yystack.owned_value_at(0); },
157 =>
{ yyval = yystack.owned_value_at(0); },
158 =>
{ yyval = yystack.owned_value_at(0); },
159 =>
{ yyval = yystack.owned_value_at(0); },
160 =>
{ yyval = yystack.owned_value_at(0); },
161 =>
{ yyval = yystack.owned_value_at(0); },
162 =>
{ yyval = yystack.owned_value_at(0); },
163 =>
{ yyval = yystack.owned_value_at(0); },
164 =>
{ yyval = yystack.owned_value_at(0); },
165 =>
{ yyval = yystack.owned_value_at(0); },
166 =>
{ yyval = yystack.owned_value_at(0); },
167 =>
{ yyval = yystack.owned_value_at(0); },
168 =>
{ yyval = yystack.owned_value_at(0); },
169 =>
{ yyval = yystack.owned_value_at(0); },
170 =>
{ yyval = yystack.owned_value_at(0); },
171 =>
{ yyval = yystack.owned_value_at(0); },
172 =>
{ yyval = yystack.owned_value_at(0); },
173 =>
{ yyval = yystack.owned_value_at(0); },
174 =>
{ yyval = yystack.owned_value_at(0); },
175 =>
{ yyval = yystack.owned_value_at(0); },
176 =>
{ yyval = yystack.owned_value_at(0); },
177 =>
{ yyval = yystack.owned_value_at(0); },
178 =>
{ yyval = yystack.owned_value_at(0); },
179 =>
{ yyval = yystack.owned_value_at(0); },
180 =>
{ yyval = yystack.owned_value_at(0); },
181 =>
{ yyval = yystack.owned_value_at(0); },
182 =>
{ yyval = yystack.owned_value_at(0); },
183 =>
{ yyval = yystack.owned_value_at(0); },
184 =>
{ yyval = yystack.owned_value_at(0); },
185 =>
{ yyval = yystack.owned_value_at(0); },
186 =>
{ yyval = yystack.owned_value_at(0); },
187 =>
{ yyval = yystack.owned_value_at(0); },
188 =>
{ yyval = yystack.owned_value_at(0); },
189 =>
{ yyval = yystack.owned_value_at(0); },
190 =>
{ yyval = yystack.owned_value_at(0); },
191 =>
{ yyval = yystack.owned_value_at(0); },
192 =>
{ yyval = yystack.owned_value_at(0); },
193 =>
{ yyval = yystack.owned_value_at(0); },
194 =>
{ yyval = yystack.owned_value_at(0); },
195 =>
{ yyval = yystack.owned_value_at(0); },
196 =>
{ yyval = yystack.owned_value_at(0); },
197 =>
{ yyval = yystack.owned_value_at(0); },
198 =>
{ yyval = yystack.owned_value_at(0); },
199 =>
{ yyval = yystack.owned_value_at(0); },
200 =>
{ yyval = yystack.owned_value_at(0); },
201 =>
{ yyval = yystack.owned_value_at(0); },
202 =>
{ yyval = yystack.owned_value_at(0); },
203 =>
{ yyval = yystack.owned_value_at(0); },
204 =>
{ yyval = yystack.owned_value_at(0); },
205 =>
{ yyval = yystack.owned_value_at(0); },
206 =>
{ yyval = yystack.owned_value_at(0); },
207 =>
{ yyval = yystack.owned_value_at(0); },
208 =>
{ yyval = yystack.owned_value_at(0); },
209 =>
{ yyval = yystack.owned_value_at(0); },
210 =>
{
yyval = Value::Node(
self.builder.assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
211 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
212 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.index(
BoxedNode::from(yystack.owned_value_at(5)),
Token::from(yystack.owned_value_at(4)),
NodeList::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
213 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
214 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
215 =>
{
yyval = Value::Node(
self.builder.op_assign(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
vec![],
None
),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
216 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
217 =>
{
let const_ = self.builder.const_op_assignable(
self.builder.const_global(
Token::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2))
)
);
yyval = Value::Node(
self.builder.op_assign(
const_,
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
218 =>
{
yyval = Value::Node(
self.builder.op_assign(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
219 =>
{
let left = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
220 =>
{
let left = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
221 =>
{
let left = BoxedNode::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
222 =>
{
let left = BoxedNode::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
223 =>
{
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
224 =>
{
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
225 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
226 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
227 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
228 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
229 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
230 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
231 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(3)),
self.builder.binary_op(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
)?
);
},
232 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
233 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
234 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
235 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
236 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
237 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
238 =>
{
yyval = yystack.owned_value_at(0);
},
239 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
240 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
241 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
242 =>
{
yyval = Value::Node(
self.builder.match_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
243 =>
{
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
244 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(1)),
None,
Some( BoxedNode::from(yystack.owned_value_at(0))),
None
)?
);
},
245 =>
{
yyval = Value::Node(
self.builder.unary_op(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
246 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
247 =>
{
yyval = Value::Node(
self.builder.binary_op( BoxedNode::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
248 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::And,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
249 =>
{
yyval = Value::Node(
self.builder.logical_op(
LogicalOp::Or,
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
250 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::from(yystack.owned_value_at(2)),
None,
vec![ Node::from(yystack.owned_value_at(0)) ],
None
)?
);
},
251 =>
{
let expr = BoxedNode::from(yystack.owned_value_at(5));
self.value_expr(&expr)?;
yyval = Value::Node(
self.builder.ternary(
expr,
Token::from(yystack.owned_value_at(4)),
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
252 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
self.validate_endless_method_name(&name_t)?;
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Some( BoxedNode::from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
253 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(5));
self.validate_endless_method_name(&name_t)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( BoxedNode::from(yystack.owned_value_at(2))),
vec![ *rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_method(
def_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
254 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
self.validate_endless_method_name(&name_t)?;
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Some( BoxedNode::from(yystack.owned_value_at(0)))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
255 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(5));
self.validate_endless_method_name(&name_t)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
let method_body = self.builder.begin_body(
Some( BoxedNode::from(yystack.owned_value_at(2))),
vec![ *rescue_body ],
None,
None
);
yyval = Value::Node(
self.builder.def_endless_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
method_body
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
256 =>
{
yyval = yystack.owned_value_at(0);
},
257 =>
{
yyval = yystack.owned_value_at(0);
},
258 =>
{
yyval = yystack.owned_value_at(0);
},
259 =>
{
yyval = yystack.owned_value_at(0);
},
260 =>
{
yyval = yystack.owned_value_at(0);
},
261 =>
{
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
262 =>
{
let op_t = Token::from(yystack.owned_value_at(1));
self.warn(
&yystack.location_at (1),
DiagnosticMessage::ComparisonAfterComparison { comparison: clone_value(&op_t).into() }
);
yyval = Value::Node(
self.builder.binary_op(
BoxedNode::from(yystack.owned_value_at(2)),
op_t,
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
263 =>
{
let arg = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
264 =>
{
yyval = Value::NodeList( vec![] );
},
265 =>
{
yyval = yystack.owned_value_at(1);
},
266 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push(
*self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
);
yyval = Value::NodeList(nodes);
},
267 =>
{
yyval = Value::NodeList(
vec![
*self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
]
);
},
268 =>
{
let arg = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&arg)?;
yyval = Value::Node(arg);
},
269 =>
{
let arg = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&arg)?;
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(1)),
None,
None,
None,
None,
Some( BoxedNode::from(yystack.owned_value_at(0)))
);
yyval = Value::Node(
self.builder.begin_body(
Some(arg),
vec![ *rescue_body ],
None,
None
).expect("expected begin_body to return Some (compound_stmt was given)")
);
},
270 =>
{
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(2)),
args: NodeList::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
271 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".into() });
}
let mut args = NodeList::from(yystack.owned_value_at(3));
args.push(*self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))));
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(4)),
args,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
272 =>
{
if !self.static_env.is_forward_args_declared() {
return self.yyerror(&yystack.location_at (1), DiagnosticMessage::UnexpectedToken { token_name: "tBDOT3".into() });
}
yyval = Value::new_paren_args(
ParenArgs {
begin_t: Token::from(yystack.owned_value_at(2)),
args: vec![ *self.builder.forwarded_args( Token::from(yystack.owned_value_at(1))) ],
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
273 =>
{
yyval = Value::new_opt_paren_args(
OptParenArgs {
begin_t: None,
args: vec![],
end_t: None
}
);
},
274 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::new_opt_paren_args(
OptParenArgs {
begin_t: Some(begin_t),
args,
end_t: Some(end_t)
}
);
},
275 =>
{
yyval = Value::NodeList( vec![] );
},
276 =>
{
yyval = yystack.owned_value_at(0);
},
277 =>
{
yyval = yystack.owned_value_at(1);
},
278 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( *self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None) );
yyval = Value::NodeList(nodes);
},
279 =>
{
yyval = Value::NodeList(
vec![
*self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None)
]
);
},
280 =>
{
let command = Node::from(yystack.owned_value_at(0));
self.value_expr(&command)?;
yyval = Value::NodeList( vec![ command ] );
},
281 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
282 =>
{
let mut nodes;
let hash = self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None);
let mut opt_block_arg = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + opt_block_arg.len());
nodes.push(*hash);
nodes.append(&mut opt_block_arg);
yyval = Value::NodeList(nodes);
},
283 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let hash = self.builder.associate(None, NodeList::from(yystack.owned_value_at(1)), None);
let mut opt_block_arg = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(1 + opt_block_arg.len());
nodes.push(*hash);
nodes.append(&mut opt_block_arg);
yyval = Value::NodeList(nodes);
},
284 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
285 =>
{
let lookahead =
matches!(
self.last_token_type,
Lexer::tLPAREN2
| Lexer::tLPAREN
| Lexer:: tLPAREN_ARG
| Lexer::tLBRACK2
| Lexer::tLBRACK
);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.push(true);
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = Value::None;
},
286 =>
{
let lookahead = matches!(self.last_token_type, Lexer::tLBRACE_ARG);
if lookahead { self.yylexer.cmdarg.pop() }
self.yylexer.cmdarg.pop();
if lookahead { self.yylexer.cmdarg.push(false) }
yyval = yystack.owned_value_at(0);
},
287 =>
{
yyval = Value::Node(
self.builder.block_pass(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
288 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
289 =>
{
yyval = Value::NodeList( vec![] );
},
290 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
291 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
]
);
},
292 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
293 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
294 =>
{
yyval = Value::Node(
self.builder.array(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
295 =>
{
yyval = yystack.owned_value_at(0);
},
296 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
297 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push(
*self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
);
yyval = Value::NodeList(nodes);
},
298 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
]
);
},
299 =>
{
yyval = yystack.owned_value_at(0);
},
300 =>
{
yyval = yystack.owned_value_at(0);
},
301 =>
{
yyval = yystack.owned_value_at(0);
},
302 =>
{
yyval = yystack.owned_value_at(0);
},
303 =>
{
yyval = yystack.owned_value_at(0);
},
304 =>
{
yyval = yystack.owned_value_at(0);
},
305 =>
{
yyval = yystack.owned_value_at(0);
},
306 =>
{
yyval = yystack.owned_value_at(0);
},
307 =>
{
yyval = yystack.owned_value_at(0);
},
308 =>
{
yyval = yystack.owned_value_at(0);
},
309 =>
{
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
310 =>
{
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
311 =>
{
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.begin_keyword( Token::from(yystack.owned_value_at(3)), MaybeBoxedNode::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
312 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
313 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
None,
Token::from(yystack.owned_value_at(0))
)
);
},
314 =>
{ self.yylexer.lex_state.set(EXPR_ENDARG); yyval = Value::None; },
315 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(3)),
Some( BoxedNode::from(yystack.owned_value_at(2))),
Token::from(yystack.owned_value_at(0))
)
);
},
316 =>
{
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(2)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
317 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
318 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
319 =>
{
yyval = Value::Node(
self.builder.array(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
320 =>
{
yyval = Value::Node(
self.builder.associate(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
321 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Return,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
322 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(3)),
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
323 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(1))),
vec![],
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
324 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Yield,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
325 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Defined,
Token::from(yystack.owned_value_at(4)),
Some( Token::from(yystack.owned_value_at(2))),
vec![ Node::from(yystack.owned_value_at(1)) ],
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
326 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(3)),
Some( Token::from(yystack.owned_value_at(2))),
Some( BoxedNode::from(yystack.owned_value_at(1))),
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
327 =>
{
yyval = Value::Node(
self.builder.not_op(
Token::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some( Token::from(yystack.owned_value_at(0)))
)?
);
},
328 =>
{
let method_call = self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
None,
vec![],
None
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
329 =>
{
yyval = yystack.owned_value_at(0);
},
330 =>
{
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
BoxedNode::from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
331 =>
{
yyval = yystack.owned_value_at(0);
},
332 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.condition(
Token::from(yystack.owned_value_at(5)),
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
MaybeBoxedNode::from(yystack.owned_value_at(2)),
keyword_t,
else_body,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
333 =>
{
let (else_t, body) = OptElse::from(yystack.owned_value_at(1)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.condition(
Token::from(yystack.owned_value_at(5)),
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
body,
else_t,
MaybeBoxedNode::from(yystack.owned_value_at(2)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
334 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::While,
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
335 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.loop_(
LoopType::Until,
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
336 =>
{
yyval = Value::None;
},
337 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::from(yystack.owned_value_at(5)),
Some( BoxedNode::from(yystack.owned_value_at(4))),
when_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
338 =>
{
yyval = Value::None;
},
339 =>
{
let CaseBody { when_bodies, opt_else } = CaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case(
Token::from(yystack.owned_value_at(4)),
None,
when_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
340 =>
{
let PCaseBody { in_bodies, opt_else } = PCaseBody::from(yystack.owned_value_at(1));
let (else_t, else_body) = opt_else.map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::Node(
self.builder.case_match(
Token::from(yystack.owned_value_at(4)),
BoxedNode::from(yystack.owned_value_at(3)),
in_bodies,
else_t,
else_body,
Token::from(yystack.owned_value_at(0))
)
);
},
341 =>
{
let ExprValueDo { value, do_t } = ExprValueDo::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.for_(
Token::from(yystack.owned_value_at(5)),
BoxedNode::from(yystack.owned_value_at(4)),
Token::from(yystack.owned_value_at(3)),
value,
do_t,
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
342 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_class();
yyval = Value::None;
},
343 =>
{
if !self.context.is_class_definition_allowed() {
return self.yyerror(&yystack.location_at (5), DiagnosticMessage::ClassDefinitionInMethodBody);
}
let Superclass { lt_t, value } = Superclass::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_class(
Token::from(yystack.owned_value_at(5)),
BoxedNode::from(yystack.owned_value_at(4)),
lt_t,
value,
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
344 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
self.context.push_sclass();
yyval = Value::None;
},
345 =>
{
yyval = Value::Node(
self.builder.def_sclass(
Token::from(yystack.owned_value_at(6)),
Token::from(yystack.owned_value_at(5)),
BoxedNode::from(yystack.owned_value_at(4)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
},
346 =>
{
self.static_env.extend_static();
self.yylexer.cmdarg.push(false);
self.context.push_module();
yyval = Value::None;
},
347 =>
{
if !self.context.is_module_definition_allowed() {
return self.yyerror(&yystack.location_at (4), DiagnosticMessage::ModuleDefinitionInMethodBody);
}
yyval = Value::Node(
self.builder.def_module(
Token::from(yystack.owned_value_at(4)),
BoxedNode::from(yystack.owned_value_at(3)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
self.yylexer.cmdarg.pop();
self.static_env.unextend();
self.context.pop();
},
348 =>
{
let DefnHead { def_t, name_t } = DefnHead::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_method(
def_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(2)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
349 =>
{
let DefsHead { def_t, definee, dot_t, name_t } = DefsHead::from(yystack.owned_value_at(3));
yyval = Value::Node(
self.builder.def_singleton(
def_t,
definee,
dot_t,
name_t,
MaybeBoxedNode::from(yystack.owned_value_at(2)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)?
);
self.yylexer.cmdarg.pop();
self.yylexer.cond.pop();
self.static_env.unextend();
self.context.pop();
self.current_arg_stack.pop();
},
350 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Break,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
351 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Next,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
352 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Redo,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
353 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Retry,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
354 =>
{
let primary = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&primary)?;
yyval = Value::Node(primary);
},
355 =>
{
yyval = yystack.owned_value_at(0);
},
356 =>
{
self.warn_eol(&yystack.location_at (0), "if");
yyval = yystack.owned_value_at(0);
},
357 =>
{
yyval = yystack.owned_value_at(0);
},
358 =>
{
yyval = yystack.owned_value_at(0);
},
359 =>
{
yyval = yystack.owned_value_at(0);
},
360 =>
{
yyval = yystack.owned_value_at(0);
},
361 =>
{
yyval = yystack.owned_value_at(0);
},
362 =>
{
yyval = yystack.owned_value_at(0);
},
363 =>
{
yyval = yystack.owned_value_at(0);
},
364 =>
{
yyval = yystack.owned_value_at(0);
},
365 =>
{
yyval = yystack.owned_value_at(0);
},
366 =>
{
yyval = yystack.owned_value_at(0);
},
367 =>
{
yyval = yystack.owned_value_at(0);
},
368 =>
{
yyval = yystack.owned_value_at(0);
},
369 =>
{
yyval = yystack.owned_value_at(0);
},
370 =>
{
yyval = yystack.owned_value_at(0);
},
371 =>
{
self.warn_eol(&yystack.location_at (0), "elsif");
yyval = yystack.owned_value_at(0);
},
372 =>
{
yyval = yystack.owned_value_at(0);
},
373 =>
{
if self.context.is_in_class() {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::InvalidReturnInClassOrModuleBody);
}
yyval = yystack.owned_value_at(0);
},
374 =>
{
yyval = yystack.owned_value_at(0);
},
375 =>
{
yyval = yystack.owned_value_at(0);
},
376 =>
{
yyval = yystack.owned_value_at(0);
},
377 =>
{
yyval = yystack.owned_value_at(0);
},
378 =>
{
yyval = yystack.owned_value_at(0);
},
379 =>
{
let (keyword_t, body) = OptElse::from(yystack.owned_value_at(0)).map(|else_| (Some(else_.else_t), else_.body)).unwrap_or_else(|| (None, None));
yyval = Value::new_if_tail(IfTail { keyword_t, body });
},
380 =>
{
let IfTail { keyword_t, body: else_body } = IfTail::from(yystack.owned_value_at(0));
let elsif_t = Token::from(yystack.owned_value_at(4));
yyval = Value::new_if_tail(
IfTail {
keyword_t: Some(elsif_t.clone()),
body: Some(
self.builder.condition(
elsif_t,
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
keyword_t,
else_body,
None
)
)
}
);
},
381 =>
{
yyval = Value::new_opt_else(None);
},
382 =>
{
let else_t = Token::from(yystack.owned_value_at(1));
let body = MaybeBoxedNode::from(yystack.owned_value_at(0));
yyval = Value::new_opt_else(Some(Else { else_t, body }));
},
383 =>
{
yyval = yystack.owned_value_at(0);
},
384 =>
{
yyval = yystack.owned_value_at(0);
},
385 =>
{
yyval = Value::Node(
self.builder.arg( Token::from(yystack.owned_value_at(0)))?
);
},
386 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
387 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
388 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
389 =>
{
yyval = yystack.owned_value_at(0);
},
390 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
391 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(4));
let f_rest_marg = Node::from(yystack.owned_value_at(2));
let mut f_marg_list = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(1 + f_marg_list.len());
nodes.push(f_rest_marg);
nodes.append(&mut f_marg_list);
yyval = Value::NodeList(nodes);
},
392 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
393 =>
{
let mut nodes;
let f_rest_marg = Node::from(yystack.owned_value_at(2));
let mut f_marg_list = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + f_marg_list.len());
nodes.push(f_rest_marg);
nodes.append(&mut f_marg_list);
yyval = Value::NodeList(nodes);
},
394 =>
{
yyval = Value::Node(
self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
);
},
395 =>
{
yyval = Value::Node(
self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
);
},
396 =>
{
yyval = yystack.owned_value_at(0);
},
397 =>
{
yyval = yystack.owned_value_at(0);
},
398 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_kwrest = NodeList::from(yystack.owned_value_at(1));
let mut opt_f_block_arg = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
nodes.append(&mut f_kwrest);
nodes.append(&mut opt_f_block_arg);
yyval = Value::NodeList(nodes);
},
399 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
400 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
401 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
402 =>
{
yyval = yystack.owned_value_at(0);
},
403 =>
{
yyval = Value::NodeList( vec![] );
},
404 =>
{
yyval = yystack.owned_value_at(0);
},
405 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_block_optarg = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
406 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(7));
let mut f_block_optarg = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
407 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_block_optarg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
408 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_block_optarg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_block_optarg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_block_optarg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
409 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
410 =>
{
yyval = yystack.owned_value_at(1);
},
411 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
412 =>
{
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
let mut nodes: Vec<Node>;
if opt_block_args_tail.is_empty() && f_arg.len() == 1 {
nodes = vec![ *self.builder.procarg0(Box::new(f_arg.pop().expect("f_arg is non empty"))) ];
} else {
nodes = f_arg;
nodes.append(&mut opt_block_args_tail);
}
yyval = Value::NodeList(nodes);
},
413 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
414 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
415 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
416 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
417 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
418 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_block_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_block_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_block_args_tail);
yyval = Value::NodeList(nodes);
},
419 =>
{
yyval = yystack.owned_value_at(0);
},
420 =>
{
yyval = Value::MaybeNode(
self.builder.args(None, vec![], None)
);
},
421 =>
{
self.yylexer.command_start = true;
yyval = yystack.owned_value_at(0);
},
422 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
423 =>
{
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(None);
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::from(yystack.owned_value_at(1)));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(3))),
nodes,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
424 =>
{
yyval = Value::NodeList( vec![] );
},
425 =>
{
yyval = yystack.owned_value_at(1);
},
426 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
427 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
428 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.shadowarg(ident_t)?
);
},
429 =>
{
yyval = Value::None;
},
430 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.context.push_lambda();
yyval = Value::Num(self.yylexer.lpar_beg);
self.yylexer.lpar_beg = self.yylexer.paren_nest;
},
431 =>
{
self.context.pop();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
432 =>
{
self.yylexer.lpar_beg = Num::from(yystack.owned_value_at(3));
let lambda_call = self.builder.call_lambda( Token::from(yystack.owned_value_at(4)));
let args = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(2)))
};
let LambdaBody { begin_t, body, end_t } = LambdaBody::from(yystack.owned_value_at(0));
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::Node(
self.builder.block(
lambda_call,
begin_t,
args,
body,
end_t
)?
);
},
433 =>
{
self.max_numparam_stack.set_has_ordinary_params();
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::from(yystack.owned_value_at(1)));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(3))),
nodes,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
434 =>
{
let args = NodeList::from(yystack.owned_value_at(0));
if !args.is_empty() {
self.max_numparam_stack.set_has_ordinary_params();
}
yyval = Value::MaybeNode(
self.builder.args(None, args, None)
);
},
435 =>
{
self.context.push_lambda();
yyval = Value::None;
},
436 =>
{
self.context.pop();
yyval = Value::new_lambda_body(
LambdaBody {
begin_t: Token::from(yystack.owned_value_at(3)),
body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
437 =>
{
self.context.push_lambda();
yyval = Value::None;
},
438 =>
{
self.context.pop();
yyval = Value::new_lambda_body(
LambdaBody {
begin_t: Token::from(yystack.owned_value_at(3)),
body: MaybeBoxedNode::from(yystack.owned_value_at(1)),
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
439 =>
{
self.context.push_block();
yyval = Value::None;
},
440 =>
{
let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_do_block(
DoBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
441 =>
{
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
BoxedNode::from(yystack.owned_value_at(1)),
begin_t,
args_type,
body,
end_t
)?
);
},
442 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
443 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(1));
let method_call = self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
begin_t,
args,
end_t
);
let BraceBlock { begin_t, args_type, body, end_t } = BraceBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
444 =>
{
let method_call = self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(4))),
Some( Token::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
None,
NodeList::from(yystack.owned_value_at(1)),
None
);
let DoBlock { begin_t, args_type, body, end_t } = DoBlock::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.block(
method_call,
begin_t,
args_type,
body,
end_t
)?
);
},
445 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
None,
None,
Some( Token::from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
446 =>
{
let OptParenArgs { begin_t, args, end_t } = OptParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
begin_t,
args,
end_t
)
);
},
447 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(3))),
Some( Token::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
Some(begin_t),
args,
Some(end_t)
)
);
},
448 =>
{
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
Some( Token::from(yystack.owned_value_at(0))),
None,
vec![],
None
)
);
},
449 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
450 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.call_method(
Some( BoxedNode::from(yystack.owned_value_at(2))),
Some( Token::from(yystack.owned_value_at(1))),
None,
Some(begin_t),
args,
Some(end_t)
)
);
},
451 =>
{
let ParenArgs { begin_t, args, end_t } = ParenArgs::from(yystack.owned_value_at(0));
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Super,
Token::from(yystack.owned_value_at(1)),
Some(begin_t),
args,
Some(end_t)
)?
);
},
452 =>
{
yyval = Value::Node(
self.builder.keyword_cmd(
KeywordCmd::Zsuper,
Token::from(yystack.owned_value_at(0)),
None,
vec![],
None
)?
);
},
453 =>
{
yyval = Value::Node(
self.builder.index(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
454 =>
{
self.context.push_block();
yyval = Value::None;
},
455 =>
{
let BraceBody { args_type, body } = BraceBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_brace_block(
BraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
456 =>
{
self.context.push_block();
yyval = Value::None;
},
457 =>
{
let DoBody { args_type, body } = DoBody::from(yystack.owned_value_at(1));
self.context.pop();
yyval = Value::new_brace_block(
BraceBlock {
begin_t: Token::from(yystack.owned_value_at(3)),
args_type,
body,
end_t: Token::from(yystack.owned_value_at(0))
}
);
},
458 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
yyval = Value::None;
},
459 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
yyval = Value::new_brace_body(
BraceBody {
args_type,
body: MaybeBoxedNode::from(yystack.owned_value_at(0))
}
);
},
460 =>
{
self.static_env.extend_dynamic();
self.max_numparam_stack.push();
self.yylexer.cmdarg.push(false);
yyval = Value::None;
},
461 =>
{
let args_type = if self.max_numparam_stack.has_numparams() {
ArgsType::Numargs(self.max_numparam_stack.top() as u8)
} else {
ArgsType::Args( MaybeBoxedNode::from(yystack.owned_value_at(1)))
};
self.max_numparam_stack.pop();
self.static_env.unextend();
self.yylexer.cmdarg.pop();
yyval = Value::new_do_body(
DoBody { args_type, body: MaybeBoxedNode::from(yystack.owned_value_at(0)) }
);
},
462 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
463 =>
{
yyval = Value::NodeList(
vec![
*self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0))))
]
);
},
464 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
465 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
nodes.push( *self.builder.splat( Token::from(yystack.owned_value_at(1)), Some( BoxedNode::from(yystack.owned_value_at(0)))) );
yyval = Value::NodeList(nodes);
},
466 =>
{
let when = *self.builder.when( Token::from(yystack.owned_value_at(4)), NodeList::from(yystack.owned_value_at(3)), Token::from(yystack.owned_value_at(2)), MaybeBoxedNode::from(yystack.owned_value_at(1)));
let Cases { mut when_bodies, opt_else } = Cases::from(yystack.owned_value_at(0));
let mut nodes = Vec::with_capacity(1 + when_bodies.len());
nodes.push(when);
nodes.append(&mut when_bodies);
yyval = Value::new_case_body(CaseBody { when_bodies: nodes, opt_else });
},
467 =>
{
yyval = Value::new_cases(Cases { when_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
},
468 =>
{
let CaseBody { when_bodies, .. } = CaseBody::from(yystack.owned_value_at(0));
yyval = Value::new_cases(Cases { when_bodies, opt_else: None });
},
469 =>
{
self.yylexer.lex_state.set(EXPR_BEG|EXPR_LABEL);
self.yylexer.command_start = false;
self.pattern_variables.push();
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
},
470 =>
{
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
self.pattern_variables.pop();
self.pattern_hash_keys.pop();
yyval = Value::None;
},
471 =>
{
let PCases { mut in_bodies, opt_else } = PCases::from(yystack.owned_value_at(0));
let PTopExpr { pattern, guard } = PTopExpr::from(yystack.owned_value_at(4));
let mut nodes = Vec::with_capacity(1 + in_bodies.len());
nodes.push(
*self.builder.in_pattern(
Token::from(yystack.owned_value_at(6)),
pattern,
guard,
Token::from(yystack.owned_value_at(3)),
MaybeBoxedNode::from(yystack.owned_value_at(1))
)
);
nodes.append(&mut in_bodies);
yyval = Value::new_p_case_body(PCaseBody { in_bodies: nodes, opt_else });
},
472 =>
{
yyval = Value::new_p_cases(PCases { in_bodies: vec![], opt_else: OptElse::from(yystack.owned_value_at(0)) });
},
473 =>
{
let PCaseBody { in_bodies, .. } = PCaseBody::from(yystack.owned_value_at(0));
yyval = Value::new_p_cases(PCases { in_bodies, opt_else: None });
},
474 =>
{
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(0)), guard: None });
},
475 =>
{
let guard = self.builder.if_guard( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)));
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
},
476 =>
{
let guard = self.builder.unless_guard( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)));
yyval = Value::new_p_top_expr(PTopExpr { pattern: BoxedNode::from(yystack.owned_value_at(2)), guard: Some(guard) });
},
477 =>
{
yyval = yystack.owned_value_at(0);
},
478 =>
{
yyval = Value::Node(
self.builder.array_pattern(
None,
vec![ Node::from(yystack.owned_value_at(1)) ],
Some( Token::from(yystack.owned_value_at(0))),
None
)
);
},
479 =>
{
let MatchPatternWithTrailingComma { mut elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(0));
let mut nodes = Vec::with_capacity(1 + elements.len());
nodes.push( Node::from(yystack.owned_value_at(2)));
nodes.append(&mut elements);
yyval = Value::Node(
self.builder.array_pattern(None, nodes, trailing_comma, None)
);
},
480 =>
{
yyval = Value::Node(
self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
481 =>
{
yyval = Value::Node(
self.builder.array_pattern(None, NodeList::from(yystack.owned_value_at(0)), None, None)
);
},
482 =>
{
yyval = Value::Node(
self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(0)), None)
);
},
483 =>
{
yyval = yystack.owned_value_at(0);
},
484 =>
{
yyval = Value::Node(
self.builder.match_as(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
485 =>
{
yyval = yystack.owned_value_at(0);
},
486 =>
{
yyval = Value::Node(
self.builder.match_alt(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
487 =>
{
yyval = yystack.owned_value_at(0);
},
488 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
489 =>
{
yyval = yystack.owned_value_at(0);
self.pattern_hash_keys.push();
},
490 =>
{
yyval = yystack.owned_value_at(0);
},
491 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
492 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
493 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
494 =>
{
let lparen = Token::from(yystack.owned_value_at(1));
let rparen = Token::from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
495 =>
{
self.pattern_hash_keys.pop();
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
let pattern = self.builder.array_pattern(None, elements, trailing_comma, None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
496 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.find_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
497 =>
{
self.pattern_hash_keys.pop();
let pattern = self.builder.hash_pattern(None, NodeList::from(yystack.owned_value_at(1)), None);
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(3)),
Token::from(yystack.owned_value_at(2)),
pattern,
Token::from(yystack.owned_value_at(0))
)
);
},
498 =>
{
let lparen = Token::from(yystack.owned_value_at(1));
let rparen = Token::from(yystack.owned_value_at(0));
let pattern = self.builder.array_pattern(Some(lparen.clone()), vec![], None, Some(rparen.clone()));
yyval = Value::Node(
self.builder.const_pattern(
BoxedNode::from(yystack.owned_value_at(2)),
lparen,
pattern,
rparen
)
);
},
499 =>
{
let MatchPatternWithTrailingComma { elements, trailing_comma } = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1));
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::from(yystack.owned_value_at(2))),
elements,
trailing_comma,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
500 =>
{
yyval = Value::Node(
self.builder.find_pattern(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
501 =>
{
yyval = Value::Node(
self.builder.array_pattern(
Some( Token::from(yystack.owned_value_at(1))),
vec![],
None,
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
502 =>
{
self.pattern_hash_keys.push();
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = false;
},
503 =>
{
self.pattern_hash_keys.pop();
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::from(yystack.owned_value_at(3))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
504 =>
{
yyval = Value::Node(
self.builder.hash_pattern(
Some( Token::from(yystack.owned_value_at(1))),
vec![],
Some( Token::from(yystack.owned_value_at(0))),
)
);
},
505 =>
{
self.pattern_hash_keys.push();
yyval = Value::None;
},
506 =>
{
self.pattern_hash_keys.pop();
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(3)),
Some( BoxedNode::from(yystack.owned_value_at(1))),
Token::from(yystack.owned_value_at(0))
)
);
},
507 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: vec![ Node::from(yystack.owned_value_at(0)) ],
trailing_comma: None
}
);
},
508 =>
{
yyval = yystack.owned_value_at(0);
},
509 =>
{
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
elements.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
510 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?;
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements;
elements.push(*match_rest);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
511 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(3)), Some( Token::from(yystack.owned_value_at(2))))?;
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(4)).elements;
let mut p_args_post = NodeList::from(yystack.owned_value_at(0));
elements.reserve(1 + p_args_post.len());
elements.push(*match_rest);
elements.append(&mut p_args_post);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
512 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?;
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(1)).elements;
elements.push(*match_rest);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
513 =>
{
let match_rest = self.builder.match_rest( Token::from(yystack.owned_value_at(2)), None)?;
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(3)).elements;
let mut p_args_post = NodeList::from(yystack.owned_value_at(0));
elements.push(*match_rest);
elements.append(&mut p_args_post);
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: None
}
);
},
514 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: NodeList::from(yystack.owned_value_at(0)),
trailing_comma: None
}
);
},
515 =>
{
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements: vec![ Node::from(yystack.owned_value_at(1))],
trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
}
);
},
516 =>
{
let mut elements = MatchPatternWithTrailingComma::from(yystack.owned_value_at(2)).elements;
elements.push( Node::from(yystack.owned_value_at(1)));
yyval = Value::new_match_pattern_with_trailing_comma(
MatchPatternWithTrailingComma {
elements,
trailing_comma: Some( Token::from(yystack.owned_value_at(0))),
}
);
},
517 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
518 =>
{
let mut nodes;
let mut p_args_post = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + p_args_post.len());
nodes.push( Node::from(yystack.owned_value_at(2)));
nodes.append(&mut p_args_post);
yyval = Value::NodeList(nodes);
},
519 =>
{
let mut nodes;
let mut p_args_post = NodeList::from(yystack.owned_value_at(2));
nodes = Vec::with_capacity(1 + p_args_post.len() + 1);
nodes.push( Node::from(yystack.owned_value_at(4)));
nodes.append(&mut p_args_post);
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
520 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
);
},
521 =>
{
yyval = Value::Node(
self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
);
},
522 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
523 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
524 =>
{
yyval = yystack.owned_value_at(0);
},
525 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
526 =>
{
yyval = yystack.owned_value_at(0);
},
527 =>
{
yyval = yystack.owned_value_at(1);
},
528 =>
{
yyval = yystack.owned_value_at(0);
},
529 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
530 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
531 =>
{
yyval = Value::Node(
self.builder.match_pair(
PKwLabel::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
532 =>
{
yyval = Value::Node(
self.builder.match_label(
PKwLabel::from(yystack.owned_value_at(0)),
)?
);
},
533 =>
{
yyval = Value::new_p_kw_label(
PKwLabel::PlainLabel( Token::from(yystack.owned_value_at(0)))
);
},
534 =>
{
yyval = Value::new_p_kw_label(
PKwLabel::QuotedLabel( ( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0))) )
);
},
535 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_rest( Token::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))?
]
);
},
536 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_rest( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
537 =>
{
yyval = Value::NodeList(
vec![
*self.builder.match_nil_pattern( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
]
);
},
538 =>
{
yyval = yystack.owned_value_at(0);
},
539 =>
{
yyval = yystack.owned_value_at(0);
},
540 =>
{
yyval = yystack.owned_value_at(0);
},
541 =>
{
let left = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
542 =>
{
let left = BoxedNode::from(yystack.owned_value_at(2));
self.value_expr(&left)?;
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
543 =>
{
let left = BoxedNode::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_inclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
544 =>
{
let left = BoxedNode::from(yystack.owned_value_at(1));
self.value_expr(&left)?;
yyval = Value::Node(
self.builder.range_exclusive(
Some(left),
Token::from(yystack.owned_value_at(0)),
None
)
);
},
545 =>
{
yyval = yystack.owned_value_at(0);
},
546 =>
{
yyval = yystack.owned_value_at(0);
},
547 =>
{
yyval = yystack.owned_value_at(0);
},
548 =>
{
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_inclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
549 =>
{
let right = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&right)?;
yyval = Value::Node(
self.builder.range_exclusive(
None,
Token::from(yystack.owned_value_at(1)),
Some(right)
)
);
},
550 =>
{
yyval = yystack.owned_value_at(0);
},
551 =>
{
yyval = yystack.owned_value_at(0);
},
552 =>
{
yyval = yystack.owned_value_at(0);
},
553 =>
{
yyval = yystack.owned_value_at(0);
},
554 =>
{
yyval = yystack.owned_value_at(0);
},
555 =>
{
yyval = yystack.owned_value_at(0);
},
556 =>
{
yyval = yystack.owned_value_at(0);
},
557 =>
{
yyval = yystack.owned_value_at(0);
},
558 =>
{
yyval = Value::Node(
self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
);
},
559 =>
{
yyval = yystack.owned_value_at(0);
},
560 =>
{
yyval = Value::Node(
self.builder.match_var( Token::from(yystack.owned_value_at(0)))?
);
},
561 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
if !self.static_env.is_declared(&name) {
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::NoSuchLocalVariable { var_name: name.into() });
}
let lvar = self.builder.accessible(self.builder.lvar(ident_t));
yyval = Value::Node(
self.builder.pin( Token::from(yystack.owned_value_at(1)), lvar)
);
},
562 =>
{
yyval = Value::Node(
self.builder.const_global( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
563 =>
{
yyval = Value::Node(
self.builder.const_fetch(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0)),
)
);
},
564 =>
{
yyval = Value::Node(self.builder.const_( Token::from(yystack.owned_value_at(0))));
},
565 =>
{
let ExcVar { assoc_t, exc_var } = ExcVar::from(yystack.owned_value_at(3));
let exc_list = NodeList::from(yystack.owned_value_at(4));
let exc_list = if exc_list.is_empty() {
None
} else {
Some(self.builder.array(None, exc_list, None))
};
let rescue_body = self.builder.rescue_body(
Token::from(yystack.owned_value_at(5)),
exc_list,
assoc_t,
exc_var,
Some( Token::from(yystack.owned_value_at(2))),
MaybeBoxedNode::from(yystack.owned_value_at(1))
);
let mut nodes;
let mut opt_rescue = NodeList::from(yystack.owned_value_at(0));
nodes = Vec::with_capacity(1 + opt_rescue.len());
nodes.push(*rescue_body);
nodes.append(&mut opt_rescue);
yyval = Value::NodeList(nodes);
},
566 =>
{
yyval = Value::NodeList( vec![] );
},
567 =>
{
yyval = Value::NodeList(vec![ Node::from(yystack.owned_value_at(0)) ]);
},
568 =>
{
yyval = yystack.owned_value_at(0);
},
569 =>
{
yyval = Value::NodeList( vec![] );
},
570 =>
{
let assoc_t = Some( Token::from(yystack.owned_value_at(1)));
let exc_var = Some( BoxedNode::from(yystack.owned_value_at(0)));
yyval = Value::new_exc_var(ExcVar { assoc_t, exc_var });
},
571 =>
{
yyval = Value::new_exc_var(ExcVar { assoc_t: None, exc_var: None });
},
572 =>
{
let ensure_t = Token::from(yystack.owned_value_at(1));
let body = MaybeBoxedNode::from(yystack.owned_value_at(0));
yyval = Value::new_opt_ensure(Some(Ensure { ensure_t, body }));
},
573 =>
{
yyval = Value::new_opt_ensure(None);
},
574 =>
{
yyval = yystack.owned_value_at(0);
},
575 =>
{
yyval = yystack.owned_value_at(0);
},
576 =>
{
yyval = Value::Node(
self.builder.string_compose(
None,
NodeList::from(yystack.owned_value_at(0)),
None
)
);
},
577 =>
{
yyval = Value::NodeList(
vec![
*self.builder.character( Token::from(yystack.owned_value_at(0)))
]
);
},
578 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
579 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
580 =>
{
let mut string = self.builder.string_compose(Some( Token::from(yystack.owned_value_at(2))), NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
581 =>
{
let mut string = self.builder.xstring_compose( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)));
let indent = self.yylexer.buffer.heredoc_indent;
self.yylexer.buffer.heredoc_indent = 0;
self.builder.heredoc_dedent(&mut string, indent);
yyval = Value::Node(string);
},
582 =>
{
let regexp_end = Token::from(yystack.owned_value_at(0));
let opts = self.builder.regexp_options(regexp_end.clone());
yyval = Value::Node(
self.builder.regexp_compose(
Token::from(yystack.owned_value_at(2)),
NodeList::from(yystack.owned_value_at(1)),
regexp_end,
opts
)
);
},
583 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
584 =>
{
yyval = Value::NodeList( vec![] );
},
585 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
*self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
586 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
587 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
588 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
589 =>
{
yyval = Value::NodeList( vec![] );
},
590 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
*self.builder.word( NodeList::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
591 =>
{
yyval = Value::Node(
self.builder.words_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
592 =>
{
yyval = Value::Node(
self.builder.symbols_compose(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
593 =>
{
yyval = Value::NodeList( vec![] );
},
594 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
*self.builder.string_internal( Token::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
595 =>
{
yyval = Value::NodeList( vec![] );
},
596 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push(
*self.builder.symbol_internal( Token::from(yystack.owned_value_at(1)) )
);
yyval = Value::NodeList(nodes);
},
597 =>
{
yyval = Value::NodeList( vec![] );
},
598 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
599 =>
{
yyval = Value::NodeList( vec![] );
},
600 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
601 =>
{
yyval = Value::NodeList( vec![] );
},
602 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
603 =>
{
yyval = Value::Node(
self.builder.string_internal( Token::from(yystack.owned_value_at(0)))
);
},
604 =>
{
yyval = Value::MaybeStrTerm(Box::new(std::mem::take(&mut self.yylexer.strterm)));
self.yylexer.lex_state.set(EXPR_BEG);
},
605 =>
{
self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(1));
yyval = yystack.owned_value_at(0);
},
606 =>
{
self.yylexer.cmdarg.push(false);
self.yylexer.cond.push(false);
yyval = Value::None;
},
607 =>
{
yyval = Value::MaybeStrTerm(Box::new(std::mem::take(&mut self.yylexer.strterm)));
},
608 =>
{
yyval = Value::Num( self.yylexer.lex_state.get() );
self.yylexer.lex_state.set(EXPR_BEG);
},
609 =>
{
yyval = Value::Num( self.yylexer.brace_nest );
self.yylexer.brace_nest = 0;
},
610 =>
{
yyval = Value::Num( self.yylexer.buffer.heredoc_indent );
self.yylexer.buffer.heredoc_indent = 0;
},
611 =>
{
self.yylexer.cond.pop();
self.yylexer.cmdarg.pop();
self.yylexer.strterm = MaybeStrTerm::from(yystack.owned_value_at(5));
self.yylexer.lex_state.set( Num::from(yystack.owned_value_at(4)));
self.yylexer.brace_nest = Num::from(yystack.owned_value_at(3));
self.yylexer.buffer.heredoc_indent = Num::from(yystack.owned_value_at(2));
self.yylexer.buffer.heredoc_line_indent = -1;
yyval = Value::Node(
self.builder.begin(
Token::from(yystack.owned_value_at(7)),
MaybeBoxedNode::from(yystack.owned_value_at(1)),
Token::from(yystack.owned_value_at(0))
)
);
},
612 =>
{
yyval = Value::Node(self.builder.gvar( Token::from(yystack.owned_value_at(0))));
},
613 =>
{
yyval = Value::Node(self.builder.ivar( Token::from(yystack.owned_value_at(0))));
},
614 =>
{
yyval = Value::Node(self.builder.cvar( Token::from(yystack.owned_value_at(0))));
},
615 =>
{
yyval = yystack.owned_value_at(0);
},
616 =>
{ yyval = yystack.owned_value_at(0); },
617 =>
{ yyval = yystack.owned_value_at(0); },
618 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
619 =>
{ yyval = yystack.owned_value_at(0); },
620 =>
{ yyval = yystack.owned_value_at(0); },
621 =>
{ yyval = yystack.owned_value_at(0); },
622 =>
{ yyval = yystack.owned_value_at(0); },
623 =>
{
self.yylexer.lex_state.set(EXPR_END);
yyval = Value::Node(
self.builder.symbol_compose( Token::from(yystack.owned_value_at(2)), NodeList::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
);
},
624 =>
{
yyval = yystack.owned_value_at(0);
},
625 =>
{
yyval = Value::Node(
self.builder.unary_num(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
626 =>
{
yyval = Value::Node(
self.builder.integer( Token::from(yystack.owned_value_at(0)))
);
},
627 =>
{
yyval = Value::Node(
self.builder.float( Token::from(yystack.owned_value_at(0)))
);
},
628 =>
{
yyval = Value::Node(
self.builder.rational( Token::from(yystack.owned_value_at(0)))
);
},
629 =>
{
yyval = Value::Node(
self.builder.complex( Token::from(yystack.owned_value_at(0)))
);
},
630 =>
{
yyval = Value::Node(
self.builder.lvar( Token::from(yystack.owned_value_at(0)))
);
},
631 =>
{
yyval = Value::Node(
self.builder.ivar( Token::from(yystack.owned_value_at(0)))
);
},
632 =>
{
yyval = Value::Node(
self.builder.gvar( Token::from(yystack.owned_value_at(0)))
);
},
633 =>
{
yyval = Value::Node(
self.builder.const_( Token::from(yystack.owned_value_at(0)))
);
},
634 =>
{
yyval = Value::Node(
self.builder.cvar( Token::from(yystack.owned_value_at(0)))
);
},
635 =>
{
yyval = Value::Node(
self.builder.nil( Token::from(yystack.owned_value_at(0)))
);
},
636 =>
{
yyval = Value::Node(
self.builder.self_( Token::from(yystack.owned_value_at(0)))
);
},
637 =>
{
yyval = Value::Node(
self.builder.true_( Token::from(yystack.owned_value_at(0)))
);
},
638 =>
{
yyval = Value::Node(
self.builder.false_( Token::from(yystack.owned_value_at(0)))
);
},
639 =>
{
yyval = Value::Node(
self.builder.__file__( Token::from(yystack.owned_value_at(0)))
);
},
640 =>
{
yyval = Value::Node(
self.builder.__line__( Token::from(yystack.owned_value_at(0)))
);
},
641 =>
{
yyval = Value::Node(
self.builder.__encoding__( Token::from(yystack.owned_value_at(0)))
);
},
642 =>
{
let node = BoxedNode::from(yystack.owned_value_at(0));
if let Node::Lvar(node) = &*node {
let name = node.name.as_str();
match name.as_bytes()[..] {
[b'_', n] if n >= b'1' && n <= b'9' => {
if !self.static_env.is_declared(&name) && self.context.is_in_dynamic_block() {
if self.max_numparam_stack.has_ordinary_params() {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::OrdinaryParamDefined,
);
}
let mut raw_context = self.context.inner_clone();
let mut raw_max_numparam_stack = self.max_numparam_stack.inner_clone();
raw_context.pop();
raw_max_numparam_stack.pop();
for outer_scope in raw_context.iter().rev() {
if *outer_scope == ContextItem::Block || *outer_scope == ContextItem::Lambda {
let outer_scope_has_numparams = raw_max_numparam_stack
.pop()
.unwrap_or(0) > 0;
if outer_scope_has_numparams {
return self.yyerror(
&yystack.location_at (0),
DiagnosticMessage::NumparamUsed,
);
} else {
}
} else {
break;
}
}
self.static_env.declare(&name);
self.max_numparam_stack.register((n - b'0') as i32)
}
},
_ => {}
}
}
yyval = Value::Node(
self.builder.accessible(node)
);
},
643 =>
{
yyval = Value::Node(
self.builder.accessible( BoxedNode::from(yystack.owned_value_at(0)))
);
},
644 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
645 =>
{
yyval = Value::Node(
self.builder.assignable( BoxedNode::from(yystack.owned_value_at(0)))?
);
},
646 =>
{
yyval = Value::Node(
self.builder.nth_ref( Token::from(yystack.owned_value_at(0)))
);
},
647 =>
{
yyval = Value::Node(
self.builder.back_ref( Token::from(yystack.owned_value_at(0)))
);
},
648 =>
{
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
yyval = Value::None;
},
649 =>
{
let lt_t = Some( Token::from(yystack.owned_value_at(3)));
let value = Some( BoxedNode::from(yystack.owned_value_at(1)));
yyval = Value::new_superclass(
Superclass { lt_t, value }
);
},
650 =>
{
yyval = Value::new_superclass(Superclass { lt_t: None, value: None });
},
651 =>
{
yyval = yystack.owned_value_at(0);
},
652 =>
{
yyval = Value::MaybeNode(None);
},
653 =>
{
yyval = Value::MaybeNode(
self.builder.args(Some( Token::from(yystack.owned_value_at(2))), NodeList::from(yystack.owned_value_at(1)), Some( Token::from(yystack.owned_value_at(0))))
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
654 =>
{
let mut args = NodeList::from(yystack.owned_value_at(3));
args.push(*self.builder.forward_arg( Token::from(yystack.owned_value_at(1))));
yyval = Value::MaybeNode(
self.builder.args(
Some( Token::from(yystack.owned_value_at(4))),
args,
Some( Token::from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
655 =>
{
yyval = Value::MaybeNode(
Some(
self.builder.forward_only_args( Token::from(yystack.owned_value_at(2)), Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
)
);
self.static_env.declare_forward_args();
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
656 =>
{
yyval = yystack.owned_value_at(0);
},
657 =>
{
yyval = Value::Bool(self.yylexer.in_kwarg);
self.yylexer.in_kwarg = true;
self.yylexer.lex_state.set(self.yylexer.lex_state.get()|EXPR_LABEL);
},
658 =>
{
self.yylexer.in_kwarg = Bool::from(yystack.owned_value_at(2));
yyval = Value::MaybeNode(
self.builder.args(None, NodeList::from(yystack.owned_value_at(1)), None)
);
self.yylexer.lex_state.set(EXPR_BEG);
self.yylexer.command_start = true;
},
659 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_kwrest = NodeList::from(yystack.owned_value_at(1));
let mut opt_f_block_arg = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_kwrest.len() + opt_f_block_arg.len());
nodes.append(&mut f_kwrest);
nodes.append(&mut opt_f_block_arg);
yyval = Value::NodeList(nodes);
},
660 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
661 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
662 =>
{
yyval = Value::NodeList(vec![ Node::from(yystack.owned_value_at(0)) ]);
},
663 =>
{
yyval = yystack.owned_value_at(0);
},
664 =>
{
yyval = Value::NodeList( vec![] );
},
665 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_optarg = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
666 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(7));
let mut f_optarg = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
667 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_optarg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
668 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_optarg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_optarg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_optarg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
669 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
670 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
671 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
672 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
673 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(5));
let mut f_rest_arg = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_rest_arg.len() + f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_rest_arg);
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
674 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
675 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
676 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(1));
nodes.append(&mut NodeList::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
677 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(3));
let mut f_arg = NodeList::from(yystack.owned_value_at(1));
let mut opt_args_tail = NodeList::from(yystack.owned_value_at(0));
nodes.reserve(f_arg.len() + opt_args_tail.len());
nodes.append(&mut f_arg);
nodes.append(&mut opt_args_tail);
yyval = Value::NodeList(nodes);
},
678 =>
{
yyval = Value::NodeList( NodeList::from(yystack.owned_value_at(0)));
},
679 =>
{
yyval = Value::NodeList( vec![] );
},
680 =>
{
yyval = yystack.owned_value_at(0);
},
681 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::ConstArgument);
},
682 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::IvarArgument);
},
683 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::GvarArgument);
},
684 =>
{
return self.yyerror(&yystack.location_at (0), DiagnosticMessage::CvarArgument);
},
685 =>
{
yyval = yystack.owned_value_at(0);
},
686 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
let name = clone_value(&ident_t);
self.static_env.declare(&name);
self.max_numparam_stack.set_has_ordinary_params();
yyval = Value::Token(ident_t);
},
687 =>
{
let arg_t = Token::from(yystack.owned_value_at(0));
let arg_name = clone_value(&arg_t);
self.current_arg_stack.set(Some(arg_name));
yyval = Value::Token(arg_t);
},
688 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.arg( Token::from(yystack.owned_value_at(0)))?
);
},
689 =>
{
yyval = Value::Node(
self.builder.multi_lhs(
Some( Token::from(yystack.owned_value_at(2))),
NodeList::from(yystack.owned_value_at(1)),
Some( Token::from(yystack.owned_value_at(0)))
)
);
},
690 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
691 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
692 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.check_kwarg_name(&ident_t)?;
let ident = clone_value(&ident_t);
self.static_env.declare(&ident);
self.max_numparam_stack.set_has_ordinary_params();
self.current_arg_stack.set(Some(ident));
yyval = Value::Token(ident_t);
},
693 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
694 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
);
},
695 =>
{
yyval = Value::Node(
self.builder.kwoptarg( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))?
);
},
696 =>
{
yyval = Value::Node(
self.builder.kwarg( Token::from(yystack.owned_value_at(0)))?
);
},
697 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
698 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
699 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
700 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
701 =>
{
yyval = yystack.owned_value_at(0);
},
702 =>
{
yyval = yystack.owned_value_at(0);
},
703 =>
{
yyval = Value::NodeList(
vec![
*self.builder.kwnilarg( Token::from(yystack.owned_value_at(1)), Token::from(yystack.owned_value_at(0)))
]
);
},
704 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
*self.builder.kwrestarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
705 =>
{
yyval = Value::NodeList(
vec![
*self.builder.kwrestarg( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
706 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
707 =>
{
self.current_arg_stack.set(None);
yyval = Value::Node(
self.builder.optarg(
Token::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)?
);
},
708 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
709 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
710 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
711 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)) );
yyval = Value::NodeList(nodes);
},
712 =>
{
yyval = yystack.owned_value_at(0);
},
713 =>
{
yyval = yystack.owned_value_at(0);
},
714 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::NodeList(
vec![
*self.builder.restarg( Token::from(yystack.owned_value_at(1)), Some(ident_t))?
]
);
},
715 =>
{
yyval = Value::NodeList(
vec![
*self.builder.restarg( Token::from(yystack.owned_value_at(0)), None)?
]
);
},
716 =>
{
yyval = yystack.owned_value_at(0);
},
717 =>
{
yyval = yystack.owned_value_at(0);
},
718 =>
{
let ident_t = Token::from(yystack.owned_value_at(0));
self.static_env.declare(&clone_value(&ident_t));
yyval = Value::Node(
self.builder.blockarg( Token::from(yystack.owned_value_at(1)), ident_t)?
);
},
719 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] )
},
720 =>
{
yyval = Value::NodeList( vec![] );
},
721 =>
{
let var_ref = BoxedNode::from(yystack.owned_value_at(0));
self.value_expr(&var_ref)?;
yyval = Value::Node(var_ref);
},
722 =>
{ self.yylexer.lex_state.set(EXPR_BEG); yyval = Value::None; },
723 =>
{
let expr = BoxedNode::from(yystack.owned_value_at(1));
match &*expr {
Node::Int(_)
| Node::Float(_)
| Node::Rational(_)
| Node::Complex(_)
| Node::Str(_)
| Node::Dstr(_)
| Node::Sym(_)
| Node::Dsym(_)
| Node::Heredoc(_)
| Node::XHeredoc(_)
| Node::Regexp(_)
| Node::Array(_)
| Node::Hash(_) => {
self.yyerror1(
DiagnosticMessage::SingletonLiteral,
expr.expression().clone(),
)?;
}
other => {
self.value_expr(other)?
},
}
yyval = Value::Node(expr);
},
724 =>
{
yyval = Value::NodeList(vec![]);
},
725 =>
{
yyval = yystack.owned_value_at(1);
},
726 =>
{
yyval = Value::NodeList( vec![ Node::from(yystack.owned_value_at(0)) ] );
},
727 =>
{
let mut nodes = NodeList::from(yystack.owned_value_at(2));
nodes.push( Node::from(yystack.owned_value_at(0)));
yyval = Value::NodeList(nodes);
},
728 =>
{
yyval = Value::Node(
self.builder.pair(
BoxedNode::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
729 =>
{
yyval = Value::Node(
self.builder.pair_keyword(
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
730 =>
{
yyval = Value::Node(
self.builder.pair_quoted(
Token::from(yystack.owned_value_at(3)),
NodeList::from(yystack.owned_value_at(2)),
Token::from(yystack.owned_value_at(1)),
BoxedNode::from(yystack.owned_value_at(0))
)
);
},
731 =>
{
yyval = Value::Node(
self.builder.kwsplat( Token::from(yystack.owned_value_at(1)), BoxedNode::from(yystack.owned_value_at(0)))
);
},
732 =>
{
yyval = yystack.owned_value_at(0);
},
733 =>
{
yyval = yystack.owned_value_at(0);
},
734 =>
{
yyval = yystack.owned_value_at(0);
},
735 =>
{
yyval = yystack.owned_value_at(0);
},
736 =>
{
yyval = yystack.owned_value_at(0);
},
737 =>
{
yyval = yystack.owned_value_at(0);
},
738 =>
{
yyval = yystack.owned_value_at(0);
},
739 =>
{
yyval = yystack.owned_value_at(0);
},
740 =>
{
yyval = yystack.owned_value_at(0);
},
741 =>
{
yyval = yystack.owned_value_at(0);
},
742 =>
{
yyval = yystack.owned_value_at(0);
},
743 =>
{
yyval = yystack.owned_value_at(0);
},
744 =>
{
yyval = yystack.owned_value_at(0);
},
745 =>
{
yyval = yystack.owned_value_at(0);
},
746 =>
{
yyval = yystack.owned_value_at(0);
},
747 =>
{
yyval = yystack.owned_value_at(0);
},
748 =>
{
yyval = Value::None;
},
749 =>
{
yyval = Value::None;
},
750 =>
{
yyval = Value::None;
},
751 =>
{
yyval = Value::None;
},
752 =>
{
yyval = yystack.owned_value_at(0);
},
753 =>
{
yyval = yystack.owned_value_at(0);
},
754 =>
{
yyval = yystack.owned_value_at(0);
},
755 =>
{
yyval = Value::None;
},
756 =>
{
yyval = Value::None;
},
757 =>
{
yyval = Value::None;
},
758 =>
{
yyval = yystack.owned_value_at(0);
},
759 =>
{
yyval = yystack.owned_value_at(0);
},
760 =>
{
yyval = Value::TokenList(vec![]);
},
761 =>
{
yyval = Value::TokenList(vec![]);
},
762 =>
{
yyval = Value::None;
},
_ => {}
}
if let YYValue::Uninitialized = yyval {
panic!("yyval is Uninitialized in rule at line {}", Self::yyrline_[i32_to_usize(yyn)]);
}
self.yy_symbol_print("-> $$ =", SymbolKind::get(Self::yyr1_[i32_to_usize(yyn)]), &yyval, &yyloc);
yystack.pop_n(*yylen);
*yylen = 0;
let yystate = self.yy_lr_goto_state(yystack.state_at(0), Self::yyr1_[i32_to_usize(yyn)]);
yystack.push(yystate, yyval, yyloc);
Ok(Self::YYNEWSTATE)
}
fn yy_symbol_print(&self, s: &str, yykind: &SymbolKind, yyvalue: &YYValue, yylocation: &YYLoc) {
if self.yydebug {
self.yycdebug(
&format!("{}{} {:?} ( {:?}: {:?} )",
s,
if yykind.code() < Self::YYNTOKENS_ { " token " } else { " nterm " },
yykind.name(),
yylocation,
yyvalue
)
)
}
}
pub fn parse(&mut self) -> bool {
let mut yyloc: YYLoc;
let mut yychar: i32 = Self::YYEMPTY_;
let mut yytoken = &DYMMY_SYMBOL_KIND;
let mut yyn: i32 = 0;
let mut yylen: usize = 0;
let mut yystate: i32 = 0;
let mut yystack = YYStack::new();
let mut label: i32 = Self::YYNEWSTATE;
let mut yyerrloc: YYLoc = YYLoc { begin: 0, end: 0};
let mut yylloc: YYLoc = YYLoc { begin: 0, end: 0 };
let mut yylval: YYValue = YYValue::Uninitialized;
self.yycdebug("Starting parse");
self.yyerrstatus_ = 0;
self.yynerrs = 0;
yystack.push(yystate, yylval.clone(), yylloc.clone());
loop {
match label {
Self::YYNEWSTATE => {
if self.yydebug {
self.yycdebug(&format!("Entering state {}", yystate));
eprintln!("{}", yystack);
}
if yystate == Self::YYFINAL_ {
return true;
}
yyn = Self::yypact_[i32_to_usize(yystate)];
if yy_pact_value_is_default(yyn) {
label = Self::YYDEFAULT;
continue;
}
if yychar == Self::YYEMPTY_ {
self.yycdebug("Reading a token");
let token = self.next_token();
yychar = token.token_type;
yylloc = token.get_loc();
yylval = YYValue::from_token(token);
}
yytoken = Self::yytranslate_(yychar);
self.yy_symbol_print("Next token is", &yytoken, &yylval, &yylloc);
if yytoken == SymbolKind::get(1) {
yychar = Lexer::YYUNDEF;
yytoken = SymbolKind::get(2);
yyerrloc = yylloc.clone();
label = Self::YYERRLAB1;
} else {
yyn += yytoken.code();
if yyn < 0 || Self::YYLAST_ < yyn || Self::yycheck_[i32_to_usize(yyn)] != yytoken.code() {
label = Self::YYDEFAULT;
}
else {
yyn = Self::yytable_[i32_to_usize(yyn)];
if yyn <= 0 {
if yy_table_value_is_error(yyn) {
label = Self::YYERRLAB;
} else {
yyn = -yyn;
label = Self::YYREDUCE;
}
} else {
self.yy_symbol_print("Shifting", &yytoken, &yylval, &yylloc);
yychar = Self::YYEMPTY_;
if self.yyerrstatus_ > 0 {
self.yyerrstatus_ -= 1;
}
yystate = yyn;
yystack.push(yystate, std::mem::take(&mut yylval), std::mem::take(&mut yylloc));
label = Self::YYNEWSTATE;
}
}
}
continue;
},
Self::YYDEFAULT => {
yyn = Self::yydefact_[i32_to_usize(yystate)];
if yyn == 0 {
label = Self::YYERRLAB;
} else {
label = Self::YYREDUCE;
}
continue;
}
Self::YYREDUCE => {
yylen = i32_to_usize(Self::yyr2_[i32_to_usize(yyn)]);
label = match self.yyaction(yyn, &mut yystack, &mut yylen) {
Ok(label) => label,
Err(_) => Self::YYERROR
};
yystate = yystack.state_at(0);
continue;
},
Self::YYERRLAB => {
if self.yyerrstatus_ == 0 {
self.yynerrs += 1;
if yychar == Self::YYEMPTY_ {
yytoken = &DYMMY_SYMBOL_KIND;
}
self.report_syntax_error(&Context::new(yystack.clone(), yytoken.clone(), yylloc.clone()));
}
yyerrloc = yylloc.clone();
if self.yyerrstatus_ == 3 {
if yychar <= Lexer::END_OF_INPUT {
if yychar == Lexer::END_OF_INPUT {
return false;
}
}
else {
yychar = Self::YYEMPTY_;
}
}
label = Self::YYERRLAB1;
continue;
},
Self::YYERROR => {
yystack.pop_n(yylen);
yylen = 0;
yystate = yystack.state_at(0);
label = Self::YYERRLAB1;
continue;
},
Self::YYERRLAB1 => {
self.yyerrstatus_ = 3;
loop {
yyn = Self::yypact_[i32_to_usize(yystate)];
if !yy_pact_value_is_default(yyn) {
yyn += SymbolKind { value: SymbolKind::S_YYerror }.code();
if 0 <= yyn && yyn <= Self::YYLAST_ {
let yyn_usize = i32_to_usize(yyn);
if Self::yycheck_[yyn_usize] == SymbolKind::S_YYerror {
yyn = Self::yytable_[yyn_usize];
if 0 < yyn {
break;
}
}
}
}
if yystack.len() == 1 {
return false;
}
yyerrloc = yystack.location_at(0).clone();
yystack.pop();
yystate = yystack.state_at(0);
if self.yydebug {
eprintln!("{}", yystack);
}
}
if label == Self::YYABORT {
continue;
}
yystack.push(0, YYValue::Uninitialized, yylloc.clone());
yystack.push(0, YYValue::Uninitialized, yyerrloc.clone());
yyloc = make_yylloc(&yystack, 2);
yystack.pop_n(2);
self.yy_symbol_print("Shifting", SymbolKind::get(Self::yystos_[i32_to_usize(yyn)]), &yylval, &yyloc);
yystate = yyn;
yystack.push(yyn, yylval.clone(), yyloc.clone());
label = Self::YYNEWSTATE;
continue;
},
Self::YYACCEPT => {
return true;
}
Self::YYABORT => {
return false;
},
_ => {
panic!("internal bison error: unknown label {}", label);
}
}
}
}
}
#[derive(Debug)]
pub(crate) struct Context {
yystack: YYStack,
yytoken: SymbolKind,
loc: YYLoc
}
impl Context {
pub(crate) fn new(stack: YYStack, token: SymbolKind, loc: YYLoc) -> Self {
Self { yystack: stack, yytoken: token, loc }
}
#[allow(dead_code)]
pub(crate) fn token(&self) -> &SymbolKind {
&self.yytoken
}
#[allow(dead_code)]
pub(crate) fn location(&self) -> &YYLoc {
&self.loc
}
}
fn yy_pact_value_is_default(yyvalue: i32) -> bool {
yyvalue == YYPACT_NINF_
}
fn yy_table_value_is_error(yyvalue: i32) -> bool {
yyvalue == YYTABLE_NINF_
}
const YYPACT_NINF_: i32 = -1042;
const YYTABLE_NINF_: i32 = -763;
impl Parser {
#[allow(non_upper_case_globals)]
const yypact_: &'static [i32] = &[ -1042, 85, 4184, -1042, 7891, -1042, -1042, -1042, 12443, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, 8166, 8166, -1042, -1042,
-1042, 6886, 4034, -1042, -1042, -1042, -1042, 360, 12298, 10,
48, 51, -1042, -1042, -1042, 3874, 6594, -1042, -1042, 6010,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, 10497, 10497,
10497, 10497, 156, 5185, 8303, 8851, 9262, 10908, -1042, 12153,
-1042, -1042, -1042, 163, 189, 236, 295, 10497, 10634, 1190,
-1042, 726, -1042, 1008, -1042, 678, 465, 465, -1042, -1042,
112, 431, 365, -1042, 392, 11031, -1042, 383, 3009, 514,
534, 651, -1042, 10771, 10771, -1042, -1042, 9399, 11153, 11275,
11520, 12008, 8166, -1042, 379, 62, -1042, -1042, 427, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, 108, 301, -1042, 452, 398, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, 442, -1042, -1042, -1042, 446,
10497, 539, 5323, 10497, 10497, 10497, -1042, 10497, -1042, 485,
14310, 526, -1042, -1042, 547, 692, 174, 220, 578, 261,
566, -1042, -1042, 8028, -1042, 8166, 8440, -1042, -1042, 9537,
-1042, 10771, 847, -1042, 9675, 5461, -1042, 5599, -1042, -1042,
589, 604, 112, -1042, 718, -1042, 658, 14383, 14383, 407,
-1042, -1042, 5185, 640, 726, -1042, 1008, 10, 620, -1042,
1008, 10, 624, 315, 388, -1042, 526, 685, 388, -1042,
10, 746, 11642, 1190, 682, 682, 696, -1042, 728, 780,
826, 838, 1449, -1042, -1042, -1042, -1042, 599, -1042, 956,
1109, 503, -1042, -1042, -1042, -1042, -1042, -1042, -1042, 749,
-1042, -1042, -1042, -1042, 7617, 10771, 10771, 10771, 10771, 8303,
10771, 10771, 1532, 701, 712, 4346, 1597, -1042, 715, 4346,
-1042, -1042, -1042, 757, -1042, -1042, -1042, -1042, -1042, 9812,
-1042, 5185, 11397, 730, 9812, -1042, 10497, 10497, 10497, 10497,
10497, -1042, -1042, 10497, 10497, 10497, 10497, 10497, 10497, 10497,
10497, -1042, 10497, 10497, -1042, -1042, 10497, 10497, 10497, 10497,
10497, 10497, 10497, 10497, 10497, -1042, -1042, 13183, 8166, 13256,
4346, 678, 157, 157, 5737, 10771, 5737, 726, -1042, 735,
833, -1042, -1042, 853, 857, 54, 70, 114, 902, 958,
10771, 607, -1042, 777, 938, -1042, -1042, -1042, -1042, 217,
239, 291, 327, 448, 463, 488, 508, 581, -1042, -1042,
-1042, -1042, 603, -1042, -1042, -1042, 14278, -1042, -1042, 10634,
10634, -1042, -1042, 286, -1042, -1042, -1042, 339, 10497, 10497,
8577, -1042, -1042, 13329, 8166, 13402, 10497, 10497, 8988, -1042,
10, 812, -1042, -1042, 10497, 10, -1042, 792, 10, 794,
-1042, 130, -1042, -1042, -1042, -1042, -1042, 12443, 10771, 14310,
797, 799, 13329, 13402, 10497, 48, 10, -1042, -1042, 7754,
808, 10, -1042, -1042, 9125, -1042, -1042, 9262, -1042, -1042,
-1042, 800, 1056, -1042, 815, -1042, -1042, 11642, 13475, 8166,
13548, -1042, -1042, -1042, -1042, -1042, -1042, -1042, 1342, -1042,
-1042, -1042, -1042, 1597, -1042, 820, -1042, -1042, -1042, -1042,
-1042, 824, -1042, 831, 10497, -1042, 835, 83, -1042, -1042,
-1042, 842, 921, 850, 926, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, 1161, 63, 1193, 81,
10497, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, 10, 10, 855, 10497, 973, 980, 726, 10497, 973,
-1042, -1042, -1042, -1042, -1042, 10497, -1042, 867, 876, 959,
-1042, 10, 11642, 889, -1042, -1042, -1042, 972, 894, 3404,
-1042, -1042, -1042, 1086, 382, 12999, 658, 2269, 2269, 2269,
2269, 2605, 1828, 2269, 2269, 14383, 14383, 346, 346, 12999,
996, 976, 996, 321, 321, 658, 658, 658, 3556, 1113,
1113, 7032, 6156, 7324, 6302, -1042, 604, -1042, 10, 900,
475, -1042, 627, -1042, -1042, 6740, 973, -1042, 4484, 1016,
4898, 973, 88, 973, 1011, 1020, 136, 13621, 8166, 13694,
-1042, 678, -1042, 1056, -1042, -1042, -1042, 13767, 8166, 13840,
4346, 10771, -1042, -1042, -1042, -1042, -1042, 2979, -1042, 12997,
-1042, -1042, -1042, 12443, 10497, -1042, 10497, 526, -1042, 566,
3721, 6448, 10, 458, 629, -1042, -1042, -1042, -1042, 8714,
-1042, 8988, -1042, -1042, 130, -1042, -1042, 604, 604, -1042,
-1042, 535, -1042, -1042, 388, 11642, 815, 554, 642, 10,
418, 583, 1342, 953, -1042, 916, 10, 917, -1042, 10,
100, -1042, -1042, 91, 10497, 1597, -1042, -1042, 268, -1042,
-1042, -1042, 1597, -1042, -1042, 1516, -1042, -1042, -1042, 1362,
-1042, 281, -1042, 905, -1042, -1042, 387, 918, -1042, 658,
-1042, -1042, 1532, 13074, -1042, -1042, -1042, 9949, 206, -1042,
-1042, 13099, -1042, 935, 933, -1042, 973, 933, 973, 939,
10086, 8303, -1042, 815, 11642, 8303, 10634, 10497, 13913, 8166,
13986, -1042, -1042, 3565, 3565, 617, -1042, 12738, 181, 1024,
-1042, 979, -1042, 942, -1042, -1042, 720, -1042, -1042, 56,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, 979,
931, 10634, 10634, -1042, 757, 948, 669, 8577, 10634, 10634,
-1042, -1042, 757, -1042, -1042, 924, -1042, 1072, -1042, -1042,
-1042, -1042, -1042, -1042, 1020, 973, -1042, 10223, 973, 119,
121, 10, 150, 164, 5737, 726, 10771, 4346, 1006, 642,
-1042, 10, 973, 130, 12588, 62, 431, -1042, -1042, -1042,
-1042, 10497, 10497, 675, 10497, 10497, 10, 964, -1042, -1042,
-1042, 688, 10, -1042, 1342, -1042, 875, 989, 955, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, 971, 974, -1042, 1046,
820, 990, -1042, 991, -1042, 990, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, 10, 10497, 867,
-1042, 1005, -1042, -1042, -1042, 5737, 5047, -1042, -1042, 10497,
-1042, 1658, 5599, -1042, -1042, 985, -1042, 4346, -1042, 10497,
1003, -1042, 815, -1042, 14310, 7178, 7470, 10, 723, 751,
-1042, -1042, -1042, -1042, 12999, 1062, 158, 10, 12825, -1042,
10, 1004, 1021, -1042, 441, 1009, -1042, -1042, 1093, 12999,
3565, 3565, 617, 574, 40, 12651, 12651, 10497, -1042, -1042,
-1042, -1042, -1042, -1042, 10634, -1042, -1042, -1042, -1042, -1042,
-1042, 5737, 10771, 973, -1042, -1042, 973, 12651, 973, -1042,
10497, -1042, 94, -1042, 171, 973, 4346, 726, 973, -1042,
-1042, -1042, -1042, -1042, -1042, 10497, -1042, 8988, -1042, -1042,
1025, 1026, -1042, 1366, 4346, 5599, 1597, -1042, 1516, -1042,
-1042, 1516, -1042, 1516, -1042, -1042, -1042, -1042, 14310, 11764,
157, -1042, -1042, 1148, 14310, 820, -1042, 10, 1033, 1038,
1043, 11886, -1042, 1052, -1042, 1061, 1066, -1042, -1042, -1042,
-1042, 1067, 759, 16, -1042, -1042, 126, 979, 1069, -1042,
12999, -1042, -1042, -1042, 10, 1070, -1042, 12999, -1042, -1042,
-1042, 129, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
-1042, 10, 10, 10, 10, 10, 10, 14310, -1042, -1042,
-1042, 157, -1042, -1042, 157, 827, 307, -1042, -1042, -1042,
-1042, -1042, 10360, 4622, -1042, 973, -1042, -1042, 875, 875,
-1042, 408, -1042, -1042, 973, 1054, 990, 1075, 990, 990,
-1042, 1149, -1042, 1092, 173, 203, 204, 4346, -1042, -1042,
1074, -1042, 11886, 1597, -1042, -1042, 1153, 1119, 268, -1042,
1597, -1042, 1516, -1042, -1042, 1085, 12999, -1042, 1087, -1042,
103, -1042, 441, 979, -1042, -1042, 750, -1042, -1042, -1042,
-1042, -1042, -1042, 4484, -1042, 10771, 10771, 12912, 10497, -1042,
882, -1042, 1026, 1366, -1042, -1042, -1042, -1042, 1516, -1042,
-1042, -1042, 5875, 234, 14059, 8166, 14132, 980, -1042, 1119,
-1042, 1101, 1104, -1042, 14205, -1042, 820, 1107, -1042, 1110,
1107, 12999, 1111, 12912, -1042, -1042, -1042, 924, 4760, -1042,
-1042, -1042, 1114, -1042, -1042, -1042, -1042, -1042, 990, 1097,
47, 184, 10, 241, 251, -1042, 1597, -1042, 1516, -1042,
1102, 1124, -1042, 1516, -1042, 1516, -1042, -1042, 1111, 12999,
-1042, -1042, -1042, 355, 12999, -1042, -1042, 256, 1107, 1115,
1107, 1107, -1042, -1042, -1042, 1111, -1042, 1516, -1042, -1042,
-1042, 1107, -1042 ];
#[allow(non_upper_case_globals)]
const yydefact_: &'static [i32] = &[ 2, 0, 0, 1, 0, 362, 363, 364, 0, 355,
356, 357, 360, 358, 359, 361, 350, 351, 352, 353,
373, 285, 285, 636, 635, 637, 638, 750, 0, 750,
0, 0, 640, 639, 641, 732, 734, 632, 631, 733,
634, 626, 627, 628, 629, 577, 646, 647, 0, 0,
0, 0, 0, 0, 312, 762, 762, 98, 430, 597,
597, 599, 601, 0, 0, 0, 0, 0, 0, 0,
3, 748, 6, 9, 34, 39, 657, 657, 51, 69,
285, 68, 0, 86, 0, 90, 100, 0, 60, 238,
256, 0, 310, 0, 0, 66, 66, 748, 0, 0,
0, 0, 321, 331, 70, 329, 299, 300, 576, 578,
301, 302, 303, 305, 304, 306, 575, 616, 617, 574,
624, 642, 643, 307, 0, 308, 74, 5, 8, 179,
190, 180, 203, 176, 196, 186, 185, 206, 207, 201,
184, 183, 178, 204, 208, 209, 188, 177, 191, 195,
197, 189, 182, 198, 205, 200, 199, 192, 202, 187,
175, 194, 193, 174, 181, 172, 173, 169, 170, 171,
129, 131, 130, 164, 165, 160, 142, 143, 144, 151,
148, 150, 145, 146, 166, 167, 152, 153, 157, 161,
139, 141, 147, 149, 168, 140, 154, 155, 156, 158,
159, 163, 162, 134, 136, 27, 132, 133, 135, 0,
0, 0, 0, 0, 0, 0, 597, 0, 280, 0,
263, 290, 84, 284, 762, 0, 642, 643, 0, 308,
762, 726, 85, 750, 82, 0, 762, 451, 81, 750,
751, 0, 0, 22, 0, 0, 10, 0, 350, 351,
324, 452, 0, 232, 0, 321, 233, 223, 224, 318,
18, 20, 0, 0, 748, 16, 19, 750, 88, 15,
314, 750, 0, 755, 755, 264, 0, 0, 755, 724,
750, 0, 0, 0, 657, 657, 96, 354, 0, 106,
107, 114, 679, 621, 620, 622, 619, 0, 618, 0,
0, 0, 584, 593, 589, 595, 245, 55, 244, 625,
758, 759, 4, 760, 749, 0, 0, 0, 0, 0,
0, 0, 679, 0, 656, 0, 679, 652, 0, 0,
365, 454, 445, 75, 456, 328, 366, 439, 441, 0,
102, 0, 94, 91, 0, 58, 0, 0, 0, 0,
0, 259, 260, 0, 0, 0, 0, 221, 222, 0,
0, 56, 0, 0, 257, 258, 0, 0, 0, 0,
0, 0, 0, 0, 0, 744, 745, 0, 762, 0,
0, 65, 0, 0, 0, 0, 0, 748, 338, 749,
0, 384, 383, 0, 0, 642, 643, 308, 124, 125,
0, 0, 127, 650, 0, 642, 643, 308, 346, 199,
192, 202, 187, 169, 170, 171, 129, 130, 722, 62,
61, 721, 0, 83, 747, 746, 0, 330, 579, 0,
0, 137, 729, 318, 291, 731, 287, 0, 0, 0,
0, 281, 289, 0, 762, 0, 0, 0, 0, 282,
750, 0, 323, 286, 680, 750, 276, 762, 750, 762,
275, 750, 327, 54, 24, 26, 25, 0, 0, 250,
0, 0, 0, 0, 0, 0, 750, 316, 14, 749,
87, 750, 313, 319, 757, 756, 265, 757, 267, 320,
725, 0, 113, 104, 99, 625, 656, 0, 0, 762,
0, 686, 683, 682, 681, 684, 692, 701, 0, 713,
702, 717, 716, 679, 712, 762, 431, 678, 434, 685,
687, 688, 690, 664, 694, 699, 762, 705, 397, 396,
710, 664, 715, 664, 0, 662, 603, 623, 606, 604,
598, 580, 581, 600, 582, 602, 0, 0, 0, 0,
0, 761, 7, 28, 29, 30, 31, 32, 52, 53,
680, 750, 750, 664, 0, 0, 762, 0, 0, 0,
458, 72, 76, 460, 460, 0, 35, 295, 0, 38,
294, 750, 0, 92, 103, 50, 40, 48, 0, 268,
290, 210, 36, 0, 308, 0, 230, 237, 239, 240,
241, 248, 249, 242, 243, 219, 220, 246, 247, 0,
234, 236, 235, 225, 226, 227, 228, 229, 750, 261,
262, 735, 737, 736, 738, 450, 285, 448, 750, 762,
735, 737, 736, 738, 449, 285, 0, 375, 0, 374,
0, 0, 0, 0, 336, 0, 318, 0, 762, 0,
66, 344, 124, 125, 126, 648, 342, 0, 762, 0,
0, 0, 742, 743, 63, 735, 736, 285, 41, 268,
211, 47, 218, 0, 0, 728, 0, 292, 288, 762,
735, 736, 750, 735, 736, 727, 322, 752, 270, 277,
272, 279, 326, 23, 750, 11, 33, 0, 762, 217,
21, 89, 17, 315, 755, 0, 97, 739, 112, 750,
735, 736, 0, 395, 387, 389, 750, 392, 385, 750,
0, 661, 720, 0, 0, 0, 671, 693, 0, 660,
703, 704, 0, 674, 714, 0, 676, 718, 607, 0,
583, 0, 586, 0, 591, 588, 0, 0, 592, 231,
653, 655, 0, 252, 372, 348, 367, 762, 762, 566,
658, 254, 349, 0, 762, 458, 0, 762, 0, 298,
0, 0, 101, 95, 0, 0, 0, 0, 0, 762,
0, 560, 564, 0, 0, 0, 505, 750, 502, 0,
559, 59, 483, 485, 487, 490, 540, 545, 546, 547,
550, 551, 552, 553, 554, 556, 555, 557, 558, 57,
0, 0, 0, 447, 79, 0, 453, 277, 0, 0,
274, 446, 77, 273, 311, 762, 376, 762, 334, 378,
67, 377, 335, 469, 0, 0, 369, 0, 0, 739,
317, 750, 735, 736, 0, 0, 0, 0, 124, 125,
128, 750, 0, 750, 0, 442, 71, 138, 730, 293,
283, 0, 0, 453, 0, 0, 750, 762, 325, 266,
105, 453, 750, 394, 0, 689, 0, 0, 424, 719,
437, 435, 432, 706, 663, 691, 664, 664, 700, 705,
762, 664, 711, 664, 688, 664, 608, 612, 613, 614,
605, 615, 585, 587, 594, 590, 596, 750, 0, 567,
568, 762, 569, 368, 370, 0, 0, 13, 573, 0,
455, 750, 0, 421, 420, 0, 457, 0, 440, 0,
296, 37, 93, 49, 269, 735, 736, 750, 735, 736,
548, 549, 125, 562, 0, 521, 507, 750, 508, 514,
750, 517, 0, 501, 0, 0, 504, 561, 0, 0,
543, 544, 0, 489, 488, 0, 0, 0, 46, 215,
45, 216, 80, 753, 0, 43, 213, 44, 214, 78,
371, 0, 0, 0, 379, 381, 0, 0, 0, 340,
0, 462, 0, 339, 453, 0, 0, 0, 0, 453,
347, 723, 64, 443, 444, 0, 271, 278, 386, 388,
390, 393, 433, 0, 0, 0, 0, 667, 0, 669,
659, 0, 675, 0, 672, 677, 609, 654, 253, 0,
0, 571, 572, 762, 255, 762, 419, 750, 0, 688,
403, 696, 697, 762, 708, 403, 403, 401, 459, 73,
461, 297, 453, 750, 520, 499, 512, 524, 509, 500,
0, 515, 533, 597, 750, 526, 529, 532, 538, 539,
528, 536, 754, 484, 486, 541, 542, 563, 498, 494,
597, 750, 750, 750, 750, 750, 750, 251, 42, 212,
382, 0, 332, 333, 0, 474, 477, 481, 480, 482,
337, 463, 0, 0, 341, 0, 649, 343, 0, 0,
428, 750, 426, 429, 0, 0, 664, 664, 664, 664,
610, 0, 570, 0, 642, 643, 308, 0, 12, 400,
0, 422, 0, 404, 412, 410, 0, 695, 0, 399,
0, 415, 0, 417, 506, 510, 0, 516, 518, 522,
0, 503, 527, 531, 537, 535, 0, 491, 492, 493,
495, 496, 497, 0, 470, 0, 0, 478, 0, 464,
762, 345, 391, 0, 425, 438, 436, 668, 0, 665,
670, 673, 0, 318, 0, 762, 0, 762, 423, 707,
402, 403, 403, 318, 0, 698, 762, 403, 709, 403,
403, 0, 513, 0, 534, 530, 525, 762, 0, 475,
476, 479, 517, 465, 467, 468, 466, 427, 664, 0,
739, 317, 750, 735, 736, 565, 0, 407, 0, 409,
739, 317, 398, 0, 416, 0, 413, 418, 511, 0,
519, 523, 380, 762, 0, 666, 611, 453, 403, 403,
403, 403, 472, 473, 471, 518, 408, 0, 405, 411,
414, 403, 406 ];
#[allow(non_upper_case_globals)]
const yypgoto_: &'static [i32] = &[ -1042, -1042, -1042, 1000, -1042, 23, 786, -259, 303, -1042,
784, -1042, 32, -1042, -257, -228, 37, -1042, -1042, 412,
-52, 27, -1042, -17, -82, -1042, 73, -1042, -201, -1042,
1029, -13, 1169, -100, -10, -78, -1042, -424, -7, 2401,
-364, 1171, -48, -19, -1042, -1042, 7, -1042, 3219, 1183,
-1042, 53, -1042, 522, -16, 606, -354, 46, 69, -1042,
-373, -217, 97, -1042, -319, 66, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, 518, -1042, -1042, -1042, -1042, -1042,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042, -1042,
517, -1042, 1152, 1513, -360, -1042, 71, -808, -1042, -825,
-834, 565, 405, -122, 366, 128, -1042, -1042, 523, -1042,
-847, -1042, 122, 576, -1042, -1042, -1042, -1042, -1042, -1042,
440, -1042, -1042, -1042, -88, -1042, -1042, 533, -1042, 725,
-1042, -1042, -803, -1042, 58, -1042, -1042, -1042, -1042, -1042,
-538, -1042, -1042, -1042, -1042, 345, -1042, -1042, -829, -1042,
319, -290, -1027, -1041, -494, -190, -1042, 159, -1042, -1042,
-1042, 161, -1042, -673, 350, -1042, -1042, 123, -1042, -1042,
283, 987, 1076, -1042, 1209, 1141, 1422, 1823, -1042, 773,
1970, -1042, 1978, 2294, -1042, -1042, -59, -1042, -1042, -182,
-1042, -1042, -1042, -1042, -1042, -1042, -1042, 12, -1042, -1042,
-1042, -1042, -11, 2211, -2, 1221, 2529, 1737, -1042, -1042,
1246, 706, -32, -1042, -198, -477, -222, -306, -944, -407,
-254, -660, 146, -233, 598, 193, -1042, -1042, -515, -1042,
-696, -691, -1018, 199, -593, -1042, -534, -1042, 167, -497,
-1042, -1042, -1042, 138, -426, -1042, -367, -1042, -1042, -83,
-1042, -58, 515, 1014, 24, 271, -248, -53, 22, 26 ];
#[allow(non_upper_case_globals)]
const yydefgoto_: &'static [i32] = &[ 0, 1, 2, 70, 71, 72, 246, 565, 566, 264,
265, 475, 266, 467, 74, 586, 75, 609, 595, 419,
76, 77, 854, 382, 384, 385, 78, 79, 572, 765,
252, 81, 82, 267, 83, 84, 85, 494, 86, 219,
402, 403, 203, 204, 205, 673, 624, 207, 88, 373,
89, 221, 272, 591, 625, 821, 455, 456, 234, 235,
223, 441, 629, 579, 580, 90, 380, 271, 481, 834,
645, 847, 845, 660, 254, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 334, 337, 757, 915, 837,
981, 982, 755, 255, 638, 830, 983, 984, 394, 714,
715, 716, 717, 515, 1190, 1134, 1135, 1037, 922, 923,
877, 1111, 1112, 103, 292, 723, 516, 882, 1015, 1014,
338, 574, 104, 105, 335, 570, 573, 763, 764, 766,
767, 992, 838, 1216, 835, 987, 1208, 1254, 1094, 1095,
1057, 792, 793, 965, 966, 794, 954, 944, 947, 948,
949, 950, 951, 1148, 952, 1064, 1065, 1066, 1067, 1068,
1069, 1070, 795, 796, 797, 798, 799, 758, 911, 1030,
917, 106, 107, 108, 109, 110, 111, 112, 546, 741,
113, 548, 114, 115, 547, 549, 297, 300, 301, 540,
739, 738, 896, 1026, 1120, 1182, 900, 116, 117, 298,
118, 119, 120, 226, 227, 123, 228, 229, 656, 846,
323, 324, 325, 326, 884, 726, 518, 458, 519, 520,
894, 522, 523, 524, 525, 1042, 1043, 526, 527, 528,
529, 530, 1044, 1045, 531, 532, 533, 534, 535, 721,
422, 661, 277, 459, 231, 126, 697, 627, 664, 659,
426, 312, 451, 452, 816, 956, 486, 639, 389, 269 ];
#[allow(non_upper_case_globals)]
const yytable_: &'static [i32] = &[ 122, 299, 122, 218, 218, 284, 237, 343, 379, 243,
626, 296, 635, 449, 386, 206, 562, 427, 313, 986,
208, 425, 685, 640, 628, 592, 488, 128, 127, 729,
490, 988, 890, 284, 73, 206, 73, 654, 521, 388,
208, 892, 1011, 268, 313, 329, 284, 284, 284, 1009,
286, 122, 122, 420, 733, 290, 736, 791, 309, 667,
-119, 685, 222, 232, 332, 885, 206, 678, 521, 1113,
569, 809, 521, 706, 1038, 678, 626, 383, 635, -115,
387, 275, 279, 290, 285, 3, 270, 585, 330, 218,
682, 238, 885, 314, 517, -116, 396, 406, 406, 406,
561, 718, 327, 327, 567, 1202, 698, 637, 206, 276,
940, 941, 285, 224, 224, 829, 958, 730, 543, 545,
880, 636, 1198, 287, 517, 285, 285, 285, 517, 743,
381, 381, 886, 698, 381, 731, 1081, 1084, 330, -123,
1212, 307, 445, -750, -119, 709, -121, 747, 423, 333,
240, 287, 273, 962, 230, 230, 240, 437, 773, 886,
1238, -122, 476, 1154, 287, 287, 287, 320, 321, 536,
637, 473, 585, 585, 245, -118, 1240, 247, 1145, -106,
240, 1155, 744, -735, 963, -119, -115, -119, 331, -120,
1130, 887, 964, 274, 278, -107, -117, -121, 893, 224,
748, 668, 671, 1255, 493, 500, 478, -644, 1198, 511,
122, 313, 259, 889, 881, 913, -116, -123, 887, 1102,
218, 914, 218, 218, 538, 539, 310, 1204, 311, 1113,
284, 512, 310, -106, 311, 237, 332, -115, 331, -114,
230, 581, 449, 122, -110, 122, -112, -122, 236, 946,
442, 1146, 268, 329, -118, -735, 442, -736, 958, 521,
122, -113, 460, 432, -120, 685, 434, 435, 436, -117,
240, 127, 495, -644, 1172, -109, 461, 73, 463, 450,
290, 453, 698, -524, 1009, -636, 479, 1075, 1076, -111,
284, 719, 698, 850, 841, 310, -108, 311, 553, 554,
555, 556, 302, -115, 851, 718, 873, -635, -750, 285,
649, -115, 122, -115, -636, 517, 678, 122, 678, -645,
-736, 240, -121, 122, -121, 892, 506, 122, 303, 644,
224, 268, 224, 457, 313, 583, -635, 552, 1211, 122,
290, -116, -123, -116, -123, 507, 73, 536, 287, -116,
932, 557, 381, 381, 381, 381, 263, 558, 559, -637,
447, 885, 1214, 634, 742, 218, 742, 1215, 642, 285,
914, 230, -122, 230, -122, 304, 510, 511, 122, -118,
833, -118, 122, 866, 122, 474, 633, 1046, -637, -120,
-123, -120, 577, 1020, -117, -638, -117, 590, 346, 512,
-645, 852, 538, 539, 460, 536, 1053, 958, 287, 1017,
1019, 626, 576, 635, 1022, -122, 1024, 587, 1025, 493,
902, 943, 381, 346, -638, 937, -107, 946, 946, 634,
-116, 218, 1167, 633, 305, 1252, 578, 651, 910, 1071,
484, 578, 1196, -109, 678, 284, 907, 375, 693, 1096,
1071, 1071, 633, 536, 1058, 485, 869, 634, 541, 336,
538, 539, 860, 674, 369, 370, 371, 718, 563, 718,
460, 521, 1071, 885, 206, 376, 424, 122, 521, 208,
633, 430, 1117, 442, 634, 442, 218, 367, 368, 369,
370, 371, 675, 677, 339, 290, 239, 430, 521, 1062,
240, 276, 587, 587, 493, 694, 474, 633, 538, 539,
780, -123, 344, 487, 760, 263, -640, 340, 507, 585,
91, -109, 91, -114, 285, 460, 905, -123, 485, 1153,
284, -639, -113, 1173, 225, 225, -122, 677, 1129, 60,
276, 722, 241, -109, 244, -640, 1139, -109, 240, 510,
471, 429, 722, 1063, 585, 585, -641, 864, -109, 903,
-639, 585, 585, 287, 903, 263, 1149, 431, 844, 536,
544, 91, 91, 885, 818, 288, -630, 727, 679, -110,
290, 685, 239, 968, 970, -641, 225, -118, 998, 831,
975, 977, 759, 808, -762, 433, 351, 352, 1077, 1192,
-109, 322, -354, 288, -118, -630, 1199, 808, -111, 285,
813, 225, 225, 972, 438, 225, 393, 404, 404, 820,
225, 979, 704, 889, 538, 539, 439, 870, 769, 946,
-354, -354, 1103, 634, 678, 218, 122, 1071, 122, 1177,
1179, 1180, 1181, 634, 263, 218, 364, 365, 287, -633,
860, 820, 1149, 284, 857, 442, 633, -110, 122, 652,
-101, 823, -354, 653, -87, 536, 633, 1039, 1050, 652,
1127, 662, 440, 942, 460, 1082, 1085, 446, -633, -110,
206, 813, 820, -110, 460, 208, -111, 641, 1041, 643,
-735, 448, 1249, 823, -110, 814, 493, 1098, 853, 1232,
663, 718, 718, 290, 822, 442, 863, 1149, -111, 1241,
-317, -750, -111, -108, 240, 320, 321, 585, 537, 375,
538, 539, 284, -111, 823, 233, 819, 858, 865, 859,
91, 1163, 285, 871, 1164, 346, 856, 1105, -317, -317,
236, 1245, 677, 477, 276, 1241, 1088, 376, 377, -86,
1149, 225, -111, 225, 225, 1114, -120, 225, -120, 225,
375, 483, 521, 91, 634, 91, 218, 1003, 974, 122,
-317, 287, 290, 122, 1005, 1083, 1086, 883, -736, 378,
91, 808, 808, 912, 918, 808, 375, 633, 376, 443,
924, -108, 996, 924, -108, 491, 375, 1099, -117, 1035,
288, 285, 492, 931, -117, 460, 420, 933, 960, 961,
909, 953, 489, -108, 376, 472, 536, -108, 322, 698,
444, 497, 818, 930, 376, 498, 550, 867, -108, 997,
564, 1222, 91, 225, 225, 225, 225, 91, 225, 225,
287, -651, 122, 91, 568, 122, 444, 91, -642, 587,
819, 985, -118, 985, 578, 584, 499, 225, 974, 91,
288, 206, 593, 571, 310, 994, 311, 1165, 1166, 541,
677, 538, 539, 551, 1204, 999, -642, -642, 891, 1039,
-120, 895, 650, 381, 587, 587, 1039, 879, -117, 646,
991, 587, 587, 442, -643, 879, 225, 914, 91, 836,
1041, 464, 91, 225, 91, 1041, -308, 1041, -642, 1041,
655, 465, 466, 122, 122, 687, 722, 689, 225, 691,
122, 375, -643, -643, 695, 122, 696, 501, -732, 502,
503, 504, 505, -101, -308, -308, 468, 1031, 980, 914,
705, 825, 808, 827, 1106, 720, 808, 593, 593, 376,
647, 670, 672, 724, -643, 867, 725, 808, 808, 808,
728, 1052, 225, 808, 808, 1091, -308, 732, 670, 672,
-630, 1055, 1039, 734, 1059, 735, 712, 284, 737, 122,
752, 648, 1051, 754, -733, 808, 225, 1078, 756, 284,
496, 496, -290, 1041, 122, 1041, 699, 91, -630, -630,
1041, 770, 1041, 771, 1150, 501, 375, 502, 503, 504,
505, 1035, 122, 122, 774, 288, 775, 225, 1035, 381,
1035, 1156, 536, 776, 1041, 817, -633, 1125, -732, 826,
-630, 80, -739, 80, 376, 657, 833, 836, -732, 406,
1186, 874, 876, 1101, 904, 80, 80, 587, 315, 316,
317, 318, 319, 346, -633, -633, 285, 906, 808, 918,
276, 722, 920, 921, -291, 808, 658, 1040, 285, 722,
359, 360, 959, 346, -739, 541, 957, 538, 539, 958,
284, 967, 80, 80, -733, 973, -633, 914, 1047, 1007,
359, 360, 1012, 1013, -733, 287, 1016, 80, 731, 1018,
288, 122, -739, -739, 1035, 1029, 1035, 287, 1160, 1161,
1162, 1035, 1049, 1035, 1054, 1021, 1023, 367, 368, 369,
370, 371, 80, 80, -318, 122, 80, 363, -292, 1060,
406, 80, -739, 810, -739, 1035, 1072, 367, 368, 369,
370, 371, -735, 815, 808, 781, 1061, 995, 1209, 1210,
1108, 1109, -318, -318, 375, 1169, 91, 913, 91, 285,
375, 122, 1116, 1131, 1118, 808, 225, 1132, 1133, 1119,
634, 790, 218, 1141, 1143, 536, 225, 1138, 91, 225,
122, 1176, 376, 778, -318, 790, 1140, 375, 376, 1184,
346, 1142, -293, 633, 1147, 1152, 985, 815, 287, 808,
1178, 808, 381, 381, 1188, 1183, 122, 359, 360, 1193,
1201, 460, 1203, 759, 779, 376, 1194, 1246, 1032, 1033,
1185, 1213, 722, 288, 815, 1048, 1226, 536, 542, 1228,
538, 539, 1233, 985, 878, 1235, 1239, 808, -735, 1244,
1257, 80, 808, 362, 363, 470, 1247, 658, 366, 41,
42, 43, 44, 462, 367, 368, 369, 370, 371, 536,
-736, 700, 80, 702, 80, 80, 1002, 391, 80, 985,
80, 408, 374, 855, 80, 916, 80, 872, 1242, 1010,
740, 480, 538, 539, 1090, 482, 1197, 1036, 1200, 91,
927, 80, 288, 91, 593, 1217, 1004, 225, 925, 768,
1047, 1253, 815, 955, 1074, 879, 1097, 1047, 1073, 1047,
1225, 1205, 745, 1206, 538, 539, 1128, 428, 1115, 1227,
1229, 746, 421, 328, 1218, 1234, 888, 1236, 1237, 593,
593, 1195, 1191, 969, 971, 1151, 593, 593, 0, 0,
976, 978, 0, 80, 80, 80, 80, 80, 80, 80,
80, 0, 0, 0, 80, 0, 815, 0, 80, 790,
790, 0, 91, 790, 225, 91, 815, 0, 80, 0,
80, 0, 1248, 80, 1250, 0, 1256, 1258, 1259, 1260,
0, 1251, 0, 969, 971, 0, 976, 978, 0, 1262,
0, 0, 0, 1047, 501, 1047, 502, 503, 504, 505,
1047, 0, 1047, 1261, 0, 0, 1170, 80, 0, 80,
0, 0, 0, 80, 80, 80, 897, 898, 1110, 899,
502, 503, 504, 505, 1047, 0, 46, 47, 0, 80,
1187, 0, 0, 91, 91, 0, 878, 0, 0, 0,
91, 0, 0, 712, 0, 91, 0, 0, 0, 713,
0, 0, 815, 0, 0, 0, 0, 0, 80, 80,
0, 0, 815, 0, 686, 815, 1207, 0, 0, 688,
0, 0, 690, 80, 0, 692, 0, 0, 815, 0,
0, 0, 0, 0, 0, 1219, 0, 0, 0, 0,
701, 0, 593, 0, 0, 703, 1089, 80, 0, 91,
225, 501, 0, 502, 503, 504, 505, 506, 80, 0,
0, 1243, 0, 0, 91, 102, 0, 102, 0, 0,
790, 0, 0, 0, 790, 0, 507, 1089, 80, 102,
102, 0, 91, 91, 0, 790, 790, 790, 0, 0,
0, 790, 790, 0, 0, 0, 0, 1123, 0, 0,
508, 0, 878, 0, 0, 0, 509, 510, 511, 1137,
0, 0, 0, 790, 0, 0, 102, 102, 501, 0,
502, 503, 504, 505, 506, 750, 751, 0, 0, 955,
512, 102, 800, 0, 501, 513, 502, 503, 504, 505,
506, 0, 514, 507, 0, 772, 800, 0, 0, 815,
815, 815, 0, 0, 0, 0, 102, 102, 0, 507,
102, 0, 0, 0, 0, 102, 0, 508, 0, 0,
0, 91, 0, 560, 510, 511, 1174, 0, 0, 0,
0, 0, 0, 508, 0, 0, 790, 0, 0, 509,
510, 511, 0, 790, 0, 91, 0, 512, 0, 501,
1189, 502, 503, 504, 505, 506, 0, 0, 0, 0,
0, 0, 0, 512, 0, 0, 0, 80, 0, 80,
0, 801, 0, 0, 507, 514, 0, 80, 0, 0,
0, 91, 0, 225, 225, 801, 0, 80, 0, 80,
80, 0, 0, 0, 0, 0, 0, 0, 508, 0,
91, 0, 0, 225, 509, 510, 511, 0, 868, 0,
501, 0, 502, 503, 504, 505, 506, 0, 0, 0,
0, 762, 790, 0, 0, 102, 91, 0, 512, 0,
875, 0, 0, 0, 0, 507, 802, 815, 0, 125,
514, 125, 0, 790, 0, 0, 102, 0, 102, 102,
802, 0, 102, 0, 102, 0, 0, 0, 102, 508,
102, 0, 0, 0, 0, 509, 510, 511, 0, 0,
800, 800, 0, 0, 800, 102, 0, 790, 0, 790,
0, 0, 0, 0, 0, 0, 0, 0, 824, 512,
125, 125, 0, 828, 291, 832, 0, 0, 240, 0,
80, 514, 0, 0, 80, 80, 0, 0, 80, 0,
0, 0, 0, 0, 0, 790, 0, 0, 0, 0,
790, 0, 291, 0, 0, 0, 0, 102, 102, 102,
102, 102, 102, 102, 102, 397, 407, 407, 102, 0,
80, 80, 102, 0, 0, 0, 0, 80, 80, 0,
0, 0, 102, 0, 102, 0, 0, 102, 0, 801,
801, 0, 0, 801, 0, 0, 0, 1001, 0, 0,
0, 0, 0, 80, 0, 80, 80, 0, 0, 0,
1006, 0, 0, 0, 0, 0, 1008, 0, 0, 0,
0, 102, 0, 102, 0, 0, 0, 102, 102, 102,
0, 0, 0, 0, 0, 346, 347, 348, 349, 350,
351, 352, 353, 102, 355, 356, 0, 0, 926, 0,
928, 1027, 359, 360, 802, 802, 0, 0, 802, 0,
0, 800, 0, 0, 0, 800, 0, 0, 0, 0,
0, 0, 102, 102, 80, 80, 800, 800, 800, 125,
0, 80, 800, 800, 0, 0, 80, 102, 362, 363,
364, 365, 0, 366, 0, 0, 0, 0, 0, 367,
368, 369, 370, 371, 800, 0, 0, 0, 1079, 0,
0, 102, 125, 0, 125, 0, 0, 989, 0, 0,
993, 0, 102, 0, 0, 0, 0, 0, 0, 125,
0, 0, 0, 80, 1000, 0, 0, 0, 0, 0,
80, 80, 102, 0, 0, 0, 0, 803, 0, 291,
801, 0, 0, 0, 801, 80, 0, 0, 0, 0,
0, 803, 0, 0, 0, 801, 801, 801, 0, 0,
0, 801, 801, 80, 80, 0, 0, 800, 0, 0,
0, 125, 0, 0, 800, 0, 125, 0, 0, 0,
0, 0, 125, 801, 0, 0, 125, 1144, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 125, 291,
0, 594, 0, 0, 0, 802, 0, 0, 0, 802,
0, 0, 0, 0, 0, 1157, 1158, 1159, 0, 0,
802, 802, 802, 0, 0, 0, 802, 802, 0, 0,
0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
0, 125, 0, 125, 0, 0, 0, 0, 802, 0,
0, 0, 80, 800, 0, 1092, 801, 0, 1093, 0,
1100, 0, 0, 801, 0, 0, 0, 1104, 0, 0,
1107, 102, 0, 102, 800, 0, 80, 0, 0, 0,
0, 102, 0, 0, 0, 0, 594, 594, 0, 0,
0, 102, 0, 102, 102, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 800, 0,
800, 0, 80, 0, 80, 80, 0, 0, 0, 0,
0, 802, 0, 0, 0, 803, 803, 0, 802, 803,
0, 80, 0, 121, 80, 121, 125, 0, 0, 0,
0, 0, 801, 0, 0, 0, 800, 0, 0, 0,
0, 800, 0, 0, 291, 0, 0, 80, 0, 0,
0, 0, 0, 801, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1171, 0, 0,
0, 0, 0, 0, 121, 121, 1175, 0, 289, 0,
0, 0, 0, 0, 0, 0, 0, 801, 0, 801,
0, 0, 0, 0, 102, 0, 0, 802, 102, 102,
0, 0, 102, 0, 0, 0, 289, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 802, 395,
405, 405, 405, 0, 0, 801, 0, 0, 0, 291,
801, 0, 0, 0, 102, 102, 0, 0, 0, 0,
0, 102, 102, 0, 0, 0, 0, 0, 0, 0,
0, 0, 802, 0, 802, 0, 346, -763, -763, -763,
-763, 351, 352, 0, 0, -763, -763, 102, 0, 102,
102, 0, 0, 359, 360, 0, 803, 0, 0, 0,
803, 0, 0, 0, 0, 125, 0, 125, 0, 0,
802, 803, 803, 803, 0, 802, 0, 803, 803, 0,
0, 0, 0, 0, 0, 0, 0, 125, 0, 362,
363, 364, 365, 87, 366, 87, 0, 0, 0, 803,
367, 368, 369, 370, 371, 0, 0, 0, 804, 0,
0, 0, 0, 121, 0, 0, 0, 0, 102, 102,
0, 0, 804, 0, 0, 102, 0, 0, 0, 0,
102, 0, 291, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 87, 87, 121, 0, 121, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 121, 0, 0, 901, 0, 0, 0,
0, 0, 803, 0, 0, 0, 0, 102, 0, 803,
0, 0, 0, 289, 102, 102, 0, 0, 0, 392,
0, 0, 0, 0, 0, 0, 0, 0, 125, 102,
0, 291, 125, 594, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 121, 0, 102, 102, 0,
121, 124, 0, 124, 0, 0, 121, 0, 0, 0,
121, 0, 0, 0, 0, 0, 0, 0, 594, 594,
0, 0, 121, 289, 0, 594, 594, 0, 0, 0,
0, 0, 0, 0, 0, 805, 0, 0, 803, 0,
0, 0, 0, 806, 0, 0, 0, 0, 0, 805,
0, 125, 124, 124, 125, 0, 0, 806, 0, 803,
0, 121, 0, 0, 0, 121, 0, 121, 0, 0,
0, 0, 0, 0, 0, 0, 804, 804, 0, 0,
804, 0, 0, 87, 0, 0, 102, 0, 0, 0,
0, 0, 0, 803, 0, 803, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102, 0, 0, 0, 0, 0, 87, 0, 87, 0,
0, 0, 125, 125, 0, 0, 0, 0, 0, 125,
0, 803, 0, 87, 125, 0, 803, 0, 0, 0,
0, 0, 0, 0, 0, 0, 102, 0, 102, 102,
0, 0, 346, 347, 348, 349, 350, 351, 352, 0,
121, 355, 356, 0, 0, 102, 0, 0, 102, 359,
360, 0, 0, 0, 0, 0, 0, 0, 289, 0,
0, 594, 0, 0, 0, 87, 0, 0, 125, 0,
87, 102, 0, 0, 0, 0, 87, 0, 0, 0,
87, 0, 0, 125, 0, 362, 363, 364, 365, 0,
366, 124, 87, 0, 0, 588, 367, 368, 369, 370,
371, 125, 125, 805, 805, 0, 0, 805, 0, 0,
0, 806, 806, 0, 0, 806, 1126, 804, 0, 0,
0, 804, 0, 0, 124, 0, 124, 0, 407, 0,
0, 87, 804, 804, 804, 87, 0, 87, 804, 804,
0, 124, 0, 289, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
804, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
588, 588, 0, 0, 0, 0, 0, 0, 0, 0,
125, 0, 0, 124, 0, 0, 0, 0, 124, 121,
0, 121, 0, 0, 124, 0, 0, 0, 124, 0,
0, 0, 0, 0, 125, 0, 0, 0, 0, 407,
124, 121, 0, 124, 0, 0, 0, 0, 0, 0,
87, 0, 0, 804, 0, 0, 0, 0, 0, 807,
804, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125, 0, 0, 807, 0, 0, 0, 0, 0, 124,
0, 0, 0, 124, 805, 124, 289, 0, 805, 125,
0, 0, 806, 0, 0, 0, 806, 0, 0, 805,
805, 805, 0, 0, 0, 805, 805, 806, 806, 806,
0, 0, 0, 806, 806, 125, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 805, 124, 124,
0, 0, 0, 0, 0, 806, 0, 0, 0, 804,
0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
0, 0, 121, 0, 0, 289, 121, -762, -762, -762,
804, 0, -762, -762, -762, 0, -762, 0, 0, 0,
0, 0, 0, 0, -762, -762, -762, 0, 124, 0,
0, 0, 0, 0, 0, 0, -762, -762, 0, -762,
-762, -762, -762, -762, 804, 0, 804, 0, 0, 0,
805, 0, 0, 0, 345, 0, 0, 805, 806, 87,
0, 87, 0, 0, 0, 806, 0, -762, 0, 0,
0, 0, 0, 0, 0, 121, 0, 0, 121, 0,
0, 87, 804, 0, 0, 0, 0, 804, 0, 0,
0, 0, 0, 0, 0, -762, -762, 807, 807, 0,
0, 807, -762, 0, 0, 0, 346, 347, 348, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, -762,
0, 0, 0, 359, 360, -762, -762, 0, 0, 361,
0, 0, 0, 0, 0, 236, 805, -762, 0, -762,
0, 0, 0, 0, 806, 0, 121, 121, 0, 0,
0, 0, 0, 121, 0, 0, 0, 805, 121, 362,
363, 364, 365, 0, 366, 806, 0, 0, 0, 0,
367, 368, 369, 370, 371, 0, 0, 0, 372, 0,
0, 0, 0, 0, 0, 0, 0, 124, 0, 124,
0, 805, 87, 805, 0, 0, 87, 588, 0, 806,
0, 806, 0, 0, 0, 0, 0, 0, 0, 124,
0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 121, 0, 805,
0, 0, 588, 588, 805, 0, 0, 806, 0, 588,
588, 0, 806, 0, 0, 121, 121, 0, 0, 0,
0, 0, 0, 0, 0, 220, 220, 0, 807, 0,
1124, 0, 807, 0, 0, 87, 0, 0, 87, 0,
0, 0, 405, 807, 807, 807, 0, 0, 0, 807,
807, 0, 0, 0, 0, 0, 0, 253, 256, 257,
258, 0, 0, 0, 220, 220, 0, 0, 0, 0,
0, 807, 0, 0, 0, 0, 306, 308, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124, 0, 0, 0, 124, 124, 0, 0, 0, 0,
0, 0, 0, 0, 121, 0, 87, 87, 0, 0,
0, 220, 0, 87, 0, 0, 0, 0, 87, 0,
0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
124, 124, 0, 405, 0, 0, 0, 124, 124, 0,
0, 0, 0, 0, 807, 0, 0, 0, 0, 0,
0, 807, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 124, 121, 588, 124, 0, 0, 0,
0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 121, 0, 0, 0, 87, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 87, 87, 0, 0, 121,
0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
1122, 0, 220, 220, 220, 0, 308, 0, 0, 0,
807, 0, 0, 0, 124, 124, 0, 0, 777, 0,
0, 124, 220, 0, 220, 220, 124, 0, 0, 0,
0, 807, 0, 469, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 0, 807, 0, 807, 359, 360,
0, 0, 0, 124, 87, 0, 0, 0, 0, 0,
124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 124, 0, 0, 87, -263,
0, 0, 0, 807, 362, 363, 364, 365, 807, 366,
0, 0, 0, 124, 124, 367, 368, 369, 370, 371,
0, 0, 0, 372, 0, 0, 0, 0, 220, 0,
0, 0, 0, 589, 87, 596, 597, 598, 599, 600,
0, 0, 601, 602, 603, 604, 605, 606, 607, 608,
0, 610, 611, 87, 0, 612, 613, 614, 615, 616,
617, 618, 619, 620, 0, 0, 0, 220, 23, 24,
25, 26, 0, 0, 0, 0, 0, 0, 0, 87,
0, 0, 0, 0, 32, 33, 34, 0, 0, 0,
0, 0, 0, 0, 41, 42, 43, 44, 45, 0,
0, 0, 124, 346, 347, 348, 349, 350, 351, 352,
353, 354, 355, 356, 357, 358, 0, 0, 669, 669,
359, 360, 0, 0, 0, 0, 124, 669, 220, 220,
0, 0, 0, 220, 0, 669, 669, 220, 0, 0,
0, 0, 0, 258, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 362, 363, 364, 365,
0, 366, 124, 669, 0, 0, 240, 367, 368, 369,
370, 371, 0, 220, 0, 372, 220, 0, 0, 0,
0, 124, 0, 0, 0, 0, 283, 0, 220, 0,
0, -739, 0, 0, 0, 0, 0, 0, 0, -739,
-739, -739, 0, 0, -739, -739, -739, 124, -739, 0,
0, 0, 0, 220, 0, 0, -739, -739, -739, -739,
-739, 0, 0, 0, 0, 0, 0, 0, -739, -739,
0, -739, -739, -739, -739, -739, 0, 0, 0, 749,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 753, 0, 0, 0, 761, 0, -739,
0, 0, 0, 0, 220, 0, 0, 0, -739, -739,
-739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
-739, 0, 0, 0, 0, -739, -739, -739, -739, 0,
861, -739, 0, 0, -739, 0, 0, -739, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -739, 0, 0, -739, 0, -739, -739, -739, -739,
-119, -739, -739, -739, -739, 0, -739, 0, -739, -739,
0, -739, -739, -739, -739, -739, -739, 220, 0, 0,
-739, -739, 0, 0, -630, 0, 0, 220, 0, 0,
0, 0, -630, -630, -630, 0, 0, -630, -630, -630,
0, -630, 0, 220, 0, 220, 0, 0, 0, -630,
0, -630, -630, -630, 0, 0, 0, 0, 220, 0,
220, -630, -630, 0, -630, -630, -630, -630, -630, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -630, 220, 0, 0, 0, 0, 0, 0,
0, -630, -630, -630, -630, -630, -630, -630, -630, -630,
-630, -630, -630, -630, 0, 0, 0, 0, -630, -630,
-630, -630, 0, -630, -630, 0, 220, -630, 0, 0,
-630, 0, 0, 0, 0, 0, 0, 0, 0, 220,
0, 0, 0, 0, -630, 669, 934, -630, 220, -630,
0, -630, -630, -630, -630, -630, -630, -630, 0, -630,
0, -630, -630, 0, -630, -630, -630, -630, -630, -630,
0, 0, 0, -630, -630, 0, 0, 0, 0, 0,
669, 669, 0, 0, -452, 0, 220, 669, 669, 0,
0, 0, -452, -452, -452, 0, 0, -452, -452, -452,
0, -452, 0, 0, 0, 0, 220, 0, 0, -452,
-452, -452, -452, 0, 0, 0, 0, 0, 0, 0,
0, -452, -452, 0, -452, -452, -452, -452, -452, 0,
669, 669, 0, 669, 669, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -452, 0, 0, 0, 0, 0, 0, 0,
0, -452, -452, -452, -452, -452, -452, -452, -452, -452,
-452, -452, -452, -452, 0, 0, 0, 1028, -452, -452,
-452, -452, 0, 0, -452, 0, 0, -452, 1034, 0,
-452, 0, 0, 0, 0, 0, 0, 0, 220, 0,
0, 0, 0, 0, -452, 0, 0, 0, 0, -452,
-452, -452, -452, 0, -452, -452, -452, -452, 0, -452,
236, -452, -452, 0, -452, -452, -452, -452, -452, -452,
0, 0, 0, -452, -762, 4, 1087, 5, 6, 7,
8, 9, 0, 669, 0, 10, 11, 0, 0, 0,
12, 0, 13, 14, 15, 16, 17, 18, 19, 220,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 27, 669, 0, 220, 0, 0, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 220, -762, 0, -762, 0, 0, 0, 0, 0,
67, 68, 0, 0, 0, 69, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 260, 0, 5,
6, 7, 8, 9, -762, -762, -762, 10, 11, 0,
0, -762, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 27, 0, 220, 0, 0,
0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 220, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -762, 260, -762, 5, 6, 7,
8, 9, 67, 68, -762, 10, 11, 69, -762, -762,
12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
29, 261, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -762, 260, -762, 5, 6, 7, 8, 9,
67, 68, -762, 10, 11, 69, 0, -762, 12, -762,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-762, 260, -762, 5, 6, 7, 8, 9, 67, 68,
-762, 10, 11, 69, 0, -762, 12, 0, 13, 14,
15, 16, 17, 18, 19, -762, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
0, 0, 0, 0, 0, 28, 29, 261, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -762, 260,
-762, 5, 6, 7, 8, 9, 67, 68, -762, 10,
11, 69, 0, -762, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 0, 28, 29, 261, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -762, 0, -762, 0,
0, 0, 0, 0, 67, 68, 0, 0, 260, 69,
5, 6, 7, 8, 9, 0, -762, -762, 10, 11,
0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 261, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -762, 260, -762, 5, 6,
7, 8, 9, 67, 68, 0, 10, 11, 69, 0,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
28, 29, 261, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 52, 0, 0, 262, 54, -762, 55,
56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -762, 260, -762, 5, 6, 7, 8,
9, 67, 68, 0, 10, 11, 69, 0, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
261, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 52, 0, 0, 53, 54, -762, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -762, 4, -762, 5, 6, 7, 8, 9, 67,
68, 0, 10, 11, 69, 0, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, -762, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
260, -762, 5, 6, 7, 8, 9, 67, 68, 0,
10, 11, 69, 0, 0, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
0, 0, 0, 0, 28, 29, 261, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, -762, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -762, 260, -762,
5, 6, 7, 8, 9, 67, 68, -762, 10, 11,
69, 0, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 261, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -762, 260, -762, 5, 6,
7, 8, 9, 67, 68, 0, 10, 11, 69, 0,
0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
28, 29, 261, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, -762, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-633, 0, 0, -762, 0, -762, 0, 0, -633, -633,
-633, 67, 68, -633, -633, -633, 69, -633, 0, 0,
0, 0, 0, 0, 0, -633, 0, -633, -633, -633,
0, 0, 0, 0, 0, 0, 0, -633, -633, 0,
-633, -633, -633, -633, -633, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -633, 0,
0, 0, 0, 0, 0, 0, 0, -633, -633, -633,
-633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
0, 0, 0, 0, -633, -633, -633, -633, 0, -633,
-633, 0, 0, -633, 0, 0, -633, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-633, 0, 0, -633, 0, -633, 0, -633, -633, -633,
-633, -633, -633, -633, 0, -633, 0, -633, -633, 0,
-633, -633, -633, -633, -633, -633, -740, 0, 0, -633,
-633, 0, 0, 0, -740, -740, -740, 0, 0, -740,
-740, -740, 0, -740, 0, 0, 0, 0, 0, 0,
0, -740, -740, -740, -740, -740, 0, 0, 0, 0,
0, 0, 0, -740, -740, 0, -740, -740, -740, -740,
-740, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -740, 0, 0, 0, 0, 0,
0, 0, 0, -740, -740, -740, -740, -740, -740, -740,
-740, -740, -740, -740, -740, -740, 0, 0, 0, 0,
-740, -740, -740, -740, 0, 0, -740, 0, 0, -740,
0, 0, -740, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -740, 0, 0, -740,
0, -740, -740, -740, -740, 0, -740, -740, -740, -740,
0, -740, 0, -740, -740, 0, -740, -740, -740, -740,
-740, -740, -741, 0, 0, -740, -740, 0, 0, 0,
-741, -741, -741, 0, 0, -741, -741, -741, 0, -741,
0, 0, 0, 0, 0, 0, 0, -741, -741, -741,
-741, -741, 0, 0, 0, 0, 0, 0, 0, -741,
-741, 0, -741, -741, -741, -741, -741, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-741, 0, 0, 0, 0, 0, 0, 0, 0, -741,
-741, -741, -741, -741, -741, -741, -741, -741, -741, -741,
-741, -741, 0, 0, 0, 0, -741, -741, -741, -741,
0, 0, -741, 0, 0, -741, 0, 0, -741, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -741, 0, 0, -741, 0, -741, -741, -741,
-741, 0, -741, -741, -741, -741, 0, -741, 0, -741,
-741, 0, -741, -741, -741, -741, -741, -741, -317, 0,
0, -741, -741, 0, 0, 0, -317, -317, -317, 0,
0, -317, -317, -317, 0, -317, 0, 0, 0, 0,
0, 0, 0, -317, 0, -317, -317, -317, 0, 0,
0, 0, 0, 0, 0, -317, -317, 0, -317, -317,
-317, -317, -317, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -317, 0, 0, 0,
0, 0, 0, 0, 0, -317, -317, -317, -317, -317,
-317, -317, -317, -317, -317, -317, -317, -317, 0, 0,
0, 0, -317, -317, -317, -317, 0, 862, -317, 0,
0, -317, 0, 0, -317, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -317, 0,
0, -317, 0, -317, 0, -317, -317, -121, -317, -317,
-317, -317, 0, -317, 0, -317, -317, 0, -317, -317,
-317, -317, -317, -317, -309, 0, 0, -317, -317, 0,
0, 0, -309, -309, -309, 0, 0, -309, -309, -309,
0, -309, 0, 0, 0, 0, 0, 0, 0, -309,
0, -309, -309, -309, 0, 0, 0, 0, 0, 0,
0, -309, -309, 0, -309, -309, -309, -309, -309, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -309, 0, 0, 0, 0, 0, 0, 0,
0, -309, -309, -309, -309, -309, -309, -309, -309, -309,
-309, -309, -309, -309, 0, 0, 0, 0, -309, -309,
-309, -309, 0, 0, -309, 0, 0, -309, 0, 0,
-309, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -309, 0, 0, -309, 0, -309,
0, -309, -309, 0, -309, -309, -309, -309, 0, -309,
0, -309, -309, 0, -309, -309, -309, -309, -309, -309,
-762, 0, 0, -309, -309, 0, 0, 0, -762, -762,
-762, 0, 0, -762, -762, -762, 0, -762, 0, 0,
0, 0, 0, 0, 0, -762, -762, -762, -762, 0,
0, 0, 0, 0, 0, 0, 0, -762, -762, 0,
-762, -762, -762, -762, -762, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -762, 0,
0, 0, 0, 0, 0, 0, 0, -762, -762, -762,
-762, -762, -762, -762, -762, -762, -762, -762, -762, -762,
0, 0, 0, 0, -762, -762, -762, -762, 0, 0,
-762, 0, 0, -762, 0, 0, -762, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-762, 0, 0, 0, 0, -762, -762, -762, -762, 0,
-762, -762, -762, -762, 0, -762, 236, -762, -762, 0,
-762, -762, -762, -762, -762, -762, -324, 0, 0, -762,
0, 0, 0, 0, -324, -324, -324, 0, 0, -324,
-324, -324, 0, -324, 0, 0, 0, 0, 0, 0,
0, -324, 0, -324, -324, 0, 0, 0, 0, 0,
0, 0, 0, -324, -324, 0, -324, -324, -324, -324,
-324, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -324, 0, 0, 0, 0, 0,
0, 0, 0, -324, -324, -324, -324, -324, -324, -324,
-324, -324, -324, -324, -324, -324, 0, 0, 0, 0,
-324, -324, -324, -324, 0, 0, -324, 0, 0, -324,
0, 0, -324, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -324, 0, 0, 0,
0, -324, 0, -324, -324, 0, -324, -324, -324, -324,
0, -324, 233, -324, -324, 0, -324, -324, -324, -324,
-324, -324, -739, 0, 0, -324, 0, 0, 0, 0,
-739, -739, -739, 0, 0, 0, -739, -739, 0, -739,
0, 0, 0, 0, 0, 0, 0, -739, -739, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -739,
-739, 0, -739, -739, -739, -739, -739, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-739, 0, 0, 0, 0, 0, 0, 0, 0, -739,
-739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
-739, -739, 0, 0, 0, 0, -739, -739, -739, -739,
0, 811, -739, 0, 0, -739, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -739, 0, 0, 0, 0, -110, -739, -739,
-739, -119, -739, -739, -739, -739, 0, -739, 0, 0,
-739, 0, -739, -739, -739, -739, -739, -739, -739, 0,
0, -739, 0, 0, 0, 0, -739, -739, -739, 0,
0, 0, -739, -739, 0, -739, 0, 0, 0, 0,
0, 0, 0, -739, -739, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -739, -739, 0, -739, -739,
-739, -739, -739, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -739, 0, 0, 0,
0, 0, 0, 0, 0, -739, -739, -739, -739, -739,
-739, -739, -739, -739, -739, -739, -739, -739, 0, 0,
0, 0, -739, -739, -739, -739, 0, 811, -739, 0,
0, -739, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -739, 0,
0, 0, 0, -739, -739, -739, -739, -119, -739, -739,
-739, -739, 0, -739, 0, 0, -739, 0, -739, -739,
-739, -739, -739, -739, -317, 0, 0, -739, 0, 0,
0, 0, -317, -317, -317, 0, 0, 0, -317, -317,
0, -317, 0, 0, 0, 0, 0, 0, 0, -317,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -317, -317, 0, -317, -317, -317, -317, -317, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -317, 0, 0, 0, 0, 0, 0, 0,
0, -317, -317, -317, -317, -317, -317, -317, -317, -317,
-317, -317, -317, -317, 0, 0, 0, 0, -317, -317,
-317, -317, 0, 812, -317, 0, 0, -317, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -317, 0, 0, 0, 0, -112,
0, -317, -317, -121, -317, -317, -317, -317, 0, -317,
0, 0, -317, 0, -317, -317, -317, -317, -317, -317,
-317, 0, 0, -317, 0, 0, 0, 0, -317, -317,
-317, 0, 0, 0, -317, -317, 0, -317, 0, 0,
0, 0, 0, 0, 0, -317, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -317, -317, 0,
-317, -317, -317, -317, -317, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -317, 0,
0, 0, 0, 0, 0, 0, 0, -317, -317, -317,
-317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
0, 0, 0, 0, -317, -317, -317, -317, 0, 812,
-317, 0, 0, -317, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-317, 0, 0, 0, 0, -317, 0, -317, -317, -121,
-317, -317, -317, -317, 0, -317, 0, 0, -317, 0,
-317, -317, -317, -317, -317, -317, 0, 0, 0, -317,
5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 551, 0, 5, 6, 7,
8, 9, 0, 67, 68, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
29, 261, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 551, 0, 5, 6, 7, 8, 9, 0,
67, 68, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 68, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 16,
17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
22, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
54, 0, 55, 56, 0, 213, 214, 215, 58, 59,
216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 240, 5,
6, 7, 0, 9, 67, 217, 0, 10, 11, 69,
0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 210, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
55, 56, 0, 213, 214, 215, 58, 59, 216, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 8,
9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
68, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 210, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 454, 0, 0, 0, 0, 0, 0, 211, 0,
0, 212, 54, 0, 55, 56, 0, 213, 214, 215,
58, 59, 216, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 217, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 248, 249,
18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
0, 55, 56, 0, 676, 214, 215, 58, 59, 216,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 67, 217, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 248, 249, 18, 19, 0,
0, 0, 0, 0, 20, 250, 251, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 454, 0, 0, 0, 0,
0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
0, 676, 214, 215, 58, 59, 216, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
0, 0, 212, 54, 0, 55, 56, 0, 213, 214,
0, 58, 59, 216, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 217, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 248,
249, 18, 19, 0, 0, 0, 0, 0, 20, 250,
251, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
54, 0, 55, 56, 0, 0, 214, 215, 58, 59,
216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 67, 217, 10, 11, 0, 69,
0, 12, 0, 13, 14, 15, 248, 249, 18, 19,
0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
56, 0, 676, 214, 0, 58, 59, 216, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 217, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 248, 249, 18, 19, 0, 0, 0,
0, 0, 20, 250, 251, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
211, 0, 0, 212, 54, 0, 55, 56, 0, 0,
214, 0, 58, 59, 216, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 67, 217,
10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 310, 0, 311,
5, 6, 7, 0, 9, 67, 68, 0, 10, 11,
69, 0, 0, 12, 0, 13, 14, 15, 16, 17,
18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 240, 5, 6,
7, 0, 9, 67, 68, 0, 10, 11, 69, 0,
0, 12, 0, 13, 14, 15, 248, 249, 18, 19,
0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 468, 0, 0, 0, 5, 6, 7, 0, 9,
0, 67, 217, 10, 11, 0, 69, 0, 12, 0,
13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
211, 0, 0, 212, 54, 0, 55, 56, 0, 575,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 9, 0, 67, 217,
10, 11, 0, 69, 0, 12, 0, 13, 14, 15,
248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
212, 54, 0, 55, 56, 0, 575, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 67, 217, 10, 11, 0,
69, 0, 12, 0, 13, 14, 15, 248, 249, 18,
19, 0, 0, 0, 0, 0, 20, 250, 251, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
55, 56, 0, 929, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 67, 217, 10, 11, 0, 69, 0, 12,
0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
990, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5, 6, 7, 0, 9, 0, 67,
217, 10, 11, 0, 69, 0, 12, 0, 13, 14,
15, 248, 249, 18, 19, 0, 0, 0, 0, 0,
20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
0, 212, 54, 0, 55, 56, 0, 1168, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 67, 217, 10, 11,
0, 69, 0, 12, 0, 13, 14, 15, 248, 249,
18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 67, 217, 10, 11, 0, 69, 0,
12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
67, 217, 10, 11, 0, 69, 0, 12, 0, 13,
14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, 6, 7, 0, 9, 0, 67, 68, 10,
11, 0, 69, 0, 12, 0, 13, 14, 15, 248,
249, 18, 19, 0, 0, 0, 0, 0, 20, 250,
251, 23, 24, 25, 26, 0, 0, 209, 0, 0,
0, 0, 0, 0, 280, 0, 0, 32, 33, 34,
35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 281, 0, 0, 212,
54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 282, 5, 6, 7, 0, 9, 0,
0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
14, 15, 248, 249, 18, 19, 0, 0, 0, 283,
0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 281,
0, 0, 341, 54, 0, 55, 56, 0, 342, 0,
0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
0, 0, 283, 20, 250, 251, 23, 24, 25, 26,
0, 0, 209, 0, 0, 0, 0, 0, 0, 280,
0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 390, 0, 0, 53, 54, 0, 55, 56, 0,
57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
0, 12, 0, 13, 14, 15, 248, 249, 18, 19,
0, 0, 0, 0, 283, 20, 250, 251, 23, 24,
25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
0, 280, 0, 0, 32, 33, 34, 398, 36, 37,
38, 399, 40, 0, 41, 42, 43, 44, 45, 46,
47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 400,
0, 0, 0, 401, 0, 0, 212, 54, 0, 55,
56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
0, 0, 0, 12, 0, 13, 14, 15, 248, 249,
18, 19, 0, 0, 0, 0, 283, 20, 250, 251,
23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 281, 0, 0, 212, 54,
0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
0, 0, 582, 5, 6, 7, 0, 9, 0, 0,
0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
15, 248, 249, 18, 19, 0, 0, 0, 283, 0,
20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
0, 0, 0, 0, 0, 0, 280, 0, 0, 32,
33, 34, 398, 36, 37, 38, 399, 40, 0, 41,
42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 401, 0,
0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
13, 14, 15, 248, 249, 18, 19, 0, 0, 0,
0, 283, 20, 250, 251, 23, 24, 25, 26, 0,
0, 209, 0, 0, 0, 0, 0, 0, 280, 0,
0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281, 0, 0, 341, 54, 0, 55, 56, 0, 0,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
12, 0, 13, 14, 15, 248, 249, 18, 19, 0,
0, 0, 0, 283, 20, 250, 251, 23, 24, 25,
26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
280, 0, 0, 32, 33, 34, 35, 36, 37, 38,
39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1121, 0, 0, 212, 54, 0, 55, 56,
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
0, 0, 12, 0, 13, 14, 15, 248, 249, 18,
19, 0, 0, 0, 0, 283, 20, 250, 251, 23,
24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
0, 0, 280, 0, 0, 32, 33, 34, 35, 36,
37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1136, 0, 0, 212, 54, 0,
55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
0, 129, 130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152, 0, 0, 283, 153, 154,
155, 409, 410, 411, 412, 160, 161, 162, 0, 0,
0, 0, 0, 163, 164, 165, 166, 413, 414, 415,
416, 171, 37, 38, 417, 40, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
192, 193, 194, 195, 418, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 129, 130, 131, 132,
133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
165, 166, 167, 168, 169, 170, 171, 293, 294, 172,
295, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 190, 191, 192, 193, 194, 195, 0,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
170, 171, 242, 0, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 59,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
192, 193, 194, 195, 0, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 129, 130, 131, 132,
133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
165, 166, 167, 168, 169, 170, 171, 0, 0, 172,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 59, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 190, 191, 192, 193, 194, 195, 0,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
170, 171, 0, 0, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 23, 24, 25, 26, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
32, 33, 34, 781, 0, 0, 0, 782, 0, 1062,
41, 42, 43, 44, 45, 0, 0, 0, 190, 191,
192, 193, 194, 195, 0, 0, 0, 0, 507, 196,
197, 198, 199, 200, 201, 202, 0, 0, 0, 0,
0, 783, 784, 0, 0, 0, 0, 0, 0, 785,
0, 0, 786, 0, 0, 787, 788, 0, 945, 510,
0, 58, 59, 1080, 61, 62, 63, 64, 65, 66,
0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 789, 32, 33, 34,
781, 0, 0, 0, 782, 0, 0, 41, 42, 43,
44, 45, 283, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 783, 784,
0, 0, 0, 0, 0, 0, 785, 0, 0, 786,
0, 0, 787, 788, 0, 945, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 23, 24,
25, 26, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 789, 32, 33, 34, 781, 240, 0,
0, 782, 0, 0, 41, 42, 43, 44, 45, 283,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 783, 784, 0, 0, 0,
0, 0, 0, 785, 0, 0, 786, 0, 0, 787,
788, 0, 1056, 0, 0, 58, 59, 60, 61, 62,
63, 64, 65, 66, 0, 23, 24, 25, 26, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
789, 32, 33, 34, 781, 0, 0, 0, 782, 0,
0, 41, 42, 43, 44, 45, 283, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 783, 784, 0, 0, 0, 0, 0, 0,
785, 0, 0, 786, 0, 0, 787, 788, 0, 945,
0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
66, 0, 23, 24, 25, 26, 0, 0, 0, 0,
0, 777, 0, 0, 0, 0, 0, 789, 32, 33,
34, 781, 0, 0, 0, 782, 0, 0, 41, 42,
43, 44, 45, 283, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 0, 0, 783,
784, 359, 360, 0, 0, 0, 0, 785, 0, 0,
786, 0, 0, 787, 788, 0, 0, 0, 0, 58,
59, 60, 61, 62, 63, 64, 65, 66, 908, 0,
0, 0, 0, 0, 0, 0, 0, 362, 363, 364,
365, 0, 366, 0, 789, 0, 0, 0, 367, 368,
369, 370, 371, 919, 0, 0, 372, 0, 0, 0,
283, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 0, 0, 0, 0, 359, 360,
0, 0, 0, 0, 0, 0, 346, 347, 348, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
0, 0, 0, 359, 360, 0, 0, 0, 0, 0,
0, 0, 0, 0, 362, 363, 364, 365, 0, 366,
0, 0, 0, 0, 0, 367, 368, 369, 370, 371,
0, 0, 0, 372, 0, 0, 0, 0, 0, 362,
363, 364, 365, 0, 366, 621, 622, 0, 0, 623,
367, 368, 369, 370, 371, 0, 0, 0, 372, 0,
0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 630, 631,
0, 0, 632, 190, 191, 192, 193, 194, 195, 236,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 680, 622, 0, 0, 681, 190, 191, 192, 193,
194, 195, 236, 0, 0, 0, 0, 196, 197, 198,
199, 200, 201, 202, 173, 174, 175, 176, 177, 178,
179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 683, 631, 0, 0, 684, 190,
191, 192, 193, 194, 195, 236, 0, 0, 0, 0,
196, 197, 198, 199, 200, 201, 202, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 707, 622, 0,
0, 708, 190, 191, 192, 193, 194, 195, 236, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710, 631, 0, 0, 711, 190, 191, 192, 193, 194,
195, 236, 0, 0, 0, 0, 196, 197, 198, 199,
200, 201, 202, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 839, 622, 0, 0, 840, 190, 191,
192, 193, 194, 195, 236, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 173, 174, 175, 176,
177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 842, 631, 0, 0,
843, 190, 191, 192, 193, 194, 195, 236, 0, 0,
0, 0, 196, 197, 198, 199, 200, 201, 202, 173,
174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 848,
622, 0, 0, 849, 190, 191, 192, 193, 194, 195,
236, 0, 0, 0, 0, 196, 197, 198, 199, 200,
201, 202, 173, 174, 175, 176, 177, 178, 179, 180,
181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 665, 631, 0, 0, 666, 190, 191, 192,
193, 194, 195, 236, 0, 0, 0, 0, 196, 197,
198, 199, 200, 201, 202, 173, 174, 175, 176, 177,
178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 935, 622, 0, 0, 936,
190, 191, 192, 193, 194, 195, 236, 0, 0, 0,
0, 196, 197, 198, 199, 200, 201, 202, 173, 174,
175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 938, 631,
0, 0, 939, 190, 191, 192, 193, 194, 195, 236,
0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
202, 173, 174, 175, 176, 177, 178, 179, 180, 181,
0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1220, 622, 0, 0, 1221, 190, 191, 192, 193,
194, 195, 236, 0, 0, 0, 0, 196, 197, 198,
199, 200, 201, 202, 173, 174, 175, 176, 177, 178,
179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1223, 631, 0, 0, 1224, 190,
191, 192, 193, 194, 195, 236, 0, 0, 0, 0,
196, 197, 198, 199, 200, 201, 202, 173, 174, 175,
176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1230, 622, 0,
0, 1231, 190, 191, 192, 193, 194, 195, 236, 0,
0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
665, 631, 0, 0, 666, 190, 191, 192, 193, 194,
195, 236, 0, 0, 0, 0, 196, 197, 198, 199,
200, 201, 202, 173, 174, 175, 176, 177, 178, 179,
180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 188, 189, 346, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
0, 0, 0, 0, 359, 360, 0, 0, 190, 191,
192, 193, 194, 195, 0, 0, 0, 0, 0, 196,
197, 198, 199, 200, 201, 202, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362, 363, 364, 365, 0, 366, 0, 0, 0, 0,
0, 367, 368, 369, 370, 371, 0, 0, 0, 372,
346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
356, -763, -763, 0, 0, 0, 0, 359, 360, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 362, 363, 364, 365, 0, 366, 0,
0, 0, 0, 0, 367, 368, 369, 370, 371 ];
#[allow(non_upper_case_globals)]
const yycheck_: &'static [i32] = &[ 2, 60, 4, 16, 17, 57, 22, 85, 91, 28,
377, 59, 379, 230, 96, 8, 322, 105, 71, 827,
8, 104, 448, 383, 378, 344, 274, 4, 2, 526,
278, 834, 728, 85, 2, 28, 4, 401, 292, 97,
28, 732, 876, 53, 97, 77, 98, 99, 100, 874,
57, 53, 54, 101, 531, 57, 533, 595, 69, 426,
13, 487, 16, 17, 80, 725, 59, 440, 322, 1013,
329, 609, 326, 497, 921, 448, 443, 94, 445, 25,
97, 55, 56, 85, 57, 0, 54, 344, 26, 102,
444, 22, 752, 71, 292, 25, 98, 99, 100, 101,
322, 508, 76, 77, 326, 1146, 473, 13, 101, 56,
783, 784, 85, 16, 17, 27, 100, 34, 300, 301,
29, 380, 1140, 57, 322, 98, 99, 100, 326, 66,
93, 94, 725, 500, 97, 52, 965, 966, 26, 25,
1167, 68, 225, 103, 25, 499, 25, 66, 102, 80,
140, 85, 55, 97, 16, 17, 140, 216, 582, 752,
1201, 25, 262, 34, 98, 99, 100, 37, 38, 66,
13, 254, 429, 430, 126, 25, 1203, 126, 52, 125,
140, 52, 119, 136, 128, 138, 13, 140, 126, 25,
1037, 725, 136, 55, 56, 125, 25, 13, 732, 102,
119, 429, 430, 1244, 282, 288, 264, 99, 1226, 109,
212, 264, 56, 728, 123, 9, 13, 13, 752, 125,
233, 15, 235, 236, 121, 122, 138, 124, 140, 1173,
282, 131, 138, 125, 140, 251, 252, 129, 126, 125,
102, 341, 459, 245, 125, 247, 125, 13, 136, 787,
224, 125, 262, 285, 13, 136, 230, 136, 100, 513,
262, 125, 236, 210, 13, 691, 213, 214, 215, 13,
140, 245, 283, 99, 1108, 125, 239, 245, 241, 233,
282, 235, 649, 125, 1109, 68, 264, 960, 961, 125,
342, 513, 659, 657, 648, 138, 125, 140, 315, 316,
317, 318, 139, 129, 658, 712, 713, 68, 127, 282,
393, 138, 314, 140, 97, 513, 689, 319, 691, 99,
136, 140, 138, 325, 140, 1016, 58, 329, 139, 387,
233, 341, 235, 236, 387, 342, 97, 314, 1167, 341,
342, 138, 138, 140, 140, 77, 314, 66, 282, 129,
774, 319, 315, 316, 317, 318, 53, 320, 321, 68,
99, 1021, 1170, 379, 546, 378, 548, 1170, 385, 342,
15, 233, 138, 235, 140, 139, 108, 109, 380, 138,
25, 140, 384, 689, 386, 99, 379, 921, 97, 138,
129, 140, 339, 890, 138, 68, 140, 344, 77, 131,
99, 660, 121, 122, 378, 66, 944, 100, 342, 886,
887, 778, 339, 780, 891, 129, 893, 344, 895, 497,
139, 785, 385, 77, 97, 779, 125, 965, 966, 445,
129, 444, 125, 426, 139, 1243, 339, 400, 757, 954,
125, 344, 1138, 25, 817, 497, 752, 68, 467, 987,
965, 966, 445, 66, 948, 140, 704, 473, 119, 28,
121, 122, 679, 124, 143, 144, 145, 874, 322, 876,
444, 725, 987, 1133, 467, 96, 97, 479, 732, 467,
473, 99, 1016, 457, 500, 459, 499, 141, 142, 143,
144, 145, 439, 440, 129, 497, 136, 99, 752, 58,
140, 448, 429, 430, 582, 468, 99, 500, 121, 122,
593, 129, 129, 125, 567, 212, 68, 125, 77, 776,
2, 103, 4, 125, 497, 499, 139, 129, 140, 1067,
582, 68, 125, 125, 16, 17, 129, 484, 1035, 112,
487, 515, 27, 125, 29, 97, 1043, 129, 140, 108,
247, 99, 526, 112, 811, 812, 68, 99, 140, 741,
97, 818, 819, 497, 746, 262, 1060, 125, 650, 66,
67, 53, 54, 1233, 99, 57, 68, 524, 440, 25,
582, 1007, 136, 811, 812, 97, 68, 129, 847, 642,
818, 819, 566, 595, 129, 56, 82, 83, 962, 1133,
125, 136, 68, 85, 129, 97, 1140, 609, 25, 582,
626, 93, 94, 814, 129, 97, 98, 99, 100, 635,
102, 822, 484, 1138, 121, 122, 100, 705, 575, 1167,
96, 97, 992, 649, 1007, 648, 638, 1152, 640, 1116,
1117, 1118, 1119, 659, 341, 658, 132, 133, 582, 68,
867, 667, 1146, 705, 673, 629, 649, 103, 660, 52,
125, 635, 128, 56, 129, 66, 659, 921, 927, 52,
1030, 68, 125, 56, 648, 965, 966, 99, 97, 125,
673, 697, 698, 129, 658, 673, 103, 384, 921, 386,
136, 125, 1226, 667, 140, 626, 774, 987, 661, 1196,
97, 1108, 1109, 705, 635, 679, 682, 1201, 125, 1203,
68, 137, 129, 25, 140, 37, 38, 974, 119, 68,
121, 122, 774, 140, 698, 136, 99, 674, 99, 676,
212, 1091, 705, 709, 1094, 77, 667, 996, 96, 97,
136, 1218, 689, 103, 691, 1239, 974, 96, 97, 129,
1244, 233, 125, 235, 236, 1014, 129, 239, 129, 241,
68, 137, 1016, 245, 780, 247, 779, 855, 99, 771,
128, 705, 774, 775, 99, 965, 966, 724, 136, 128,
262, 783, 784, 757, 758, 787, 68, 780, 96, 97,
764, 103, 845, 767, 125, 280, 68, 987, 129, 921,
282, 774, 56, 771, 129, 779, 854, 775, 88, 89,
757, 787, 127, 125, 96, 97, 66, 129, 136, 1186,
128, 125, 99, 770, 96, 97, 77, 689, 140, 846,
129, 1185, 314, 315, 316, 317, 318, 319, 320, 321,
774, 129, 844, 325, 129, 847, 128, 329, 68, 776,
99, 825, 129, 827, 757, 125, 128, 339, 99, 341,
342, 854, 344, 106, 138, 841, 140, 40, 41, 119,
817, 121, 122, 138, 124, 851, 96, 97, 732, 1133,
129, 735, 25, 846, 811, 812, 1140, 720, 129, 56,
837, 818, 819, 867, 68, 728, 378, 15, 380, 17,
1133, 54, 384, 385, 386, 1138, 68, 1140, 128, 1142,
133, 64, 65, 915, 916, 103, 890, 125, 400, 125,
922, 68, 96, 97, 127, 927, 127, 52, 26, 54,
55, 56, 57, 125, 96, 97, 136, 911, 14, 15,
125, 638, 944, 640, 997, 125, 948, 429, 430, 96,
97, 429, 430, 129, 128, 817, 125, 959, 960, 961,
125, 937, 444, 965, 966, 982, 128, 125, 446, 447,
68, 947, 1226, 52, 950, 125, 101, 1029, 52, 981,
125, 128, 929, 10, 26, 987, 468, 963, 8, 1041,
284, 285, 125, 1226, 996, 1228, 474, 479, 96, 97,
1233, 125, 1235, 44, 1063, 52, 68, 54, 55, 56,
57, 1133, 1014, 1015, 125, 497, 44, 499, 1140, 982,
1142, 1080, 66, 129, 1257, 125, 68, 1029, 126, 13,
128, 2, 26, 4, 96, 97, 25, 17, 136, 1041,
1123, 125, 125, 990, 139, 16, 17, 974, 40, 41,
42, 43, 44, 77, 96, 97, 1029, 139, 1060, 1033,
1007, 1035, 127, 130, 125, 1067, 128, 921, 1041, 1043,
94, 95, 130, 77, 68, 119, 52, 121, 122, 100,
1132, 150, 53, 54, 126, 137, 128, 15, 921, 125,
94, 95, 103, 138, 136, 1029, 125, 68, 52, 125,
582, 1103, 96, 97, 1226, 100, 1228, 1041, 1084, 1085,
1086, 1233, 127, 1235, 52, 125, 125, 141, 142, 143,
144, 145, 93, 94, 68, 1127, 97, 131, 125, 125,
1132, 102, 126, 618, 128, 1257, 127, 141, 142, 143,
144, 145, 136, 628, 1146, 52, 125, 844, 1165, 1166,
125, 125, 96, 97, 68, 1102, 638, 9, 640, 1132,
68, 1163, 1016, 130, 1018, 1167, 648, 129, 125, 1023,
1186, 595, 1185, 1045, 1046, 66, 658, 125, 660, 661,
1182, 127, 96, 97, 128, 609, 125, 68, 96, 97,
77, 125, 125, 1186, 125, 125, 1170, 682, 1132, 1201,
125, 1203, 1165, 1166, 130, 56, 1208, 94, 95, 56,
125, 1185, 125, 1187, 128, 96, 97, 120, 915, 916,
128, 1168, 1196, 705, 709, 922, 125, 66, 119, 125,
121, 122, 125, 1207, 719, 125, 125, 1239, 136, 125,
125, 212, 1244, 130, 131, 245, 1222, 128, 135, 59,
60, 61, 62, 239, 141, 142, 143, 144, 145, 66,
136, 475, 233, 479, 235, 236, 854, 98, 239, 1243,
241, 100, 89, 667, 245, 758, 247, 712, 1207, 874,
119, 267, 121, 122, 981, 271, 1140, 921, 1142, 771,
767, 262, 774, 775, 776, 1173, 856, 779, 765, 574,
1133, 1243, 787, 788, 959, 1138, 987, 1140, 958, 1142,
1187, 1152, 119, 1152, 121, 122, 1033, 108, 1015, 1191,
1192, 548, 101, 77, 1178, 1197, 728, 1199, 1200, 811,
812, 1138, 1133, 811, 812, 1064, 818, 819, -1, -1,
818, 819, -1, 314, 315, 316, 317, 318, 319, 320,
321, -1, -1, -1, 325, -1, 841, -1, 329, 783,
784, -1, 844, 787, 846, 847, 851, -1, 339, -1,
341, -1, 1226, 344, 1228, -1, 1248, 1249, 1250, 1251,
-1, 1235, -1, 861, 862, -1, 864, 865, -1, 1261,
-1, -1, -1, 1226, 52, 1228, 54, 55, 56, 57,
1233, -1, 1235, 1257, -1, -1, 1103, 378, -1, 380,
-1, -1, -1, 384, 385, 386, 54, 55, 52, 57,
54, 55, 56, 57, 1257, -1, 64, 65, -1, 400,
1127, -1, -1, 915, 916, -1, 921, -1, -1, -1,
922, -1, -1, 101, -1, 927, -1, -1, -1, 107,
-1, -1, 937, -1, -1, -1, -1, -1, 429, 430,
-1, -1, 947, -1, 450, 950, 1163, -1, -1, 455,
-1, -1, 458, 444, -1, 461, -1, -1, 963, -1,
-1, -1, -1, -1, -1, 1182, -1, -1, -1, -1,
476, -1, 974, -1, -1, 481, 974, 468, -1, 981,
982, 52, -1, 54, 55, 56, 57, 58, 479, -1,
-1, 1208, -1, -1, 996, 2, -1, 4, -1, -1,
944, -1, -1, -1, 948, -1, 77, 1005, 499, 16,
17, -1, 1014, 1015, -1, 959, 960, 961, -1, -1,
-1, 965, 966, -1, -1, -1, -1, 1029, -1, -1,
101, -1, 1037, -1, -1, -1, 107, 108, 109, 1041,
-1, -1, -1, 987, -1, -1, 53, 54, 52, -1,
54, 55, 56, 57, 58, 561, 562, -1, -1, 1064,
131, 68, 595, -1, 52, 136, 54, 55, 56, 57,
58, -1, 143, 77, -1, 581, 609, -1, -1, 1084,
1085, 1086, -1, -1, -1, -1, 93, 94, -1, 77,
97, -1, -1, -1, -1, 102, -1, 101, -1, -1,
-1, 1103, -1, 91, 108, 109, 1111, -1, -1, -1,
-1, -1, -1, 101, -1, -1, 1060, -1, -1, 107,
108, 109, -1, 1067, -1, 1127, -1, 131, -1, 52,
1132, 54, 55, 56, 57, 58, -1, -1, -1, -1,
-1, -1, -1, 131, -1, -1, -1, 638, -1, 640,
-1, 595, -1, -1, 77, 143, -1, 648, -1, -1,
-1, 1163, -1, 1165, 1166, 609, -1, 658, -1, 660,
661, -1, -1, -1, -1, -1, -1, -1, 101, -1,
1182, -1, -1, 1185, 107, 108, 109, -1, 694, -1,
52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
-1, 569, 1146, -1, -1, 212, 1208, -1, 131, -1,
716, -1, -1, -1, -1, 77, 595, 1222, -1, 2,
143, 4, -1, 1167, -1, -1, 233, -1, 235, 236,
609, -1, 239, -1, 241, -1, -1, -1, 245, 101,
247, -1, -1, -1, -1, 107, 108, 109, -1, -1,
783, 784, -1, -1, 787, 262, -1, 1201, -1, 1203,
-1, -1, -1, -1, -1, -1, -1, -1, 636, 131,
53, 54, -1, 641, 57, 643, -1, -1, 140, -1,
771, 143, -1, -1, 775, 776, -1, -1, 779, -1,
-1, -1, -1, -1, -1, 1239, -1, -1, -1, -1,
1244, -1, 85, -1, -1, -1, -1, 314, 315, 316,
317, 318, 319, 320, 321, 98, 99, 100, 325, -1,
811, 812, 329, -1, -1, -1, -1, 818, 819, -1,
-1, -1, 339, -1, 341, -1, -1, 344, -1, 783,
784, -1, -1, 787, -1, -1, -1, 853, -1, -1,
-1, -1, -1, 844, -1, 846, 847, -1, -1, -1,
866, -1, -1, -1, -1, -1, 872, -1, -1, -1,
-1, 378, -1, 380, -1, -1, -1, 384, 385, 386,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 400, 86, 87, -1, -1, 766, -1,
768, 907, 94, 95, 783, 784, -1, -1, 787, -1,
-1, 944, -1, -1, -1, 948, -1, -1, -1, -1,
-1, -1, 429, 430, 915, 916, 959, 960, 961, 212,
-1, 922, 965, 966, -1, -1, 927, 444, 130, 131,
132, 133, -1, 135, -1, -1, -1, -1, -1, 141,
142, 143, 144, 145, 987, -1, -1, -1, 964, -1,
-1, 468, 245, -1, 247, -1, -1, 835, -1, -1,
838, -1, 479, -1, -1, -1, -1, -1, -1, 262,
-1, -1, -1, 974, 852, -1, -1, -1, -1, -1,
981, 982, 499, -1, -1, -1, -1, 595, -1, 282,
944, -1, -1, -1, 948, 996, -1, -1, -1, -1,
-1, 609, -1, -1, -1, 959, 960, 961, -1, -1,
-1, 965, 966, 1014, 1015, -1, -1, 1060, -1, -1,
-1, 314, -1, -1, 1067, -1, 319, -1, -1, -1,
-1, -1, 325, 987, -1, -1, 329, 1053, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 341, 342,
-1, 344, -1, -1, -1, 944, -1, -1, -1, 948,
-1, -1, -1, -1, -1, 1081, 1082, 1083, -1, -1,
959, 960, 961, -1, -1, -1, 965, 966, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 380, -1, -1,
-1, 384, -1, 386, -1, -1, -1, -1, 987, -1,
-1, -1, 1103, 1146, -1, 983, 1060, -1, 986, -1,
988, -1, -1, 1067, -1, -1, -1, 995, -1, -1,
998, 638, -1, 640, 1167, -1, 1127, -1, -1, -1,
-1, 648, -1, -1, -1, -1, 429, 430, -1, -1,
-1, 658, -1, 660, 661, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 1201, -1,
1203, -1, 1163, -1, 1165, 1166, -1, -1, -1, -1,
-1, 1060, -1, -1, -1, 783, 784, -1, 1067, 787,
-1, 1182, -1, 2, 1185, 4, 479, -1, -1, -1,
-1, -1, 1146, -1, -1, -1, 1239, -1, -1, -1,
-1, 1244, -1, -1, 497, -1, -1, 1208, -1, -1,
-1, -1, -1, 1167, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1105, -1, -1,
-1, -1, -1, -1, 53, 54, 1114, -1, 57, -1,
-1, -1, -1, -1, -1, -1, -1, 1201, -1, 1203,
-1, -1, -1, -1, 771, -1, -1, 1146, 775, 776,
-1, -1, 779, -1, -1, -1, 85, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 1167, 98,
99, 100, 101, -1, -1, 1239, -1, -1, -1, 582,
1244, -1, -1, -1, 811, 812, -1, -1, -1, -1,
-1, 818, 819, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 1201, -1, 1203, -1, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, 844, -1, 846,
847, -1, -1, 94, 95, -1, 944, -1, -1, -1,
948, -1, -1, -1, -1, 638, -1, 640, -1, -1,
1239, 959, 960, 961, -1, 1244, -1, 965, 966, -1,
-1, -1, -1, -1, -1, -1, -1, 660, -1, 130,
131, 132, 133, 2, 135, 4, -1, -1, -1, 987,
141, 142, 143, 144, 145, -1, -1, -1, 595, -1,
-1, -1, -1, 212, -1, -1, -1, -1, 915, 916,
-1, -1, 609, -1, -1, 922, -1, -1, -1, -1,
927, -1, 705, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 53, 54, 245, -1, 247, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 262, -1, -1, 739, -1, -1, -1,
-1, -1, 1060, -1, -1, -1, -1, 974, -1, 1067,
-1, -1, -1, 282, 981, 982, -1, -1, -1, 98,
-1, -1, -1, -1, -1, -1, -1, -1, 771, 996,
-1, 774, 775, 776, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 314, -1, 1014, 1015, -1,
319, 2, -1, 4, -1, -1, 325, -1, -1, -1,
329, -1, -1, -1, -1, -1, -1, -1, 811, 812,
-1, -1, 341, 342, -1, 818, 819, -1, -1, -1,
-1, -1, -1, -1, -1, 595, -1, -1, 1146, -1,
-1, -1, -1, 595, -1, -1, -1, -1, -1, 609,
-1, 844, 53, 54, 847, -1, -1, 609, -1, 1167,
-1, 380, -1, -1, -1, 384, -1, 386, -1, -1,
-1, -1, -1, -1, -1, -1, 783, 784, -1, -1,
787, -1, -1, 212, -1, -1, 1103, -1, -1, -1,
-1, -1, -1, 1201, -1, 1203, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1127, -1, -1, -1, -1, -1, 245, -1, 247, -1,
-1, -1, 915, 916, -1, -1, -1, -1, -1, 922,
-1, 1239, -1, 262, 927, -1, 1244, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 1163, -1, 1165, 1166,
-1, -1, 77, 78, 79, 80, 81, 82, 83, -1,
479, 86, 87, -1, -1, 1182, -1, -1, 1185, 94,
95, -1, -1, -1, -1, -1, -1, -1, 497, -1,
-1, 974, -1, -1, -1, 314, -1, -1, 981, -1,
319, 1208, -1, -1, -1, -1, 325, -1, -1, -1,
329, -1, -1, 996, -1, 130, 131, 132, 133, -1,
135, 212, 341, -1, -1, 344, 141, 142, 143, 144,
145, 1014, 1015, 783, 784, -1, -1, 787, -1, -1,
-1, 783, 784, -1, -1, 787, 1029, 944, -1, -1,
-1, 948, -1, -1, 245, -1, 247, -1, 1041, -1,
-1, 380, 959, 960, 961, 384, -1, 386, 965, 966,
-1, 262, -1, 582, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
987, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
429, 430, -1, -1, -1, -1, -1, -1, -1, -1,
1103, -1, -1, 314, -1, -1, -1, -1, 319, 638,
-1, 640, -1, -1, 325, -1, -1, -1, 329, -1,
-1, -1, -1, -1, 1127, -1, -1, -1, -1, 1132,
341, 660, -1, 344, -1, -1, -1, -1, -1, -1,
479, -1, -1, 1060, -1, -1, -1, -1, -1, 595,
1067, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1163, -1, -1, 609, -1, -1, -1, -1, -1, 380,
-1, -1, -1, 384, 944, 386, 705, -1, 948, 1182,
-1, -1, 944, -1, -1, -1, 948, -1, -1, 959,
960, 961, -1, -1, -1, 965, 966, 959, 960, 961,
-1, -1, -1, 965, 966, 1208, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 987, 429, 430,
-1, -1, -1, -1, -1, 987, -1, -1, -1, 1146,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
-1, -1, 771, -1, -1, 774, 775, 8, 9, 10,
1167, -1, 13, 14, 15, -1, 17, -1, -1, -1,
-1, -1, -1, -1, 25, 26, 27, -1, 479, -1,
-1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
41, 42, 43, 44, 1201, -1, 1203, -1, -1, -1,
1060, -1, -1, -1, 25, -1, -1, 1067, 1060, 638,
-1, 640, -1, -1, -1, 1067, -1, 68, -1, -1,
-1, -1, -1, -1, -1, 844, -1, -1, 847, -1,
-1, 660, 1239, -1, -1, -1, -1, 1244, -1, -1,
-1, -1, -1, -1, -1, 96, 97, 783, 784, -1,
-1, 787, 103, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 120,
-1, -1, -1, 94, 95, 126, 127, -1, -1, 100,
-1, -1, -1, -1, -1, 136, 1146, 138, -1, 140,
-1, -1, -1, -1, 1146, -1, 915, 916, -1, -1,
-1, -1, -1, 922, -1, -1, -1, 1167, 927, 130,
131, 132, 133, -1, 135, 1167, -1, -1, -1, -1,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, -1, -1, -1, -1, -1, -1, 638, -1, 640,
-1, 1201, 771, 1203, -1, -1, 775, 776, -1, 1201,
-1, 1203, -1, -1, -1, -1, -1, -1, -1, 660,
-1, -1, 981, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 996, -1, 1239,
-1, -1, 811, 812, 1244, -1, -1, 1239, -1, 818,
819, -1, 1244, -1, -1, 1014, 1015, -1, -1, -1,
-1, -1, -1, -1, -1, 16, 17, -1, 944, -1,
1029, -1, 948, -1, -1, 844, -1, -1, 847, -1,
-1, -1, 1041, 959, 960, 961, -1, -1, -1, 965,
966, -1, -1, -1, -1, -1, -1, 48, 49, 50,
51, -1, -1, -1, 55, 56, -1, -1, -1, -1,
-1, 987, -1, -1, -1, -1, 67, 68, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
771, -1, -1, -1, 775, 776, -1, -1, -1, -1,
-1, -1, -1, -1, 1103, -1, 915, 916, -1, -1,
-1, 102, -1, 922, -1, -1, -1, -1, 927, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 1127, -1,
811, 812, -1, 1132, -1, -1, -1, 818, 819, -1,
-1, -1, -1, -1, 1060, -1, -1, -1, -1, -1,
-1, 1067, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 844, 1163, 974, 847, -1, -1, -1,
-1, -1, 981, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 1182, -1, -1, -1, 996, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 1014, 1015, -1, -1, 1208,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 210,
1029, -1, 213, 214, 215, -1, 217, -1, -1, -1,
1146, -1, -1, -1, 915, 916, -1, -1, 44, -1,
-1, 922, 233, -1, 235, 236, 927, -1, -1, -1,
-1, 1167, -1, 244, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, 1201, -1, 1203, 94, 95,
-1, -1, -1, 974, 1103, -1, -1, -1, -1, -1,
981, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 996, -1, -1, 1127, 125,
-1, -1, -1, 1239, 130, 131, 132, 133, 1244, 135,
-1, -1, -1, 1014, 1015, 141, 142, 143, 144, 145,
-1, -1, -1, 149, -1, -1, -1, -1, 339, -1,
-1, -1, -1, 344, 1163, 346, 347, 348, 349, 350,
-1, -1, 353, 354, 355, 356, 357, 358, 359, 360,
-1, 362, 363, 1182, -1, 366, 367, 368, 369, 370,
371, 372, 373, 374, -1, -1, -1, 378, 33, 34,
35, 36, -1, -1, -1, -1, -1, -1, -1, 1208,
-1, -1, -1, -1, 49, 50, 51, -1, -1, -1,
-1, -1, -1, -1, 59, 60, 61, 62, 63, -1,
-1, -1, 1103, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, 429, 430,
94, 95, -1, -1, -1, -1, 1127, 438, 439, 440,
-1, -1, -1, 444, -1, 446, 447, 448, -1, -1,
-1, -1, -1, 454, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, 130, 131, 132, 133,
-1, 135, 1163, 474, -1, -1, 140, 141, 142, 143,
144, 145, -1, 484, -1, 149, 487, -1, -1, -1,
-1, 1182, -1, -1, -1, -1, 151, -1, 499, -1,
-1, 0, -1, -1, -1, -1, -1, -1, -1, 8,
9, 10, -1, -1, 13, 14, 15, 1208, 17, -1,
-1, -1, -1, 524, -1, -1, 25, 26, 27, 28,
29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
-1, 40, 41, 42, 43, 44, -1, -1, -1, 550,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 564, -1, -1, -1, 568, -1, 68,
-1, -1, -1, -1, 575, -1, -1, -1, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
99, 100, -1, -1, 103, -1, -1, 106, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 120, -1, -1, 123, -1, 125, 126, 127, 128,
129, 130, 131, 132, 133, -1, 135, -1, 137, 138,
-1, 140, 141, 142, 143, 144, 145, 648, -1, -1,
149, 150, -1, -1, 0, -1, -1, 658, -1, -1,
-1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
-1, 17, -1, 674, -1, 676, -1, -1, -1, 25,
-1, 27, 28, 29, -1, -1, -1, -1, 689, -1,
691, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, 724, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, 99, 100, -1, 757, 103, -1, -1,
106, -1, -1, -1, -1, -1, -1, -1, -1, 770,
-1, -1, -1, -1, 120, 776, 777, 123, 779, 125,
-1, 127, 128, 129, 130, 131, 132, 133, -1, 135,
-1, 137, 138, -1, 140, 141, 142, 143, 144, 145,
-1, -1, -1, 149, 150, -1, -1, -1, -1, -1,
811, 812, -1, -1, 0, -1, 817, 818, 819, -1,
-1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
-1, 17, -1, -1, -1, -1, 837, -1, -1, 25,
26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
861, 862, -1, 864, 865, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, 908, 94, 95,
96, 97, -1, -1, 100, -1, -1, 103, 919, -1,
106, -1, -1, -1, -1, -1, -1, -1, 929, -1,
-1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
126, 127, 128, -1, 130, 131, 132, 133, -1, 135,
136, 137, 138, -1, 140, 141, 142, 143, 144, 145,
-1, -1, -1, 149, 0, 1, 967, 3, 4, 5,
6, 7, -1, 974, -1, 11, 12, -1, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, 990,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, 1005, -1, 1007, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 1102, 138, -1, 140, -1, -1, -1, -1, -1,
146, 147, -1, -1, -1, 151, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1, -1, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, -1,
-1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, 1168, -1, -1,
-1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 1185, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 138, 1, 140, 3, 4, 5,
6, 7, 146, 147, 10, 11, 12, 151, 14, 15,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 138, 1, 140, 3, 4, 5, 6, 7,
146, 147, 10, 11, 12, 151, -1, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
138, 1, 140, 3, 4, 5, 6, 7, 146, 147,
10, 11, 12, 151, -1, 15, 16, -1, 18, 19,
20, 21, 22, 23, 24, 25, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 138, 1,
140, 3, 4, 5, 6, 7, 146, 147, 10, 11,
12, 151, -1, 15, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 138, -1, 140, -1,
-1, -1, -1, -1, 146, 147, -1, -1, 1, 151,
3, 4, 5, 6, 7, -1, 9, 10, 11, 12,
-1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 138, 1, 140, 3, 4,
5, 6, 7, 146, 147, -1, 11, 12, 151, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, 103, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 138, 1, 140, 3, 4, 5, 6,
7, 146, 147, -1, 11, 12, 151, -1, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, 103, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 138, 1, 140, 3, 4, 5, 6, 7, 146,
147, -1, 11, 12, 151, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, 127, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
1, 140, 3, 4, 5, 6, 7, 146, 147, -1,
11, 12, 151, -1, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, 127, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 138, 1, 140,
3, 4, 5, 6, 7, 146, 147, 10, 11, 12,
151, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 138, 1, 140, 3, 4,
5, 6, 7, 146, 147, -1, 11, 12, 151, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, 120, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, -1, -1, 138, -1, 140, -1, -1, 8, 9,
10, 146, 147, 13, 14, 15, 151, 17, -1, -1,
-1, -1, -1, -1, -1, 25, -1, 27, 28, 29,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
-1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, 96, 97, -1, 99,
100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120, -1, -1, 123, -1, 125, -1, 127, 128, 129,
130, 131, 132, 133, -1, 135, -1, 137, 138, -1,
140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
150, -1, -1, -1, 8, 9, 10, -1, -1, 13,
14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
-1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
-1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, 96, 97, -1, -1, 100, -1, -1, 103,
-1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
-1, 125, 126, 127, 128, -1, 130, 131, 132, 133,
-1, 135, -1, 137, 138, -1, 140, 141, 142, 143,
144, 145, 0, -1, -1, 149, 150, -1, -1, -1,
8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
-1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
-1, -1, 100, -1, -1, 103, -1, -1, 106, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 120, -1, -1, 123, -1, 125, 126, 127,
128, -1, 130, 131, 132, 133, -1, 135, -1, 137,
138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
-1, 149, 150, -1, -1, -1, 8, 9, 10, -1,
-1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
-1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
-1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
-1, 103, -1, -1, 106, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
-1, 123, -1, 125, -1, 127, 128, 129, 130, 131,
132, 133, -1, 135, -1, 137, 138, -1, 140, 141,
142, 143, 144, 145, 0, -1, -1, 149, 150, -1,
-1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
-1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
-1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, -1, 100, -1, -1, 103, -1, -1,
106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, 123, -1, 125,
-1, 127, 128, -1, 130, 131, 132, 133, -1, 135,
-1, 137, 138, -1, 140, 141, 142, 143, 144, 145,
0, -1, -1, 149, 150, -1, -1, -1, 8, 9,
10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
-1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
-1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
100, -1, -1, 103, -1, -1, 106, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120, -1, -1, -1, -1, 125, 126, 127, 128, -1,
130, 131, 132, 133, -1, 135, 136, 137, 138, -1,
140, 141, 142, 143, 144, 145, 0, -1, -1, 149,
-1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
-1, 25, -1, 27, 28, -1, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
-1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
94, 95, 96, 97, -1, -1, 100, -1, -1, 103,
-1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
-1, 125, -1, 127, 128, -1, 130, 131, 132, 133,
-1, 135, 136, 137, 138, -1, 140, 141, 142, 143,
144, 145, 0, -1, -1, 149, -1, -1, -1, -1,
8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
-1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
-1, 99, 100, -1, -1, 103, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 120, -1, -1, -1, -1, 125, 126, 127,
128, 129, 130, 131, 132, 133, -1, 135, -1, -1,
138, -1, 140, 141, 142, 143, 144, 145, 0, -1,
-1, 149, -1, -1, -1, -1, 8, 9, 10, -1,
-1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
-1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
-1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
-1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
-1, 103, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
-1, -1, -1, 125, 126, 127, 128, 129, 130, 131,
132, 133, -1, 135, -1, -1, 138, -1, 140, 141,
142, 143, 144, 145, 0, -1, -1, 149, -1, -1,
-1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
-1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
96, 97, -1, 99, 100, -1, -1, 103, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
-1, 127, 128, 129, 130, 131, 132, 133, -1, 135,
-1, -1, 138, -1, 140, 141, 142, 143, 144, 145,
0, -1, -1, 149, -1, -1, -1, -1, 8, 9,
10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
-1, -1, -1, -1, -1, 25, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
-1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, 96, 97, -1, 99,
100, -1, -1, 103, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
120, -1, -1, -1, -1, 125, -1, 127, 128, 129,
130, 131, 132, 133, -1, 135, -1, -1, 138, -1,
140, 141, 142, 143, 144, 145, -1, -1, -1, 149,
3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
-1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 138, -1, 3, 4, 5,
6, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 138, -1, 3, 4, 5, 6, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 140, 3,
4, 5, -1, 7, 146, 147, -1, 11, 12, 151,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
-1, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, -1, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, 146, 147, 11, 12, -1, 151,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 138, -1, 140,
3, 4, 5, -1, 7, 146, 147, -1, 11, 12,
151, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 140, 3, 4,
5, -1, 7, 146, 147, -1, 11, 12, 151, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 136, -1, -1, -1, 3, 4, 5, -1, 7,
-1, 146, 147, 11, 12, -1, 151, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 3, 4, 5, -1, 7, -1, 146, 147,
11, 12, -1, 151, -1, 16, -1, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
-1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, 146, 147, 11, 12, -1,
151, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, 146, 147, 11, 12, -1, 151, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 3, 4, 5, -1, 7, -1, 146,
147, 11, 12, -1, 151, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, 146, 147, 11, 12,
-1, 151, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, 146, 147, 11, 12, -1, 151, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
146, 147, 11, 12, -1, 151, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 3, 4, 5, -1, 7, -1, 146, 147, 11,
12, -1, 151, -1, 16, -1, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
-1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, 125, 3, 4, 5, -1, 7, -1,
-1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, 151,
-1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
-1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, 151, 30, 31, 32, 33, 34, 35, 36,
-1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
-1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
-1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
-1, -1, -1, -1, 151, 30, 31, 32, 33, 34,
35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
-1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
-1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
-1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, 151, 30, 31, 32,
33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
-1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
-1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
-1, -1, 125, 3, 4, 5, -1, 7, -1, -1,
-1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, 151, -1,
30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
-1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
-1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
-1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
-1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, 151, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
-1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
-1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, 151, 30, 31, 32, 33, 34, 35,
36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
-1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
-1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, 151, 30, 31, 32, 33,
34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
-1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
-1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, -1, -1, 151, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
132, 133, 134, 135, 136, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 130, 131, 132, 133, 134, 135, -1,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, -1, 56, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, 111,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 130, 131,
132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
47, 48, 49, 50, 51, 52, 53, -1, -1, 56,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 130, 131, 132, 133, 134, 135, -1,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, 33, 34, 35, 36, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
49, 50, 51, 52, -1, -1, -1, 56, -1, 58,
59, 60, 61, 62, 63, -1, -1, -1, 130, 131,
132, 133, 134, 135, -1, -1, -1, -1, 77, 141,
142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
-1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
-1, -1, 101, -1, -1, 104, 105, -1, 107, 108,
-1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 135, 49, 50, 51,
52, -1, -1, -1, 56, -1, -1, 59, 60, 61,
62, 63, 151, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
-1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
-1, -1, 104, 105, -1, 107, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, 33, 34,
35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 135, 49, 50, 51, 52, 140, -1,
-1, 56, -1, -1, 59, 60, 61, 62, 63, 151,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
-1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
115, 116, 117, 118, -1, 33, 34, 35, 36, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
135, 49, 50, 51, 52, -1, -1, -1, 56, -1,
-1, 59, 60, 61, 62, 63, 151, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
98, -1, -1, 101, -1, -1, 104, 105, -1, 107,
-1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
118, -1, 33, 34, 35, 36, -1, -1, -1, -1,
-1, 44, -1, -1, -1, -1, -1, 135, 49, 50,
51, 52, -1, -1, -1, 56, -1, -1, 59, 60,
61, 62, 63, 151, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, -1, -1, 90,
91, 94, 95, -1, -1, -1, -1, 98, -1, -1,
101, -1, -1, 104, 105, -1, -1, -1, -1, 110,
111, 112, 113, 114, 115, 116, 117, 118, 44, -1,
-1, -1, -1, -1, -1, -1, -1, 130, 131, 132,
133, -1, 135, -1, 135, -1, -1, -1, 141, 142,
143, 144, 145, 44, -1, -1, 149, -1, -1, -1,
151, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
-1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
-1, -1, -1, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 130, 131, 132, 133, -1, 135,
-1, -1, -1, -1, -1, 141, 142, 143, 144, 145,
-1, -1, -1, 149, -1, -1, -1, -1, -1, 130,
131, 132, 133, -1, 135, 52, 53, -1, -1, 56,
141, 142, 143, 144, 145, -1, -1, -1, 149, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
-1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
-1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
-1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 52, 53, -1, -1, 56, 130, 131,
132, 133, 134, 135, 136, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, 75, 76, 77, 78,
79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
-1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 52, 53, -1, -1,
56, 130, 131, 132, 133, 134, 135, 136, -1, -1,
-1, -1, 141, 142, 143, 144, 145, 146, 147, 75,
76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
53, -1, -1, 56, 130, 131, 132, 133, 134, 135,
136, -1, -1, -1, -1, 141, 142, 143, 144, 145,
146, 147, 75, 76, 77, 78, 79, 80, 81, 82,
83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 52, 53, -1, -1, 56, 130, 131, 132,
133, 134, 135, 136, -1, -1, -1, -1, 141, 142,
143, 144, 145, 146, 147, 75, 76, 77, 78, 79,
80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
-1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
130, 131, 132, 133, 134, 135, 136, -1, -1, -1,
-1, 141, 142, 143, 144, 145, 146, 147, 75, 76,
77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
-1, -1, 56, 130, 131, 132, 133, 134, 135, 136,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
147, 75, 76, 77, 78, 79, 80, 81, 82, 83,
-1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 52, 53, -1, -1, 56, 130, 131, 132, 133,
134, 135, 136, -1, -1, -1, -1, 141, 142, 143,
144, 145, 146, 147, 75, 76, 77, 78, 79, 80,
81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
-1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 52, 53, -1, -1, 56, 130,
131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
141, 142, 143, 144, 145, 146, 147, 75, 76, 77,
78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
-1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
-1, 56, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
-1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
52, 53, -1, -1, 56, 130, 131, 132, 133, 134,
135, 136, -1, -1, -1, -1, 141, 142, 143, 144,
145, 146, 147, 75, 76, 77, 78, 79, 80, 81,
82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 107, 108, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
-1, -1, -1, -1, 94, 95, -1, -1, 130, 131,
132, 133, 134, 135, -1, -1, -1, -1, -1, 141,
142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
130, 131, 132, 133, -1, 135, -1, -1, -1, -1,
-1, 141, 142, 143, 144, 145, -1, -1, -1, 149,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, -1, -1, -1, -1, 94, 95, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 130, 131, 132, 133, -1, 135, -1,
-1, -1, -1, -1, 141, 142, 143, 144, 145 ];
#[allow(non_upper_case_globals)]
const yystos_: &'static [i32] = &[ 0, 154, 155, 0, 1, 3, 4, 5, 6, 7,
11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
112, 113, 114, 115, 116, 117, 118, 146, 147, 151,
156, 157, 158, 165, 167, 169, 173, 174, 179, 180,
183, 184, 185, 187, 188, 189, 191, 192, 201, 203,
218, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 246, 266, 275, 276, 324, 325, 326, 327,
328, 329, 330, 333, 335, 336, 350, 351, 353, 354,
355, 356, 357, 358, 359, 360, 398, 412, 158, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
130, 131, 132, 133, 134, 135, 141, 142, 143, 144,
145, 146, 147, 195, 196, 197, 199, 200, 350, 39,
58, 98, 101, 107, 108, 109, 112, 147, 184, 192,
201, 204, 210, 213, 215, 227, 356, 357, 359, 360,
396, 397, 210, 136, 211, 212, 136, 207, 211, 136,
140, 405, 54, 196, 405, 126, 159, 126, 21, 22,
31, 32, 183, 201, 227, 246, 201, 201, 201, 56,
1, 47, 101, 161, 162, 163, 165, 186, 187, 412,
165, 220, 205, 215, 396, 412, 204, 395, 396, 412,
46, 98, 125, 151, 173, 174, 191, 218, 227, 356,
357, 360, 267, 54, 55, 57, 195, 339, 352, 339,
340, 341, 139, 139, 139, 139, 201, 179, 201, 355,
138, 140, 404, 410, 411, 40, 41, 42, 43, 44,
37, 38, 136, 363, 364, 365, 366, 412, 363, 365,
26, 126, 207, 211, 238, 277, 28, 239, 273, 129,
125, 101, 107, 188, 129, 25, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 94,
95, 100, 130, 131, 132, 133, 135, 141, 142, 143,
144, 145, 149, 202, 202, 68, 96, 97, 128, 402,
219, 169, 176, 176, 177, 178, 177, 176, 404, 411,
98, 185, 192, 227, 251, 356, 357, 360, 52, 56,
94, 98, 193, 194, 227, 356, 357, 360, 194, 33,
34, 35, 36, 49, 50, 51, 52, 56, 136, 172,
195, 358, 393, 210, 97, 402, 403, 277, 327, 99,
99, 125, 204, 56, 204, 204, 204, 339, 129, 100,
125, 214, 412, 97, 128, 402, 99, 99, 125, 214,
210, 405, 406, 210, 91, 209, 210, 215, 370, 396,
412, 169, 406, 169, 54, 64, 65, 166, 136, 201,
156, 161, 97, 402, 99, 164, 186, 103, 404, 411,
406, 221, 406, 137, 125, 140, 409, 125, 409, 127,
409, 405, 56, 188, 190, 355, 364, 125, 97, 128,
402, 52, 54, 55, 56, 57, 58, 77, 101, 107,
108, 109, 131, 136, 143, 256, 269, 367, 369, 371,
372, 373, 374, 375, 376, 377, 380, 381, 382, 383,
384, 387, 388, 389, 390, 391, 66, 119, 121, 122,
342, 119, 119, 342, 67, 342, 331, 337, 334, 338,
77, 138, 158, 176, 176, 176, 176, 165, 169, 169,
91, 369, 370, 375, 129, 160, 161, 369, 129, 160,
278, 106, 181, 279, 274, 107, 179, 204, 215, 216,
217, 186, 125, 191, 125, 167, 168, 179, 192, 201,
204, 206, 217, 227, 360, 171, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 170,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 52, 53, 56, 199, 207, 399, 400, 209, 215,
52, 53, 56, 199, 207, 399, 160, 13, 247, 410,
247, 161, 176, 161, 404, 223, 56, 97, 128, 402,
25, 169, 52, 56, 193, 133, 361, 97, 128, 402,
226, 394, 68, 97, 401, 52, 56, 399, 168, 201,
206, 168, 206, 198, 124, 204, 107, 204, 213, 396,
52, 56, 209, 52, 56, 397, 406, 103, 406, 125,
406, 125, 406, 196, 169, 127, 127, 399, 399, 206,
159, 406, 163, 406, 396, 125, 190, 52, 56, 209,
52, 56, 101, 107, 252, 253, 254, 255, 372, 369,
125, 392, 412, 268, 129, 125, 368, 204, 125, 392,
34, 52, 125, 368, 52, 125, 368, 52, 344, 343,
119, 332, 342, 66, 119, 119, 332, 66, 119, 201,
406, 406, 125, 201, 10, 245, 8, 240, 320, 412,
410, 201, 245, 280, 281, 182, 282, 283, 282, 204,
125, 44, 406, 190, 125, 44, 129, 44, 97, 128,
402, 52, 56, 90, 91, 98, 101, 104, 105, 135,
266, 293, 294, 295, 298, 315, 316, 317, 318, 319,
324, 325, 328, 329, 330, 333, 335, 336, 357, 293,
405, 99, 99, 207, 211, 405, 407, 125, 99, 99,
207, 208, 211, 412, 245, 161, 13, 161, 245, 27,
248, 410, 245, 25, 222, 287, 17, 242, 285, 52,
56, 209, 52, 56, 177, 225, 362, 224, 52, 56,
193, 209, 160, 169, 175, 208, 211, 196, 204, 204,
214, 99, 99, 407, 99, 99, 370, 396, 406, 409,
188, 407, 254, 372, 125, 406, 125, 263, 405, 391,
29, 123, 270, 204, 367, 374, 387, 389, 377, 381,
383, 375, 384, 389, 373, 375, 345, 54, 55, 57,
349, 360, 139, 342, 139, 139, 139, 370, 44, 204,
217, 321, 412, 9, 15, 241, 243, 323, 412, 44,
127, 130, 261, 262, 412, 280, 245, 261, 245, 107,
204, 165, 190, 165, 201, 52, 56, 209, 52, 56,
316, 316, 56, 193, 300, 107, 293, 301, 302, 303,
304, 305, 307, 407, 299, 405, 408, 52, 100, 130,
88, 89, 97, 128, 136, 296, 297, 150, 168, 206,
168, 206, 181, 137, 99, 168, 206, 168, 206, 181,
14, 243, 244, 249, 250, 412, 250, 288, 285, 245,
107, 204, 284, 245, 407, 161, 410, 176, 160, 407,
245, 406, 172, 277, 273, 99, 406, 125, 406, 252,
255, 253, 103, 138, 272, 271, 125, 368, 125, 368,
392, 125, 368, 125, 368, 368, 346, 406, 201, 100,
322, 412, 161, 161, 201, 256, 257, 260, 263, 373,
375, 376, 378, 379, 385, 386, 389, 391, 161, 127,
160, 204, 407, 293, 52, 407, 107, 293, 307, 407,
125, 125, 58, 112, 308, 309, 310, 311, 312, 313,
314, 381, 127, 317, 298, 316, 316, 193, 407, 406,
112, 301, 304, 308, 301, 304, 308, 201, 168, 206,
161, 176, 245, 245, 291, 292, 293, 303, 304, 308,
245, 204, 125, 247, 245, 160, 410, 245, 125, 125,
52, 264, 265, 371, 160, 161, 375, 389, 375, 375,
347, 98, 192, 227, 356, 357, 360, 247, 323, 392,
263, 130, 129, 125, 258, 259, 98, 227, 125, 392,
125, 258, 125, 258, 406, 52, 125, 125, 306, 307,
339, 408, 125, 293, 34, 52, 339, 406, 406, 406,
407, 407, 407, 247, 247, 40, 41, 125, 107, 204,
161, 245, 253, 125, 405, 245, 127, 368, 125, 368,
368, 368, 348, 56, 97, 128, 402, 161, 130, 227,
257, 386, 389, 56, 97, 378, 383, 375, 385, 389,
375, 125, 306, 125, 124, 310, 314, 161, 289, 176,
176, 301, 305, 204, 250, 285, 286, 265, 375, 161,
52, 56, 209, 52, 56, 320, 125, 258, 125, 258,
52, 56, 392, 125, 258, 125, 258, 258, 306, 125,
305, 307, 249, 161, 125, 368, 120, 407, 375, 389,
375, 375, 250, 287, 290, 306, 258, 125, 258, 258,
258, 375, 258 ];
#[allow(non_upper_case_globals)]
const yyr1_: &'static [i32] = &[ 0, 153, 155, 154, 156, 157, 157, 157, 157, 158,
158, 159, 160, 160, 161, 162, 162, 162, 162, 163,
164, 163, 166, 165, 165, 165, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
167, 167, 167, 167, 167, 167, 167, 167, 168, 168,
168, 169, 169, 169, 169, 169, 170, 169, 171, 169,
169, 172, 173, 175, 174, 176, 178, 177, 179, 179,
180, 180, 182, 181, 183, 184, 184, 184, 184, 184,
184, 184, 184, 184, 184, 184, 185, 185, 186, 186,
187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
188, 188, 189, 189, 190, 190, 191, 191, 191, 191,
191, 191, 191, 191, 191, 192, 192, 192, 192, 192,
192, 192, 192, 192, 193, 193, 194, 194, 194, 195,
195, 195, 195, 195, 196, 196, 197, 198, 197, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 199, 199, 199, 199, 199, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 201, 201, 201, 202, 202, 202,
202, 203, 203, 204, 205, 205, 205, 205, 206, 206,
207, 207, 207, 208, 208, 209, 209, 209, 209, 209,
210, 210, 210, 210, 210, 212, 211, 213, 214, 214,
215, 215, 215, 215, 216, 216, 217, 217, 217, 218,
218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
219, 218, 220, 218, 221, 218, 218, 218, 218, 218,
218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
218, 218, 218, 218, 218, 218, 222, 218, 223, 218,
218, 218, 224, 218, 225, 218, 226, 218, 218, 218,
218, 218, 218, 218, 227, 228, 229, 230, 231, 232,
233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
243, 244, 245, 246, 247, 247, 247, 248, 248, 249,
249, 250, 250, 251, 251, 252, 252, 253, 253, 254,
254, 254, 254, 254, 255, 255, 256, 256, 257, 257,
257, 257, 258, 258, 259, 260, 260, 260, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
261, 261, 262, 262, 263, 263, 264, 264, 265, 265,
267, 268, 266, 269, 269, 271, 270, 272, 270, 274,
273, 275, 275, 275, 275, 276, 276, 276, 276, 276,
276, 276, 276, 276, 278, 277, 279, 277, 281, 280,
283, 282, 284, 284, 284, 284, 285, 286, 286, 288,
289, 287, 290, 290, 291, 291, 291, 292, 292, 292,
292, 292, 292, 293, 294, 294, 295, 295, 296, 297,
298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
298, 298, 299, 298, 298, 300, 298, 301, 301, 301,
301, 301, 301, 301, 301, 302, 302, 303, 303, 304,
305, 305, 306, 306, 307, 308, 308, 308, 308, 309,
309, 310, 310, 311, 311, 312, 312, 313, 314, 314,
315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
317, 318, 319, 319, 319, 320, 320, 321, 321, 321,
322, 322, 323, 323, 324, 324, 325, 326, 326, 326,
327, 328, 329, 330, 331, 331, 332, 332, 333, 334,
334, 335, 336, 337, 337, 338, 338, 339, 339, 340,
340, 341, 341, 342, 343, 342, 344, 345, 346, 347,
348, 342, 349, 349, 349, 349, 350, 350, 351, 352,
352, 352, 352, 353, 354, 354, 355, 355, 355, 355,
356, 356, 356, 356, 356, 357, 357, 357, 357, 357,
357, 357, 358, 358, 359, 359, 360, 360, 362, 361,
361, 363, 363, 364, 364, 364, 365, 366, 365, 367,
367, 367, 367, 368, 368, 369, 369, 369, 369, 369,
369, 369, 369, 369, 369, 369, 369, 369, 369, 369,
370, 371, 371, 371, 371, 372, 372, 373, 374, 374,
375, 375, 376, 377, 377, 378, 378, 379, 379, 380,
380, 381, 381, 382, 383, 383, 384, 385, 386, 386,
387, 387, 388, 388, 389, 389, 390, 390, 391, 392,
392, 393, 394, 393, 395, 395, 396, 396, 397, 397,
397, 397, 398, 398, 398, 399, 399, 399, 399, 400,
400, 400, 401, 401, 402, 402, 403, 403, 404, 404,
405, 405, 406, 407, 408, 409, 409, 409, 410, 410,
411, 411, 412 ];
#[allow(non_upper_case_globals)]
const yyr2_: &'static [i32] = &[ 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
2, 3, 5, 3, 2, 1, 1, 3, 1, 1,
0, 3, 0, 4, 3, 3, 3, 2, 3, 3,
3, 3, 3, 4, 1, 3, 3, 5, 3, 1,
3, 3, 6, 5, 5, 5, 5, 3, 1, 3,
1, 1, 3, 3, 3, 2, 0, 4, 0, 4,
1, 1, 2, 0, 5, 1, 0, 3, 1, 1,
1, 4, 0, 4, 1, 2, 3, 4, 5, 4,
5, 2, 2, 2, 2, 2, 1, 3, 1, 3,
1, 2, 3, 5, 2, 4, 2, 4, 1, 3,
1, 3, 2, 3, 1, 3, 1, 1, 4, 3,
3, 3, 3, 2, 1, 1, 1, 4, 3, 3,
3, 3, 2, 1, 1, 1, 2, 1, 3, 1,
1, 1, 1, 1, 1, 1, 1, 0, 4, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 3, 6, 5, 5, 5, 5, 4, 3, 3,
3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
3, 4, 2, 2, 3, 3, 3, 3, 1, 3,
3, 3, 3, 3, 2, 2, 3, 3, 3, 3,
3, 6, 4, 6, 4, 6, 1, 1, 1, 1,
1, 3, 3, 1, 1, 2, 4, 2, 1, 3,
3, 5, 3, 1, 1, 1, 1, 2, 4, 2,
1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
1, 2, 3, 4, 1, 1, 3, 4, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 4, 0, 3, 0, 4, 3, 3, 2, 3,
3, 1, 4, 3, 1, 5, 4, 3, 2, 1,
2, 1, 6, 6, 4, 4, 0, 6, 0, 5,
5, 6, 0, 6, 0, 7, 0, 5, 4, 4,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
5, 1, 2, 1, 1, 1, 3, 1, 3, 1,
3, 5, 1, 3, 2, 1, 1, 1, 4, 2,
2, 1, 2, 0, 1, 6, 8, 4, 6, 4,
2, 6, 2, 4, 6, 2, 4, 2, 4, 1,
1, 1, 3, 4, 1, 4, 1, 3, 1, 1,
0, 0, 5, 4, 1, 0, 4, 0, 4, 0,
4, 2, 4, 5, 5, 2, 4, 4, 3, 3,
3, 2, 1, 4, 0, 4, 0, 4, 0, 3,
0, 3, 1, 2, 3, 4, 5, 1, 1, 0,
0, 7, 1, 1, 1, 3, 3, 1, 2, 3,
1, 1, 1, 1, 3, 1, 3, 1, 1, 1,
1, 4, 4, 4, 3, 4, 4, 4, 3, 3,
3, 2, 0, 4, 2, 0, 4, 1, 1, 2,
3, 5, 2, 4, 1, 2, 3, 1, 3, 5,
2, 1, 1, 3, 1, 3, 1, 2, 1, 1,
3, 2, 1, 1, 3, 2, 1, 2, 1, 1,
1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 3, 1, 6, 1, 1, 1, 1,
2, 1, 2, 1, 1, 1, 1, 1, 1, 2,
3, 3, 3, 4, 0, 3, 1, 2, 4, 0,
3, 4, 4, 0, 3, 0, 3, 0, 2, 0,
2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
0, 8, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 1, 3, 1, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
0, 1, 1, 3, 5, 3, 1, 0, 3, 4,
2, 2, 1, 2, 0, 6, 8, 4, 6, 4,
6, 2, 4, 6, 2, 4, 2, 4, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
1, 3, 1, 2, 1, 2, 1, 1, 3, 1,
3, 1, 1, 2, 2, 1, 3, 3, 1, 3,
1, 3, 1, 1, 2, 1, 1, 1, 2, 2,
1, 1, 0, 4, 1, 2, 1, 3, 3, 2,
4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
0, 1, 2, 2, 2, 0, 1, 1, 1, 1,
1, 2, 0 ];
#[allow(non_upper_case_globals)]
const yyrline_: &'static [i32] = &[ 0, 341, 341, 341, 359, 368, 372, 376, 382, 388,
392, 401, 413, 436, 455, 464, 468, 472, 478, 484,
489, 488, 499, 498, 509, 519, 529, 533, 542, 553,
564, 575, 586, 606, 621, 625, 638, 655, 684, 694,
700, 710, 720, 735, 752, 769, 786, 803, 815, 821,
844, 850, 854, 865, 876, 887, 899, 898, 927, 926,
954, 960, 971, 985, 984, 1005, 1013, 1013, 1031, 1035,
1041, 1045, 1061, 1060, 1080, 1086, 1099, 1121, 1134, 1156,
1169, 1191, 1203, 1215, 1227, 1239, 1253, 1263, 1275, 1285,
1302, 1306, 1312, 1318, 1330, 1336, 1348, 1352, 1364, 1368,
1382, 1386, 1398, 1402, 1410, 1414, 1422, 1428, 1434, 1445,
1460, 1470, 1485, 1497, 1508, 1518, 1524, 1530, 1541, 1551,
1561, 1571, 1583, 1594, 1604, 1608, 1614, 1620, 1626, 1638,
1642, 1646, 1650, 1655, 1661, 1667, 1673, 1678, 1677, 1690,
1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1722,
1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732,
1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742,
1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752,
1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762,
1765, 1775, 1785, 1800, 1817, 1834, 1851, 1868, 1884, 1894,
1910, 1926, 1939, 1952, 1965, 1978, 1984, 1990, 1996, 2002,
2008, 2014, 2027, 2036, 2045, 2051, 2057, 2063, 2069, 2073,
2079, 2085, 2091, 2097, 2107, 2118, 2127, 2133, 2139, 2150,
2161, 2173, 2188, 2209, 2246, 2269, 2308, 2314, 2318, 2322,
2326, 2332, 2342, 2359, 2367, 2371, 2375, 2383, 2393, 2399,
2424, 2434, 2451, 2467, 2477, 2490, 2494, 2498, 2502, 2508,
2518, 2524, 2531, 2543, 2555, 2561, 2561, 2589, 2600, 2604,
2610, 2614, 2622, 2628, 2636, 2642, 2648, 2654, 2662, 2672,
2676, 2680, 2684, 2688, 2692, 2696, 2700, 2704, 2708, 2712,
2726, 2725, 2739, 2739, 2749, 2749, 2759, 2769, 2779, 2785,
2795, 2805, 2817, 2829, 2841, 2853, 2865, 2876, 2887, 2909,
2913, 2926, 2930, 2949, 2968, 2984, 3001, 3000, 3024, 3023,
3046, 3064, 3082, 3081, 3115, 3114, 3142, 3141, 3168, 3191,
3216, 3228, 3240, 3252, 3266, 3274, 3280, 3287, 3293, 3299,
3305, 3311, 3317, 3323, 3329, 3335, 3341, 3347, 3353, 3359,
3365, 3371, 3378, 3384, 3393, 3397, 3401, 3407, 3411, 3417,
3422, 3449, 3453, 3461, 3465, 3471, 3477, 3489, 3493, 3501,
3505, 3511, 3523, 3527, 3541, 3547, 3555, 3559, 3565, 3577,
3584, 3591, 3598, 3603, 3608, 3614, 3628, 3644, 3656, 3670,
3682, 3686, 3700, 3715, 3727, 3741, 3748, 3760, 3767, 3779,
3785, 3791, 3798, 3811, 3830, 3834, 3840, 3844, 3852, 3860,
3867, 3875, 3866, 3908, 3923, 3936, 3935, 3952, 3951, 3970,
3969, 3989, 4002, 4016, 4039, 4063, 4078, 4093, 4108, 4121,
4136, 4151, 4165, 4177, 4191, 4190, 4210, 4209, 4230, 4230,
4255, 4255, 4279, 4283, 4291, 4297, 4305, 4320, 4324, 4332,
4342, 4331, 4370, 4374, 4381, 4385, 4390, 4397, 4401, 4412,
4424, 4430, 4436, 4444, 4450, 4460, 4466, 4476, 4482, 4489,
4496, 4500, 4514, 4527, 4540, 4554, 4568, 4581, 4594, 4608,
4620, 4630, 4642, 4641, 4659, 4670, 4669, 4687, 4696, 4700,
4712, 4726, 4743, 4757, 4773, 4784, 4793, 4807, 4811, 4823,
4837, 4843, 4851, 4855, 4863, 4869, 4876, 4880, 4884, 4890,
4894, 4902, 4911, 4921, 4927, 4935, 4943, 4953, 4963, 4967,
4973, 4977, 4993, 5009, 5022, 5035, 5039, 5043, 5047, 5060,
5075, 5079, 5083, 5087, 5091, 5095, 5099, 5103, 5107, 5113,
5119, 5127, 5143, 5149, 5159, 5165, 5194, 5200, 5204, 5208,
5214, 5220, 5226, 5232, 5238, 5242, 5248, 5260, 5268, 5272,
5280, 5290, 5300, 5315, 5328, 5332, 5342, 5346, 5354, 5367,
5370, 5380, 5392, 5405, 5408, 5419, 5422, 5433, 5436, 5445,
5448, 5457, 5460, 5468, 5475, 5474, 5485, 5490, 5493, 5497,
5501, 5484, 5525, 5529, 5534, 5538, 5544, 5545, 5548, 5557,
5558, 5559, 5560, 5563, 5572, 5576, 5587, 5593, 5599, 5605,
5613, 5619, 5625, 5631, 5637, 5645, 5651, 5657, 5663, 5669,
5675, 5681, 5689, 5747, 5755, 5761, 5769, 5775, 5784, 5783,
5798, 5803, 5807, 5813, 5822, 5839, 5853, 5857, 5857, 5873,
5885, 5892, 5899, 5905, 5910, 5915, 5929, 5945, 5957, 5971,
5983, 5997, 6004, 6016, 6030, 6037, 6049, 6056, 6068, 6073,
6078, 6084, 6088, 6092, 6096, 6102, 6106, 6116, 6125, 6132,
6144, 6148, 6157, 6173, 6180, 6189, 6195, 6203, 6207, 6216,
6220, 6228, 6232, 6238, 6248, 6258, 6268, 6281, 6294, 6298,
6306, 6310, 6318, 6322, 6328, 6339, 6349, 6353, 6359, 6369,
6373, 6379, 6385, 6385, 6415, 6419, 6425, 6429, 6437, 6447,
6456, 6467, 6475, 6479, 6483, 6489, 6493, 6497, 6501, 6507,
6511, 6515, 6521, 6525, 6531, 6535, 6541, 6545, 6552, 6555,
6562, 6565, 6571, 6577, 6583, 6590, 6593, 6597, 6603, 6607,
6613, 6617, 6624 ];
fn yy_reduce_print(&self, yyrule: i32, yystack: &YYStack) {
if !self.yydebug {
return;
}
let yylno = Self::yyrline_[i32_to_usize(yyrule)];
let yynrhs = Self::yyr2_[i32_to_usize(yyrule)];
self.yycdebug(&format!("Reducing stack by rule {} (line {}):", yyrule - 1, yylno));
for yyi in 0..yynrhs {
let state: usize = i32_to_usize(yystack.state_at(i32_to_usize(yynrhs - (yyi + 1))));
self.yy_symbol_print(
&format!(" ${} =", yyi + 1),
SymbolKind::get(Self::yystos_[state]),
yystack.borrow_value_at(i32_to_usize(yynrhs - (yyi + 1))),
yystack.location_at(i32_to_usize(yynrhs - (yyi + 1)))
);
}
}
fn yytranslate_(t: i32) -> &'static SymbolKind
{
let code_max: i32 = 407;
if t <= 0 {
SymbolKind::get(0)
} else if t <= code_max {
let t = i32_to_usize(t);
SymbolKind::get(Self::yytranslate_table_[t])
} else {
SymbolKind::get(2)
}
}
#[allow(non_upper_case_globals)]
const yytranslate_table_: &'static [i32] = &[ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152 ];
const YYLAST_: i32 = 14528;
const YYEMPTY_: i32 = -2;
const YYFINAL_: i32 = 3;
const YYNTOKENS_: i32 = 153;
}
impl Parser {
pub fn new<TInput>(input: TInput, options: ParserOptions) -> Self
where
TInput: Into<List<u8>>
{
let ParserOptions {
buffer_name,
debug,
decoder,
token_rewriter,
record_tokens,
} = options;
let context = ParserContext::new();
let current_arg_stack = CurrentArgStack::new();
let max_numparam_stack = MaxNumparamStack::new();
let pattern_variables = VariablesStack::new();
let pattern_hash_keys = VariablesStack::new();
let static_env = StaticEnvironment::new();
let diagnostics = Diagnostics::new();
let input: List<u8> = input.into();
let buffer_name: StringPtr = buffer_name.into();
let decoder: MaybePtr<CustomDecoder> = decoder.into();
let mut lexer = Lexer::new(input, buffer_name, decoder);
lexer.context = context.clone();
lexer.static_env = static_env.clone();
lexer.diagnostics = diagnostics.clone();
lexer.set_debug(debug);
let builder = Builder::new(
static_env.clone(),
context.clone(),
current_arg_stack.clone(),
max_numparam_stack.clone(),
pattern_variables.clone(),
pattern_hash_keys.clone(),
diagnostics.clone(),
);
let last_token_type = 0;
Self {
yy_error_verbose: true,
yynerrs: 0,
yydebug: debug_level::is_debug_parser(debug),
yyerrstatus_: 0,
result: MaybePtr::none(),
builder,
context,
current_arg_stack,
max_numparam_stack,
pattern_variables,
pattern_hash_keys,
static_env,
last_token_type,
tokens: List::new(),
diagnostics,
yylexer: lexer,
token_rewriter,
record_tokens,
}
}
pub fn do_parse(mut self) -> ParserResult {
self.parse();
ParserResult {
ast: self.result,
tokens: self.tokens,
diagnostics: self.diagnostics.take_inner(),
comments: self.yylexer.comments,
magic_comments: self.yylexer.magic_comments,
input: self.yylexer.buffer.input,
}
}
#[doc(hidden)]
pub fn do_parse_with_state_validation(mut self) -> ParserResult {
self.parse();
self.assert_state_is_final();
ParserResult {
ast: self.result,
tokens: self.tokens,
diagnostics: self.diagnostics.take_inner(),
comments: self.yylexer.comments,
magic_comments: self.yylexer.magic_comments,
input: self.yylexer.buffer.input,
}
}
fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
let diagnostic = Diagnostic::new(
ErrorLevel::Warning,
message,
loc.clone().ptr(),
);
self.diagnostics.emit(diagnostic);
}
fn yylex(&mut self) -> Ptr<Token> {
self.yylexer.yylex()
}
fn next_token(&mut self) -> Ptr<Token> {
let mut token = self.yylex();
if let Some(token_rewriter) = self.token_rewriter.as_option() {
let (rewritten_token, token_action, lex_state_action) =
token_rewriter(token, self.yylexer.buffer.input.as_shared_bytes());
match lex_state_action {
LexStateAction::Set(new_state) => self.yylexer.lex_state.set(new_state),
LexStateAction::Keep => {}
}
match token_action {
RewriteAction::Drop => return self.next_token(),
RewriteAction::Keep => token = rewritten_token
}
}
self.last_token_type = token.token_type;
if self.record_tokens {
self.tokens.push(token.clone().unptr());
}
token
}
fn check_kwarg_name(&self, ident_t: &Token) -> Result<(), ()> {
let name = clone_value(&ident_t);
let first_char = name.chars().next().expect("kwarg name can't be empty");
if first_char.is_lowercase() || first_char == '_' {
Ok(())
} else {
let loc = ident_t.loc.clone();
self.diagnostics.emit(
Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::ConstArgument,
loc
)
);
Err(())
}
}
fn validate_endless_method_name(&mut self, name_t: &Token) -> Result<(), ()> {
let name = clone_value(&name_t);
if name.ends_with('=') {
self.yyerror(&name_t.loc, DiagnosticMessage::EndlessSetterDefinition).map(|_| ())
} else {
Ok(())
}
}
fn yyerror(&mut self, loc: &Loc, message: DiagnosticMessage) -> Result<i32, ()> {
self.yyerror1(
message,
loc.clone()
)
}
fn yyerror1(&mut self, message: DiagnosticMessage, loc: Loc) -> Result<i32, ()> {
let diagnostic = Diagnostic::new(ErrorLevel::Error, message, loc.ptr());
self.diagnostics.emit(diagnostic);
Err(())
}
fn report_syntax_error(&mut self, ctx: &Context) {
let id: usize = ctx.token().code().try_into().expect("failed to convert token code into i32, is it too big?");
let diagnostic = Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::UnexpectedToken { token_name: Lexer::TOKEN_NAMES[id].into() },
ctx.location().clone().ptr(),
);
self.diagnostics.emit(diagnostic);
}
fn warn_eol(&mut self, loc: &Loc, tok: &str) {
if self.yylexer.buffer.is_looking_at_eol() {
self.warn(loc, DiagnosticMessage::TokAtEolWithoutExpression { token_name: tok.into() });
}
}
fn value_expr(&self, node: &Node) -> Result<(), ()> {
self.builder.value_expr(node)
}
#[doc(hidden)]
fn assert_state_is_final(&self) {
assert!(self.yylexer.cmdarg.is_empty());
assert!(self.yylexer.cond.is_empty());
assert!(self.yylexer.paren_nest == 0);
assert!(self.static_env.is_empty());
assert!(self.context.is_empty());
assert!(self.max_numparam_stack.is_empty());
assert!(self.current_arg_stack.is_empty());
assert!(self.pattern_variables.is_empty());
assert!(self.pattern_hash_keys.is_empty());
}
}