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

Side by Side Diff: src/parser.h

Issue 561913002: Class syntax parsing (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: git rebase Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/objects.h ('k') | src/parser.cc » ('j') | no next file with comments »
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_PARSER_H_ 5 #ifndef V8_PARSER_H_
6 #define V8_PARSER_H_ 6 #define V8_PARSER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/compiler.h" // For CachedDataMode 10 #include "src/compiler.h" // For CachedDataMode
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 typedef v8::internal::Zone Zone; 356 typedef v8::internal::Zone Zone;
357 357
358 typedef v8::internal::AstProperties AstProperties; 358 typedef v8::internal::AstProperties AstProperties;
359 typedef Vector<VariableProxy*> ParameterIdentifierVector; 359 typedef Vector<VariableProxy*> ParameterIdentifierVector;
360 360
361 // Return types for traversing functions. 361 // Return types for traversing functions.
362 typedef const AstRawString* Identifier; 362 typedef const AstRawString* Identifier;
363 typedef v8::internal::Expression* Expression; 363 typedef v8::internal::Expression* Expression;
364 typedef Yield* YieldExpression; 364 typedef Yield* YieldExpression;
365 typedef v8::internal::FunctionLiteral* FunctionLiteral; 365 typedef v8::internal::FunctionLiteral* FunctionLiteral;
366 typedef v8::internal::ClassLiteral* ClassLiteral;
366 typedef v8::internal::Literal* Literal; 367 typedef v8::internal::Literal* Literal;
367 typedef ObjectLiteral::Property* ObjectLiteralProperty; 368 typedef ObjectLiteral::Property* ObjectLiteralProperty;
368 typedef ZoneList<v8::internal::Expression*>* ExpressionList; 369 typedef ZoneList<v8::internal::Expression*>* ExpressionList;
369 typedef ZoneList<ObjectLiteral::Property*>* PropertyList; 370 typedef ZoneList<ObjectLiteral::Property*>* PropertyList;
370 typedef ZoneList<v8::internal::Statement*>* StatementList; 371 typedef ZoneList<v8::internal::Statement*>* StatementList;
371 372
372 // For constructing objects returned by the traversing functions. 373 // For constructing objects returned by the traversing functions.
373 typedef AstNodeFactory<AstConstructionVisitor> Factory; 374 typedef AstNodeFactory<AstConstructionVisitor> Factory;
374 }; 375 };
375 376
(...skipping 18 matching lines...) Expand all
394 395
395 // Helper functions for recursive descent. 396 // Helper functions for recursive descent.
396 bool IsEvalOrArguments(const AstRawString* identifier) const; 397 bool IsEvalOrArguments(const AstRawString* identifier) const;
397 V8_INLINE bool IsFutureStrictReserved(const AstRawString* identifier) const; 398 V8_INLINE bool IsFutureStrictReserved(const AstRawString* identifier) const;
398 399
399 // Returns true if the expression is of type "this.foo". 400 // Returns true if the expression is of type "this.foo".
400 static bool IsThisProperty(Expression* expression); 401 static bool IsThisProperty(Expression* expression);
401 402
402 static bool IsIdentifier(Expression* expression); 403 static bool IsIdentifier(Expression* expression);
403 404
405 bool IsPrototype(const AstRawString* identifier) const;
406
407 bool IsConstructor(const AstRawString* identifier) const;
408
404 static const AstRawString* AsIdentifier(Expression* expression) { 409 static const AstRawString* AsIdentifier(Expression* expression) {
405 DCHECK(IsIdentifier(expression)); 410 DCHECK(IsIdentifier(expression));
406 return expression->AsVariableProxy()->raw_name(); 411 return expression->AsVariableProxy()->raw_name();
407 } 412 }
408 413
409 static bool IsBoilerplateProperty(ObjectLiteral::Property* property) { 414 static bool IsBoilerplateProperty(ObjectLiteral::Property* property) {
410 return ObjectLiteral::IsBoilerplateProperty(property); 415 return ObjectLiteral::IsBoilerplateProperty(property);
411 } 416 }
412 417
413 static bool IsArrayIndex(const AstRawString* string, uint32_t* index) { 418 static bool IsArrayIndex(const AstRawString* string, uint32_t* index) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 return NULL; 516 return NULL;
512 } 517 }
513 static Expression* EmptyExpression() { 518 static Expression* EmptyExpression() {
514 return NULL; 519 return NULL;
515 } 520 }
516 static Expression* EmptyArrowParamList() { return NULL; } 521 static Expression* EmptyArrowParamList() { return NULL; }
517 static Literal* EmptyLiteral() { 522 static Literal* EmptyLiteral() {
518 return NULL; 523 return NULL;
519 } 524 }
520 static ObjectLiteralProperty* EmptyObjectLiteralProperty() { return NULL; } 525 static ObjectLiteralProperty* EmptyObjectLiteralProperty() { return NULL; }
526 static FunctionLiteral* EmptyFunctionLiteral() { return NULL; }
527 static ClassLiteral* EmptyClassLiteral() { return NULL; }
521 528
522 // Used in error return values. 529 // Used in error return values.
523 static ZoneList<Expression*>* NullExpressionList() { 530 static ZoneList<Expression*>* NullExpressionList() {
524 return NULL; 531 return NULL;
525 } 532 }
526 533
527 // Non-NULL empty string. 534 // Non-NULL empty string.
528 V8_INLINE const AstRawString* EmptyIdentifierString(); 535 V8_INLINE const AstRawString* EmptyIdentifierString();
529 536
530 // Odd-ball literal creators. 537 // Odd-ball literal creators.
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 Module* ParseModulePath(bool* ok); 705 Module* ParseModulePath(bool* ok);
699 Module* ParseModuleVariable(bool* ok); 706 Module* ParseModuleVariable(bool* ok);
700 Module* ParseModuleUrl(bool* ok); 707 Module* ParseModuleUrl(bool* ok);
701 Module* ParseModuleSpecifier(bool* ok); 708 Module* ParseModuleSpecifier(bool* ok);
702 Block* ParseImportDeclaration(bool* ok); 709 Block* ParseImportDeclaration(bool* ok);
703 Statement* ParseExportDeclaration(bool* ok); 710 Statement* ParseExportDeclaration(bool* ok);
704 Statement* ParseBlockElement(ZoneList<const AstRawString*>* labels, bool* ok); 711 Statement* ParseBlockElement(ZoneList<const AstRawString*>* labels, bool* ok);
705 Statement* ParseStatement(ZoneList<const AstRawString*>* labels, bool* ok); 712 Statement* ParseStatement(ZoneList<const AstRawString*>* labels, bool* ok);
706 Statement* ParseFunctionDeclaration(ZoneList<const AstRawString*>* names, 713 Statement* ParseFunctionDeclaration(ZoneList<const AstRawString*>* names,
707 bool* ok); 714 bool* ok);
715 Statement* ParseClassDeclaration(ZoneList<const AstRawString*>* names,
716 bool* ok);
708 Statement* ParseNativeDeclaration(bool* ok); 717 Statement* ParseNativeDeclaration(bool* ok);
709 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok); 718 Block* ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok);
710 Block* ParseVariableStatement(VariableDeclarationContext var_context, 719 Block* ParseVariableStatement(VariableDeclarationContext var_context,
711 ZoneList<const AstRawString*>* names, 720 ZoneList<const AstRawString*>* names,
712 bool* ok); 721 bool* ok);
713 Block* ParseVariableDeclarations(VariableDeclarationContext var_context, 722 Block* ParseVariableDeclarations(VariableDeclarationContext var_context,
714 VariableDeclarationProperties* decl_props, 723 VariableDeclarationProperties* decl_props,
715 ZoneList<const AstRawString*>* names, 724 ZoneList<const AstRawString*>* names,
716 const AstRawString** out, 725 const AstRawString** out,
717 bool* ok); 726 bool* ok);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 private: 912 private:
904 static const int kLiteralTypeSlot = 0; 913 static const int kLiteralTypeSlot = 0;
905 static const int kElementsSlot = 1; 914 static const int kElementsSlot = 1;
906 915
907 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); 916 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue);
908 }; 917 };
909 918
910 } } // namespace v8::internal 919 } } // namespace v8::internal
911 920
912 #endif // V8_PARSER_H_ 921 #endif // V8_PARSER_H_
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698