| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_PARSING_PREPARSER_H | 5 #ifndef V8_PARSING_PREPARSER_H |
| 6 #define V8_PARSING_PREPARSER_H | 6 #define V8_PARSING_PREPARSER_H |
| 7 | 7 |
| 8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
| 9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
| 10 #include "src/hashmap.h" | 10 #include "src/hashmap.h" |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 return PreParserExpression::ArrayLiteral(); | 438 return PreParserExpression::ArrayLiteral(); |
| 439 } | 439 } |
| 440 PreParserExpression NewArrayLiteral(PreParserExpressionList values, | 440 PreParserExpression NewArrayLiteral(PreParserExpressionList values, |
| 441 int first_spread_index, int literal_index, | 441 int first_spread_index, int literal_index, |
| 442 int pos) { | 442 int pos) { |
| 443 return PreParserExpression::ArrayLiteral(); | 443 return PreParserExpression::ArrayLiteral(); |
| 444 } | 444 } |
| 445 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, | 445 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, |
| 446 PreParserExpression value, | 446 PreParserExpression value, |
| 447 ObjectLiteralProperty::Kind kind, | 447 ObjectLiteralProperty::Kind kind, |
| 448 bool is_static, | 448 MethodKind method_kind, |
| 449 bool is_computed_name) { | 449 bool is_computed_name) { |
| 450 return PreParserExpression::Default(); | 450 return PreParserExpression::Default(); |
| 451 } | 451 } |
| 452 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, | 452 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, |
| 453 PreParserExpression value, | 453 PreParserExpression value, |
| 454 bool is_static, | 454 MethodKind method_kind, |
| 455 bool is_computed_name) { | 455 bool is_computed_name) { |
| 456 return PreParserExpression::Default(); | 456 return PreParserExpression::Default(); |
| 457 } | 457 } |
| 458 PreParserExpression NewObjectLiteral(PreParserExpressionList properties, | 458 PreParserExpression NewObjectLiteral(PreParserExpressionList properties, |
| 459 int literal_index, | 459 int literal_index, |
| 460 int boilerplate_properties, | 460 int boilerplate_properties, |
| 461 int pos) { | 461 int pos) { |
| 462 return PreParserExpression::ObjectLiteral(); | 462 return PreParserExpression::ObjectLiteral(); |
| 463 } | 463 } |
| 464 PreParserExpression NewVariableProxy(void* variable) { | 464 PreParserExpression NewVariableProxy(void* variable) { |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 615 |
| 616 // Helper functions for recursive descent. | 616 // Helper functions for recursive descent. |
| 617 static bool IsEval(PreParserIdentifier identifier) { | 617 static bool IsEval(PreParserIdentifier identifier) { |
| 618 return identifier.IsEval(); | 618 return identifier.IsEval(); |
| 619 } | 619 } |
| 620 | 620 |
| 621 static bool IsArguments(PreParserIdentifier identifier) { | 621 static bool IsArguments(PreParserIdentifier identifier) { |
| 622 return identifier.IsArguments(); | 622 return identifier.IsArguments(); |
| 623 } | 623 } |
| 624 | 624 |
| 625 static bool IsAwait(PreParserIdentifier identifier) { |
| 626 return identifier.IsAwait(); |
| 627 } |
| 628 |
| 625 static bool IsEvalOrArguments(PreParserIdentifier identifier) { | 629 static bool IsEvalOrArguments(PreParserIdentifier identifier) { |
| 626 return identifier.IsEvalOrArguments(); | 630 return identifier.IsEvalOrArguments(); |
| 627 } | 631 } |
| 628 | 632 |
| 629 static bool IsUndefined(PreParserIdentifier identifier) { | 633 static bool IsUndefined(PreParserIdentifier identifier) { |
| 630 return identifier.IsUndefined(); | 634 return identifier.IsUndefined(); |
| 631 } | 635 } |
| 632 | 636 |
| 633 static bool IsPrototype(PreParserIdentifier identifier) { | 637 static bool IsPrototype(PreParserIdentifier identifier) { |
| 634 return identifier.IsPrototype(); | 638 return identifier.IsPrototype(); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 858 V8_INLINE PreParserStatementList ParseEagerFunctionBody( | 862 V8_INLINE PreParserStatementList ParseEagerFunctionBody( |
| 859 PreParserIdentifier function_name, int pos, | 863 PreParserIdentifier function_name, int pos, |
| 860 const PreParserFormalParameters& parameters, FunctionKind kind, | 864 const PreParserFormalParameters& parameters, FunctionKind kind, |
| 861 FunctionLiteral::FunctionType function_type, bool* ok); | 865 FunctionLiteral::FunctionType function_type, bool* ok); |
| 862 | 866 |
| 863 V8_INLINE void ParseArrowFunctionFormalParameterList( | 867 V8_INLINE void ParseArrowFunctionFormalParameterList( |
| 864 PreParserFormalParameters* parameters, | 868 PreParserFormalParameters* parameters, |
| 865 PreParserExpression expression, const Scanner::Location& params_loc, | 869 PreParserExpression expression, const Scanner::Location& params_loc, |
| 866 Scanner::Location* duplicate_loc, bool* ok); | 870 Scanner::Location* duplicate_loc, bool* ok); |
| 867 | 871 |
| 872 V8_INLINE PreParserExpression ParseAsyncFunctionExpression(bool* ok); |
| 873 |
| 868 void ReindexLiterals(const PreParserFormalParameters& paramaters) {} | 874 void ReindexLiterals(const PreParserFormalParameters& paramaters) {} |
| 869 | 875 |
| 870 struct TemplateLiteralState {}; | 876 struct TemplateLiteralState {}; |
| 871 | 877 |
| 872 TemplateLiteralState OpenTemplateLiteral(int pos) { | 878 TemplateLiteralState OpenTemplateLiteral(int pos) { |
| 873 return TemplateLiteralState(); | 879 return TemplateLiteralState(); |
| 874 } | 880 } |
| 875 void AddTemplateSpan(TemplateLiteralState*, bool) {} | 881 void AddTemplateSpan(TemplateLiteralState*, bool) {} |
| 876 void AddTemplateExpression(TemplateLiteralState*, PreParserExpression) {} | 882 void AddTemplateExpression(TemplateLiteralState*, PreParserExpression) {} |
| 877 PreParserExpression CloseTemplateLiteral(TemplateLiteralState*, int, | 883 PreParserExpression CloseTemplateLiteral(TemplateLiteralState*, int, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 | 936 |
| 931 inline void MaterializeUnspreadArgumentsLiterals(int count); | 937 inline void MaterializeUnspreadArgumentsLiterals(int count); |
| 932 | 938 |
| 933 inline PreParserExpression SpreadCall(PreParserExpression function, | 939 inline PreParserExpression SpreadCall(PreParserExpression function, |
| 934 PreParserExpressionList args, int pos); | 940 PreParserExpressionList args, int pos); |
| 935 | 941 |
| 936 inline PreParserExpression SpreadCallNew(PreParserExpression function, | 942 inline PreParserExpression SpreadCallNew(PreParserExpression function, |
| 937 PreParserExpressionList args, | 943 PreParserExpressionList args, |
| 938 int pos); | 944 int pos); |
| 939 | 945 |
| 946 inline PreParserExpression ExpressionListToExpression( |
| 947 PreParserExpressionList args) { |
| 948 return PreParserExpression::Default(); |
| 949 } |
| 950 |
| 940 inline void RewriteDestructuringAssignments() {} | 951 inline void RewriteDestructuringAssignments() {} |
| 941 | 952 |
| 942 inline PreParserExpression RewriteExponentiation(PreParserExpression left, | 953 inline PreParserExpression RewriteExponentiation(PreParserExpression left, |
| 943 PreParserExpression right, | 954 PreParserExpression right, |
| 944 int pos) { | 955 int pos) { |
| 945 return left; | 956 return left; |
| 946 } | 957 } |
| 947 inline PreParserExpression RewriteAssignExponentiation( | 958 inline PreParserExpression RewriteAssignExponentiation( |
| 948 PreParserExpression left, PreParserExpression right, int pos) { | 959 PreParserExpression left, PreParserExpression right, int pos) { |
| 949 return left; | 960 return left; |
| 950 } | 961 } |
| 951 | 962 |
| 952 inline void QueueDestructuringAssignmentForRewriting(PreParserExpression) {} | 963 inline void QueueDestructuringAssignmentForRewriting(PreParserExpression) {} |
| 953 inline void QueueNonPatternForRewriting(PreParserExpression) {} | 964 inline void QueueNonPatternForRewriting(PreParserExpression) {} |
| 954 | 965 |
| 955 void SetFunctionNameFromPropertyName(PreParserExpression, | 966 void SetFunctionNameFromPropertyName(PreParserExpression, |
| 956 PreParserIdentifier) {} | 967 PreParserIdentifier) {} |
| 957 void SetFunctionNameFromIdentifierRef(PreParserExpression, | 968 void SetFunctionNameFromIdentifierRef(PreParserExpression, |
| 958 PreParserExpression) {} | 969 PreParserExpression) {} |
| 959 | 970 |
| 960 inline void RewriteNonPattern(Type::ExpressionClassifier* classifier, | 971 inline void RewriteNonPattern(Type::ExpressionClassifier* classifier, |
| 961 bool* ok); | 972 bool* ok); |
| 962 | 973 |
| 974 inline PreParserExpression RewriteAwaitExpression(PreParserExpression value, |
| 975 int pos); |
| 976 |
| 963 V8_INLINE Zone* zone() const; | 977 V8_INLINE Zone* zone() const; |
| 964 V8_INLINE ZoneList<PreParserExpression>* GetNonPatternList() const; | 978 V8_INLINE ZoneList<PreParserExpression>* GetNonPatternList() const; |
| 965 | 979 |
| 966 inline PreParserExpression RewriteYieldStar( | 980 inline PreParserExpression RewriteYieldStar( |
| 967 PreParserExpression generator, PreParserExpression expr, int pos); | 981 PreParserExpression generator, PreParserExpression expr, int pos); |
| 968 inline PreParserExpression RewriteInstanceof(PreParserExpression lhs, | 982 inline PreParserExpression RewriteInstanceof(PreParserExpression lhs, |
| 969 PreParserExpression rhs, | 983 PreParserExpression rhs, |
| 970 int pos); | 984 int pos); |
| 971 | 985 |
| 972 private: | 986 private: |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 void ParseStatementList(int end_token, bool* ok, | 1085 void ParseStatementList(int end_token, bool* ok, |
| 1072 Scanner::BookmarkScope* bookmark = nullptr); | 1086 Scanner::BookmarkScope* bookmark = nullptr); |
| 1073 Statement ParseStatement(AllowLabelledFunctionStatement allow_function, | 1087 Statement ParseStatement(AllowLabelledFunctionStatement allow_function, |
| 1074 bool* ok); | 1088 bool* ok); |
| 1075 Statement ParseSubStatement(AllowLabelledFunctionStatement allow_function, | 1089 Statement ParseSubStatement(AllowLabelledFunctionStatement allow_function, |
| 1076 bool* ok); | 1090 bool* ok); |
| 1077 Statement ParseScopedStatement(bool legacy, bool* ok); | 1091 Statement ParseScopedStatement(bool legacy, bool* ok); |
| 1078 Statement ParseHoistableDeclaration(bool* ok); | 1092 Statement ParseHoistableDeclaration(bool* ok); |
| 1079 Statement ParseHoistableDeclaration(int pos, bool is_generator, bool* ok); | 1093 Statement ParseHoistableDeclaration(int pos, bool is_generator, bool* ok); |
| 1080 Statement ParseFunctionDeclaration(bool* ok); | 1094 Statement ParseFunctionDeclaration(bool* ok); |
| 1095 Statement ParseAsyncFunctionDeclaration(bool* ok); |
| 1096 Expression ParseAsyncFunctionExpression(bool* ok); |
| 1081 Statement ParseClassDeclaration(bool* ok); | 1097 Statement ParseClassDeclaration(bool* ok); |
| 1082 Statement ParseBlock(bool* ok); | 1098 Statement ParseBlock(bool* ok); |
| 1083 Statement ParseVariableStatement(VariableDeclarationContext var_context, | 1099 Statement ParseVariableStatement(VariableDeclarationContext var_context, |
| 1084 bool* ok); | 1100 bool* ok); |
| 1085 Statement ParseVariableDeclarations(VariableDeclarationContext var_context, | 1101 Statement ParseVariableDeclarations(VariableDeclarationContext var_context, |
| 1086 int* num_decl, bool* is_lexical, | 1102 int* num_decl, bool* is_lexical, |
| 1087 bool* is_binding_pattern, | 1103 bool* is_binding_pattern, |
| 1088 Scanner::Location* first_initializer_loc, | 1104 Scanner::Location* first_initializer_loc, |
| 1089 Scanner::Location* bindings_loc, | 1105 Scanner::Location* bindings_loc, |
| 1090 bool* ok); | 1106 bool* ok); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 | 1175 |
| 1160 | 1176 |
| 1161 void PreParserTraits::ParseArrowFunctionFormalParameterList( | 1177 void PreParserTraits::ParseArrowFunctionFormalParameterList( |
| 1162 PreParserFormalParameters* parameters, | 1178 PreParserFormalParameters* parameters, |
| 1163 PreParserExpression params, const Scanner::Location& params_loc, | 1179 PreParserExpression params, const Scanner::Location& params_loc, |
| 1164 Scanner::Location* duplicate_loc, bool* ok) { | 1180 Scanner::Location* duplicate_loc, bool* ok) { |
| 1165 // TODO(wingo): Detect duplicated identifiers in paramlists. Detect parameter | 1181 // TODO(wingo): Detect duplicated identifiers in paramlists. Detect parameter |
| 1166 // lists that are too long. | 1182 // lists that are too long. |
| 1167 } | 1183 } |
| 1168 | 1184 |
| 1185 PreParserExpression PreParserTraits::ParseAsyncFunctionExpression(bool* ok) { |
| 1186 return pre_parser_->ParseAsyncFunctionExpression(ok); |
| 1187 } |
| 1169 | 1188 |
| 1170 PreParserExpression PreParserTraits::ParseDoExpression(bool* ok) { | 1189 PreParserExpression PreParserTraits::ParseDoExpression(bool* ok) { |
| 1171 return pre_parser_->ParseDoExpression(ok); | 1190 return pre_parser_->ParseDoExpression(ok); |
| 1172 } | 1191 } |
| 1173 | 1192 |
| 1174 | 1193 |
| 1175 void PreParserTraits::RewriteNonPattern(Type::ExpressionClassifier* classifier, | 1194 void PreParserTraits::RewriteNonPattern(Type::ExpressionClassifier* classifier, |
| 1176 bool* ok) { | 1195 bool* ok) { |
| 1177 pre_parser_->ValidateExpression(classifier, ok); | 1196 pre_parser_->ValidateExpression(classifier, ok); |
| 1178 } | 1197 } |
| 1179 | 1198 |
| 1199 PreParserExpression PreParserTraits::RewriteAwaitExpression( |
| 1200 PreParserExpression value, int pos) { |
| 1201 return value; |
| 1202 } |
| 1180 | 1203 |
| 1181 Zone* PreParserTraits::zone() const { | 1204 Zone* PreParserTraits::zone() const { |
| 1182 return pre_parser_->function_state_->scope()->zone(); | 1205 return pre_parser_->function_state_->scope()->zone(); |
| 1183 } | 1206 } |
| 1184 | 1207 |
| 1185 | 1208 |
| 1186 ZoneList<PreParserExpression>* PreParserTraits::GetNonPatternList() const { | 1209 ZoneList<PreParserExpression>* PreParserTraits::GetNonPatternList() const { |
| 1187 return pre_parser_->function_state_->non_patterns_to_rewrite(); | 1210 return pre_parser_->function_state_->non_patterns_to_rewrite(); |
| 1188 } | 1211 } |
| 1189 | 1212 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1224 const PreParserFormalParameters& parameters, FunctionKind kind, | 1247 const PreParserFormalParameters& parameters, FunctionKind kind, |
| 1225 FunctionLiteral::FunctionType function_type, bool* ok) { | 1248 FunctionLiteral::FunctionType function_type, bool* ok) { |
| 1226 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters, | 1249 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters, |
| 1227 kind, function_type, ok); | 1250 kind, function_type, ok); |
| 1228 } | 1251 } |
| 1229 | 1252 |
| 1230 } // namespace internal | 1253 } // namespace internal |
| 1231 } // namespace v8 | 1254 } // namespace v8 |
| 1232 | 1255 |
| 1233 #endif // V8_PARSING_PREPARSER_H | 1256 #endif // V8_PARSING_PREPARSER_H |
| OLD | NEW |