我正在编写一个解析CSS的解析器。
我开始修改CSS参考文法,以使用我正在使用的第三方解析器生成工具支持的语法和词法分析器语法。
我认为我已经完成了语法编码:解析器生成器现在能够为我的语法生成状态转换表。
结果(来自解析器生成器的输出)大约有116个“规则”,对应于switch
语句中的116种情况。这些规则/switch语句的示例包括:
- 样式表以指定字符集开头
- 样式表以未指定字符集开头:
- 样式表为空
- 样式表以空格开头
- ...等等...
解析器生成器已经尽其所能为我做了,现在我开始手动编写各种case的switch语句,这将构建人们所谓的“抽象语法树”。
我的问题是关于如何测试这个。我认为我想要的是一组CSS文件,可以练习各种组合和可能性:例如一个指定字符集的CSS文件;另一个没有指定字符集的文件等。是否有一种通用的方法来自动生成这组输入数据,针对任意语法或规则集?
或者,是否有一组特定的CSS文件,其目的是覆盖标准CSS语法允许的组合和可能性?
如果我做错了,请随时评论。
目前我不需要:
测试处理非法输入(即不符合语法的文件)的文件
基于它们解析CSS的各种浏览器呈现的测试