| // 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 |