# 第三部分：语法模糊

> 原文： [https://www.fuzzingbook.org/html/03_Syntactical_Fuzzing.html](https://www.fuzzingbook.org/html/03_Syntactical_Fuzzing.html)

本部分介绍了*语法*级别的测试生成，即，构成语言结构的输入。

*   [语法](Grammars.html)为程序提供合法输入的*规范*。 通过语法指定输入可以非常系统和有效地生成测试，特别是对于复杂的输入格式。

*   [高效的语法模糊处理](GrammarFuzzer.html)引入了基于树的语法模糊处理算法，该算法速度更快，并且可以更好地控制模糊输入的产生。

*   [语法覆盖率](GrammarCoverageFuzzer.html)可以系统地覆盖语法元素，以便我们最大限度地提高多样性，而不会漏掉单个元素。

*   [解析输入](Parser.html)显示了如何使用语法将给定的有效种子输入集解析和分解为相应的派生树。

*   [概率语法模糊](ProbabilisticGrammarFuzzer.html)通过将*概率*分配给各个扩展来赋予语法更多的功能。

*   [生成器模糊处理](GeneratorGrammarFuzzer.html)显示如何使用*函数*扩展语法-在语法扩展过程中执行的代码片段，可以生成，检查或更改生成的元素。

*   [Greybox语法模糊](GreyboxGrammarFuzzer.html)利用结构表示法允许我们对它们的各个部分进行变异，交叉和重组，以生成新的有效的，稍有变化的输入。

*   [减少故障导致的输入](Reducer.html)提出了以下技术：*自动将故障引起的输入减少并简化到最小*，以便于调试。