我正在编写一个解析器来解析 CSS。
我首先修改 CSS reference grammar , 使用 3rd-party parser generator tool 支持的语法和词法分析器语法我正在使用。
我认为我已经完成了语法编码:解析器生成器现在能够为我的语法生成状态转换表。
结果(解析器生成器的输出)大约是 116 条“规则”,对应于 switch
语句中的 116 种情况。这些规则/开关语句的示例是:
- 样式表以指定字符集开始
- 样式表开始时未指定字符集:
- 样式表为空
- 样式表以空格开头
- ...等...
解析器生成器已经为我完成了所有它能做的,现在我开始(手工)编写 switch 语句的各种情况,这将构建我认为人们称之为“抽象语法树”的东西。
我的问题是关于如何测试这个。我认为我想要的是一组 CSS 文件,这些文件可以练习各种组合和可能性:例如一个指定字符集的 CSS 文件;另一个没有指定字符集的文件;等
是否有一种通用方法可以针对任意语法或规则集自动生成这组输入数据?
或者,是否有一组特别的 CSS 文件,其目的是涵盖标准 CSS 语法允许的组合和可能性?
如果我做错了,也请随时发表评论。
目前我不需要:
用于测试处理非法输入(即不符合语法的文件)的文件
测试各种浏览器如何根据它们对 CSS 的解析呈现
最佳答案
Microsoft 对 IE8 是否符合 CSS 规范进行了一组数千个 CSS 测试。 http://samples.msdn.microsoft.com/ietestcenter/css.htm
虽然他们专注于测试浏览器合规性,但您可能可以调整它们。
还有较旧的 W3C 测试套件,它们并不完整,但可能会满足您的目的: http://www.w3.org/Style/CSS/Test/
关于css - 如何测试 CSS 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088180/