#![allow(unused_variables)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_parens)]
#![allow(unused_mut)]
#![allow(unused_imports)]
#![allow(unused_assignments)]
#![allow(dead_code)]
#![allow(irrefutable_let_patterns)]
#![allow(unreachable_patterns)]
use std::rc::Rc;
use std::cell::RefCell;
extern crate rustlr;
use rustlr::{Tokenizer,TerminalToken,ZCParser,ZCRProduction,Stateaction,decode_action};
static SYMBOLS:[&'static str;18] = ["_WILDCARD_TOKEN_","PROCEDURE","identifier","IS","NEW","generic_procedure_name","SEPARATE","body_stub","declarative_part","declarative_part_opt","formal_part_opt","generic_instantiation","subprogram_body","subprogram_specification","START","EOF","NEWDELAYNT_subprogram_specification_3","NEWDELAYNT_formal_part_opt_3"];
static TABLE:[u64;25] = [51540000769,30065098753,34359934977,47244771329,68720394241,4295819264,563014378061826,844489354641411,1407439308128258,1688914284773378,3659183288287232,3940675444736000,3940688329703425,3940714098720770,4222189075955714,4503664052600834,4785087490293760,4785147619770369,5348050328223746,5348088982929410,5629516715458560,5629525304868866,5629563959574530,5910995987202048,6192513912668162,];
pub fn make_parser() -> ZCParser<(),()>
{
let mut parser1:ZCParser<(),()> = ZCParser::new(15,24);
let mut rule = ZCRProduction::<(),()>::new_skeleton("start");
rule = ZCRProduction::<(),()>::new_skeleton("declarative_part");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("declarative_part");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("declarative_part");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("subprogram_body");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("declarative_part_opt");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("body_stub");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("subprogram_specification");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("formal_part_opt");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("generic_instantiation");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("START");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("NEWDELAYNT_subprogram_specification_3");
rule.Ruleaction = |parser|{ let mut _item_del3_10_6_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); let _delvar_16_0_ = _rrsemaction_6_(parser,_item0_,_item1_,_item2_); (_delvar_16_0_,_item_del3_10_6_,) };
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("subprogram_body");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _delayitem0_3_13 = parser.popstack(); _rrsemaction_3_(parser,_delayitem0_3_13.0,_delayitem0_3_13.1,_item1_) };
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("body_stub");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _delayitem0_5_15 = parser.popstack(); _rrsemaction_5_(parser,_delayitem0_5_15.0,_delayitem0_5_15.1,_item1_) };
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("NEWDELAYNT_formal_part_opt_3");
rule.Ruleaction = |parser|{ let mut _item_del0_13_7_ = parser.popstack(); let _delvar_17_2_ = _rrsemaction_7_(parser); (_delvar_17_2_,_item_del0_13_7_,) };
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("NEWDELAYNT_subprogram_specification_3");
rule.Ruleaction = |parser|{ let mut _delayitem2_10_17 = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); _rrsemaction_10_(parser,_item0_,_item1_,_delayitem2_10_17.0,_delayitem2_10_17.1) };
parser1.Rules.push(rule);
parser1.Errsym = "";
for i in 0..25 {
let symi = ((TABLE[i] & 0x0000ffff00000000) >> 32) as usize;
let sti = ((TABLE[i] & 0xffff000000000000) >> 48) as usize;
parser1.RSM[sti].insert(SYMBOLS[symi],decode_action(TABLE[i]));
}
for s in SYMBOLS { parser1.Symset.insert(s); }
load_extras(&mut parser1);
return parser1;
}
pub fn parse_with<'t>(parser:&mut ZCParser<(),()>, lexer:&mut dyn Tokenizer<'t,()>) -> Result<(),()>
{
let _xres_ = parser.parse(lexer); if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
}
pub fn parse_train_with<'t>(parser:&mut ZCParser<(),()>, lexer:&mut dyn Tokenizer<'t,()>, parserpath:&str) -> Result<(),()>
{
let _xres_ = parser.parse_train(lexer,parserpath); if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
}fn load_extras(parser:&mut ZCParser<(),()>)
{
}