| 致谢 | ![]() |
![]() |
![]() |
特别感谢
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 Dunn、Vesa Karvonen、Faisal Vali、Porter Schermerhorn、Juergen Hunold、Jozsef Mihalicza 和 Daniel Fontijne 报告了几个问题和错误。
Tarmo Pikaro 报告了编译 Microsoft Windows SDK 的特定头文件时出现的几个错误。
Rob Stewart 在校对文档方面提供了很大帮助。
Stefan Seefeld 将 Wave 集成到他的 Synopsis 库中,并在此过程中发现了一些错误。
Andreas Sæbjørnsen 和 Felipe 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 Abrahams、Beman Dewes、Reece Dunn、Larry Evans、Doug Gregor、Joel de Guzman、Baptiste Lepilleur、Andy Little、Paul Mensonides、Dan Nuffer、Andreas Pokorny、Vladimir Prus、Gennadiy Rozental、Michiel Salters、Jonathan Turkanis、Chris Uzdavinis、Pavel Vozenilek、Michael Walter
该Wave库使用了以下Boost [8] 库
Boost Spirit(LL 解析器框架,将解析器直接表示为内联 C++ 中的 EBNF 文法)
Boost Iterator Adaptor Library(将基本类型适配为符合标准的迭代器)
Boost Filesystem Library(可移植路径、目录迭代和其他有用的文件系统操作)
Boost Program options and arguments library
以及其他不同Boost库中的小部分。
![]() |
![]() |
版权所有 © 2003-2011 Hartmut Kaiser
根据 Boost Software License, Version 1.0 分发。(参见附带的 LICENSE_1_0.txt 文件或访问 https://boost.ac.cn/LICENSE_1_0.txt 副本)