本章将会讨论一个常见任务:解析(parsing)二进制文件。选这个任务有两个目的。 第一个确实是想谈谈解析过程,但更重要的目标是谈谈程序组织、重构和消除样板代码 (boilerplate code:通常指不重要,但没它又不行的代码)。 我们将会展示如何清理冗余代码,并为第十四章讨论 Monad 做点准备。
我们将要用到的文件格式来自于 netpbm 库,它包含一组用来处理位图图像的程序及文件格式,它古老而令人尊敬。 这种文件格式不但被广泛使用,而且还非常简单,虽然解析过程也不是完全没有挑战。 对我们而言最重要的是,netpbm 文件没有经过压缩。