antlr4 有什么好的 CSS 语法吗?我知道 antlr3 有一些语法,但事实证明,如果没有在 v4 中添加的“词法分析器模式”,CSS 解析并非易事。为什么?
考虑以下 CSS 选择器:
.hello.world { /* ... */ }
.hello .world { /* ... */ }
在大多数语法中,空格被简单地忽略。但是如果忽略空格,就无法在解析器级别区分上面的两个选择器。
再说一次,如果你不忽略空格,WS 的语法会变得很嘈杂吗?或 WS* 模式无处不在,因为空白几乎没有意义,除非它出现在选择器中。
这就是来自 antlr4 的模式的用武之地,因为有了对词法分析器模式的支持,您可以在输入不同的上下文时为词法分析器定义新规则(即不要忽略“选择器”上下文中的空格)。
也就是说,只要 antlr3 正确处理空格,我也会接受任何语法,因为这就是我们现在正在使用的版本;-)