MCPcopy Create free account
hub / github.com/dynjs/dynjs / primaryExpression

Method primaryExpression

src/main/java/org/dynjs/parser/js/Parser.java:183–241  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

181 // ----------------------------------------------------------------------
182
183 public Expression primaryExpression() {
184 TokenType t = la();
185
186 Token token = null;
187
188 switch (t) {
189 case THIS:
190 return factory.thisExpression(consume());
191 case IDENTIFIER:
192 token = consume(IDENTIFIER);
193 if (!isValidIdentifier(token)) {
194 throw new SyntaxError(token, "invalid identifier: " + token.getText());
195 }
196 return factory.identifier(token, token.getText());
197 case STRING_LITERAL:
198 token = consume(STRING_LITERAL);
199 if (currentContext().isStrict() && token.isEscapedOctalString()) {
200 throw new SyntaxError(token, "octal escapes not allowed in strict mode");
201 }
202 return factory.stringLiteral(token, token.getText(), token.isEscapedString(), token.isContinuedLine());
203 case DECIMAL_LITERAL:
204 token = consume(DECIMAL_LITERAL);
205 return factory.decimalLiteral(token, token.getText());
206 case HEX_LITERAL:
207 token = consume(HEX_LITERAL);
208 return factory.hexLiteral(token, token.getText());
209 case OCTAL_LITERAL:
210 token = consume(OCTAL_LITERAL);
211 if (currentContext().isStrict()) {
212 throw new SyntaxError(token, "octal literals not allowed in strict mode");
213 }
214 return factory.octalLiteral(token, token.getText());
215 case REGEXP_LITERAL:
216 token = consume(REGEXP_LITERAL);
217 return factory.regexpLiteral(token, token.getText());
218 case TRUE:
219 return factory.trueLiteral(consume());
220 case FALSE:
221 return factory.falseLiteral(consume());
222 case NULL:
223 return factory.nullLiteral(consume());
224 case LEFT_BRACE:
225 return objectLiteral();
226 case LEFT_BRACKET:
227 return arrayLiteral();
228 case LEFT_PAREN:
229 consume(LEFT_PAREN);
230 try {
231 ++this.parens;
232 Expression expr = expression();
233 consume(RIGHT_PAREN);
234 return expr;
235 } finally {
236 --this.parens;
237 }
238 }
239
240 throw new SyntaxError(laToken(), "unexpected token: " + laToken().getText());

Callers 1

memberExpressionMethod · 0.95

Calls 15

laMethod · 0.95
consumeMethod · 0.95
isValidIdentifierMethod · 0.95
getTextMethod · 0.95
currentContextMethod · 0.95
isEscapedOctalStringMethod · 0.95
isEscapedStringMethod · 0.95
isContinuedLineMethod · 0.95
objectLiteralMethod · 0.95
arrayLiteralMethod · 0.95
expressionMethod · 0.95
laTokenMethod · 0.95

Tested by

no test coverage detected