6

antlr4 有什么好的 CSS 语法吗?我知道 antlr3 有一些语法,但事实证明,如果没有在 v4 中添加的“词法分析器模式”,CSS 解析并非易事。为什么?

考虑以下 CSS 选择器:

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

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

再说一次,如果你不忽略空格,WS 的语法会变得很嘈杂吗?或 WS* 模式无处不在,因为空白几乎没有意义,除非它出现在选择器中。

这就是来自 antlr4 的模式的用武之地,因为有了对词法分析器模式的支持,您可以在输入不同的上下文时为词法分析器定义新规则(即不要忽略“选择器”上下文中的空格)。

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

4

1 回答 1

3

我想你已经找到了这个问题的答案,因为它是很久以前发布的。即便如此:

可以在 Antlr Github 上找到适用于 CSS3 的优秀 Antlr v4 语法:

Antlr v4 CSS3 语法

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

于 2017-05-22T22:13:20.937 回答