CFGLib.CNFGrammar.BuildLookups C# (CSharp) Method

BuildLookups() private method

private BuildLookups ( ) : void
return void
		private void BuildLookups() {
			_reverseTerminalProductions = Cache.Create(() => Helpers.BuildLookup(
				() => _terminalProductions,
				(p) => (Terminal)p.Rhs[0],
				(p) => p,
				() => (ICollection<Production>)new HashSet<Production>(),
				(x, y) => x.Add(y)
			));
			this.Caches.Add(_reverseTerminalProductions);

			_ntProductionsByNonterminal = Cache.Create(() => Helpers.BuildLookup(
				() => _nonterminalProductions,
				(p) => p.Lhs,
				(p) => p,
				() => (ICollection<Production>)new HashSet<Production>(),
				(x, y) => x.Add(y)
			));
			this.Caches.Add(_ntProductionsByNonterminal);

			_tProductionsByNonterminal = Cache.Create(() => Helpers.BuildLookup(
				() => _terminalProductions,
				(p) => p.Lhs,
				(p) => p,
				() => (ICollection<Production>)new HashSet<Production>(),
				(x, y) => x.Add(y)
			));
			this.Caches.Add(_tProductionsByNonterminal);

			_productionsFrom = Cache.Create(() => Helpers.BuildLookup(
				() => _terminalProductions.Concat(_nonterminalProductions).Concat(_emptyProductions),
				(p) => p.Lhs,
				(p) => p,
				() => (ICollection<Production>)new HashSet<Production>(),
				(x, y) => x.Add(y)
			));
			this.Caches.Add(_productionsFrom);
		}