Rust 实现 CSS 语法级别 3
Rust-cssparser ================ Rust 实现 概述 ---------- CSS 解析涉及一系列步骤: * 从字节解析时,(例如读取文件或从网络中获取 URL),需要检测字符编码(基于 Content-Type HTTP 头、 @charset 规则、BOM 等),并将其解码为 Unicode 文本。 Rust-cssparser 尚未实现此步骤,而是假设使用 UTF-8。 从 Unicode 解析时,例如在 HTML <style> 元素中,则跳过此步骤。 * 词法分析,也称为词法分析。 输入,即 Unicode 文本流,被转换为 * 令牌* 流。 词法分析从不失败,尽管输出可能包含 * 错误令牌*。
然后,这个平滑的令牌流会转换为一个包含成分值的树,这些成分值或是保留的令牌,或是包含更多成分值的块/函数({ … }, [ … ], ( … ), foo( … ))。Rust-cssparser 会在进行令牌化的同时执行此操作: 无法将原始令牌材化,您只能获得成分值。
Rust-cssparser 的最后一步是将剩余组件值解析为 选择器、特定 CSS 属性等。根据设计,Rust-cssparser 不会执行这个最后一步,这取决于您想要做什么:支持哪些属性、对选择器进行哪些操作等。但是,它提供了一些辅助函数来解析 CSS 颜色 和 An+B(:nth-child() 及相关选择器的参数)。请参阅 Servo 的 style 编译单元,了解基于 Rust-cssparser 的解析器的示例。
暂无开放 Issues,或尚未同步最近议题。