对于antlr4,有没有好的CSS语法?我知道antlr3有一些语法,但事实证明,如果没有“lexer模式”(在v4中添加),解析CSS并不容易。为什么呢?
考虑以下CSS选择器:
.hello.world { /* ... */ }
.hello .world { /* ... */ }
在大多数语法中,空格只是被忽略了。但是如果忽略空格,就无法在解析器级别区分上面的两个选择器。
然后,如果你不忽略空格,那么语法会变得非常嘈杂?或WS *模式无处不在,因为除非它出现在选择器中,否则空格 主要无意义。
这是来自antlr4的模式的地方,因为只要你输入不同的上下文,你就可以为词法分析器定义新的规则(即不忽略“选择器”中的空格)上下文)。
那就是说,只要它正确处理空格,我就会接受antlr3的任何语法,因为这是我们现在正在使用的版本; - )
答案 0 :(得分:1)
我想你已经找到了这个问题的答案,就像很久以前发布的那样。甚至还是:
CSS3的一个好的Antlr v4语法可以在Antlr Github上找到:
如自述文件中所述,它适用于许多CSS文件 - 但是,它不能处理@import
或@include
的完整语法。