Со времени моего ужасного опыта работы с cssparser я поставил себе задачу реализовать синтаксический анализатор CSS в Java, используя Parboiled . У меня уже есть все спецификации цвета, но, конечно, мне нужно все остальное ...
Итак, я пошел искать CSS-спецификацию и нашел ее на сайте W3C . Сейчас я нахожусь в процессе написания правил для всех «атомов», но обнаружил что-то тревожное в этом разделе :
UNICODE-RANGE u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?
Часть, которая беспокоит меня, это вопросительный знак в [0-9a-f?]
.
В заголовке параграфа говорится, что здесь используются регулярные выражения в стиле Lex. ?
не имеет особого значения в классе символов (спасибо @scizzo за подтверждение). Итак, это опечатка в спецификации W3C, или ?
действительно разрешено в диапазоне Unicode? Если да, что это значит?
Завершение : У меня есть ответ. Тем не менее, спецификация неверна: : «диапазон Юникода с вопросительным знаком» может быть только сам по себе. Учитывая приведенное выше регулярное выражение, это выражение будет разрешено, тогда как оно явно недопустимо: u+4??-733f