rustlr 0.3.0

LR/LALR parser generator that can automatically create abstract syntax trees
Documentation
//Parser generated by rustlr for grammar zc1

#![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)]
extern crate rustlr;
use rustlr::{Tokenizer,TerminalToken,ZCParser,ZCRProduction,Stateaction,decode_action};

const SYMBOLS:[&'static str;10] = ["E","T","F","+","*","(",")","num","START","EOF"];

const TABLE:[u64;45] = [8590065665,30064967680,21475164160,4295032833,262145,281492156973056,281513631481858,281500746579970,281487861678082,562967133487106,562988608323586,562975723421698,562962838519810,844437815361538,844463585165314,844442110328834,844450700263426,1125938561548291,1125912792203264,1407374884077569,1407404948520960,1407396358717440,1407383473618945,1407379178586113,1688879925231616,1688871335428096,1688858450788353,1970354901942272,1970333427040257,1970329132597249,1970346312138752,2251825584209920,2251812699045888,2533291970396162,2533287675428866,2533300560330754,2533313445232642,2814762652008450,2814788421812226,2814766947368960,2814775536910338,3096241923948546,3096263398785026,3096250513883138,3096237628981250,];

pub fn make_parser() -> ZCParser<i32,i32>
{
 let mut parser1:ZCParser<i32,i32> = ZCParser::new(7,12);
 let mut rule = ZCRProduction::<i32,i32>::new_skeleton("start");
 rule = ZCRProduction::<i32,i32>::new_skeleton("E");
 rule.Ruleaction = |parser|{ let mut t = parser.popstack(); let mut _item1_ = parser.popstack(); let mut e = parser.popstack();  e.value + t.value };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("E");
 rule.Ruleaction = |parser|{ let mut t = parser.popstack();  t.value };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("T");
 rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); 
  if let ((f),(t),)=(_item2_.value,_item0_.value,) {  t*f }  else {parser.bad_pattern("((f),(t),)")} };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("T");
 rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); 
  if let ((f),)=(_item0_.value,) {  f }  else {parser.bad_pattern("((f),)")} };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("F");
 rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut e = parser.popstack(); let mut _item0_ = parser.popstack();  e.value };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("F");
 rule.Ruleaction = |parser|{ let mut n = parser.popstack();  n.value };
 parser1.Rules.push(rule);
 rule = ZCRProduction::<i32,i32>::new_skeleton("START");
 rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <i32>::default()};
 parser1.Rules.push(rule);
 parser1.Errsym = "";

 for i in 0..45 {
   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;
} //make_parser

fn load_extras(parser:&mut ZCParser<i32,i32>)
{
}//end of load_extras: don't change this line as it affects augmentation