rustlr 0.4.8

Bottom-Up Parser Generator with Advanced Options
Documentation
324,325c324,330
<           else {String::new()};
<           
---
>                  else {String::new()};
>      let mut groupvariants:HashMap<usize,HashSet<String>> = HashMap::new();
>      /*
>      for (_,ntd) in toextend.iter() {
>        groupvariants.insert(*ntd,HashSet::new());
>      }
>      */
337c342,347
<         let mut groupenums = HashSet::new(); // for variant-groups
---
> 	let mut targetnt = nti;
> 	if let Some(ntd) = toextend.get(nt) { targetnt = *ntd;}
> 	if !groupvariants.contains_key(&targetnt) {
> 	  groupvariants.insert(targetnt,HashSet::new());
> 	}
> 	let groupenums = groupvariants.get_mut(&targetnt).unwrap();
403c413,415
<                   groupenums.insert(self.Rules[*ri].lhs.label.clone());
---
> 		  let toinsert = self.Rules[*ri].lhs.label.clone();
> //println!("inserting {} to groupenums, had len {}",&toinsert, groupenums.len());
>                   groupenums.insert(toinsert);
409,419d420
<               /*
<               if groupoper.len()>0 {
<                 let operlab = self.Rules[*ri].lhs.label.to_lowercase();
<                 if groupenums.contains(&self.Rules[*ri].lhs.label) {
<                   nullenum = true;
<                 } else
<                    enumvar.push_str(&format!("{}:&'static str,",&operlab));
<                   groupenums.insert(self.Rules[*ri].lhs.label.clone());
<                 }
<                 ACTION.push_str(&format!("{}:\"{}\",",&operlab,groupoper));
<               */