CFGLib.CFGtoCNF.StepUnit C# (CSharp) Method

StepUnit() private method

Eliminate unit rules (e.g., <X> -> <Y>)
private StepUnit ( ISet productions ) : void
productions ISet
return void
		private void StepUnit(ISet<Production> productions) {
			// TODO: maybe we shouldn't allow self loops?
			RemoveSelfLoops(productions);

			var toRemove = BaseGrammar.RemoveDuplicatesHelper(productions);
			foreach (var production in toRemove) {
				productions.Remove(production);
			}

			var finalProductions = RemoveUnits(productions);
			productions.Clear();
			productions.UnionWith(finalProductions);
		}