@@ -30,43 +30,25 @@ trait TokenTests {
3030 def isAlpha (c : Char ) = (c >= 'A' && c <= 'Z' ) || (c >= 'a' && c <= 'z' )
3131 def isAlphaDigit (c : Char ) = isAlpha(c) || (c >= '0' && c <= '9' )
3232
33- /** {{{
34- * NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'
35- * | CombiningChar | Extender
36- * }}}
37- * See [4] and Appendix B of XML 1.0 specification.
38- */
39- def isNameChar (ch : Char ) = {
40- import java .lang .Character ._
41- // The constants represent groups Mc, Me, Mn, Lm, and Nd.
42-
43- isNameStart(ch) || (getType(ch).toByte match {
44- case COMBINING_SPACING_MARK |
45- ENCLOSING_MARK | NON_SPACING_MARK |
46- MODIFIER_LETTER | DECIMAL_DIGIT_NUMBER => true
47- case _ => " .-:" contains ch
48- })
49- }
50-
51- /** {{{
52- * NameStart ::= ( Letter | '_' )
53- * }}}
54- * where Letter means in one of the Unicode general
55- * categories `{ Ll, Lu, Lo, Lt, Nl }`.
56- *
57- * We do not allow a name to start with `:`.
58- * See [3] and Appendix B of XML 1.0 specification
59- */
60- def isNameStart (ch : Char ) = {
61- import java .lang .Character ._
62-
63- getType(ch).toByte match {
64- case LOWERCASE_LETTER |
65- UPPERCASE_LETTER | OTHER_LETTER |
66- TITLECASE_LETTER | LETTER_NUMBER => true
67- case _ => ch == '_'
68- }
69- }
33+ def isNameChar (c : Char ): Boolean = (
34+ isNameStart(c) ||
35+ (c >= '0' && c <= '9' ) ||
36+ c == '-' ||
37+ c == '.' ||
38+ c == 0xB7 ||
39+ (c >= 0x300 && c <= 0x36F ) ||
40+ (c >= 0x203F && c <= 0x2040 )
41+ )
42+ def isNameStart (c : Char ): Boolean = (
43+ if (c < 0x00C0 ) isAlpha(c) || c == ':' || c == '_'
44+ else if (c < 0x0300 ) c != 0xD7 && c != 0xF7
45+ else if (c < 0x2000 ) c >= 0x370 && c != 0x37E
46+ else if (c < 0x3001 ) c == 0x200C || c == 0x200D || (0x2070 to 0x218F contains c) ||
47+ (0x2C00 to 0x2FEF contains c)
48+ else if (c < 0xD800 ) true
49+ else if (c < 0x10000 ) (0xF900 to 0xFDCF contains c) || (0xFDF0 to 0xFFFD contains c)
50+ else false // codepoint < 0xF0000
51+ )
7052
7153 /** {{{
7254 * Name ::= ( Letter | '_' ) (NameChar)*
0 commit comments