private ImmutableList<ParseTree> parseInterfaceElements() { ImmutableList.Builder<ParseTree> result = ImmutableList.builder(); while (peekInterfaceElement()) { result.add(parseInterfaceElement()); if (!peek(TokenType.CLOSE_CURLY)) { // The standard delimiter is semicolon, but we also accept comma if (peekImplicitSemiColon()) { eatPossibleImplicitSemiColon(); } else { eat(TokenType.COMMA); } } } return result.build(); }
private ImmutableList<ParseTree> parseInterfaceElements() { ImmutableList.Builder<ParseTree> result = ImmutableList.builder(); while (peekInterfaceElement()) { result.add(parseInterfaceElement()); if (!peek(TokenType.CLOSE_CURLY)) { // The standard delimiter is semicolon, but we also accept comma if (peekImplicitSemiColon()) { eatPossibleImplicitSemiColon(); } else { eat(TokenType.COMMA); } } } return result.build(); }
private ParseTree parseDebuggerStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.DEBUGGER); eatPossibleImplicitSemiColon(); return new DebuggerStatementTree(getTreeLocation(start)); }
private ExpressionStatementTree parseExpressionStatement() { SourcePosition start = getTreeStartLocation(); ParseTree expression = parseExpression(); eatPossibleImplicitSemiColon(); return new ExpressionStatementTree(getTreeLocation(start), expression); }
private VariableStatementTree parseVariableStatement() { SourcePosition start = getTreeStartLocation(); VariableDeclarationListTree declarations = parseVariableDeclarationList(); eatPossibleImplicitSemiColon(); return new VariableStatementTree(getTreeLocation(start), declarations); }
private ExpressionStatementTree parseExpressionStatement() { SourcePosition start = getTreeStartLocation(); ParseTree expression = parseExpression(); eatPossibleImplicitSemiColon(); return new ExpressionStatementTree(getTreeLocation(start), expression); }
private VariableStatementTree parseVariableStatement() { SourcePosition start = getTreeStartLocation(); VariableDeclarationListTree declarations = parseVariableDeclarationList(); eatPossibleImplicitSemiColon(); return new VariableStatementTree(getTreeLocation(start), declarations); }
private ParseTree parseDebuggerStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.DEBUGGER); eatPossibleImplicitSemiColon(); return new DebuggerStatementTree(getTreeLocation(start)); }
private ParseTree parseAmbientDeclarationHelper() { ParseTree declare; switch (peekType()) { case FUNCTION: declare = parseAmbientFunctionDeclaration(); eatPossibleImplicitSemiColon(); break; case CLASS: declare = parseClassDeclaration(true); break; case ENUM: declare = parseEnumDeclaration(); break; case MODULE: case NAMESPACE: declare = parseNamespaceDeclaration(true); break; case VAR: case LET: case CONST: default: // unreachable, parse as a var decl to get a parse error. declare = parseAmbientVariableDeclarationList(); eatPossibleImplicitSemiColon(); break; } return declare; }
private ParseTree parseAmbientDeclarationHelper() { ParseTree declare; switch (peekType()) { case FUNCTION: declare = parseAmbientFunctionDeclaration(); eatPossibleImplicitSemiColon(); break; case CLASS: declare = parseClassDeclaration(true); break; case ENUM: declare = parseEnumDeclaration(); break; case MODULE: case NAMESPACE: declare = parseNamespaceDeclaration(true); break; default: // unreachable, parse as a var decl to get a parse error. case VAR: case LET: case CONST: declare = parseAmbientVariableDeclarationList(); eatPossibleImplicitSemiColon(); break; } return declare; }
private ParseTree parseContinueStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.CONTINUE); IdentifierToken name = null; if (!peekImplicitSemiColon()) { name = eatIdOpt(); } eatPossibleImplicitSemiColon(); return new ContinueStatementTree(getTreeLocation(start), name); }
private ParseTree parseContinueStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.CONTINUE); IdentifierToken name = null; if (!peekImplicitSemiColon()) { name = eatIdOpt(); } eatPossibleImplicitSemiColon(); return new ContinueStatementTree(getTreeLocation(start), name); }
private ParseTree parseReturnStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.RETURN); ParseTree expression = null; if (!peekImplicitSemiColon()) { expression = parseExpression(); } eatPossibleImplicitSemiColon(); return new ReturnStatementTree(getTreeLocation(start), expression); }
private ParseTree parseBreakStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.BREAK); IdentifierToken name = null; if (!peekImplicitSemiColon()) { name = eatIdOpt(); } eatPossibleImplicitSemiColon(); return new BreakStatementTree(getTreeLocation(start), name); }
private ParseTree parseBreakStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.BREAK); IdentifierToken name = null; if (!peekImplicitSemiColon()) { name = eatIdOpt(); } eatPossibleImplicitSemiColon(); return new BreakStatementTree(getTreeLocation(start), name); }
private ParseTree parseReturnStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.RETURN); ParseTree expression = null; if (!peekImplicitSemiColon()) { expression = parseExpression(); } eatPossibleImplicitSemiColon(); return new ReturnStatementTree(getTreeLocation(start), expression); }
private ParseTree parseThrowStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.THROW); ParseTree value = null; if (peekImplicitSemiColon()) { reportError("semicolon/newline not allowed after 'throw'"); } else { value = parseExpression(); } eatPossibleImplicitSemiColon(); return new ThrowStatementTree(getTreeLocation(start), value); }
private ParseTree parseTypeAlias() { SourcePosition start = getTreeStartLocation(); eat(TokenType.TYPE); IdentifierToken alias = eatId(); eat(TokenType.EQUAL); ParseTree original = parseType(); eatPossibleImplicitSemiColon(); return new TypeAliasTree(getTreeLocation(start), alias, original); }
private ParseTree parseThrowStatement() { SourcePosition start = getTreeStartLocation(); eat(TokenType.THROW); ParseTree value = null; if (peekImplicitSemiColon()) { reportError("semicolon/newline not allowed after 'throw'"); } else { value = parseExpression(); } eatPossibleImplicitSemiColon(); return new ThrowStatementTree(getTreeLocation(start), value); }
private ParseTree parseTypeAlias() { SourcePosition start = getTreeStartLocation(); eat(TokenType.TYPE); IdentifierToken alias = eatId(); eat(TokenType.EQUAL); ParseTree original = parseType(); eatPossibleImplicitSemiColon(); return new TypeAliasTree(getTreeLocation(start), alias, original); }