src/jdk/nashorn/internal/parser/Parser.java

Print this page




1782      *      Literal
1783      *      ArrayLiteral
1784      *      ObjectLiteral
1785      *      ( Expression )
1786      *
1787      *  See 11.1
1788      *
1789      * Parse primary expression.
1790      * @return Expression node.
1791      */
1792     @SuppressWarnings("fallthrough")
1793     private Expression primaryExpression() {
1794         // Capture first token.
1795         final int  primaryLine  = line;
1796         final long primaryToken = token;
1797 
1798         switch (type) {
1799         case THIS:
1800             final String name = type.getName();
1801             next();

1802             return new IdentNode(primaryToken, finish, name);
1803         case IDENT:
1804             final IdentNode ident = getIdent();
1805             if (ident == null) {
1806                 break;
1807             }
1808             detectSpecialProperty(ident);
1809             return ident;
1810         case OCTAL:
1811             if (isStrictMode) {
1812                throw error(AbstractParser.message("strict.no.octal"), token);
1813             }
1814         case STRING:
1815         case ESCSTRING:
1816         case DECIMAL:
1817         case HEXADECIMAL:
1818         case FLOATING:
1819         case REGEX:
1820         case XML:
1821             return getLiteral();




1782      *      Literal
1783      *      ArrayLiteral
1784      *      ObjectLiteral
1785      *      ( Expression )
1786      *
1787      *  See 11.1
1788      *
1789      * Parse primary expression.
1790      * @return Expression node.
1791      */
1792     @SuppressWarnings("fallthrough")
1793     private Expression primaryExpression() {
1794         // Capture first token.
1795         final int  primaryLine  = line;
1796         final long primaryToken = token;
1797 
1798         switch (type) {
1799         case THIS:
1800             final String name = type.getName();
1801             next();
1802             lc.setFlag(lc.getCurrentFunction(), FunctionNode.USES_THIS);
1803             return new IdentNode(primaryToken, finish, name);
1804         case IDENT:
1805             final IdentNode ident = getIdent();
1806             if (ident == null) {
1807                 break;
1808             }
1809             detectSpecialProperty(ident);
1810             return ident;
1811         case OCTAL:
1812             if (isStrictMode) {
1813                throw error(AbstractParser.message("strict.no.octal"), token);
1814             }
1815         case STRING:
1816         case ESCSTRING:
1817         case DECIMAL:
1818         case HEXADECIMAL:
1819         case FLOATING:
1820         case REGEX:
1821         case XML:
1822             return getLiteral();