identifier() public method

public identifier ( )
示例#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);
 }
示例#2
0
 public function parse(Grammar $grammar, Expr $left, Token $token)
 {
     $clauses = [];
     $name = $grammar->identifier();
     $grammar->parser->match(':-');
     $value = $grammar->_expr();
     $clauses[] = [$name, $value];
     while ($grammar->parser->is(';')) {
         $grammar->parser->consume();
         $name = $grammar->identifier();
         $grammar->parser->match(':-');
         $value = $grammar->_expr();
         $clauses[] = [$name, $value];
     }
     return new WhereExpr($left, $clauses);
 }
示例#3
0
 public function parse(Grammar $grammar, Token $token)
 {
     $keys = [];
     $values = [];
     if (!$grammar->parser->consumeIf('}')) {
         $keys[] = $grammar->identifier();
         $grammar->parser->match('->');
         $values[] = $grammar->_expr();
         while ($grammar->parser->consumeIf(';')) {
             $keys[] = $grammar->identifier();
             $grammar->parser->match('->');
             $values[] = $grammar->_expr();
         }
         $grammar->parser->match('}');
     }
     return new ObjectExpr($keys, $values);
 }