示例#1
0
文件: Parser.php 项目: bugadani/minty
 private function parseToken(Token $token, Stream $stream, RootNode $root)
 {
     $value = $token->getValue();
     switch ($token->getType()) {
         case Token::TEXT:
             $root->addChild(new PrintNode($value));
             break;
         case Token::TAG_START:
             try {
                 $node = $this->environment->getTag($value)->parse($this, $stream);
                 if ($node instanceof Node) {
                     $node->addData('line', $token->getLine());
                     $root->addChild($node);
                 }
             } catch (\OutOfBoundsException $e) {
                 throw new ParseException("Unknown {$value} tag", $token->getLine(), $e);
             }
             break;
         default:
             $type = $token->getTypeString();
             $line = $token->getLine();
             throw new ParseException("Unexpected {$type} ({$value}) token", $line);
     }
     return $stream->next();
 }
示例#2
0
文件: Stream.php 项目: bugadani/minty
 /**
  * @param $type
  * @param $value
  *
  * @throws Exceptions\SyntaxException
  * @return Token
  */
 public function expectCurrent($type, $value = null)
 {
     if ($this->current->test($type, $value)) {
         return $this->current;
     }
     $value = $this->current->getValue();
     $message = "Unexpected {$this->current->getTypeString()}";
     if ($value === true) {
         $message .= ' (true)';
     } elseif ($value === false) {
         $message .= ' (false)';
     } elseif ($value !== '') {
         $message .= " ({$value})";
     }
     throw new SyntaxException($message, $this->current->getLine());
 }