Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: src/parsing/parser.h

Issue 2324843005: [parser] Refactor of Parse*Statement*, part 6 (Closed)
Patch Set: The real patch Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/parsing/parser.cc » ('j') | src/parsing/parser.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_PARSER_H_ 5 #ifndef V8_PARSING_PARSER_H_
6 #define V8_PARSING_PARSER_H_ 6 #define V8_PARSING_PARSER_H_
7 7
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 #include "src/parsing/parser-base.h" 10 #include "src/parsing/parser-base.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 typedef v8::internal::Expression* Expression; 150 typedef v8::internal::Expression* Expression;
151 typedef v8::internal::FunctionLiteral* FunctionLiteral; 151 typedef v8::internal::FunctionLiteral* FunctionLiteral;
152 typedef ObjectLiteral::Property* ObjectLiteralProperty; 152 typedef ObjectLiteral::Property* ObjectLiteralProperty;
153 typedef ClassLiteral::Property* ClassLiteralProperty; 153 typedef ClassLiteral::Property* ClassLiteralProperty;
154 typedef ZoneList<v8::internal::Expression*>* ExpressionList; 154 typedef ZoneList<v8::internal::Expression*>* ExpressionList;
155 typedef ZoneList<ObjectLiteral::Property*>* PropertyList; 155 typedef ZoneList<ObjectLiteral::Property*>* PropertyList;
156 typedef ParserFormalParameters FormalParameters; 156 typedef ParserFormalParameters FormalParameters;
157 typedef v8::internal::Statement* Statement; 157 typedef v8::internal::Statement* Statement;
158 typedef ZoneList<v8::internal::Statement*>* StatementList; 158 typedef ZoneList<v8::internal::Statement*>* StatementList;
159 typedef v8::internal::Block* Block; 159 typedef v8::internal::Block* Block;
160 typedef v8::internal::BreakableStatement* BreakableStatementT; 160 typedef v8::internal::BreakableStatement* BreakableStatement;
161 typedef v8::internal::IterationStatement* IterationStatementT; 161 typedef v8::internal::IterationStatement* IterationStatement;
162 162
163 // For constructing objects returned by the traversing functions. 163 // For constructing objects returned by the traversing functions.
164 typedef AstNodeFactory Factory; 164 typedef AstNodeFactory Factory;
165 165
166 typedef ParserTarget Target; 166 typedef ParserTarget Target;
167 typedef ParserTargetScope TargetScope; 167 typedef ParserTargetScope TargetScope;
168 }; 168 };
169 169
170 class Parser : public ParserBase<Parser> { 170 class Parser : public ParserBase<Parser> {
171 public: 171 public:
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 bool* ok); 279 bool* ok);
280 void DeclareAndInitializeVariables( 280 void DeclareAndInitializeVariables(
281 Block* block, const DeclarationDescriptor* declaration_descriptor, 281 Block* block, const DeclarationDescriptor* declaration_descriptor,
282 const DeclarationParsingResult::Declaration* declaration, 282 const DeclarationParsingResult::Declaration* declaration,
283 ZoneList<const AstRawString*>* names, bool* ok); 283 ZoneList<const AstRawString*>* names, bool* ok);
284 ZoneList<const AstRawString*>* DeclareLabel( 284 ZoneList<const AstRawString*>* DeclareLabel(
285 ZoneList<const AstRawString*>* labels, Expression* expr, bool* ok); 285 ZoneList<const AstRawString*>* labels, Expression* expr, bool* ok);
286 bool ContainsLabel(ZoneList<const AstRawString*>* labels, 286 bool ContainsLabel(ZoneList<const AstRawString*>* labels,
287 const AstRawString* label); 287 const AstRawString* label);
288 Expression* RewriteReturn(Expression* return_value, int pos); 288 Expression* RewriteReturn(Expression* return_value, int pos);
289 Statement* RewriteSwitchStatement(Expression* tag,
290 SwitchStatement* switch_statement,
291 ZoneList<CaseClause*>* cases, Scope* scope);
289 292
290 Expression* ParseYieldStarExpression(bool* ok); 293 Expression* ParseYieldStarExpression(bool* ok);
291 294
292 class PatternRewriter final : public AstVisitor<PatternRewriter> { 295 class PatternRewriter final : public AstVisitor<PatternRewriter> {
293 public: 296 public:
294 static void DeclareAndInitializeVariables( 297 static void DeclareAndInitializeVariables(
295 Parser* parser, Block* block, 298 Parser* parser, Block* block,
296 const DeclarationDescriptor* declaration_descriptor, 299 const DeclarationDescriptor* declaration_descriptor,
297 const DeclarationParsingResult::Declaration* declaration, 300 const DeclarationParsingResult::Declaration* declaration,
298 ZoneList<const AstRawString*>* names, bool* ok); 301 ZoneList<const AstRawString*>* names, bool* ok);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 Block* block_; 366 Block* block_;
364 const DeclarationDescriptor* descriptor_; 367 const DeclarationDescriptor* descriptor_;
365 ZoneList<const AstRawString*>* names_; 368 ZoneList<const AstRawString*>* names_;
366 Expression* current_value_; 369 Expression* current_value_;
367 int recursion_level_; 370 int recursion_level_;
368 bool* ok_; 371 bool* ok_;
369 372
370 DEFINE_AST_VISITOR_MEMBERS_WITHOUT_STACKOVERFLOW() 373 DEFINE_AST_VISITOR_MEMBERS_WITHOUT_STACKOVERFLOW()
371 }; 374 };
372 375
373 CaseClause* ParseCaseClause(bool* default_seen_ptr, bool* ok);
374 Statement* ParseSwitchStatement(ZoneList<const AstRawString*>* labels,
375 bool* ok);
376 Statement* ParseForStatement(ZoneList<const AstRawString*>* labels, bool* ok); 376 Statement* ParseForStatement(ZoneList<const AstRawString*>* labels, bool* ok);
377 Expression* MakeCatchContext(Handle<String> id, VariableProxy* value); 377 Expression* MakeCatchContext(Handle<String> id, VariableProxy* value);
378 TryStatement* ParseTryStatement(bool* ok); 378 TryStatement* ParseTryStatement(bool* ok);
379 379
380 // !%_IsJSReceiver(result = iterator.next()) && 380 // !%_IsJSReceiver(result = iterator.next()) &&
381 // %ThrowIteratorResultNotAnObject(result) 381 // %ThrowIteratorResultNotAnObject(result)
382 Expression* BuildIteratorNextResult(Expression* iterator, Variable* result, 382 Expression* BuildIteratorNextResult(Expression* iterator, Variable* result,
383 int pos); 383 int pos);
384 384
385 Expression* GetIterator(Expression* iterable, int pos); 385 Expression* GetIterator(Expression* iterable, int pos);
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 int size) const { 922 int size) const {
923 return new (zone()) ZoneList<ObjectLiteral::Property*>(size, zone()); 923 return new (zone()) ZoneList<ObjectLiteral::Property*>(size, zone());
924 } 924 }
925 V8_INLINE ZoneList<ClassLiteral::Property*>* NewClassPropertyList( 925 V8_INLINE ZoneList<ClassLiteral::Property*>* NewClassPropertyList(
926 int size) const { 926 int size) const {
927 return new (zone()) ZoneList<ClassLiteral::Property*>(size, zone()); 927 return new (zone()) ZoneList<ClassLiteral::Property*>(size, zone());
928 } 928 }
929 V8_INLINE ZoneList<Statement*>* NewStatementList(int size) const { 929 V8_INLINE ZoneList<Statement*>* NewStatementList(int size) const {
930 return new (zone()) ZoneList<Statement*>(size, zone()); 930 return new (zone()) ZoneList<Statement*>(size, zone());
931 } 931 }
932 V8_INLINE ZoneList<CaseClause*>* NewCaseClauseList(int size) const {
933 return new (zone()) ZoneList<CaseClause*>(size, zone());
934 }
932 935
933 V8_INLINE Block* NewBlock(ZoneList<const AstRawString*>* labels, int capacity, 936 V8_INLINE Block* NewBlock(ZoneList<const AstRawString*>* labels, int capacity,
934 bool ignore_completion_value, int pos) { 937 bool ignore_completion_value, int pos) {
935 return factory()->NewBlock(labels, capacity, ignore_completion_value, pos); 938 return factory()->NewBlock(labels, capacity, ignore_completion_value, pos);
936 } 939 }
937 940
938 V8_INLINE Expression* NewV8Intrinsic(const AstRawString* name, 941 V8_INLINE Expression* NewV8Intrinsic(const AstRawString* name,
939 ZoneList<Expression*>* args, int pos, 942 ZoneList<Expression*>* args, int pos,
940 bool* ok); 943 bool* ok);
941 944
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1060 1063
1061 #ifdef DEBUG 1064 #ifdef DEBUG
1062 void Print(AstNode* node); 1065 void Print(AstNode* node);
1063 #endif // DEBUG 1066 #endif // DEBUG
1064 }; 1067 };
1065 1068
1066 } // namespace internal 1069 } // namespace internal
1067 } // namespace v8 1070 } // namespace v8
1068 1071
1069 #endif // V8_PARSING_PARSER_H_ 1072 #endif // V8_PARSING_PARSER_H_
OLDNEW
« no previous file with comments | « no previous file | src/parsing/parser.cc » ('j') | src/parsing/parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698