コード例 #1
0
ファイル: StringNode.php プロジェクト: reinvanoyen/aegis
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_STRING)) {
         $parser->insert(new static($parser->getCurrentToken()->getValue()));
         $parser->advance();
         return true;
     }
     return false;
 }
コード例 #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;
 }
コード例 #3
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'not') || $parser->accept(Token::T_IDENT, 'or') || $parser->accept(Token::T_IDENT, 'and') || $parser->accept(Token::T_IDENT, 'equals')) {
         $parser->insert(new static($parser->getCurrentToken()->getValue()));
         $parser->advance();
         return true;
     }
     return false;
 }
コード例 #4
0
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT) && $parser->acceptNext(Token::T_SYMBOL, '(')) {
         $parser->insert(new static($parser->getCurrentToken()->getValue()));
         $parser->advance();
         $parser->skip(Token::T_SYMBOL, '(');
         $parser->traverseUp();
         ArgumentListNode::parse($parser);
         $parser->skip(Token::T_SYMBOL, ')');
         $parser->traverseDown();
         return true;
     }
     return false;
 }
コード例 #5
0
ファイル: IfNode.php プロジェクト: reinvanoyen/aegis
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'if')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->traverseUp();
         if (ConditionNode::parse($parser)) {
             $parser->setAttribute();
         }
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->parseOutsideTag();
         if (ElseNode::parse($parser)) {
             $parser->parseOutsideTag();
         }
         if (ElseIfNode::parse($parser)) {
             $parser->parseOutsideTag();
         }
         $parser->skip(Token::T_OPENING_TAG);
         $parser->skip(Token::T_IDENT, '/if');
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
         return true;
     }
     return false;
 }
コード例 #6
0
ファイル: RawNode.php プロジェクト: reinvanoyen/aegis
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'raw') || $parser->accept(Token::T_IDENT, 'r')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->traverseUp();
         if (ExpressionNode::parse($parser)) {
             $parser->setAttribute();
         }
         $parser->skip(Token::T_CLOSING_TAG);
         $parser->traverseDown();
         $parser->parseOutsideTag();
     }
 }
コード例 #7
0
ファイル: ElseNode.php プロジェクト: reinvanoyen/aegis
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_IDENT, 'else')) {
         $parser->insert(new static());
         $parser->advance();
         $parser->expect(Token::T_CLOSING_TAG);
         $parser->advance();
         return true;
     }
     return false;
 }
コード例 #8
0
ファイル: ListNode.php プロジェクト: reinvanoyen/aegis
 public static function parse(ParserInterface $parser)
 {
     if ($parser->accept(Token::T_SYMBOL, '[')) {
         $parser->insert(new static());
         $parser->traverseUp();
         $parser->advance();
         ArgumentListNode::parse($parser);
         $parser->expect(Token::T_SYMBOL, ']');
         $parser->advance();
         $parser->traverseDown();
         return true;
     }
     return false;
 }
コード例 #9
0
ファイル: ExtendNode.php プロジェクト: reinvanoyen/aegis
 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;
 }
コード例 #10
0
ファイル: BlockNode.php プロジェクト: reinvanoyen/aegis
 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;
 }
コード例 #11
0
ファイル: ForNode.php プロジェクト: reinvanoyen/aegis
 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;
 }