Example #1
0
 public static function parse(ParserInterface $parser)
 {
     if (ExpressionNode::parse($parser)) {
         $parser->wrap(new static());
         $parser->traverseDown();
     }
     if ($parser->skip(Token::T_CLOSING_TAG)) {
         $parser->parseOutsideTag();
     }
 }
Example #2
0
 public static function parse(ParserInterface $parser)
 {
     $parser->insert(new static());
     $parser->traverseUp();
     if (ExpressionNode::parse($parser)) {
         if ($parser->skip(Token::T_SYMBOL, ',')) {
             self::parse($parser);
         }
     }
     $parser->traverseDown();
     return true;
 }
Example #3
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'include')) {
         $parser->insert(new static());
         $parser->traverseUp();
         $parser->advance();
         ExpressionNode::parse($parser);
         $parser->setAttribute();
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
     }
 }
Example #4
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'for')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->traverseUp();
         if ($parser->accept(Token::T_VAR)) {
             // T_VAR as first attribute
             $parser->insert(new VariableNode($parser->getCurrentToken()->getValue()));
             $parser->setAttribute();
             $parser->advance();
             $parser->expect(Token::T_IDENT, 'in');
             $parser->advance();
             ExpressionNode::parse($parser);
             $parser->setAttribute();
         } elseif ($parser->accept(Token::T_NUMBER)) {
             // T_NUMBER as first attribute
             $parser->insert(new NumberNode($parser->getCurrentToken()->getValue()));
             $parser->setAttribute();
             $parser->advance();
             $parser->expect(Token::T_IDENT, 'to');
             $parser->advance();
             if ($parser->expect(Token::T_NUMBER)) {
                 $parser->insert(new NumberNode($parser->getCurrentToken()->getValue()));
                 $parser->setAttribute();
                 $parser->advance();
                 if ($parser->accept(Token::T_IDENT, 'as')) {
                     $parser->advance();
                     $parser->expect(Token::T_VAR);
                     $parser->insert(new VariableNode($parser->getCurrentToken()->getValue()));
                     $parser->setAttribute();
                     $parser->advance();
                 }
             }
         }
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->parseOutsideTag();
         $parser->skip(Token::T_OPENING_TAG);
         $parser->skip(Token::T_IDENT, '/for');
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
         return true;
     }
     return false;
 }
Example #5
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'extends')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->traverseUp();
         ExpressionNode::parse($parser);
         $parser->setAttribute();
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->parseOutsideTag();
         $parser->skip(Token::T_OPENING_TAG);
         $parser->skip(Token::T_IDENT, '/extends');
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
         return true;
     }
     return false;
 }
Example #6
0
 public static function parse(ParserInterface $parser)
 {
     if (ExpressionNode::parse($parser) || LogicalOperatorNode::parse($parser)) {
         if (!$parser->getScope() instanceof self) {
             // Insert the condition and move inside
             $parser->wrap(new static());
         }
         if (ExpressionNode::parse($parser) || LogicalOperatorNode::parse($parser)) {
             self::parse($parser);
         } else {
             $parser->traverseDown();
         }
         return true;
     } else {
         // Get out of the condition if we are still in it
         if ($parser->getScope() instanceof self) {
             $parser->traverseDown();
         }
     }
     return false;
 }
Example #7
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'block')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->traverseUp();
         ExpressionNode::parse($parser);
         $parser->setAttribute();
         if ($parser->accept(Token::T_IDENT, 'prepend') || $parser->accept(Token::T_IDENT, 'append')) {
             $parser->insert(new OptionNode($parser->getCurrentToken()->getValue()));
             $parser->setAttribute();
             $parser->advance();
         }
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->parseOutsideTag();
         $parser->skip(Token::T_OPENING_TAG);
         $parser->skip(Token::T_IDENT, '/block');
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
         return true;
     }
     return false;
 }