编译器扫描器/解析器常用的负面测试用例包括输入不合法的语法和语义错误等。举例来说,对于一个简单的正则表达式解析器,常用的负面测试用例可包括以下情况:
// 输入不合法的正则表达式
assert(parseRegex("") == null);
assert(parseRegex("(") == null);
assert(parseRegex("a++") == null);
// 输入不合法的转义字符
assert(parseRegex("\\") == null);
assert(parseRegex("\\x") == null);
assert(parseRegex("\\g") == null);
// 输入不匹配的括号
assert(parseRegex("((a|b)") == null);
assert(parseRegex("(a|b))") == null);
可以通过编写各种不同类型的负面测试用例来保证编译器扫描器/解析器的健壮性和正确性。