Example #1
0
 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());
 }
Example #2
0
 /**
  * @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;
 }