| // Copyright 2011 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_INTL_SUPPORT |
| #error Internationalization is expected to be enabled. |
| #endif // V8_INTL_SUPPORT |
| |
| #include "src/char-predicates.h" |
| |
| #include "unicode/uchar.h" |
| #include "unicode/urename.h" |
| |
| namespace v8 { |
| namespace internal { |
| |
| // ES#sec-names-and-keywords Names and Keywords |
| // UnicodeIDStart, '$', '_' and '\' |
| bool IdentifierStart::Is(uc32 c) { |
| // cannot use u_isIDStart because it does not work for |
| // Other_ID_Start characters. |
| return u_hasBinaryProperty(c, UCHAR_ID_START) || |
| (c < 0x60 && (c == '$' || c == '\\' || c == '_')); |
| } |
| |
| // ES#sec-names-and-keywords Names and Keywords |
| // UnicodeIDContinue, '$', '_', '\', ZWJ, and ZWNJ |
| bool IdentifierPart::Is(uc32 c) { |
| // Can't use u_isIDPart because it does not work for |
| // Other_ID_Continue characters. |
| return u_hasBinaryProperty(c, UCHAR_ID_CONTINUE) || |
| (c < 0x60 && (c == '$' || c == '\\' || c == '_')) || c == 0x200C || |
| c == 0x200D; |
| } |
| |
| // ES#sec-white-space White Space |
| // gC=Zs, U+0009, U+000B, U+000C, U+FEFF |
| bool WhiteSpace::Is(uc32 c) { |
| return (u_charType(c) == U_SPACE_SEPARATOR) || |
| (c < 0x0D && (c == 0x09 || c == 0x0B || c == 0x0C)) || c == 0xFEFF; |
| } |
| |
| } // namespace internal |
| } // namespace v8 |