public function parse(Grammar $grammar, Token $token) { $tag = $token->getTag(); switch ($tag) { case Tag::T_ATOM: return new AtomExpr($grammar->parser->resolveScope($token->getPointer())); case Tag::T_STRING: return new StringExpr($grammar->parser->resolveScope($token->getPointer()), $token->metadata['delimiter']); case Tag::T_DOUBLE: case Tag::T_INTEGER: return new NumberExpr($grammar->parser->resolveScope($token->getPointer()), $tag === Tag::T_DOUBLE ? 'double' : 'int'); case Tag::T_NIL: return new NilExpr(); case Tag::T_TRUE: case Tag::T_FALSE: return new BoolExpr($tag === Tag::T_TRUE); case Tag::T_REGEX: return new RegexExpr($grammar->parser->resolveScope($token->getPointer())); } }
public function parse(Grammar $grammar, Token $token) { return new NameExpr($grammar->parser->resolveScope($token->getPointer())); }