コード例 #1
0
ファイル: AST.php プロジェクト: jamoli/php-rule-parser
 /**
  * @param string $name
  * @return BaseToken
  * @throws Exceptions\ParserException
  */
 public function getVariable($name)
 {
     if (!array_key_exists($name, $this->variables)) {
         $token = $this->stack->current();
         throw new Exceptions\ParserException(sprintf('Undefined variable "%s" at position %d on line %d', $name, $token->getPosition(), $token->getLine()));
     }
     return TokenFactory::createFromPHPType($this->variables[$name]);
 }
コード例 #2
0
ファイル: Tokenizer.php プロジェクト: nicoswd/php-rule-parser
 /**
  * {@inheritdoc}
  */
 public function tokenize($string)
 {
     $stack = new Stack();
     $regex = $this->getRegex();
     $baseNameSpace = __NAMESPACE__ . '\\Tokens\\Token';
     $offset = 0;
     while (preg_match($regex, $string, $matches, 0, $offset)) {
         $token = $this->getMatchedToken($matches);
         $className = $baseNameSpace . $token;
         $stack->attach(new $className($matches[$token], $offset, $stack));
         $offset += strlen($matches[0]);
     }
     return $stack;
 }