Пример #1
0
		internal ICollection<Production> ProductionsProductingTerminal(Terminal terminal) {
			ICollection<Production> result;
			if (!_reverseTerminalProductions.Value.TryGetValue(terminal, out result)) {
				result = new Collection<Production>();
			}
			return result;				
		}
Пример #2
0
		public static Terminal Of(string v) {
			Terminal terminal;
			if (!_history.TryGetValue(v, out terminal)) {
				terminal = new Terminal(v);
				_history[v] = terminal;
			}
			return terminal;
		}
Пример #3
0
		public Production NextCNFTerminalProduction(int numNonterminals, IList<Terminal> terminals, Terminal rhs = null) {
			if (rhs == null) {
				rhs = RandomTerminal(terminals);
			}
			var lhs = RandomNonterminal(numNonterminals);

			return new Production(lhs, new Sentence { rhs });
		}