Antlr v4中的CSS语法很好

时间:2013-09-03 23:39:16

标签: css antlr antlr3 antlr4

对于antlr4,有没有好的CSS语法?我知道antlr3有一些语法,但事实证明,如果没有“lexer模式”(在v4中添加),解析CSS并不容易。为什么呢?

考虑以下CSS选择器:

.hello.world { /* ... */ }
.hello .world { /* ... */ }

在大多数语法中,空格只是被忽略了。但是如果忽略空格,就无法在解析器级别区分上面的两个选择器。

然后,如果你不忽略空格,那么语法会变得非常嘈杂?或WS *模式无处不在,因为除非它出现在选择器中,否则空格 主要无意义。

这是来自antlr4的模式的地方,因为只要你输入不同的上下文,你就可以为词法分析器定义新的规则(即忽略“选择器”中的空格)上下文)。

那就是说,只要它正确处理空格,我就会接受antlr3的任何语法,因为这是我们现在正在使用的版本; - )

1 个答案:

答案 0 :(得分:1)

我想你已经找到了这个问题的答案,就像很久以前发布的那样。甚至还是:

CSS3的一个好的Antlr v4语法可以在Antlr Github上找到:

Antlr v4 CSS3 Grammar

如自述文件中所述,它适用于许多CSS文件 - 但是,它不能处理@import@include的完整语法。