Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 // Features shared by parsing and pre-parsing scanners. | 5 // Features shared by parsing and pre-parsing scanners. |
| 6 | 6 |
| 7 #ifndef V8_SCANNER_H_ | 7 #ifndef V8_SCANNER_H_ |
| 8 #define V8_SCANNER_H_ | 8 #define V8_SCANNER_H_ |
| 9 | 9 |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 451 } | 451 } |
| 452 void SetHarmonyNumericLiterals(bool numeric_literals) { | 452 void SetHarmonyNumericLiterals(bool numeric_literals) { |
| 453 harmony_numeric_literals_ = numeric_literals; | 453 harmony_numeric_literals_ = numeric_literals; |
| 454 } | 454 } |
| 455 bool HarmonyClasses() const { | 455 bool HarmonyClasses() const { |
| 456 return harmony_classes_; | 456 return harmony_classes_; |
| 457 } | 457 } |
| 458 void SetHarmonyClasses(bool classes) { | 458 void SetHarmonyClasses(bool classes) { |
| 459 harmony_classes_ = classes; | 459 harmony_classes_ = classes; |
| 460 } | 460 } |
| 461 bool HarmonyTemplates() const { return harmony_templates_; } | |
| 462 void SetHarmonyTemplates(bool templates) { harmony_templates_ = templates; } | |
| 461 | 463 |
| 462 // Returns true if there was a line terminator before the peek'ed token, | 464 // Returns true if there was a line terminator before the peek'ed token, |
| 463 // possibly inside a multi-line comment. | 465 // possibly inside a multi-line comment. |
| 464 bool HasAnyLineTerminatorBeforeNext() const { | 466 bool HasAnyLineTerminatorBeforeNext() const { |
| 465 return has_line_terminator_before_next_ || | 467 return has_line_terminator_before_next_ || |
| 466 has_multiline_comment_before_next_; | 468 has_multiline_comment_before_next_; |
| 467 } | 469 } |
| 468 | 470 |
| 469 // Scans the input as a regular expression pattern, previous | 471 // Scans the input as a regular expression pattern, previous |
| 470 // character(s) must be /(=). Returns true if a pattern is scanned. | 472 // character(s) must be /(=). Returns true if a pattern is scanned. |
| 471 bool ScanRegExpPattern(bool seen_equal); | 473 bool ScanRegExpPattern(bool seen_equal); |
| 472 // Returns true if regexp flags are scanned (always since flags can | 474 // Returns true if regexp flags are scanned (always since flags can |
| 473 // be empty). | 475 // be empty). |
| 474 bool ScanRegExpFlags(); | 476 bool ScanRegExpFlags(); |
| 475 | 477 |
| 478 // Scans the input as a template literal | |
| 479 Token::Value ScanTemplateSpan(); | |
| 480 | |
| 476 const LiteralBuffer* source_url() const { return &source_url_; } | 481 const LiteralBuffer* source_url() const { return &source_url_; } |
| 477 const LiteralBuffer* source_mapping_url() const { | 482 const LiteralBuffer* source_mapping_url() const { |
| 478 return &source_mapping_url_; | 483 return &source_mapping_url_; |
| 479 } | 484 } |
| 480 | 485 |
| 481 bool IdentifierIsFutureStrictReserved(const AstRawString* string) const; | 486 bool IdentifierIsFutureStrictReserved(const AstRawString* string) const; |
| 482 | 487 |
| 483 private: | 488 private: |
| 484 // The current and look-ahead token. | 489 // The current and look-ahead token. |
| 485 struct TokenDesc { | 490 struct TokenDesc { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 674 // line-terminator after the current token, and before the next. | 679 // line-terminator after the current token, and before the next. |
| 675 bool has_multiline_comment_before_next_; | 680 bool has_multiline_comment_before_next_; |
| 676 // Whether we scan 'let' as a keyword for harmony block-scoped let bindings. | 681 // Whether we scan 'let' as a keyword for harmony block-scoped let bindings. |
| 677 bool harmony_scoping_; | 682 bool harmony_scoping_; |
| 678 // Whether we scan 'module', 'import', 'export' as keywords. | 683 // Whether we scan 'module', 'import', 'export' as keywords. |
| 679 bool harmony_modules_; | 684 bool harmony_modules_; |
| 680 // Whether we scan 0o777 and 0b111 as numbers. | 685 // Whether we scan 0o777 and 0b111 as numbers. |
| 681 bool harmony_numeric_literals_; | 686 bool harmony_numeric_literals_; |
| 682 // Whether we scan 'class', 'extends', 'static' and 'super' as keywords. | 687 // Whether we scan 'class', 'extends', 'static' and 'super' as keywords. |
| 683 bool harmony_classes_; | 688 bool harmony_classes_; |
| 689 // Whether we scan TEMPLATE_SPAN and TEMPLATE_TAIL | |
| 690 bool harmony_templates_; | |
|
marja
2014/11/12 13:39:32
This is not initialized!
| |
| 684 }; | 691 }; |
| 685 | 692 |
| 686 } } // namespace v8::internal | 693 } } // namespace v8::internal |
| 687 | 694 |
| 688 #endif // V8_SCANNER_H_ | 695 #endif // V8_SCANNER_H_ |
| OLD | NEW |