MCPcopy Create free account
hub / github.com/dop251/goja / parsePrimaryExpression

Method parsePrimaryExpression

parser/expression.go:22–111  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

20}
21
22func (self *_parser) parsePrimaryExpression() ast.Expression {
23 literal, parsedLiteral := self.literal, self.parsedLiteral
24 idx := self.idx
25 switch self.token {
26 case token.IDENTIFIER:
27 self.next()
28 return &ast.Identifier{
29 Name: parsedLiteral,
30 Idx: idx,
31 }
32 case token.NULL:
33 self.next()
34 return &ast.NullLiteral{
35 Idx: idx,
36 Literal: literal,
37 }
38 case token.BOOLEAN:
39 self.next()
40 value := false
41 switch parsedLiteral {
42 case "true":
43 value = true
44 case "false":
45 value = false
46 default:
47 self.error(idx, "Illegal boolean literal")
48 }
49 return &ast.BooleanLiteral{
50 Idx: idx,
51 Literal: literal,
52 Value: value,
53 }
54 case token.STRING:
55 self.next()
56 return &ast.StringLiteral{
57 Idx: idx,
58 Literal: literal,
59 Value: parsedLiteral,
60 }
61 case token.NUMBER:
62 self.next()
63 value, err := parseNumberLiteral(literal)
64 if err != nil {
65 self.error(idx, err.Error())
66 value = 0
67 }
68 return &ast.NumberLiteral{
69 Idx: idx,
70 Literal: literal,
71 Value: value,
72 }
73 case token.SLASH, token.QUOTIENT_ASSIGN:
74 return self.parseRegExpLiteral()
75 case token.LEFT_BRACE:
76 return self.parseObjectLiteral()
77 case token.LEFT_BRACKET:
78 return self.parseArrayLiteral()
79 case token.LEFT_PARENTHESIS:

Calls 15

nextMethod · 0.95
errorMethod · 0.95
parseRegExpLiteralMethod · 0.95
parseObjectLiteralMethod · 0.95
parseArrayLiteralMethod · 0.95
parseTemplateLiteralMethod · 0.95
parseSuperPropertyMethod · 0.95
parseFunctionMethod · 0.95
parseClassMethod · 0.95
isBindingIdMethod · 0.95

Tested by

no test coverage detected