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

Side by Side Diff: src/parser.h

Issue 663683006: Implement ES6 Template Literals (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Prevent fall-through to template token handlers Created 6 years, 1 month 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/messages.js ('k') | src/parser.cc » ('j') | src/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_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 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 FunctionLiteral::ArityRestriction arity_restriction, bool* ok); 585 FunctionLiteral::ArityRestriction arity_restriction, bool* ok);
586 V8_INLINE void SkipLazyFunctionBody(const AstRawString* name, 586 V8_INLINE void SkipLazyFunctionBody(const AstRawString* name,
587 int* materialized_literal_count, 587 int* materialized_literal_count,
588 int* expected_property_count, bool* ok); 588 int* expected_property_count, bool* ok);
589 V8_INLINE ZoneList<Statement*>* ParseEagerFunctionBody( 589 V8_INLINE ZoneList<Statement*>* ParseEagerFunctionBody(
590 const AstRawString* name, int pos, Variable* fvar, 590 const AstRawString* name, int pos, Variable* fvar,
591 Token::Value fvar_init_op, bool is_generator, bool* ok); 591 Token::Value fvar_init_op, bool is_generator, bool* ok);
592 V8_INLINE void CheckConflictingVarDeclarations(v8::internal::Scope* scope, 592 V8_INLINE void CheckConflictingVarDeclarations(v8::internal::Scope* scope,
593 bool* ok); 593 bool* ok);
594 594
595 typedef TemplateLiteral* TemplateLiteralState;
596 V8_INLINE TemplateLiteralState OpenTemplateLiteral(int pos);
597 V8_INLINE void AddTemplateSpan(TemplateLiteralState* state);
598 V8_INLINE void AddTemplateExpression(TemplateLiteralState* state,
599 Expression* expression);
600 V8_INLINE Expression* CloseTemplateLiteral(TemplateLiteralState* state,
601 int start, Expression* tag);
602 V8_INLINE Expression* NoTemplateTag() { return NULL; }
603
595 private: 604 private:
596 Parser* parser_; 605 Parser* parser_;
597 }; 606 };
598 607
599 608
600 class Parser : public ParserBase<ParserTraits> { 609 class Parser : public ParserBase<ParserTraits> {
601 public: 610 public:
602 // Note that the hash seed in ParseInfo must be the hash seed from the 611 // Note that the hash seed in ParseInfo must be the hash seed from the
603 // Isolate's heap, otherwise the heap will be in an inconsistent state once 612 // Isolate's heap, otherwise the heap will be in an inconsistent state once
604 // the strings created by the Parser are internalized. 613 // the strings created by the Parser are internalized.
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 825
817 // Consumes the ending }. 826 // Consumes the ending }.
818 ZoneList<Statement*>* ParseEagerFunctionBody( 827 ZoneList<Statement*>* ParseEagerFunctionBody(
819 const AstRawString* function_name, int pos, Variable* fvar, 828 const AstRawString* function_name, int pos, Variable* fvar,
820 Token::Value fvar_init_op, bool is_generator, bool* ok); 829 Token::Value fvar_init_op, bool is_generator, bool* ok);
821 830
822 void HandleSourceURLComments(); 831 void HandleSourceURLComments();
823 832
824 void ThrowPendingError(); 833 void ThrowPendingError();
825 834
835 TemplateLiteralState OpenTemplateLiteral(int pos);
836 void AddTemplateSpan(TemplateLiteralState* state);
837 void AddTemplateExpression(TemplateLiteralState* state,
838 Expression* expression);
839 Expression* CloseTemplateLiteral(TemplateLiteralState* state,
840 int start, Expression* tag);
826 Scanner scanner_; 841 Scanner scanner_;
827 PreParser* reusable_preparser_; 842 PreParser* reusable_preparser_;
828 Scope* original_scope_; // for ES5 function declarations in sloppy eval 843 Scope* original_scope_; // for ES5 function declarations in sloppy eval
829 Target* target_stack_; // for break, continue statements 844 Target* target_stack_; // for break, continue statements
830 ParseData* cached_parse_data_; 845 ParseData* cached_parse_data_;
831 846
832 CompilationInfo* info_; 847 CompilationInfo* info_;
833 848
834 // Pending errors. 849 // Pending errors.
835 bool has_pending_error_; 850 bool has_pending_error_;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 // Get the elements array of a compile time value returned by GetValue(). 931 // Get the elements array of a compile time value returned by GetValue().
917 static Handle<FixedArray> GetElements(Handle<FixedArray> value); 932 static Handle<FixedArray> GetElements(Handle<FixedArray> value);
918 933
919 private: 934 private:
920 static const int kLiteralTypeSlot = 0; 935 static const int kLiteralTypeSlot = 0;
921 static const int kElementsSlot = 1; 936 static const int kElementsSlot = 1;
922 937
923 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); 938 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue);
924 }; 939 };
925 940
941 ParserTraits::TemplateLiteralState ParserTraits::OpenTemplateLiteral(int pos) {
942 return parser_->OpenTemplateLiteral(pos);
943 }
944
945 void ParserTraits::AddTemplateSpan(TemplateLiteralState* state) {
946 parser_->AddTemplateSpan(state);
947 }
948 void ParserTraits::AddTemplateExpression(TemplateLiteralState* state,
949 Expression* expression) {
950 parser_->AddTemplateExpression(state, expression);
951 }
952 Expression* ParserTraits::CloseTemplateLiteral(TemplateLiteralState* state,
953 int start, Expression* tag) {
954 return parser_->CloseTemplateLiteral(state, start, tag);
955 }
926 } } // namespace v8::internal 956 } } // namespace v8::internal
927 957
928 #endif // V8_PARSER_H_ 958 #endif // V8_PARSER_H_
OLDNEW
« no previous file with comments | « src/messages.js ('k') | src/parser.cc » ('j') | src/parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698