/** * @param Token $token * @param Parser $parser * @return Node */ public function parse(Token $token, Parser $parser) { parent::parse($token, $parser); $stream = $parser->getStream(); $name = $stream->expect(TokenTypes::T_NAME, null, 'Missing macro name'); $args = null; if ($stream->test(TokenTypes::T_OPEN_PARAN)) { $args = $parser->getExpressionParser()->parseArguments(false, true); } $body = $this->parseBody($parser); $parser->setMacro($name->getValue(), new Node\Macro($name->getValue(), $args, $body, $token->getLine())); }
/** * @param Token $token * @param Parser $parser * @return Node */ public function parse(Token $token, Parser $parser) { parent::parse($token, $parser); return new SandboxNode($this->parseBody($parser), $token->getLine()); }