MCPcopy
hub / github.com/jquery/esprima / parsePrimaryExpression

Method parsePrimaryExpression

src/parser.ts:602–700  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

600 // https://tc39.github.io/ecma262/#sec-primary-expression
601
602 parsePrimaryExpression(): Node.Expression {
603 const node = this.createNode();
604
605 let expr: Node.Expression;
606 let token, raw;
607
608 switch (this.lookahead.type) {
609 case Token.Identifier:
610 if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {
611 this.tolerateUnexpectedToken(this.lookahead);
612 }
613 expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));
614 break;
615
616 case Token.NumericLiteral:
617 case Token.StringLiteral:
618 if (this.context.strict && this.lookahead.octal) {
619 this.tolerateUnexpectedToken(this.lookahead, Messages.StrictOctalLiteral);
620 }
621 this.context.isAssignmentTarget = false;
622 this.context.isBindingElement = false;
623 token = this.nextToken();
624 raw = this.getTokenRaw(token);
625 expr = this.finalize(node, new Node.Literal(token.value, raw));
626 break;
627
628 case Token.BooleanLiteral:
629 this.context.isAssignmentTarget = false;
630 this.context.isBindingElement = false;
631 token = this.nextToken();
632 raw = this.getTokenRaw(token);
633 expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));
634 break;
635
636 case Token.NullLiteral:
637 this.context.isAssignmentTarget = false;
638 this.context.isBindingElement = false;
639 token = this.nextToken();
640 raw = this.getTokenRaw(token);
641 expr = this.finalize(node, new Node.Literal(null, raw));
642 break;
643
644 case Token.Template:
645 expr = this.parseTemplateLiteral();
646 break;
647
648 case Token.Punctuator:
649 switch (this.lookahead.value) {
650 case '(':
651 this.context.isBindingElement = false;
652 expr = this.inheritCoverGrammar(this.parseGroupExpression);
653 break;
654 case '[':
655 expr = this.inheritCoverGrammar(this.parseArrayInitializer);
656 break;
657 case '{':
658 expr = this.inheritCoverGrammar(this.parseObjectInitializer);
659 break;

Callers 1

Calls 14

createNodeMethod · 0.95
matchAsyncFunctionMethod · 0.95
finalizeMethod · 0.95
nextTokenMethod · 0.95
getTokenRawMethod · 0.95
parseTemplateLiteralMethod · 0.95
inheritCoverGrammarMethod · 0.95
nextRegexTokenMethod · 0.95
throwUnexpectedTokenMethod · 0.95
matchKeywordMethod · 0.95

Tested by

no test coverage detected