()
| 3546 | } |
| 3547 | |
| 3548 | private AstNode primaryExpr() throws IOException { |
| 3549 | int ttFlagged = peekFlaggedToken(); |
| 3550 | int tt = ttFlagged & CLEAR_TI_MASK; |
| 3551 | |
| 3552 | switch (tt) { |
| 3553 | case Token.FUNCTION: |
| 3554 | consumeToken(); |
| 3555 | return function(FunctionNode.FUNCTION_EXPRESSION); |
| 3556 | |
| 3557 | case Token.LB: |
| 3558 | consumeToken(); |
| 3559 | return arrayLiteral(); |
| 3560 | |
| 3561 | case Token.LC: |
| 3562 | consumeToken(); |
| 3563 | return objectLiteral(); |
| 3564 | |
| 3565 | case Token.LET: |
| 3566 | consumeToken(); |
| 3567 | return let(false, ts.tokenBeg); |
| 3568 | |
| 3569 | case Token.LP: |
| 3570 | consumeToken(); |
| 3571 | return parenExpr(); |
| 3572 | |
| 3573 | case Token.XMLATTR: |
| 3574 | consumeToken(); |
| 3575 | mustHaveXML(); |
| 3576 | return attributeAccess(); |
| 3577 | |
| 3578 | case Token.NAME: |
| 3579 | consumeToken(); |
| 3580 | return name(ttFlagged, tt); |
| 3581 | |
| 3582 | case Token.NUMBER: |
| 3583 | case Token.BIGINT: |
| 3584 | { |
| 3585 | consumeToken(); |
| 3586 | return createNumericLiteral(tt, false); |
| 3587 | } |
| 3588 | |
| 3589 | case Token.STRING: |
| 3590 | consumeToken(); |
| 3591 | return createStringLiteral(); |
| 3592 | |
| 3593 | case Token.DIV: |
| 3594 | case Token.ASSIGN_DIV: |
| 3595 | consumeToken(); |
| 3596 | // Got / or /= which in this context means a regexp |
| 3597 | ts.readRegExp(tt); |
| 3598 | int pos = ts.tokenBeg, end = ts.tokenEnd; |
| 3599 | RegExpLiteral re = new RegExpLiteral(pos, end - pos); |
| 3600 | re.setValue(ts.getString()); |
| 3601 | re.setFlags(ts.readAndClearRegExpFlags()); |
| 3602 | re.setLineColumnNumber(lineNumber(), columnNumber()); |
| 3603 | return re; |
| 3604 | |
| 3605 | case Token.UNDEFINED: |
no test coverage detected