diff options
Diffstat (limited to 'src/sksl/SkSLParser.cpp')
-rw-r--r-- | src/sksl/SkSLParser.cpp | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/sksl/SkSLParser.cpp b/src/sksl/SkSLParser.cpp index a5a7e0c4b6..cc47577e93 100644 --- a/src/sksl/SkSLParser.cpp +++ b/src/sksl/SkSLParser.cpp @@ -63,8 +63,6 @@ #include "ast/SkSLASTReturnStatement.h" #include "ast/SkSLASTStatement.h" #include "ast/SkSLASTSuffixExpression.h" -#include "ast/SkSLASTSwitchCase.h" -#include "ast/SkSLASTSwitchStatement.h" #include "ast/SkSLASTTernaryExpression.h" #include "ast/SkSLASTType.h" #include "ast/SkSLASTVarDeclaration.h" @@ -772,8 +770,6 @@ std::unique_ptr<ASTStatement> Parser::statement() { return this->doStatement(); case Token::WHILE: return this->whileStatement(); - case Token::SWITCH: - return this->switchStatement(); case Token::RETURN: return this->returnStatement(); case Token::BREAK: @@ -979,85 +975,6 @@ std::unique_ptr<ASTWhileStatement> Parser::whileStatement() { std::move(statement))); } -/* CASE expression COLON statement* */ -std::unique_ptr<ASTSwitchCase> Parser::switchCase() { - if (!this->expect(Token::CASE, "'case'")) { - return nullptr; - } - std::unique_ptr<ASTExpression> value = this->expression(); - if (!value) { - return nullptr; - } - if (!this->expect(Token::COLON, "':'")) { - return nullptr; - } - std::vector<std::unique_ptr<ASTStatement>> statements; - while (this->peek().fKind != Token::RBRACE && this->peek().fKind != Token::CASE && - this->peek().fKind != Token::DEFAULT) { - std::unique_ptr<ASTStatement> s = this->statement(); - if (!s) { - return nullptr; - } - statements.push_back(std::move(s)); - } - return std::unique_ptr<ASTSwitchCase>(new ASTSwitchCase(value->fPosition, std::move(value), - std::move(statements))); -} - -/* SWITCH LPAREN expression RPAREN LBRACE switchCase* (DEFAULT COLON statement*)? RBRACE */ -std::unique_ptr<ASTStatement> Parser::switchStatement() { - Token start; - if (!this->expect(Token::SWITCH, "'switch'", &start)) { - return nullptr; - } - if (!this->expect(Token::LPAREN, "'('")) { - return nullptr; - } - std::unique_ptr<ASTExpression> value(this->expression()); - if (!value) { - return nullptr; - } - if (!this->expect(Token::RPAREN, "')'")) { - return nullptr; - } - if (!this->expect(Token::LBRACE, "'{'")) { - return nullptr; - } - std::vector<std::unique_ptr<ASTSwitchCase>> cases; - while (this->peek().fKind == Token::CASE) { - std::unique_ptr<ASTSwitchCase> c = this->switchCase(); - if (!c) { - return nullptr; - } - cases.push_back(std::move(c)); - } - // Requiring default: to be last (in defiance of C and GLSL) was a deliberate decision. Other - // parts of the compiler may rely upon this assumption. - if (this->peek().fKind == Token::DEFAULT) { - Token defaultStart; - SkAssertResult(this->expect(Token::DEFAULT, "'default'", &defaultStart)); - if (!this->expect(Token::COLON, "':'")) { - return nullptr; - } - std::vector<std::unique_ptr<ASTStatement>> statements; - while (this->peek().fKind != Token::RBRACE) { - std::unique_ptr<ASTStatement> s = this->statement(); - if (!s) { - return nullptr; - } - statements.push_back(std::move(s)); - } - cases.emplace_back(new ASTSwitchCase(defaultStart.fPosition, nullptr, - std::move(statements))); - } - if (!this->expect(Token::RBRACE, "'}'")) { - return nullptr; - } - return std::unique_ptr<ASTStatement>(new ASTSwitchStatement(start.fPosition, - std::move(value), - std::move(cases))); -} - /* FOR LPAREN (declaration | expression)? SEMICOLON expression? SEMICOLON expression? RPAREN STATEMENT */ std::unique_ptr<ASTForStatement> Parser::forStatement() { |