public function testNext() { $rule = new Rule(); $object = new Situation(new Table(), $rule); $this->assertFalse($object->next()); $nextRule = new Rule(); $rule->setRight([$nextRule]); $this->assertSame($nextRule, $object->next()); }
/** * @param Syntax $syntax * * @return array */ public function addRules(Syntax $syntax) { $tokens = []; foreach ($syntax->getRules() as $token) { foreach ($token->getExpressions() as $expression) { $rule = new Rule(); $rule->setLeft($token->getName()); $rule->setRight($expression->getTokens()); $rule->setCallback($expression->getCallback()); $this->left->getRuleSet($token->getName())->addRule($rule); $this->ordered->addRule($rule); foreach ($rule->getRight() as $right) { $this->right->getRuleSet($right)->addRule($rule); $tokens[] = $right; } } } $tokens = array_unique($tokens); return $tokens; }