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 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <cmath> | 9 #include <cmath> |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... |
29 } | 29 } |
30 | 30 |
31 | 31 |
32 // ---------------------------------------------------------------------------- | 32 // ---------------------------------------------------------------------------- |
33 // Scanner | 33 // Scanner |
34 | 34 |
35 Scanner::Scanner(UnicodeCache* unicode_cache) | 35 Scanner::Scanner(UnicodeCache* unicode_cache) |
36 : unicode_cache_(unicode_cache), | 36 : unicode_cache_(unicode_cache), |
37 octal_pos_(Location::invalid()), | 37 octal_pos_(Location::invalid()), |
38 harmony_modules_(false), | 38 harmony_modules_(false), |
39 harmony_numeric_literals_(false), | |
40 harmony_classes_(false), | 39 harmony_classes_(false), |
41 harmony_unicode_(false) {} | 40 harmony_unicode_(false) {} |
42 | 41 |
43 | 42 |
44 void Scanner::Initialize(Utf16CharacterStream* source) { | 43 void Scanner::Initialize(Utf16CharacterStream* source) { |
45 source_ = source; | 44 source_ = source; |
46 // Need to capture identifiers in order to recognize "get" and "set" | 45 // Need to capture identifiers in order to recognize "get" and "set" |
47 // in object literals. | 46 // in object literals. |
48 Init(); | 47 Init(); |
49 // Skip initial whitespace allowing HTML comment ends just like | 48 // Skip initial whitespace allowing HTML comment ends just like |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 // hex number | 946 // hex number |
948 kind = HEX; | 947 kind = HEX; |
949 AddLiteralCharAdvance(); | 948 AddLiteralCharAdvance(); |
950 if (!IsHexDigit(c0_)) { | 949 if (!IsHexDigit(c0_)) { |
951 // we must have at least one hex digit after 'x'/'X' | 950 // we must have at least one hex digit after 'x'/'X' |
952 return Token::ILLEGAL; | 951 return Token::ILLEGAL; |
953 } | 952 } |
954 while (IsHexDigit(c0_)) { | 953 while (IsHexDigit(c0_)) { |
955 AddLiteralCharAdvance(); | 954 AddLiteralCharAdvance(); |
956 } | 955 } |
957 } else if (harmony_numeric_literals_ && (c0_ == 'o' || c0_ == 'O')) { | 956 } else if (c0_ == 'o' || c0_ == 'O') { |
958 kind = OCTAL; | 957 kind = OCTAL; |
959 AddLiteralCharAdvance(); | 958 AddLiteralCharAdvance(); |
960 if (!IsOctalDigit(c0_)) { | 959 if (!IsOctalDigit(c0_)) { |
961 // we must have at least one octal digit after 'o'/'O' | 960 // we must have at least one octal digit after 'o'/'O' |
962 return Token::ILLEGAL; | 961 return Token::ILLEGAL; |
963 } | 962 } |
964 while (IsOctalDigit(c0_)) { | 963 while (IsOctalDigit(c0_)) { |
965 AddLiteralCharAdvance(); | 964 AddLiteralCharAdvance(); |
966 } | 965 } |
967 } else if (harmony_numeric_literals_ && (c0_ == 'b' || c0_ == 'B')) { | 966 } else if (c0_ == 'b' || c0_ == 'B') { |
968 kind = BINARY; | 967 kind = BINARY; |
969 AddLiteralCharAdvance(); | 968 AddLiteralCharAdvance(); |
970 if (!IsBinaryDigit(c0_)) { | 969 if (!IsBinaryDigit(c0_)) { |
971 // we must have at least one binary digit after 'b'/'B' | 970 // we must have at least one binary digit after 'b'/'B' |
972 return Token::ILLEGAL; | 971 return Token::ILLEGAL; |
973 } | 972 } |
974 while (IsBinaryDigit(c0_)) { | 973 while (IsBinaryDigit(c0_)) { |
975 AddLiteralCharAdvance(); | 974 AddLiteralCharAdvance(); |
976 } | 975 } |
977 } else if ('0' <= c0_ && c0_ <= '7') { | 976 } else if ('0' <= c0_ && c0_ <= '7') { |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1560 } | 1559 } |
1561 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); | 1560 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); |
1562 } | 1561 } |
1563 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); | 1562 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); |
1564 | 1563 |
1565 backing_store_.AddBlock(bytes); | 1564 backing_store_.AddBlock(bytes); |
1566 return backing_store_.EndSequence().start(); | 1565 return backing_store_.EndSequence().start(); |
1567 } | 1566 } |
1568 | 1567 |
1569 } } // namespace v8::internal | 1568 } } // namespace v8::internal |
OLD | NEW |