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/parsing/parser-base.h" | 9 #include "src/parsing/parser-base.h" |
10 | 10 |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 bool IsNullStatement() { return code_ == kNullStatement; } | 441 bool IsNullStatement() { return code_ == kNullStatement; } |
442 | 442 |
443 bool IsEmptyStatement() { return code_ == kEmptyStatement; } | 443 bool IsEmptyStatement() { return code_ == kEmptyStatement; } |
444 | 444 |
445 // Dummy implementation for making statement->somefunc() work in both Parser | 445 // Dummy implementation for making statement->somefunc() work in both Parser |
446 // and PreParser. | 446 // and PreParser. |
447 PreParserStatement* operator->() { return this; } | 447 PreParserStatement* operator->() { return this; } |
448 | 448 |
449 PreParserStatementList statements() { return PreParserStatementList(); } | 449 PreParserStatementList statements() { return PreParserStatementList(); } |
450 void set_scope(Scope* scope) {} | 450 void set_scope(Scope* scope) {} |
| 451 void Initialize(PreParserExpression cond, PreParserStatement body) {} |
451 | 452 |
452 private: | 453 private: |
453 enum Type { | 454 enum Type { |
454 kNullStatement, | 455 kNullStatement, |
455 kEmptyStatement, | 456 kEmptyStatement, |
456 kUnknownStatement, | 457 kUnknownStatement, |
457 kJumpStatement, | 458 kJumpStatement, |
458 kStringLiteralExpressionStatement, | 459 kStringLiteralExpressionStatement, |
459 kUseStrictExpressionStatement, | 460 kUseStrictExpressionStatement, |
460 kUseAsmExpressionStatement, | 461 kUseAsmExpressionStatement, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 PreParserStatement NewContinueStatement(PreParserStatement target, int pos) { | 634 PreParserStatement NewContinueStatement(PreParserStatement target, int pos) { |
634 return PreParserStatement::Jump(); | 635 return PreParserStatement::Jump(); |
635 } | 636 } |
636 | 637 |
637 PreParserStatement NewWithStatement(Scope* scope, | 638 PreParserStatement NewWithStatement(Scope* scope, |
638 PreParserExpression expression, | 639 PreParserExpression expression, |
639 PreParserStatement statement, int pos) { | 640 PreParserStatement statement, int pos) { |
640 return PreParserStatement::Default(); | 641 return PreParserStatement::Default(); |
641 } | 642 } |
642 | 643 |
| 644 PreParserStatement NewDoWhileStatement(ZoneList<const AstRawString*>* labels, |
| 645 int pos) { |
| 646 return PreParserStatement::Default(); |
| 647 } |
| 648 |
| 649 PreParserStatement NewWhileStatement(ZoneList<const AstRawString*>* labels, |
| 650 int pos) { |
| 651 return PreParserStatement::Default(); |
| 652 } |
| 653 |
643 // Return the object itself as AstVisitor and implement the needed | 654 // Return the object itself as AstVisitor and implement the needed |
644 // dummy method right in this class. | 655 // dummy method right in this class. |
645 PreParserFactory* visitor() { return this; } | 656 PreParserFactory* visitor() { return this; } |
646 int* ast_properties() { | 657 int* ast_properties() { |
647 static int dummy = 42; | 658 static int dummy = 42; |
648 return &dummy; | 659 return &dummy; |
649 } | 660 } |
650 }; | 661 }; |
651 | 662 |
652 | 663 |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 // By making the 'exception handling' explicit, we are forced to check | 809 // By making the 'exception handling' explicit, we are forced to check |
799 // for failure at the call sites. | 810 // for failure at the call sites. |
800 Statement ParseFunctionDeclaration(bool* ok); | 811 Statement ParseFunctionDeclaration(bool* ok); |
801 Statement ParseAsyncFunctionDeclaration(ZoneList<const AstRawString*>* names, | 812 Statement ParseAsyncFunctionDeclaration(ZoneList<const AstRawString*>* names, |
802 bool default_export, bool* ok); | 813 bool default_export, bool* ok); |
803 Expression ParseAsyncFunctionExpression(bool* ok); | 814 Expression ParseAsyncFunctionExpression(bool* ok); |
804 Statement ParseClassDeclaration(ZoneList<const AstRawString*>* names, | 815 Statement ParseClassDeclaration(ZoneList<const AstRawString*>* names, |
805 bool default_export, bool* ok); | 816 bool default_export, bool* ok); |
806 Statement ParseSwitchStatement(ZoneList<const AstRawString*>* labels, | 817 Statement ParseSwitchStatement(ZoneList<const AstRawString*>* labels, |
807 bool* ok); | 818 bool* ok); |
808 Statement ParseDoWhileStatement(ZoneList<const AstRawString*>* labels, | |
809 bool* ok); | |
810 Statement ParseWhileStatement(ZoneList<const AstRawString*>* labels, | |
811 bool* ok); | |
812 Statement ParseForStatement(ZoneList<const AstRawString*>* labels, bool* ok); | 819 Statement ParseForStatement(ZoneList<const AstRawString*>* labels, bool* ok); |
813 Statement ParseThrowStatement(bool* ok); | |
814 Statement ParseTryStatement(bool* ok); | 820 Statement ParseTryStatement(bool* ok); |
815 Expression ParseConditionalExpression(bool accept_IN, bool* ok); | 821 Expression ParseConditionalExpression(bool accept_IN, bool* ok); |
816 Expression ParseObjectLiteral(bool* ok); | 822 Expression ParseObjectLiteral(bool* ok); |
817 Expression ParseDoExpression(bool* ok); | |
818 | 823 |
819 V8_INLINE PreParserStatementList ParseEagerFunctionBody( | 824 V8_INLINE PreParserStatementList ParseEagerFunctionBody( |
820 PreParserIdentifier function_name, int pos, | 825 PreParserIdentifier function_name, int pos, |
821 const PreParserFormalParameters& parameters, FunctionKind kind, | 826 const PreParserFormalParameters& parameters, FunctionKind kind, |
822 FunctionLiteral::FunctionType function_type, bool* ok); | 827 FunctionLiteral::FunctionType function_type, bool* ok); |
823 | 828 |
824 V8_INLINE LazyParsingResult | 829 V8_INLINE LazyParsingResult |
825 SkipLazyFunctionBody(int* materialized_literal_count, | 830 SkipLazyFunctionBody(int* materialized_literal_count, |
826 int* expected_property_count, bool may_abort, bool* ok) { | 831 int* expected_property_count, bool may_abort, bool* ok) { |
827 UNREACHABLE(); | 832 UNREACHABLE(); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 V8_INLINE bool ContainsLabel(ZoneList<const AstRawString*>* labels, | 927 V8_INLINE bool ContainsLabel(ZoneList<const AstRawString*>* labels, |
923 PreParserIdentifier label) { | 928 PreParserIdentifier label) { |
924 return false; | 929 return false; |
925 } | 930 } |
926 | 931 |
927 V8_INLINE PreParserExpression RewriteReturn(PreParserExpression return_value, | 932 V8_INLINE PreParserExpression RewriteReturn(PreParserExpression return_value, |
928 int pos) { | 933 int pos) { |
929 return return_value; | 934 return return_value; |
930 } | 935 } |
931 | 936 |
| 937 V8_INLINE PreParserExpression RewriteDoExpression(PreParserStatement body, |
| 938 int pos, bool* ok) { |
| 939 return PreParserExpression::Default(); |
| 940 } |
| 941 |
932 // TODO(nikolaos): The preparser currently does not keep track of labels | 942 // TODO(nikolaos): The preparser currently does not keep track of labels |
933 // and targets. | 943 // and targets. |
934 V8_INLINE PreParserStatement LookupBreakTarget(PreParserIdentifier label, | 944 V8_INLINE PreParserStatement LookupBreakTarget(PreParserIdentifier label, |
935 bool* ok) { | 945 bool* ok) { |
936 return PreParserStatement::Default(); | 946 return PreParserStatement::Default(); |
937 } | 947 } |
938 V8_INLINE PreParserStatement LookupContinueTarget(PreParserIdentifier label, | 948 V8_INLINE PreParserStatement LookupContinueTarget(PreParserIdentifier label, |
939 bool* ok) { | 949 bool* ok) { |
940 return PreParserStatement::Default(); | 950 return PreParserStatement::Default(); |
941 } | 951 } |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1251 bool ignore_completion_value, int pos) { | 1261 bool ignore_completion_value, int pos) { |
1252 return PreParserStatement::Default(); | 1262 return PreParserStatement::Default(); |
1253 } | 1263 } |
1254 | 1264 |
1255 V8_INLINE PreParserExpression | 1265 V8_INLINE PreParserExpression |
1256 NewV8Intrinsic(PreParserIdentifier name, PreParserExpressionList arguments, | 1266 NewV8Intrinsic(PreParserIdentifier name, PreParserExpressionList arguments, |
1257 int pos, bool* ok) { | 1267 int pos, bool* ok) { |
1258 return PreParserExpression::Default(); | 1268 return PreParserExpression::Default(); |
1259 } | 1269 } |
1260 | 1270 |
| 1271 V8_INLINE PreParserStatement NewThrowStatement(PreParserExpression exception, |
| 1272 int pos) { |
| 1273 return PreParserStatement::Jump(); |
| 1274 } |
| 1275 |
1261 V8_INLINE void AddParameterInitializationBlock( | 1276 V8_INLINE void AddParameterInitializationBlock( |
1262 const PreParserFormalParameters& parameters, PreParserStatementList body, | 1277 const PreParserFormalParameters& parameters, PreParserStatementList body, |
1263 bool is_async, bool* ok) {} | 1278 bool is_async, bool* ok) {} |
1264 | 1279 |
1265 V8_INLINE void AddFormalParameter(PreParserFormalParameters* parameters, | 1280 V8_INLINE void AddFormalParameter(PreParserFormalParameters* parameters, |
1266 PreParserExpression pattern, | 1281 PreParserExpression pattern, |
1267 PreParserExpression initializer, | 1282 PreParserExpression initializer, |
1268 int initializer_end_position, | 1283 int initializer_end_position, |
1269 bool is_rest) { | 1284 bool is_rest) { |
1270 ++parameters->arity; | 1285 ++parameters->arity; |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1374 function_state_->NextMaterializedLiteralIndex(); | 1389 function_state_->NextMaterializedLiteralIndex(); |
1375 function_state_->NextMaterializedLiteralIndex(); | 1390 function_state_->NextMaterializedLiteralIndex(); |
1376 } | 1391 } |
1377 return EmptyExpression(); | 1392 return EmptyExpression(); |
1378 } | 1393 } |
1379 | 1394 |
1380 } // namespace internal | 1395 } // namespace internal |
1381 } // namespace v8 | 1396 } // namespace v8 |
1382 | 1397 |
1383 #endif // V8_PARSING_PREPARSER_H | 1398 #endif // V8_PARSING_PREPARSER_H |
OLD | NEW |