4 * This file is part of Twig.
6 * (c) 2010 Fabien Potencier
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
11 class Twig_Extensions_Grammar_Tag
extends Twig_Extensions_Grammar
15 public function __construct()
17 $this->grammar
= array();
18 foreach (func_get_args() as $grammar) {
19 $this->addGrammar($grammar);
23 public function __toString()
26 foreach ($this->grammar
as $grammar) {
27 $repr[] = (string) $grammar;
30 return implode(' ', $repr);
33 public function addGrammar(Twig_Extensions_GrammarInterface
$grammar)
35 $this->grammar
[] = $grammar;
38 public function parse(Twig_Token
$token)
41 foreach ($this->grammar
as $grammar) {
42 $grammar->setParser($this->parser
);
44 $element = $grammar->parse($token);
45 if (is_array($element)) {
46 $elements = array_merge($elements, $element);
48 $elements[$grammar->getName()] = $element;
52 $this->parser
->getStream()->expect(Twig_Token
::BLOCK_END_TYPE
);