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::source::Range;
use crate::{Diagnostic, DiagnosticMessage, ErrorLevel};
use crate::error::Diagnostics;
use crate::token_rewriter::{LexStateAction, RewriteAction, TokenRewriter};
#[derive(Debug)]
pub struct Parser {
pub yylexer: Lexer,
#[allow(dead_code)]
yy_error_verbose: bool,
yynerrs: i32,
pub yydebug: bool,
yyerrstatus_: i32,
result: Option<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: Vec<Token>,
diagnostics: Diagnostics,
token_rewriter: Option<Box<dyn 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(Debug, Clone, PartialEq)]
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 = "3.7.3";
}
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 =>
{
self.result = MaybeNode::from(yystack.owned_value_at(0));
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![ Node::from(yystack.owned_value_at(0)) ] );
},
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,
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(clone_value(&op_t)));
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("tBDOT3".to_owned()));
}
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("tBDOT3".to_owned()));
}
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(name));
}
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;
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()
.expect("expected numparam stack to have element") > 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.loc.clone();
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 = -1014;
const YYTABLE_NINF_: i32 = -763;
impl Parser {
#[allow(non_upper_case_globals)]
const yypact_: &'static [i32] = &[ -1014, 164, 4282, -1014, 7989, -1014, -1014, -1014, 12541, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, 8264, 8264, -1014, -1014,
-1014, 6984, 4132, -1014, -1014, -1014, -1014, 138, 12396, 98,
71, 242, -1014, -1014, -1014, 3972, 6692, -1014, -1014, 6108,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, 10595, 10595,
10595, 10595, 338, 5283, 8401, 8949, 9360, 11006, -1014, 12251,
-1014, -1014, -1014, 267, 272, 312, 332, 10595, 10732, 1293,
-1014, 344, -1014, 1187, -1014, 546, 234, 234, -1014, -1014,
103, 449, 376, -1014, 411, 11129, -1014, 426, 3502, 657,
360, 394, -1014, 10869, 10869, -1014, -1014, 9497, 11251, 11373,
11618, 12106, 8264, -1014, 815, 74, -1014, -1014, 452, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, 57, 309, -1014, 510, 544, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, 525, -1014, -1014, -1014, 516,
10595, 637, 5421, 10595, 10595, 10595, -1014, 10595, -1014, 573,
14369, 614, -1014, -1014, 595, 502, 148, 400, 628, 431,
613, -1014, -1014, 8126, -1014, 8264, 8538, -1014, -1014, 9635,
-1014, 10869, 967, -1014, 9773, 5559, -1014, 5697, -1014, -1014,
611, 619, 103, -1014, 538, -1014, 716, 14389, 14389, 636,
8401, -1014, 5283, 695, 344, -1014, 1187, 98, 675, -1014,
1187, 98, 676, 462, 543, -1014, 614, 698, 543, -1014,
98, 774, 11740, 1293, 684, 684, 708, -1014, 635, 719,
788, 845, 1230, -1014, -1014, -1014, -1014, 252, -1014, 558,
656, 322, -1014, -1014, -1014, -1014, -1014, -1014, -1014, 765,
-1014, -1014, -1014, -1014, 7715, 10869, 10869, 10869, 10869, 8401,
10869, 10869, 1575, 736, 738, 4444, 1713, -1014, 741, 4444,
-1014, -1014, -1014, 742, -1014, -1014, -1014, -1014, -1014, 9910,
-1014, 5283, 11495, 757, 9910, -1014, 10595, 10595, 10595, 10595,
10595, -1014, -1014, 10595, 10595, 10595, 10595, 10595, 10595, 10595,
10595, -1014, 10595, 10595, -1014, -1014, 10595, 10595, 10595, 10595,
10595, 10595, 10595, 10595, 10595, -1014, -1014, 13169, 8264, 13242,
4444, 546, 119, 119, 5835, 10869, 5835, 344, -1014, 754,
840, -1014, -1014, 882, 884, 112, 124, 129, 782, 809,
10869, 693, -1014, 787, 887, -1014, -1014, -1014, -1014, 75,
269, 290, 382, 406, 424, 448, 481, 547, -1014, -1014,
-1014, -1014, 568, -1014, -1014, -1014, 14264, -1014, -1014, 10732,
10732, -1014, -1014, 438, -1014, -1014, -1014, 629, 10595, 10595,
8675, -1014, -1014, 13315, 8264, 13388, 10595, 10595, 9086, -1014,
98, 804, -1014, -1014, 10595, 98, -1014, 803, 98, 806,
-1014, 81, -1014, -1014, -1014, -1014, -1014, 12541, 10869, 14369,
807, 821, 13315, 13388, 10595, 1187, 71, 98, -1014, -1014,
7852, 811, 98, -1014, -1014, 9223, -1014, -1014, 9360, -1014,
-1014, -1014, 818, 921, -1014, 832, -1014, -1014, 11740, 13461,
8264, 13534, -1014, -1014, -1014, -1014, -1014, -1014, -1014, 1584,
-1014, -1014, -1014, -1014, 1713, -1014, 844, -1014, -1014, -1014,
-1014, -1014, 842, -1014, 849, 10595, -1014, 852, 194, -1014,
-1014, -1014, 856, 935, 869, 938, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, 753, 44, 976,
189, 10595, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, 98, 98, 871, 10595, 992, 998, 344, 10595,
992, -1014, -1014, -1014, -1014, -1014, 10595, -1014, 883, 894,
981, -1014, 98, 11740, 895, -1014, -1014, -1014, 994, 910,
2420, -1014, -1014, -1014, 939, 472, 13010, 716, 4273, 4273,
4273, 4273, 4435, 2946, 4273, 4273, 14389, 14389, 274, 274,
13010, 1374, 615, 1374, 418, 418, 716, 716, 716, 14296,
1568, 1568, 7130, 6254, 7422, 6400, -1014, 619, -1014, 98,
898, 711, -1014, 905, -1014, -1014, 6838, 992, -1014, 4582,
1028, 4996, 992, 58, 992, 1019, 1031, 144, 13607, 8264,
13680, -1014, 546, -1014, 921, -1014, -1014, -1014, 13753, 8264,
13826, 4444, 10869, -1014, -1014, -1014, -1014, -1014, 3204, -1014,
3636, -1014, -1014, -1014, 12541, 10595, -1014, 10595, 614, -1014,
613, 3818, 6546, 98, 579, 587, -1014, -1014, -1014, -1014,
8812, -1014, 9086, -1014, -1014, 81, -1014, -1014, 619, 619,
-1014, -1014, 414, -1014, -1014, 543, 11740, 832, 492, 358,
98, 487, 493, 1584, 1117, -1014, 920, 98, 925, -1014,
98, 72, -1014, -1014, 128, 10595, 1713, -1014, -1014, 442,
-1014, -1014, -1014, 1713, -1014, -1014, 1771, -1014, -1014, -1014,
1131, -1014, 392, -1014, 914, -1014, -1014, 435, 915, -1014,
716, -1014, -1014, 1575, 13008, -1014, -1014, -1014, 10047, 709,
-1014, -1014, 13085, -1014, 924, 928, -1014, 992, 928, 992,
936, 10184, 8401, -1014, 832, 11740, 8401, 10732, 10595, 13899,
8264, 13972, -1014, -1014, 2068, 2068, 720, -1014, 12749, 232,
1013, -1014, 968, -1014, 941, -1014, -1014, 801, -1014, -1014,
405, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
968, 923, 10732, 10732, -1014, 742, 940, 975, 8675, 10732,
10732, -1014, -1014, 742, -1014, -1014, 889, -1014, 1071, -1014,
-1014, -1014, -1014, -1014, -1014, 1031, 992, -1014, 10321, 992,
136, 195, 98, 170, 177, 5835, 344, 10869, 4444, 865,
358, -1014, 98, 992, 81, 12686, 74, 449, -1014, -1014,
-1014, -1014, 10595, 10595, 638, 10595, 10595, 98, 963, -1014,
-1014, -1014, 594, 98, -1014, 1584, -1014, 1102, 987, 953,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, 971, 984, -1014,
1049, 844, 986, -1014, 993, -1014, 986, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, 98, 10595,
883, -1014, 1012, -1014, -1014, -1014, 5835, 5145, -1014, -1014,
10595, -1014, 1323, 5697, -1014, -1014, 1001, -1014, 4444, -1014,
10595, 1004, -1014, 832, -1014, 14369, 7276, 7568, 98, 702,
712, -1014, -1014, -1014, -1014, 13010, 1080, 59, 98, 12836,
-1014, 98, 1008, 1011, -1014, 534, 1016, -1014, -1014, 1095,
13010, 2068, 2068, 720, 489, 101, 3370, 3370, 10595, -1014,
-1014, -1014, -1014, -1014, -1014, 10732, -1014, -1014, -1014, -1014,
-1014, -1014, 5835, 10869, 992, -1014, -1014, 992, 3370, 992,
-1014, 10595, -1014, 45, -1014, 201, 992, 4444, 344, 992,
-1014, -1014, -1014, -1014, -1014, -1014, 10595, -1014, 9086, -1014,
-1014, 1026, 1027, -1014, 1196, 4444, 5697, 1713, -1014, 1771,
-1014, -1014, 1771, -1014, 1771, -1014, -1014, -1014, -1014, 14369,
11862, 119, -1014, -1014, 1144, 14369, 844, -1014, 98, 1033,
1032, 1040, 11984, -1014, 1042, -1014, 1043, 1054, -1014, -1014,
-1014, -1014, 1057, 715, 40, -1014, -1014, 54, 968, 1058,
-1014, 13010, -1014, -1014, -1014, 98, 1059, -1014, 13010, -1014,
-1014, -1014, 310, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, 98, 98, 98, 98, 98, 98, 14369, -1014,
-1014, -1014, 119, -1014, -1014, 119, 912, 87, -1014, -1014,
-1014, -1014, -1014, 10458, 4720, -1014, 992, -1014, -1014, 1102,
1102, -1014, 601, -1014, -1014, 992, 1072, 986, 1067, 986,
986, -1014, 1142, -1014, 959, 147, 158, 175, 4444, -1014,
-1014, 1075, -1014, 11984, 1713, -1014, -1014, 1150, 979, 442,
-1014, 1713, -1014, 1771, -1014, -1014, 1085, 13010, -1014, 1094,
-1014, 458, -1014, 534, 968, -1014, -1014, 705, -1014, -1014,
-1014, -1014, -1014, -1014, 4582, -1014, 10869, 10869, 12923, 10595,
-1014, 747, -1014, 1027, 1196, -1014, -1014, -1014, -1014, 1771,
-1014, -1014, -1014, 5973, 198, 14045, 8264, 14118, 998, -1014,
979, -1014, 1096, 1097, -1014, 14191, -1014, 844, 1099, -1014,
1108, 1099, 13010, 1110, 12923, -1014, -1014, -1014, 889, 4858,
-1014, -1014, -1014, 1111, -1014, -1014, -1014, -1014, -1014, 986,
1120, 79, 104, 98, 210, 214, -1014, 1713, -1014, 1771,
-1014, 1101, 1105, -1014, 1771, -1014, 1771, -1014, -1014, 1110,
13010, -1014, -1014, -1014, 645, 13010, -1014, -1014, 217, 1099,
1124, 1099, 1099, -1014, -1014, -1014, 1110, -1014, 1771, -1014,
-1014, -1014, 1099, -1014 ];
#[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,
0, 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, 18, 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] = &[ -1014, -1014, -1014, 997, -1014, 29, 769, -308, 6, -1014,
776, -1014, 62, -1014, -254, -285, 80, -1014, -1014, 403,
22, 27, -1014, -51, -82, -1014, 68, -1014, -166, -1014,
1123, -11, 1167, -127, 1, -75, -1014, -430, -31, 2361,
-377, 1166, -52, -20, -1014, -1014, 14, -1014, 3316, 1179,
-1014, 21, -1014, -399, 31, 604, -358, 192, -13, -1014,
-307, -207, 97, -1014, -310, 93, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, 764, -1014, -1014, -1014, -1014, -1014,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014, -1014,
514, -1014, 690, 1600, -380, -1014, 61, -791, -1014, -831,
-820, 562, 401, 70, 355, 298, -1014, -1014, 512, -1014,
-848, -1014, 107, 329, -1014, -1014, -1014, -1014, -1014, -1014,
436, -1014, -1014, -1014, -104, -1014, -1014, 517, -1014, 717,
-1014, -1014, -810, -1014, 50, -1014, -1014, -1014, -1014, -1014,
334, -1014, -1014, -1014, -1014, 345, -1014, -1014, -878, -1014,
320, -363, -1010, -1013, -899, -69, -1014, 156, -1014, -1014,
-1014, 157, -1014, -637, 357, -1014, -1014, 130, -1014, -1014,
278, 353, 1046, -1014, 1213, 1065, 1688, 1758, -1014, 777,
1900, -1014, 2147, 2408, -1014, -1014, -48, -1014, -1014, -170,
-1014, -1014, -1014, -1014, -1014, -1014, -1014, 8, -1014, -1014,
-1014, -1014, 9, 2146, -2, 1222, 2625, 2056, -1014, -1014,
1248, 682, -15, -1014, -198, 367, -221, -304, -958, -438,
-281, -666, -49, -334, 600, 191, -1014, -1014, -564, -1014,
-697, -668, -928, 199, -321, -1014, -587, -1014, 582, -492,
-1014, -1014, -1014, 53, -408, -1014, -350, -1014, -1014, -87,
-1014, -59, 34, 1000, 641, 271, -259, -58, 33, 26 ];
#[allow(non_upper_case_globals)]
const yydefgoto_: &'static [i32] = &[ -1, 1, 2, 70, 71, 72, 246, 566, 567, 264,
265, 476, 266, 467, 74, 587, 75, 610, 596, 419,
76, 77, 855, 382, 384, 385, 78, 79, 573, 766,
252, 81, 82, 267, 83, 84, 85, 495, 86, 219,
402, 403, 203, 204, 205, 674, 625, 207, 88, 373,
89, 221, 272, 592, 626, 822, 455, 456, 234, 235,
223, 441, 630, 580, 581, 90, 380, 271, 482, 835,
646, 848, 846, 661, 254, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 334, 337, 758, 916, 838,
982, 983, 756, 255, 639, 831, 984, 985, 394, 715,
716, 717, 718, 516, 1191, 1135, 1136, 1038, 923, 924,
878, 1112, 1113, 103, 292, 724, 517, 883, 1016, 1015,
338, 575, 104, 105, 335, 571, 574, 764, 765, 767,
768, 993, 839, 1217, 836, 988, 1209, 1255, 1095, 1096,
1058, 793, 794, 966, 967, 795, 955, 945, 948, 949,
950, 951, 952, 1149, 953, 1065, 1066, 1067, 1068, 1069,
1070, 1071, 796, 797, 798, 799, 800, 759, 912, 1031,
918, 106, 107, 108, 109, 110, 111, 112, 547, 742,
113, 549, 114, 115, 548, 550, 297, 300, 301, 541,
740, 739, 897, 1027, 1121, 1183, 901, 116, 117, 298,
118, 119, 120, 226, 227, 123, 228, 229, 657, 847,
323, 324, 325, 326, 885, 727, 519, 458, 520, 521,
895, 523, 524, 525, 526, 1043, 1044, 527, 528, 529,
530, 531, 1045, 1046, 532, 533, 534, 535, 536, 722,
422, 662, 277, 459, 231, 126, 698, 628, 665, 660,
426, 312, 451, 452, 817, 957, 487, 640, 389, 269 ];
#[allow(non_upper_case_globals)]
const yytable_: &'static [i32] = &[ 122, 427, 122, 641, 379, 218, 218, 296, 243, 238,
343, 522, 299, 313, 386, 489, 208, 425, 563, 491,
629, 570, 206, 449, 655, 989, 286, 627, 127, 636,
671, 673, 891, 128, 593, 730, 208, 987, 388, 313,
686, 522, 206, 383, 1010, 522, 387, 671, 673, 420,
1059, 122, 122, 237, 268, 290, 1114, 1012, 638, 263,
886, 241, 329, 244, 73, 893, 73, 333, 707, 230,
230, 719, 637, 206, 1039, 700, 668, 276, 309, 284,
686, 275, 279, 290, 285, 830, 683, 886, 1082, 1085,
586, 218, -119, 627, 518, 636, 396, 406, 406, 406,
330, 562, 327, 327, 314, 568, 1146, 284, 274, 278,
744, 332, 285, 224, 224, 206, 270, -121, 320, 321,
284, 284, 284, 699, 518, 285, 285, 285, 518, 330,
544, 546, 638, 679, 1203, 477, 307, -115, 445, 888,
959, 679, 710, -636, 669, 672, 894, 941, 942, -116,
287, 699, 273, 774, -123, 230, -644, 881, 1213, 959,
-115, -119, 1150, 745, 3, 890, 888, 473, 437, -122,
1103, -116, -636, 381, 381, 586, 586, 381, 287, 1147,
240, 512, -106, 310, -524, 311, -115, 959, -123, 1239,
1131, 287, 287, 287, 1241, -118, 310, 245, 311, 224,
331, 501, -120, 513, -750, 479, 313, 494, 222, 232,
122, -122, 1168, 1199, 582, -735, 1114, -119, 263, -119,
-121, 240, 218, -118, 218, 218, -117, -120, 731, 331,
-117, 432, 1256, 522, 434, 435, 436, -106, 240, 236,
-736, 240, -121, 122, -121, 122, 732, -644, 1150, -107,
442, 882, 449, 471, -114, 748, 442, 310, 122, 311,
122, -110, 460, 268, 554, 555, 556, 557, 263, -113,
329, 127, -735, 564, 239, 719, 874, -115, 240, 1010,
290, 851, 237, 332, 686, -115, 230, -115, 230, 1173,
1212, 842, 496, 720, 423, -109, -116, 480, -116, 1199,
699, 852, -111, 1150, 284, 1242, 650, 73, 749, 285,
699, 584, 122, -123, 492, -123, 518, 122, 537, 461,
-112, 463, 475, 122, 1076, 1077, -108, 122, 645, 313,
224, -736, 224, 457, 643, 1047, -122, -635, -122, 122,
290, 1242, 268, 553, 1155, 933, 1150, 263, -118, 893,
-118, 346, -120, 853, -120, -117, 886, -117, -637, -750,
578, 1216, 1156, -762, 284, 591, -635, 218, 247, 285,
322, 538, 240, 539, 540, 287, 73, 743, 122, 743,
1215, 558, 122, 679, 122, 679, 867, -637, 537, 545,
642, 1072, 644, 634, 259, 381, 381, 381, 381, 1021,
559, 560, 1072, 1072, 460, 887, 302, 577, -645, 944,
635, 303, 588, 970, 972, 367, 368, 369, 370, 371,
977, 979, 938, 494, 1072, 450, -317, 453, -354, 627,
1118, 636, 887, 218, -107, 287, 579, 719, -116, 719,
634, 579, 1197, 539, 540, 522, 870, 694, 911, 908,
-638, 304, 522, 1253, -317, -317, -354, -354, 537, 634,
676, 678, 375, 970, 972, 381, 977, 979, 886, 276,
460, 305, 522, 861, -640, 208, 635, 336, 122, -638,
652, 206, 310, 442, 311, 442, -317, 634, -354, 218,
376, 377, -639, 680, -736, 346, 290, 588, 588, -645,
507, 537, 963, -640, 635, 339, 678, 781, 494, 276,
761, 679, -109, 539, 540, 634, -641, -110, -111, 508,
284, -639, 378, 586, 537, 285, 460, 969, 971, -116,
447, 903, 635, 964, 976, 978, 340, 474, 705, -101,
999, 965, 723, -87, 1130, -641, 728, 1193, 695, -630,
511, 512, 1140, 723, 1200, 344, 539, 540, 586, 586,
-123, 369, 370, 371, 60, 586, 586, -122, 886, 845,
375, 430, 904, 513, 906, 890, 1090, 904, -630, 539,
540, 290, 1205, 320, 321, 832, 1078, 485, 1042, 1072,
-109, 287, 1063, 760, 809, -110, -111, 770, 376, 443,
686, -123, 486, 1083, 1086, 284, 375, 1090, 809, 429,
285, 508, -109, 1104, 815, -633, -109, -110, -111, -108,
1051, -110, -111, 823, 537, 1099, -750, -109, -735, 240,
444, 871, -110, -111, 376, 472, 663, 122, 218, 122,
1250, 1040, 511, 430, -633, 826, 1064, 828, 218, 973,
431, 1128, 239, 811, 858, 857, 442, 980, 814, 122,
915, 861, 824, 816, 634, 664, 444, 821, 488, -114,
834, 719, 719, -123, 634, 460, 287, 542, 865, 539,
540, 635, 208, 486, 892, 460, 866, 896, 206, 1106,
1089, 635, 346, 433, 824, 537, 859, -108, 860, 821,
494, 679, 438, 375, 290, 1233, 442, 1115, -118, 359,
360, 678, 1164, 276, 439, 1165, -120, 816, 914, -108,
440, 586, 537, -108, 915, 824, 1174, 446, 284, 814,
821, 376, 499, 285, -108, 474, 522, 1006, 448, 351,
352, 240, 854, 868, 816, 653, 884, 233, 542, 654,
539, 540, 1004, 675, 879, 236, 367, 368, 369, 370,
371, -113, 915, 500, 837, -122, 91, -117, 91, 218,
122, 537, 653, 290, 122, 543, 943, 539, 540, 910,
225, 225, 809, 809, 913, 919, 809, -642, 997, 364,
365, 925, 931, 346, 925, 634, 998, 284, 478, 287,
1042, 819, 285, 420, -86, 1042, 460, 1042, -732, 1042,
819, 820, 635, 484, 975, -642, -642, 91, 91, 537,
322, 288, 816, 956, 542, 490, 539, 540, 1223, 1205,
493, -118, 225, 498, 932, -733, -109, 699, 934, 678,
-118, -120, 551, 122, -117, 588, 122, -642, 572, 288,
-630, 996, 986, 1040, 986, 579, -643, 225, 225, 992,
1040, 225, 393, 404, 404, 565, 225, -651, 287, 206,
569, 868, 741, 1041, 539, 540, 816, -633, -630, -630,
588, 588, 585, 375, -643, -643, 816, 588, 588, 961,
962, -739, 552, 1042, 442, 1042, 647, 1084, 1087, 734,
1042, 737, 1042, 981, 915, -633, -633, 688, -732, 651,
-630, 376, 424, -308, 122, 122, -643, 723, -732, 1100,
656, 122, 1033, 1034, 1042, 791, 122, 381, 690, 1049,
792, 692, 1092, -739, 696, -733, -101, -633, 1032, 791,
1107, -308, -308, 809, 810, -733, 1040, 809, 697, 801,
375, 1052, 1166, 1167, 468, 375, 879, 706, 809, 809,
809, -739, -739, 801, 809, 809, 497, 497, 1117, 721,
1119, 725, 816, -308, 726, 1120, 91, 729, 376, 648,
122, 733, 816, 376, 658, 816, 809, 735, 1091, -318,
738, -739, 1036, -739, 736, 122, 753, 225, 816, 225,
225, -735, 755, 225, 820, 225, 757, 375, -290, 91,
649, 91, 1102, 122, 122, 659, 1151, -318, -318, 771,
775, 464, 1116, 818, 91, 772, 91, 375, 1126, 276,
-111, 465, 466, 1157, -120, 376, 779, 1187, 776, 777,
406, 827, 537, 588, 834, 875, 288, 375, 837, -318,
877, 921, 284, 905, 907, 376, 1185, 285, 922, 809,
919, -291, 723, 381, 284, 958, 809, 780, 959, 285,
723, 960, 879, 968, 975, 376, 1195, 974, 91, 225,
225, 225, 225, 91, 225, 225, 915, 1186, 1008, 91,
1013, 1014, 1198, 91, 1201, 746, 1017, 539, 540, 956,
-108, 732, 122, 225, -117, 91, 288, 659, 594, 1019,
1171, 1022, 1030, 791, 791, 1210, 1211, 791, 1024, 816,
816, 816, 947, 287, 1170, 80, 122, 80, 1050, -292,
1219, 406, 1055, 1061, 1188, 287, 1062, 801, 801, 80,
80, 801, 225, 1073, 91, 809, 1175, 782, 91, 225,
91, 1109, 1110, 914, 502, 284, 503, 504, 505, 506,
285, 1133, 122, 1132, 225, 1134, 809, 1139, 1141, 502,
1208, 503, 504, 505, 506, 218, 80, 80, 1249, 1143,
1251, 122, -293, 1148, 1153, 898, 899, 1252, 900, 1220,
1214, 80, 1179, 594, 594, 46, 47, 986, 1184, 1177,
809, 634, 809, 713, 1036, 1189, 1194, 122, 225, 1262,
1202, 1036, 460, 1036, 760, 1244, 80, 80, 635, 1204,
80, 1227, 1229, 723, 1234, 80, 287, 315, 316, 317,
318, 319, 225, 1236, 986, 1240, 1245, -735, 809, 462,
1247, -736, 470, 809, 91, 701, 381, 381, 1111, 1258,
503, 504, 505, 506, 1018, 1020, 703, 816, 1003, 1023,
763, 1025, 288, 1026, 225, 391, 408, 481, 374, 1243,
986, 483, 856, 917, 791, 873, 1011, 1037, 791, 1054,
928, 1218, 502, 926, 503, 504, 505, 506, 507, 791,
791, 791, 769, 1005, 1254, 791, 791, 1036, 801, 1036,
947, 947, 801, 880, 1036, 1075, 1036, 508, 1098, 1206,
1207, 880, 1129, 801, 801, 801, 1074, 791, 1226, 801,
801, 428, 1097, 421, 864, 328, 747, 825, 1036, 889,
1196, 509, 829, 1192, 833, 80, 1152, 510, 511, 512,
0, 801, 0, 0, 1142, 1144, 0, 288, 0, 0,
0, 872, 41, 42, 43, 44, 80, 0, 80, 80,
0, 513, 80, 0, 80, 0, 514, 0, 80, 0,
80, 0, 0, 515, 0, 502, 0, 503, 504, 505,
506, 507, 0, 80, 0, 80, 0, 0, 0, 0,
791, 0, 0, 0, 0, 0, 0, 791, 0, 0,
508, 0, 1154, 91, 0, 91, 0, 0, 0, 0,
0, 0, 0, 225, 801, 0, 0, 0, 0, 0,
0, 801, 0, 225, 509, 91, 225, 0, 0, 954,
510, 511, 512, 0, 0, 0, 0, 80, 80, 80,
80, 80, 80, 80, 80, 0, 0, 0, 80, 0,
687, 346, 80, 0, 513, 689, 0, 927, 691, 929,
0, 693, 80, 240, 80, 0, 515, 80, 359, 360,
288, 0, 0, 0, 0, 0, 791, 702, 0, 0,
0, 0, 704, 995, 1178, 1180, 1181, 1182, 0, 0,
1228, 1230, 0, 1000, 0, 0, 1235, 791, 1237, 1238,
801, 80, 947, 80, 1048, 363, 0, 80, 80, 80,
0, 0, 0, 0, 0, 367, 368, 369, 370, 371,
0, 801, 0, 80, 0, 0, 990, 0, 0, 994,
0, 791, 0, 791, 0, 0, 91, 0, 0, 288,
91, 594, 0, 1001, 225, 0, 0, 1257, 1259, 1260,
1261, 0, 80, 80, 0, 801, 0, 801, 0, 0,
1263, 0, 751, 752, 0, 0, 0, 80, 0, 791,
0, 0, 0, 0, 791, 0, 594, 594, 0, 1053,
0, 0, 773, 594, 594, 0, 1246, 0, 0, 1056,
0, 80, 1060, 801, 0, 0, 0, 0, 801, 0,
0, 0, 102, 80, 102, 1079, 0, 0, 0, 91,
0, 225, 91, 0, 0, 0, 102, 102, 0, 0,
0, 0, 0, 80, 0, 0, 0, 502, 0, 503,
504, 505, 506, 507, 0, 0, 502, 0, 503, 504,
505, 506, 802, 0, 0, 346, 0, 0, 0, 0,
0, 0, 508, 102, 102, 0, 802, 0, 0, 0,
0, 803, 359, 360, 0, 0, 561, 0, 102, 0,
0, 0, 0, 0, 1093, 803, 509, 1094, 0, 1101,
91, 91, 510, 511, 512, 713, 1105, 91, 0, 1108,
0, 714, 91, 102, 102, 869, 0, 102, 362, 363,
0, 0, 102, 366, 0, 0, 513, 0, 0, 367,
368, 369, 370, 371, 0, 0, 1048, 876, 515, 0,
0, 880, 0, 1048, 0, 1048, 1161, 1162, 1163, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 594,
0, 0, 0, 0, 0, 0, 91, 225, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 91, 80, 0, 80, 502, 0, 503, 504, 505,
506, 507, 80, 0, 0, 0, 0, 0, 0, 91,
91, 0, 80, 0, 80, 80, 0, 0, 0, 0,
508, 0, 0, 0, 1124, 0, 1172, 0, 0, 0,
0, 0, 0, 0, 0, 1176, 1138, 0, 0, 1048,
0, 1048, 102, 0, 509, 0, 1048, 0, 1048, 0,
510, 511, 512, 502, 0, 503, 504, 505, 506, 507,
802, 802, 0, 102, 802, 102, 102, 0, 0, 102,
1048, 102, 0, 0, 513, 102, 0, 102, 508, 803,
803, 0, 0, 803, 1002, 0, 515, 0, 0, 0,
102, 0, 102, 0, 1248, 0, 0, 1007, 91, 0,
0, 0, 509, 1009, 0, 0, 0, 0, 0, 511,
512, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 91, 0, 0, 80, 0, 1190, 0, 80,
80, 0, 513, 80, 0, 0, 0, 0, 1028, 0,
0, 0, 0, 0, 102, 102, 102, 102, 102, 102,
102, 102, 0, 0, 0, 102, 0, 0, 91, 102,
225, 225, 0, 0, 0, 80, 80, 0, 0, 102,
0, 102, 80, 80, 102, 0, 0, 91, 0, 0,
225, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1080, 0, 0, 80, 0,
80, 80, 0, 91, 0, 0, 0, 0, 102, 0,
102, 0, 0, 0, 102, 102, 102, 0, 0, 0,
0, 802, 0, 0, 0, 802, 0, 0, 0, 0,
102, 0, 0, 0, 0, 0, 802, 802, 802, 0,
803, 0, 802, 802, 803, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 803, 803, 803, 0, 102,
102, 803, 803, 0, 802, 0, 0, 0, 0, 80,
80, 0, 0, 0, 102, 0, 80, 0, 0, 0,
0, 80, 0, 803, 1145, 0, 0, 0, 125, 0,
125, 0, 0, 0, 0, 0, 0, 0, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102, 0, 1158, 1159, 1160, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
102, 23, 24, 25, 26, 80, 80, 802, 0, 125,
125, 0, 0, 291, 802, 0, 0, 32, 33, 34,
80, 0, 0, 0, 0, 0, 803, 41, 42, 43,
44, 45, 0, 803, 0, 0, 0, 0, 80, 80,
0, 291, 0, 0, 0, 0, 0, 0, 121, 0,
121, 0, 0, 0, 397, 407, 407, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
0, 0, 0, 802, 0, 0, 0, 0, 0, 121,
121, 0, 0, 289, 0, 0, 0, 0, 0, 0,
0, 0, 803, 0, 802, 0, 0, 0, 0, 283,
0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
0, 289, 0, 803, 0, 0, 0, 0, 0, 102,
0, 102, 0, 0, 395, 405, 405, 405, 802, 102,
802, 80, 0, 0, 0, 0, 0, 0, 0, 102,
0, 102, 102, 0, 0, 0, 0, 803, 125, 803,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 804, 0, 802, 80, 0, 80,
80, 802, 0, 0, 0, 0, 0, 0, 804, 0,
0, 125, 0, 125, 0, 803, 80, 0, 0, 80,
803, 0, 0, 0, 0, 0, 125, 0, 125, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 80, 0, 0, 0, 0, 0, 291, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 805, 0, 0, 0, 121, 0,
0, 0, 0, 87, 0, 87, 0, 0, 805, 0,
125, 0, 102, 0, 0, 125, 102, 102, 0, 0,
102, 125, 0, 0, 0, 125, 0, 0, 0, 0,
0, 121, 0, 121, 0, 0, 0, 125, 291, 0,
595, 0, 0, 0, 0, 0, 121, 0, 121, 0,
0, 0, 102, 102, 87, 87, 0, 0, 0, 102,
102, 0, 0, 0, 0, 0, 0, 0, 289, 0,
0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
125, 0, 125, 0, 0, 102, 0, 102, 102, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 392,
121, 0, 0, 0, 778, 121, 0, 0, 0, 0,
0, 121, 804, 804, 0, 121, 804, 0, 0, 0,
0, 0, 0, 0, 0, 595, 595, 121, 289, 0,
0, 0, 0, 0, 0, 0, 806, 346, 347, 348,
349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
806, 0, 0, 0, 359, 360, 102, 102, 0, 0,
0, 0, 0, 102, 0, 0, 121, 0, 102, 0,
121, 0, 121, 0, 0, 0, 125, 0, 0, 0,
0, 0, 805, 805, 0, -263, 805, 0, 0, 0,
362, 363, 364, 365, 291, 366, 0, 0, 0, 0,
0, 367, 368, 369, 370, 371, 0, 0, 0, 372,
0, 0, 0, 87, 0, 102, 0, 0, 0, 0,
0, 0, 102, 102, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
0, 0, 0, 0, 0, 0, 87, 0, 87, 0,
0, 0, 0, 0, 0, 102, 102, 0, 0, 0,
0, 87, 0, 87, 0, 0, 121, 124, 0, 124,
0, 0, 0, 804, 0, 0, 0, 804, 0, 291,
0, 0, 0, 0, 289, 0, 0, 0, 804, 804,
804, 0, 0, 0, 804, 804, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 87, 804, 0, 124, 124,
87, 0, 0, 0, 806, 806, 87, 0, 806, 0,
87, 0, 0, 0, 0, 125, 0, 125, 0, 0,
0, 0, 87, 805, 102, 589, 0, 805, 0, 0,
0, 0, 0, 0, 0, 0, 0, 125, 805, 805,
805, 0, 0, 0, 805, 805, 0, 0, 102, 289,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 87, 0, 807, 0, 87, 805, 87, 0, 804,
0, 0, 0, 0, 0, 0, 804, 807, 0, 0,
0, 0, 291, 0, 102, 0, 102, 102, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 102, 0, 121, 102, 121, 0, 0,
589, 589, 0, 0, 0, 0, 902, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 121, 0, 102,
0, 0, 0, 0, 0, 0, 0, 0, 0, 805,
0, 0, 0, 0, 0, 0, 805, 0, 125, 0,
0, 291, 125, 595, 0, 804, 0, 124, 0, 0,
0, 87, 0, 0, 0, 806, 0, 0, 0, 806,
0, 0, 289, 0, 0, 0, 804, 0, 0, 0,
806, 806, 806, 0, 0, 0, 806, 806, 595, 595,
124, 0, 124, 0, 0, 595, 595, 0, 0, 0,
0, 0, 0, 0, 0, 124, 0, 124, 806, 0,
804, 0, 804, 0, 0, 0, 0, 0, 0, 0,
0, 125, 0, 0, 125, 805, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
0, 289, 121, 0, 0, 0, 805, 0, 804, 0,
0, 807, 807, 804, 0, 807, 0, 0, 0, 124,
0, 0, 0, 0, 124, 0, 0, 0, 0, 0,
124, 0, 0, 0, 124, 0, 0, 0, 0, 0,
805, 806, 805, 0, 0, 0, 124, 0, 806, 124,
0, 0, 125, 125, 0, 0, 0, 0, 0, 125,
0, 0, 0, 0, 125, 0, 0, 0, 0, 0,
0, 121, 0, 0, 121, 0, 0, 0, 805, 0,
87, 0, 87, 805, 808, 124, 0, 0, 0, 124,
0, 124, 0, 0, 0, 0, 0, 0, 808, 0,
0, 0, 87, 346, 347, 348, 349, 350, 351, 352,
353, 595, 355, 356, 0, 0, 0, 0, 125, 0,
359, 360, 0, 0, 0, 0, 0, 806, 0, 0,
0, 0, 0, 125, 124, 124, 0, 0, 0, 0,
0, 0, 121, 121, 0, 0, 0, 0, 806, 121,
0, 125, 125, 0, 121, 0, 362, 363, 364, 365,
0, 366, 0, 0, 0, 0, 1127, 367, 368, 369,
370, 371, 807, 0, 0, 0, 807, 0, 407, 0,
0, 0, 806, 0, 806, 124, 0, 807, 807, 807,
0, 0, 0, 807, 807, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
0, 0, 0, 87, 0, 807, 0, 87, 589, 0,
806, 0, 0, 121, 0, 806, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125, 121, 121, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 589, 589, 0, 1125, 0, 0, 0,
589, 589, 0, 0, 125, 0, 0, 0, 405, 407,
0, 0, 808, 808, 0, 0, 808, 0, 0, 0,
0, 0, 0, 0, -762, 0, 87, 0, 807, 87,
0, 0, -762, -762, -762, 807, 0, -762, -762, -762,
125, -762, 0, 0, 0, 0, 0, 0, 0, -762,
-762, -762, 0, 0, 0, 0, 0, 0, 0, 125,
0, -762, -762, 0, -762, -762, -762, -762, -762, 0,
121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 124, 125, 124, 0, 0, 0,
0, 0, -762, 0, 121, 0, 0, 87, 87, 405,
0, 0, 0, 0, 87, 0, 124, 0, 0, 87,
0, 0, 0, 0, 807, 0, 0, 0, 0, 0,
-762, -762, 0, 0, 0, 0, 0, -762, 0, 0,
121, 0, 0, 0, 0, 807, 0, 0, 0, 0,
0, 0, 0, 0, -762, 0, 0, 0, 0, 121,
-762, -762, 220, 220, 0, 0, 589, 0, 0, 0,
236, 0, -762, 87, -762, 0, 0, 0, 0, 807,
0, 807, 0, 808, 0, 121, 0, 808, 87, 0,
0, 0, 0, 0, 253, 256, 257, 258, 808, 808,
808, 220, 220, 0, 808, 808, 87, 87, 0, 0,
0, 0, 0, 306, 308, 0, 0, 807, 0, 0,
0, 1123, 807, 0, 0, 0, 808, 124, 0, 0,
0, 124, 124, 23, 24, 25, 26, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 220, 32,
33, 34, 782, 0, 0, 0, 783, 0, 1063, 41,
42, 43, 44, 45, 0, 0, 0, 124, 124, 0,
0, 0, 0, 0, 124, 124, 0, 508, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784, 785, 0, 0, 0, 87, 0, 0, 786, 808,
124, 787, 0, 124, 788, 789, 808, 946, 511, 0,
58, 59, 1081, 61, 62, 63, 64, 65, 66, 87,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 790, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 283, 0, 0, 0, 87, 220, 345, 0, 220,
220, 220, 0, 308, 0, 0, 0, 0, 0, 0,
0, 124, 124, 0, 87, 0, 0, 0, 124, 220,
0, 220, 220, 124, 0, 808, 0, 0, 0, 0,
469, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87, 0, 0, 0, 0, 0, 808, 0, 0, 346,
347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
357, 358, 0, 0, 0, 0, 359, 360, 0, 0,
124, 0, 361, 0, 0, 0, 0, 124, 0, 0,
808, 0, 808, 0, 0, 0, 0, 0, 0, 0,
0, 0, 124, 0, 0, 0, 0, 0, 0, 0,
0, 0, 362, 363, 364, 365, 0, 366, 0, 0,
124, 124, 0, 367, 368, 369, 370, 371, 808, 0,
0, 372, 0, 808, 0, 220, 0, 0, 0, 0,
590, 0, 597, 598, 599, 600, 601, 0, 0, 602,
603, 604, 605, 606, 607, 608, 609, 0, 611, 612,
778, 0, 613, 614, 615, 616, 617, 618, 619, 620,
621, 0, 0, 0, 220, 0, 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, 0, 0, 124,
359, 360, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 670, 670, 0, 0, 0,
0, 0, 0, 124, 670, 220, 220, 0, 0, 0,
220, 0, 670, 670, 220, 0, 362, 363, 364, 365,
258, 366, 0, 0, 0, 0, 0, 367, 368, 369,
370, 371, 0, 0, 0, 372, 0, 0, 0, 124,
670, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 220, 0, 0, 220, 0, 0, 0, 124, 0,
0, 0, 0, 0, 0, 0, 220, 0, -739, 0,
0, 0, 0, 0, 0, 0, -739, -739, -739, 0,
0, -739, -739, -739, 124, -739, 0, 0, 0, 0,
0, 220, 0, -739, -739, -739, -739, -739, 0, 0,
0, 0, 0, 0, 0, -739, -739, 0, -739, -739,
-739, -739, -739, 0, 0, 0, 0, 750, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 754, 0, 0, 0, 762, -739, 0, 0, 0,
0, 0, 220, 0, 0, -739, -739, -739, -739, -739,
-739, -739, -739, -739, -739, -739, -739, -739, 0, 0,
0, 0, -739, -739, -739, -739, 0, 862, -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, 0, 220, 0, -739, -739, 0,
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, 670, 935, -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, 670, 670,
0, 0, -452, 0, 220, 670, 670, 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, 670, 670,
0, 670, 670, 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, 1029, -452, -452, -452, -452,
0, 0, -452, 0, 0, -452, 1035, 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, 1088, 5, 6, 7, 8, 9,
0, 670, 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, 670, 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,
346, -763, -763, -763, -763, 351, 352, 48, 49, -763,
-763, 0, 0, 0, 0, 0, 0, 359, 360, 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, 362, 363, 364, 365, 0, 366, 0,
0, 0, 0, 0, 367, 368, 369, 370, 371, 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, 346, 347, 348, 349, 350, 351, 352, 48,
49, 355, 356, 0, 0, 0, 0, 0, 0, 359,
360, 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, 362, 363, 364, 365, 0,
366, 0, 0, 0, 0, 0, 367, 368, 369, 370,
371, 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, 863, -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, 812,
-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, 812, -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, 813, -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, 813, -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, 552, 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,
552, 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, 677, 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, 677,
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,
677, 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, 576, 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, 576, 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, 930, 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, 991, 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, 1169, 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,
583, 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,
1122, 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, 1137, 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, 782, 0, 0, 0, 783, 0, 0, 41, 42,
43, 44, 45, 0, 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, 784,
785, 0, 0, 0, 0, 0, 0, 786, 0, 0,
787, 0, 0, 788, 789, 0, 946, 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, 790, 32, 33, 34, 782, 240,
0, 0, 783, 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, 784, 785, 0, 0,
0, 0, 0, 0, 786, 0, 0, 787, 0, 0,
788, 789, 0, 1057, 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, 790, 32, 33, 34, 782, 0, 0, 0, 783,
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, 784, 785, 0, 0, 0, 0, 0,
0, 786, 0, 0, 787, 0, 0, 788, 789, 0,
946, 0, 0, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 23, 24, 25, 26, 0, 0, 0,
0, 0, 909, 0, 0, 0, 0, 0, 790, 32,
33, 34, 782, 0, 0, 0, 783, 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,
784, 785, 359, 360, 0, 0, 0, 0, 786, 0,
0, 787, 0, 0, 788, 789, 0, 0, 0, 0,
58, 59, 60, 61, 62, 63, 64, 65, 66, 920,
0, 0, 0, 0, 0, 0, 0, 0, 362, 363,
364, 365, 0, 366, 0, 790, 0, 0, 0, 367,
368, 369, 370, 371, 0, 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, 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, 622, 623, 0, 0, 624, 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, 631, 632, 0, 0, 633, 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, 681, 623, 0,
0, 682, 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,
684, 632, 0, 0, 685, 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, 708, 623, 0, 0, 709, 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, 711, 632, 0, 0,
712, 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, 840,
623, 0, 0, 841, 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, 843, 632, 0, 0, 844, 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, 849, 623, 0, 0, 850,
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, 666, 632,
0, 0, 667, 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, 936, 623, 0, 0, 937, 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, 939, 632, 0, 0, 940, 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, 1221, 623, 0,
0, 1222, 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,
1224, 632, 0, 0, 1225, 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, 1231, 623, 0, 0, 1232, 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, 666, 632, 0, 0,
667, 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, 240, 367, 368, 369,
370, 371, 0, 0, 0, 372, 346, 347, 348, 349,
350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
0, 0, 0, 359, 360, 0, 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, 362,
363, 364, 365, 0, 366, 0, 0, 0, 0, 0,
367, 368, 369, 370, 371, 0, 0, 0, 372, 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, 105, 4, 383, 91, 16, 17, 59, 28, 22,
85, 292, 60, 71, 96, 274, 8, 104, 322, 278,
378, 329, 8, 230, 401, 835, 57, 377, 2, 379,
429, 430, 729, 4, 344, 527, 28, 828, 97, 97,
448, 322, 28, 94, 875, 326, 97, 446, 447, 101,
949, 53, 54, 22, 53, 57, 1014, 877, 13, 53,
726, 27, 77, 29, 2, 733, 4, 80, 498, 16,
17, 509, 380, 59, 922, 474, 426, 56, 69, 57,
488, 55, 56, 85, 57, 27, 444, 753, 966, 967,
344, 102, 13, 443, 292, 445, 98, 99, 100, 101,
26, 322, 76, 77, 71, 326, 52, 85, 55, 56,
66, 80, 85, 16, 17, 101, 54, 13, 37, 38,
98, 99, 100, 473, 322, 98, 99, 100, 326, 26,
300, 301, 13, 440, 1147, 262, 68, 25, 225, 726,
100, 448, 500, 68, 429, 430, 733, 784, 785, 25,
57, 501, 55, 583, 25, 102, 99, 29, 1168, 100,
13, 25, 1061, 119, 0, 729, 753, 254, 216, 25,
125, 13, 97, 93, 94, 429, 430, 97, 85, 125,
140, 109, 125, 138, 125, 140, 129, 100, 13, 1202,
1038, 98, 99, 100, 1204, 25, 138, 126, 140, 102,
126, 288, 25, 131, 103, 264, 264, 282, 16, 17,
212, 13, 125, 1141, 341, 136, 1174, 138, 212, 140,
25, 140, 233, 13, 235, 236, 25, 13, 34, 126,
13, 210, 1245, 514, 213, 214, 215, 125, 140, 136,
136, 140, 138, 245, 140, 247, 52, 99, 1147, 125,
224, 123, 459, 247, 125, 66, 230, 138, 260, 140,
262, 125, 236, 262, 315, 316, 317, 318, 262, 125,
285, 245, 136, 322, 136, 713, 714, 129, 140, 1110,
282, 658, 251, 252, 692, 138, 233, 140, 235, 1109,
1168, 649, 283, 514, 102, 125, 138, 264, 140, 1227,
650, 659, 125, 1202, 282, 1204, 393, 245, 119, 282,
660, 342, 314, 138, 280, 140, 514, 319, 66, 239,
125, 241, 260, 325, 961, 962, 125, 329, 387, 387,
233, 136, 235, 236, 385, 922, 138, 68, 140, 341,
342, 1240, 341, 314, 34, 775, 1245, 341, 138, 1017,
140, 77, 138, 661, 140, 138, 1022, 140, 68, 127,
339, 1171, 52, 129, 342, 344, 97, 378, 126, 342,
136, 119, 140, 121, 122, 282, 314, 547, 380, 549,
1171, 319, 384, 690, 386, 692, 690, 97, 66, 67,
384, 955, 386, 379, 56, 315, 316, 317, 318, 891,
320, 321, 966, 967, 378, 726, 139, 339, 99, 786,
379, 139, 344, 812, 813, 141, 142, 143, 144, 145,
819, 820, 780, 498, 988, 233, 68, 235, 68, 779,
1017, 781, 753, 444, 125, 342, 339, 875, 129, 877,
426, 344, 1139, 121, 122, 726, 705, 467, 758, 753,
68, 139, 733, 1244, 96, 97, 96, 97, 66, 445,
439, 440, 68, 862, 863, 385, 865, 866, 1134, 448,
444, 139, 753, 680, 68, 467, 445, 28, 480, 97,
400, 467, 138, 457, 140, 459, 128, 473, 128, 500,
96, 97, 68, 440, 136, 77, 498, 429, 430, 99,
58, 66, 97, 97, 473, 129, 485, 594, 583, 488,
568, 818, 25, 121, 122, 501, 68, 25, 25, 77,
498, 97, 128, 777, 66, 498, 500, 812, 813, 129,
99, 139, 501, 128, 819, 820, 125, 99, 485, 125,
848, 136, 516, 129, 1036, 97, 525, 1134, 468, 68,
108, 109, 1044, 527, 1141, 129, 121, 122, 812, 813,
129, 143, 144, 145, 112, 819, 820, 129, 1234, 651,
68, 99, 742, 131, 139, 1139, 975, 747, 97, 121,
122, 583, 124, 37, 38, 643, 963, 125, 922, 1153,
103, 498, 58, 567, 596, 103, 103, 576, 96, 97,
1008, 129, 140, 966, 967, 583, 68, 1006, 610, 99,
583, 77, 125, 993, 627, 68, 129, 125, 125, 25,
928, 129, 129, 636, 66, 988, 137, 140, 136, 140,
128, 706, 140, 140, 96, 97, 68, 639, 649, 641,
1227, 922, 108, 99, 97, 639, 112, 641, 659, 815,
125, 1031, 136, 619, 674, 668, 630, 823, 627, 661,
15, 868, 636, 629, 650, 97, 128, 636, 125, 125,
25, 1109, 1110, 129, 660, 649, 583, 119, 99, 121,
122, 650, 674, 140, 733, 659, 99, 736, 674, 997,
975, 660, 77, 56, 668, 66, 675, 103, 677, 668,
775, 1008, 129, 68, 706, 1197, 680, 1015, 129, 94,
95, 690, 1092, 692, 100, 1095, 129, 683, 9, 125,
125, 975, 66, 129, 15, 699, 125, 99, 706, 698,
699, 96, 97, 706, 140, 99, 1017, 99, 125, 82,
83, 140, 662, 690, 710, 52, 725, 136, 119, 56,
121, 122, 856, 124, 720, 136, 141, 142, 143, 144,
145, 125, 15, 128, 17, 129, 2, 129, 4, 780,
772, 66, 52, 775, 776, 119, 56, 121, 122, 758,
16, 17, 784, 785, 758, 759, 788, 68, 846, 132,
133, 765, 771, 77, 768, 781, 847, 775, 103, 706,
1134, 99, 775, 855, 129, 1139, 780, 1141, 26, 1143,
99, 99, 781, 137, 99, 96, 97, 53, 54, 66,
136, 57, 788, 789, 119, 127, 121, 122, 1186, 124,
56, 129, 68, 125, 772, 26, 125, 1187, 776, 818,
129, 129, 77, 845, 129, 777, 848, 128, 106, 85,
68, 845, 826, 1134, 828, 758, 68, 93, 94, 838,
1141, 97, 98, 99, 100, 129, 102, 129, 775, 855,
129, 818, 119, 922, 121, 122, 842, 68, 96, 97,
812, 813, 125, 68, 96, 97, 852, 819, 820, 88,
89, 26, 138, 1227, 868, 1229, 56, 966, 967, 532,
1234, 534, 1236, 14, 15, 96, 97, 103, 126, 25,
128, 96, 97, 68, 916, 917, 128, 891, 136, 988,
133, 923, 916, 917, 1258, 596, 928, 847, 125, 923,
596, 125, 983, 68, 127, 126, 125, 128, 912, 610,
998, 96, 97, 945, 610, 136, 1227, 949, 127, 596,
68, 930, 40, 41, 136, 68, 922, 125, 960, 961,
962, 96, 97, 610, 966, 967, 284, 285, 1017, 125,
1019, 129, 938, 128, 125, 1024, 212, 125, 96, 97,
982, 125, 948, 96, 97, 951, 988, 52, 982, 68,
52, 126, 922, 128, 125, 997, 125, 233, 964, 235,
236, 136, 10, 239, 99, 241, 8, 68, 125, 245,
128, 247, 991, 1015, 1016, 128, 1064, 96, 97, 125,
125, 54, 1016, 125, 260, 44, 262, 68, 1030, 1008,
125, 64, 65, 1081, 129, 96, 97, 1124, 44, 129,
1042, 13, 66, 975, 25, 125, 282, 68, 17, 128,
125, 127, 1030, 139, 139, 96, 97, 1030, 130, 1061,
1034, 125, 1036, 983, 1042, 52, 1068, 128, 100, 1042,
1044, 130, 1038, 150, 99, 96, 97, 137, 314, 315,
316, 317, 318, 319, 320, 321, 15, 128, 125, 325,
103, 138, 1141, 329, 1143, 119, 125, 121, 122, 1065,
125, 52, 1104, 339, 129, 341, 342, 128, 344, 125,
1104, 125, 100, 784, 785, 1166, 1167, 788, 125, 1085,
1086, 1087, 788, 1030, 1103, 2, 1128, 4, 127, 125,
1179, 1133, 52, 125, 1128, 1042, 125, 784, 785, 16,
17, 788, 378, 127, 380, 1147, 1112, 52, 384, 385,
386, 125, 125, 9, 52, 1133, 54, 55, 56, 57,
1133, 129, 1164, 130, 400, 125, 1168, 125, 125, 52,
1164, 54, 55, 56, 57, 1186, 53, 54, 1227, 125,
1229, 1183, 125, 125, 125, 54, 55, 1236, 57, 1183,
1169, 68, 125, 429, 430, 64, 65, 1171, 56, 127,
1202, 1187, 1204, 101, 1134, 130, 56, 1209, 444, 1258,
125, 1141, 1186, 1143, 1188, 1209, 93, 94, 1187, 125,
97, 125, 125, 1197, 125, 102, 1133, 40, 41, 42,
43, 44, 468, 125, 1208, 125, 125, 136, 1240, 239,
120, 136, 245, 1245, 480, 476, 1166, 1167, 52, 125,
54, 55, 56, 57, 887, 888, 480, 1223, 855, 892,
570, 894, 498, 896, 500, 98, 100, 267, 89, 1208,
1244, 271, 668, 759, 945, 713, 875, 922, 949, 945,
768, 1174, 52, 766, 54, 55, 56, 57, 58, 960,
961, 962, 575, 857, 1244, 966, 967, 1227, 945, 1229,
966, 967, 949, 721, 1234, 960, 1236, 77, 988, 1153,
1153, 729, 1034, 960, 961, 962, 959, 988, 1188, 966,
967, 108, 988, 101, 683, 77, 549, 637, 1258, 729,
1139, 101, 642, 1134, 644, 212, 1065, 107, 108, 109,
-1, 988, -1, -1, 1046, 1047, -1, 583, -1, -1,
-1, 710, 59, 60, 61, 62, 233, -1, 235, 236,
-1, 131, 239, -1, 241, -1, 136, -1, 245, -1,
247, -1, -1, 143, -1, 52, -1, 54, 55, 56,
57, 58, -1, 260, -1, 262, -1, -1, -1, -1,
1061, -1, -1, -1, -1, -1, -1, 1068, -1, -1,
77, -1, 1068, 639, -1, 641, -1, -1, -1, -1,
-1, -1, -1, 649, 1061, -1, -1, -1, -1, -1,
-1, 1068, -1, 659, 101, 661, 662, -1, -1, 788,
107, 108, 109, -1, -1, -1, -1, 314, 315, 316,
317, 318, 319, 320, 321, -1, -1, -1, 325, -1,
450, 77, 329, -1, 131, 455, -1, 767, 458, 769,
-1, 461, 339, 140, 341, -1, 143, 344, 94, 95,
706, -1, -1, -1, -1, -1, 1147, 477, -1, -1,
-1, -1, 482, 842, 1117, 1118, 1119, 1120, -1, -1,
1192, 1193, -1, 852, -1, -1, 1198, 1168, 1200, 1201,
1147, 378, 1168, 380, 922, 131, -1, 384, 385, 386,
-1, -1, -1, -1, -1, 141, 142, 143, 144, 145,
-1, 1168, -1, 400, -1, -1, 836, -1, -1, 839,
-1, 1202, -1, 1204, -1, -1, 772, -1, -1, 775,
776, 777, -1, 853, 780, -1, -1, 1249, 1250, 1251,
1252, -1, 429, 430, -1, 1202, -1, 1204, -1, -1,
1262, -1, 562, 563, -1, -1, -1, 444, -1, 1240,
-1, -1, -1, -1, 1245, -1, 812, 813, -1, 938,
-1, -1, 582, 819, 820, -1, 1219, -1, -1, 948,
-1, 468, 951, 1240, -1, -1, -1, -1, 1245, -1,
-1, -1, 2, 480, 4, 964, -1, -1, -1, 845,
-1, 847, 848, -1, -1, -1, 16, 17, -1, -1,
-1, -1, -1, 500, -1, -1, -1, 52, -1, 54,
55, 56, 57, 58, -1, -1, 52, -1, 54, 55,
56, 57, 596, -1, -1, 77, -1, -1, -1, -1,
-1, -1, 77, 53, 54, -1, 610, -1, -1, -1,
-1, 596, 94, 95, -1, -1, 91, -1, 68, -1,
-1, -1, -1, -1, 984, 610, 101, 987, -1, 989,
916, 917, 107, 108, 109, 101, 996, 923, -1, 999,
-1, 107, 928, 93, 94, 695, -1, 97, 130, 131,
-1, -1, 102, 135, -1, -1, 131, -1, -1, 141,
142, 143, 144, 145, -1, -1, 1134, 717, 143, -1,
-1, 1139, -1, 1141, -1, 1143, 1085, 1086, 1087, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 975,
-1, -1, -1, -1, -1, -1, 982, 983, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 997, 639, -1, 641, 52, -1, 54, 55, 56,
57, 58, 649, -1, -1, -1, -1, -1, -1, 1015,
1016, -1, 659, -1, 661, 662, -1, -1, -1, -1,
77, -1, -1, -1, 1030, -1, 1106, -1, -1, -1,
-1, -1, -1, -1, -1, 1115, 1042, -1, -1, 1227,
-1, 1229, 212, -1, 101, -1, 1234, -1, 1236, -1,
107, 108, 109, 52, -1, 54, 55, 56, 57, 58,
784, 785, -1, 233, 788, 235, 236, -1, -1, 239,
1258, 241, -1, -1, 131, 245, -1, 247, 77, 784,
785, -1, -1, 788, 854, -1, 143, -1, -1, -1,
260, -1, 262, -1, 1223, -1, -1, 867, 1104, -1,
-1, -1, 101, 873, -1, -1, -1, -1, -1, 108,
109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 1128, -1, -1, 772, -1, 1133, -1, 776,
777, -1, 131, 780, -1, -1, -1, -1, 908, -1,
-1, -1, -1, -1, 314, 315, 316, 317, 318, 319,
320, 321, -1, -1, -1, 325, -1, -1, 1164, 329,
1166, 1167, -1, -1, -1, 812, 813, -1, -1, 339,
-1, 341, 819, 820, 344, -1, -1, 1183, -1, -1,
1186, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 965, -1, -1, 845, -1,
847, 848, -1, 1209, -1, -1, -1, -1, 378, -1,
380, -1, -1, -1, 384, 385, 386, -1, -1, -1,
-1, 945, -1, -1, -1, 949, -1, -1, -1, -1,
400, -1, -1, -1, -1, -1, 960, 961, 962, -1,
945, -1, 966, 967, 949, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 960, 961, 962, -1, 429,
430, 966, 967, -1, 988, -1, -1, -1, -1, 916,
917, -1, -1, -1, 444, -1, 923, -1, -1, -1,
-1, 928, -1, 988, 1054, -1, -1, -1, 2, -1,
4, -1, -1, -1, -1, -1, -1, -1, 468, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
480, -1, 1082, 1083, 1084, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 975, -1,
500, 33, 34, 35, 36, 982, 983, 1061, -1, 53,
54, -1, -1, 57, 1068, -1, -1, 49, 50, 51,
997, -1, -1, -1, -1, -1, 1061, 59, 60, 61,
62, 63, -1, 1068, -1, -1, -1, -1, 1015, 1016,
-1, 85, -1, -1, -1, -1, -1, -1, 2, -1,
4, -1, -1, -1, 98, 99, 100, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 110, 111,
112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
-1, -1, -1, 1147, -1, -1, -1, -1, -1, 53,
54, -1, -1, 57, -1, -1, -1, -1, -1, -1,
-1, -1, 1147, -1, 1168, -1, -1, -1, -1, 151,
-1, -1, -1, -1, -1, -1, -1, 1104, -1, -1,
-1, 85, -1, 1168, -1, -1, -1, -1, -1, 639,
-1, 641, -1, -1, 98, 99, 100, 101, 1202, 649,
1204, 1128, -1, -1, -1, -1, -1, -1, -1, 659,
-1, 661, 662, -1, -1, -1, -1, 1202, 212, 1204,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 596, -1, 1240, 1164, -1, 1166,
1167, 1245, -1, -1, -1, -1, -1, -1, 610, -1,
-1, 245, -1, 247, -1, 1240, 1183, -1, -1, 1186,
1245, -1, -1, -1, -1, -1, 260, -1, 262, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 1209, -1, -1, -1, -1, -1, 282, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 596, -1, -1, -1, 212, -1,
-1, -1, -1, 2, -1, 4, -1, -1, 610, -1,
314, -1, 772, -1, -1, 319, 776, 777, -1, -1,
780, 325, -1, -1, -1, 329, -1, -1, -1, -1,
-1, 245, -1, 247, -1, -1, -1, 341, 342, -1,
344, -1, -1, -1, -1, -1, 260, -1, 262, -1,
-1, -1, 812, 813, 53, 54, -1, -1, -1, 819,
820, -1, -1, -1, -1, -1, -1, -1, 282, -1,
-1, -1, -1, -1, -1, -1, 380, -1, -1, -1,
384, -1, 386, -1, -1, 845, -1, 847, 848, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
314, -1, -1, -1, 44, 319, -1, -1, -1, -1,
-1, 325, 784, 785, -1, 329, 788, -1, -1, -1,
-1, -1, -1, -1, -1, 429, 430, 341, 342, -1,
-1, -1, -1, -1, -1, -1, 596, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
610, -1, -1, -1, 94, 95, 916, 917, -1, -1,
-1, -1, -1, 923, -1, -1, 380, -1, 928, -1,
384, -1, 386, -1, -1, -1, 480, -1, -1, -1,
-1, -1, 784, 785, -1, 125, 788, -1, -1, -1,
130, 131, 132, 133, 498, 135, -1, -1, -1, -1,
-1, 141, 142, 143, 144, 145, -1, -1, -1, 149,
-1, -1, -1, 212, -1, 975, -1, -1, -1, -1,
-1, -1, 982, 983, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 997, -1, -1,
-1, -1, -1, -1, -1, -1, 245, -1, 247, -1,
-1, -1, -1, -1, -1, 1015, 1016, -1, -1, -1,
-1, 260, -1, 262, -1, -1, 480, 2, -1, 4,
-1, -1, -1, 945, -1, -1, -1, 949, -1, 583,
-1, -1, -1, -1, 498, -1, -1, -1, 960, 961,
962, -1, -1, -1, 966, 967, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 314, 988, -1, 53, 54,
319, -1, -1, -1, 784, 785, 325, -1, 788, -1,
329, -1, -1, -1, -1, 639, -1, 641, -1, -1,
-1, -1, 341, 945, 1104, 344, -1, 949, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 661, 960, 961,
962, -1, -1, -1, 966, 967, -1, -1, 1128, 583,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 380, -1, 596, -1, 384, 988, 386, -1, 1061,
-1, -1, -1, -1, -1, -1, 1068, 610, -1, -1,
-1, -1, 706, -1, 1164, -1, 1166, 1167, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 1183, -1, 639, 1186, 641, -1, -1,
429, 430, -1, -1, -1, -1, 740, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 661, -1, 1209,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1061,
-1, -1, -1, -1, -1, -1, 1068, -1, 772, -1,
-1, 775, 776, 777, -1, 1147, -1, 212, -1, -1,
-1, 480, -1, -1, -1, 945, -1, -1, -1, 949,
-1, -1, 706, -1, -1, -1, 1168, -1, -1, -1,
960, 961, 962, -1, -1, -1, 966, 967, 812, 813,
245, -1, 247, -1, -1, 819, 820, -1, -1, -1,
-1, -1, -1, -1, -1, 260, -1, 262, 988, -1,
1202, -1, 1204, -1, -1, -1, -1, -1, -1, -1,
-1, 845, -1, -1, 848, 1147, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 772, -1,
-1, 775, 776, -1, -1, -1, 1168, -1, 1240, -1,
-1, 784, 785, 1245, -1, 788, -1, -1, -1, 314,
-1, -1, -1, -1, 319, -1, -1, -1, -1, -1,
325, -1, -1, -1, 329, -1, -1, -1, -1, -1,
1202, 1061, 1204, -1, -1, -1, 341, -1, 1068, 344,
-1, -1, 916, 917, -1, -1, -1, -1, -1, 923,
-1, -1, -1, -1, 928, -1, -1, -1, -1, -1,
-1, 845, -1, -1, 848, -1, -1, -1, 1240, -1,
639, -1, 641, 1245, 596, 380, -1, -1, -1, 384,
-1, 386, -1, -1, -1, -1, -1, -1, 610, -1,
-1, -1, 661, 77, 78, 79, 80, 81, 82, 83,
84, 975, 86, 87, -1, -1, -1, -1, 982, -1,
94, 95, -1, -1, -1, -1, -1, 1147, -1, -1,
-1, -1, -1, 997, 429, 430, -1, -1, -1, -1,
-1, -1, 916, 917, -1, -1, -1, -1, 1168, 923,
-1, 1015, 1016, -1, 928, -1, 130, 131, 132, 133,
-1, 135, -1, -1, -1, -1, 1030, 141, 142, 143,
144, 145, 945, -1, -1, -1, 949, -1, 1042, -1,
-1, -1, 1202, -1, 1204, 480, -1, 960, 961, 962,
-1, -1, -1, 966, 967, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 982, -1,
-1, -1, -1, 772, -1, 988, -1, 776, 777, -1,
1240, -1, -1, 997, -1, 1245, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1104, 1015, 1016, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 812, 813, -1, 1030, -1, -1, -1,
819, 820, -1, -1, 1128, -1, -1, -1, 1042, 1133,
-1, -1, 784, 785, -1, -1, 788, -1, -1, -1,
-1, -1, -1, -1, 0, -1, 845, -1, 1061, 848,
-1, -1, 8, 9, 10, 1068, -1, 13, 14, 15,
1164, 17, -1, -1, -1, -1, -1, -1, -1, 25,
26, 27, -1, -1, -1, -1, -1, -1, -1, 1183,
-1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
1104, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 639, 1209, 641, -1, -1, -1,
-1, -1, 68, -1, 1128, -1, -1, 916, 917, 1133,
-1, -1, -1, -1, 923, -1, 661, -1, -1, 928,
-1, -1, -1, -1, 1147, -1, -1, -1, -1, -1,
96, 97, -1, -1, -1, -1, -1, 103, -1, -1,
1164, -1, -1, -1, -1, 1168, -1, -1, -1, -1,
-1, -1, -1, -1, 120, -1, -1, -1, -1, 1183,
126, 127, 16, 17, -1, -1, 975, -1, -1, -1,
136, -1, 138, 982, 140, -1, -1, -1, -1, 1202,
-1, 1204, -1, 945, -1, 1209, -1, 949, 997, -1,
-1, -1, -1, -1, 48, 49, 50, 51, 960, 961,
962, 55, 56, -1, 966, 967, 1015, 1016, -1, -1,
-1, -1, -1, 67, 68, -1, -1, 1240, -1, -1,
-1, 1030, 1245, -1, -1, -1, 988, 772, -1, -1,
-1, 776, 777, 33, 34, 35, 36, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 102, 49,
50, 51, 52, -1, -1, -1, 56, -1, 58, 59,
60, 61, 62, 63, -1, -1, -1, 812, 813, -1,
-1, -1, -1, -1, 819, 820, -1, 77, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, -1, -1, -1, 1104, -1, -1, 98, 1061,
845, 101, -1, 848, 104, 105, 1068, 107, 108, -1,
110, 111, 112, 113, 114, 115, 116, 117, 118, 1128,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 135, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 151, -1, -1, -1, 1164, 210, 25, -1, 213,
214, 215, -1, 217, -1, -1, -1, -1, -1, -1,
-1, 916, 917, -1, 1183, -1, -1, -1, 923, 233,
-1, 235, 236, 928, -1, 1147, -1, -1, -1, -1,
244, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1209, -1, -1, -1, -1, -1, 1168, -1, -1, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, -1, -1, -1, -1, 94, 95, -1, -1,
975, -1, 100, -1, -1, -1, -1, 982, -1, -1,
1202, -1, 1204, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 997, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 130, 131, 132, 133, -1, 135, -1, -1,
1015, 1016, -1, 141, 142, 143, 144, 145, 1240, -1,
-1, 149, -1, 1245, -1, 339, -1, -1, -1, -1,
344, -1, 346, 347, 348, 349, 350, -1, -1, 353,
354, 355, 356, 357, 358, 359, 360, -1, 362, 363,
44, -1, 366, 367, 368, 369, 370, 371, 372, 373,
374, -1, -1, -1, 378, -1, -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, -1, -1, 1104,
94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 429, 430, -1, -1, -1,
-1, -1, -1, 1128, 438, 439, 440, -1, -1, -1,
444, -1, 446, 447, 448, -1, 130, 131, 132, 133,
454, 135, -1, -1, -1, -1, -1, 141, 142, 143,
144, 145, -1, -1, -1, 149, -1, -1, -1, 1164,
474, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 485, -1, -1, 488, -1, -1, -1, 1183, -1,
-1, -1, -1, -1, -1, -1, 500, -1, 0, -1,
-1, -1, -1, -1, -1, -1, 8, 9, 10, -1,
-1, 13, 14, 15, 1209, 17, -1, -1, -1, -1,
-1, 525, -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, 551, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 565, -1, -1, -1, 569, 68, -1, -1, -1,
-1, -1, 576, -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, -1, 649, -1, 149, 150, -1,
-1, -1, 0, -1, -1, 659, -1, -1, -1, -1,
8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
-1, 675, -1, 677, -1, -1, -1, 25, -1, 27,
28, 29, -1, -1, -1, -1, 690, -1, 692, 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, 725, -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, 758, 103, -1, -1, 106, -1,
-1, -1, -1, -1, -1, -1, -1, 771, -1, -1,
-1, -1, 120, 777, 778, 123, 780, 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, 812, 813,
-1, -1, 0, -1, 818, 819, 820, -1, -1, -1,
8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
-1, -1, -1, -1, 838, -1, -1, 25, 26, 27,
28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
38, -1, 40, 41, 42, 43, 44, -1, 862, 863,
-1, 865, 866, -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, 909, 94, 95, 96, 97,
-1, -1, 100, -1, -1, 103, 920, -1, 106, -1,
-1, -1, -1, -1, -1, -1, 930, -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, 968, 3, 4, 5, 6, 7,
-1, 975, -1, 11, 12, -1, -1, -1, 16, -1,
18, 19, 20, 21, 22, 23, 24, 991, -1, -1,
-1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
-1, 39, 1006, -1, 1008, -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,
77, 78, 79, 80, 81, 82, 83, 75, 76, 86,
87, -1, -1, -1, -1, -1, -1, 94, 95, -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, 130, 131, 132, 133, -1, 135, -1,
-1, -1, -1, -1, 141, 142, 143, 144, 145, 1103,
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, 1169, -1, -1, -1, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 1186, 59, 60, 61, 62, 63, 64, 65,
-1, -1, 77, 78, 79, 80, 81, 82, 83, 75,
76, 86, 87, -1, -1, -1, -1, -1, -1, 94,
95, -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, 130, 131, 132, 133, -1,
135, -1, -1, -1, -1, -1, 141, 142, 143, 144,
145, -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, -1, 59, 60,
61, 62, 63, -1, -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, 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, -1, -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, -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, 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, 140, 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, 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, 130,
131, 132, 133, -1, 135, -1, -1, -1, -1, -1,
141, 142, 143, 144, 145, -1, -1, -1, 149, 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, 165, 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, 2, 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, 314, 314, 314, 331, 340, 344, 348, 354, 360,
364, 373, 385, 408, 427, 436, 440, 444, 451, 461,
466, 465, 476, 475, 486, 496, 506, 510, 519, 530,
541, 552, 563, 583, 598, 602, 615, 632, 661, 671,
677, 687, 697, 712, 729, 746, 763, 780, 792, 798,
821, 827, 831, 842, 853, 864, 876, 875, 904, 903,
931, 937, 948, 962, 961, 982, 990, 990, 1008, 1012,
1018, 1022, 1038, 1037, 1057, 1063, 1076, 1098, 1111, 1133,
1146, 1168, 1180, 1192, 1204, 1216, 1230, 1240, 1252, 1262,
1279, 1283, 1289, 1295, 1307, 1313, 1325, 1329, 1341, 1345,
1359, 1363, 1375, 1379, 1387, 1391, 1399, 1405, 1411, 1422,
1437, 1447, 1462, 1474, 1485, 1495, 1501, 1507, 1518, 1528,
1538, 1548, 1560, 1571, 1581, 1585, 1591, 1597, 1603, 1615,
1619, 1623, 1627, 1632, 1638, 1644, 1650, 1655, 1654, 1667,
1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1699,
1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709,
1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719,
1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729,
1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739,
1742, 1752, 1762, 1777, 1794, 1811, 1828, 1845, 1861, 1871,
1887, 1903, 1916, 1929, 1942, 1955, 1961, 1967, 1973, 1979,
1985, 1991, 2004, 2013, 2022, 2028, 2034, 2040, 2046, 2050,
2056, 2062, 2068, 2074, 2084, 2095, 2104, 2110, 2116, 2127,
2138, 2150, 2165, 2186, 2223, 2246, 2285, 2291, 2295, 2299,
2303, 2309, 2319, 2333, 2341, 2345, 2349, 2357, 2367, 2373,
2398, 2408, 2425, 2441, 2451, 2464, 2468, 2472, 2476, 2482,
2492, 2498, 2505, 2517, 2529, 2535, 2535, 2563, 2574, 2578,
2584, 2588, 2596, 2602, 2610, 2616, 2622, 2628, 2636, 2646,
2650, 2654, 2658, 2662, 2666, 2670, 2674, 2678, 2682, 2686,
2700, 2699, 2713, 2713, 2723, 2723, 2733, 2743, 2753, 2759,
2769, 2779, 2791, 2803, 2815, 2827, 2839, 2850, 2861, 2883,
2887, 2900, 2904, 2923, 2942, 2958, 2975, 2974, 2998, 2997,
3020, 3038, 3056, 3055, 3089, 3088, 3116, 3115, 3142, 3165,
3190, 3202, 3214, 3226, 3240, 3248, 3254, 3261, 3267, 3273,
3279, 3285, 3291, 3297, 3303, 3309, 3315, 3321, 3327, 3333,
3339, 3345, 3352, 3358, 3367, 3371, 3375, 3381, 3385, 3391,
3396, 3423, 3427, 3435, 3439, 3445, 3451, 3463, 3467, 3475,
3479, 3485, 3497, 3501, 3515, 3521, 3529, 3533, 3539, 3551,
3558, 3565, 3572, 3577, 3582, 3588, 3602, 3618, 3630, 3644,
3656, 3660, 3674, 3689, 3701, 3715, 3722, 3734, 3741, 3753,
3759, 3765, 3772, 3785, 3804, 3808, 3814, 3818, 3826, 3834,
3841, 3849, 3840, 3882, 3897, 3910, 3909, 3926, 3925, 3944,
3943, 3963, 3976, 3990, 4013, 4037, 4052, 4067, 4082, 4095,
4110, 4125, 4139, 4151, 4165, 4164, 4184, 4183, 4204, 4204,
4229, 4229, 4253, 4257, 4265, 4271, 4279, 4294, 4298, 4306,
4316, 4305, 4344, 4348, 4355, 4359, 4364, 4371, 4375, 4386,
4398, 4404, 4410, 4418, 4424, 4434, 4440, 4450, 4456, 4463,
4470, 4474, 4488, 4501, 4514, 4528, 4542, 4555, 4568, 4582,
4594, 4604, 4616, 4615, 4633, 4644, 4643, 4661, 4670, 4674,
4686, 4700, 4717, 4731, 4747, 4758, 4767, 4781, 4785, 4797,
4811, 4817, 4825, 4829, 4837, 4843, 4850, 4854, 4858, 4864,
4868, 4876, 4885, 4895, 4901, 4909, 4917, 4927, 4937, 4941,
4947, 4951, 4967, 4983, 4996, 5009, 5013, 5017, 5021, 5034,
5049, 5053, 5057, 5061, 5065, 5069, 5073, 5077, 5081, 5087,
5093, 5101, 5117, 5123, 5133, 5139, 5168, 5174, 5178, 5182,
5188, 5194, 5200, 5206, 5212, 5216, 5222, 5234, 5242, 5246,
5254, 5264, 5274, 5289, 5302, 5306, 5316, 5320, 5328, 5341,
5344, 5354, 5366, 5379, 5382, 5393, 5396, 5407, 5410, 5419,
5422, 5431, 5434, 5442, 5449, 5448, 5459, 5464, 5467, 5471,
5475, 5458, 5499, 5503, 5508, 5512, 5518, 5519, 5522, 5531,
5532, 5533, 5534, 5537, 5546, 5550, 5561, 5567, 5573, 5579,
5587, 5593, 5599, 5605, 5611, 5619, 5625, 5631, 5637, 5643,
5649, 5655, 5663, 5721, 5729, 5735, 5743, 5749, 5758, 5757,
5772, 5777, 5781, 5787, 5796, 5813, 5827, 5831, 5831, 5847,
5859, 5866, 5873, 5879, 5884, 5889, 5903, 5919, 5931, 5945,
5957, 5971, 5978, 5990, 6004, 6011, 6023, 6030, 6042, 6047,
6052, 6058, 6062, 6066, 6070, 6076, 6080, 6090, 6099, 6106,
6118, 6122, 6131, 6147, 6154, 6163, 6169, 6177, 6181, 6190,
6194, 6202, 6206, 6212, 6222, 6232, 6242, 6255, 6268, 6272,
6280, 6284, 6292, 6296, 6302, 6313, 6323, 6327, 6333, 6343,
6347, 6353, 6359, 6359, 6389, 6393, 6399, 6403, 6411, 6421,
6430, 6441, 6449, 6453, 6457, 6463, 6467, 6471, 6475, 6481,
6485, 6489, 6495, 6499, 6505, 6509, 6515, 6519, 6526, 6529,
6536, 6539, 6545, 6551, 6557, 6564, 6567, 6571, 6577, 6581,
6587, 6591, 6598 ];
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 = 14534;
const YYEMPTY_: i32 = -2;
const YYFINAL_: i32 = 3;
const YYNTOKENS_: i32 = 153;
}
impl Parser {
pub fn new(input: &[u8], options: ParserOptions) -> Self {
let ParserOptions {
buffer_name,
debug,
decoder,
token_rewriter,
record_tokens,
} = options;
let mut lexer = Lexer::new(input, &buffer_name, decoder);
lexer.set_debug(debug);
let current_arg_stack = CurrentArgStack::new();
let max_numparam_stack = MaxNumparamStack::new();
let pattern_variables = VariablesStack::new();
let pattern_hash_keys = VariablesStack::new();
let builder = Builder::new(
lexer.static_env.clone(),
lexer.context.clone(),
current_arg_stack.clone(),
max_numparam_stack.clone(),
pattern_variables.clone(),
pattern_hash_keys.clone(),
lexer.diagnostics.clone(),
);
let last_token_type = 0;
Self {
yy_error_verbose: true,
yynerrs: 0,
yydebug: debug,
yyerrstatus_: 0,
result: None,
builder,
context: lexer.context.clone(),
current_arg_stack,
max_numparam_stack,
pattern_variables,
pattern_hash_keys,
static_env: lexer.static_env.clone(),
last_token_type,
tokens: vec![],
diagnostics: lexer.diagnostics.clone(),
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,
}
}
pub fn set_debug(&mut self, debug: bool) {
self.yydebug = debug;
self.yylexer.set_debug(debug);
}
fn warn(&mut self, loc: &Loc, message: DiagnosticMessage) {
let diagnostic = Diagnostic::new(
ErrorLevel::Warning,
message,
Range::new(loc.begin, loc.end)
);
self.diagnostics.emit(diagnostic);
}
fn yylex(&mut self) -> Token {
self.yylexer.yylex()
}
fn next_token(&mut self) -> Token {
let mut token = self.yylex();
if let Some(token_rewriter) = &mut self.token_rewriter {
let (rewritten_token, token_action, lex_state_action) =
token_rewriter.rewrite_token(token, &self.yylexer.buffer.input.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());
}
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 range = Range::new(ident_t.loc.begin, ident_t.loc.end);
self.diagnostics.emit(
Diagnostic::new(
ErrorLevel::Error,
DiagnosticMessage::ConstArgument,
range
)
);
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,
Range::new(loc.begin, loc.end)
)
}
fn yyerror1(&mut self, message: DiagnosticMessage, range: Range) -> Result<i32, ()> {
let diagnostic = Diagnostic::new(ErrorLevel::Error, message, range);
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(Lexer::TOKEN_NAMES[id].to_owned()),
Range::new(ctx.location().begin, ctx.location().end)
);
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(tok.to_owned()));
}
}
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());
}
}