致谢

特别感谢

Paul Mensonides 在宏扩展引擎开发过程中提供了宝贵的帮助,并提供了富有见地的建议。他实现了本文中的递归宏扩展算法,并贡献了用于测试宏扩展正确性的大部分小型测试用例。

Dan Nuffer 编写了最初的基于 Re2C 的 C++ 词法分析器以及 Slex (Spirit Lex) 扫描器生成器示例。

Martin Wille 协助进行了到 Linux 的移植,在 Linux 上进行了测试,并贡献了自动化测试脚本。

Vladimir Prus 协助分析了Wave驱动程序可执行文件的命令行和配置文件选项。

Juan Carlos Arevalo-Baeza 编写了 Spirit cpp_lexer 示例,其中借鉴了一些想法。

Andrei Alexandrescu 允许使用他的 flex_string 类,这是一个基于策略的、与 std::basic_string<> 兼容的字符串实现。

Reece DunnVesa KarvonenFaisal ValiPorter Schermerhorn、Juergen Hunold、Jozsef MihaliczaDaniel Fontijne 报告了几个问题和错误。

Tarmo Pikaro 报告了编译 Microsoft Windows SDK 的特定头文件时出现的几个错误。

Rob Stewart 在校对文档方面提供了很大帮助。

Stefan Seefeld 将 Wave 集成到他的 Synopsis 库中,并在此过程中发现了一些错误。

Andreas SæbjørnsenFelipe Magno de Almeida 建议对Wave预处理钩子接口及相关测试进行一些扩展和更正。

Tobias Schwinger 建议添加 'pragma wave option(output:...)' 和 '#pragma message("...")' 功能,并报告了一些错误。

Richard Guenther 修复了 Re2C 词法分析器中一个棘手的缓冲区溢出问题。

Danny Havenith 贡献了他的部分 C++ 解析器hannibal作为示例,并Wave.

最后但同样重要的是

Joel de Guzman 鼓励我进行这项冒险,并为他在Spirit解析器框架方面所做的工作,没有他,这个Wave库就不可能实现。

特别感谢那些提供反馈和宝贵意见的人,尤其是 Boost 和 Spirit 邮件列表的成员。这包括所有参与 Boost 评审的人

Tom Brinkman(他自愿担任评审经理)、David AbrahamsBeman DewesReece DunnLarry EvansDoug GregorJoel de GuzmanBaptiste LepilleurAndy LittlePaul MensonidesDan NufferAndreas PokornyVladimir PrusGennadiy RozentalMichiel SaltersJonathan TurkanisChris UzdavinisPavel VozenilekMichael Walter

Wave库使用了以下Boost [8]

 Boost Spirit(LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 文法)
Boost Iterator Adaptor Library(将基本类型适配为符合标准的迭代器)
Boost Filesystem Library(可移植路径、目录迭代和其他有用的文件系统操作)
 Boost Program options and arguments library

以及其他不同Boost库中的小部分。


最后更新日期2006 年 6 月 21 日星期三 22:22