Kể từ khi trải nghiệm khủng khiếp của tôi với cssparser, tôi đã tự thiết lập nhiệm vụ triển khai trình phân tích cú pháp CSS trong Java bằng cách sử dụng Parboiled. Tôi đã có tất cả các đặc điểm kỹ thuật màu, nhưng tất nhiên tôi cần tất cả các phần còn lại ...Cái gì? có nghĩa là trong phần tokenization của đặc tả CSS W3C?
Vì vậy, tôi đã đi tìm đặc tả CSS và tìm thấy nó trên W3C website. Tôi bây giờ trong quá trình viết quy tắc cho tất cả các "nguyên tử", nhưng không tìm thấy một cái gì đó đáng lo ngại trong this section:
UNICODE-RANGE u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?
Phần rằng quấy rầy tôi là dấu hỏi trong [0-9a-f?]
.
Tiêu đề đoạn cho biết các cụm từ thông dụng được sử dụng ở đây là kiểu chữ Lex. Các ?
không có ý nghĩa đặc biệt trong một lớp nhân vật (nhờ @scizzo để xác nhận). Vì vậy, đây có phải là lỗi đánh máy trong thông số W3C hay là ?
thực sự được phép trong phạm vi Unicode không? Nếu có, điều đó có nghĩa là gì?
Kết thúc: Tôi có câu trả lời. Tuy nhiên, các đặc điểm kỹ thuật là sai: một "dãy nhãn unicode câu hỏi" chỉ có thể được một mình. Với regex ở trên, biểu thức này sẽ được cho phép trong khi rõ ràng là bất hợp pháp: u+4??-733f
này được một điều khẳng định, có nghĩa là dấu chấm hỏi phải bằng cách nào đó hợp pháp trong một phạm vi Unicode ... Nhưng tôi không thể tìm thấy ý nghĩa của nó:/ – fge
Chỉ cần chỉnh sửa, nhưng? về cơ bản là một ký tự đại diện. – sczizzo
Cảm ơn rất nhiều về liên kết! – fge