那是什么?在W3C CSS规范的标记化部分中意味着什么?

时间:2011-12-28 02:15:28

标签: unicode grammar lex css

自从我对cssparser的糟糕体验以来,我已经设定了使用Parboiled在Java中实现CSS解析器的任务。我已经涵盖了所有颜色规格,但当然我还需要其他所有颜色......

所以,我去寻找CSS规范并在W3C website上找到它。我现在正在为所有“原子”编写规则,但在this section中发现了令人不安的事情:

UNICODE-RANGE   u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?

扰乱我的部分是[0-9a-f?]中的问号。

段落标题说这里使用的正则表达式是Lex风格。 ?在角色类中没有特殊含义(感谢@scizzo确认)。那么,这是W3C规范中的拼写错误,还是在Unicode范围内真正允许??如果是,那是什么意思?

总结:我有答案。但是,规范 错误:“问号unicode范围”只能单独使用。鉴于上述正则表达式,将允许使用此表达式,而这显然是非法的:u+4??-733f

1 个答案:

答案 0 :(得分:4)

是的,这是一个字面问号。 From the Flex documentation

  

请注意,在字符类内部,除了escape之外,所有正则表达式运算符都会失去其特殊含义   ('\')和字符类操作符' - ',']'和at   课程的开头,'^'。

现在,根据W3C,? can be used as a kind of wildcard

  

?字符表示“任何数字值”(例如U + 4 ??)