QuackCompiler\Parser\Grammar::identifier PHP Method

identifier() public method

public identifier ( )
    public function identifier()
    {
        return $this->parser->resolveScope($this->parser->match(Tag::T_IDENT));
    }

Usage Example

Esempio n. 1
0
 public function parse(Grammar $grammar, Token $token)
 {
     $parameters = [];
     $kind = null;
     $body = null;
     $has_brackets = false;
     // When identifier, we have an unary function
     if ($grammar->parser->is(Tag::T_IDENT)) {
         $name = $grammar->identifier();
         $parameters[] = (object) ['name' => $name, 'is_reference' => false];
     } else {
         $has_brackets = true;
         $grammar->parser->match('[');
         if (!$grammar->parser->consumeIf(']')) {
             $parameters[] = $grammar->_parameter();
             while ($grammar->parser->consumeIf(',')) {
                 $parameters[] = $grammar->_parameter();
             }
             $grammar->parser->match(']');
         }
     }
     $grammar->parser->match('->');
     if ($grammar->parser->is(Tag::T_BEGIN)) {
         $kind = static::TYPE_STATEMENT;
         $grammar->parser->consume();
         $body = iterator_to_array($grammar->_innerStmtList());
         $grammar->parser->match(Tag::T_END);
     } else {
         $kind = static::TYPE_EXPRESSION;
         $body = $grammar->_expr();
     }
     return new LambdaExpr($parameters, $kind, $body, $has_brackets);
 }
All Usage Examples Of QuackCompiler\Parser\Grammar::identifier