/** * @return \Helstern\Nomsky\GrammarAnalysis\ParseTable\LLParseTable */ public function build() { $parseTable = new LLParseTable($this->nonTerminals, $this->terminals, $this->productionHashAlgorithm); /** @var NormalizedProduction $production */ foreach ($this->lookAheadSets->getEntrySetIterator() as $production => $terminalSet) { $lhs = $production->getLeftHandSide(); /** @var Symbol $terminal */ foreach ($terminalSet as $terminal) { $parseTable->add($lhs, $terminal, $production); } } return $parseTable; }