重新2c 2.0

20 月 2 日星期一,发布了快速词法分析器生成器 reXNUMXc。
主要变化:

  • 增加了对 Go 语言的支持
    (通过 re2c 的 --lang go 选项启用,或作为独立的 re2go 程序启用)。
    C 和 Go 的文档是从相同的文本生成的,但使用不同的
    代码示例。 re2c 中的代码生成子系统已经完全重新设计,这
    应该会让以后更容易支持新的语言。

  • 在 CMake 上添加了替代构建系统(感谢 光速!)。
    将 re2c 转换为 CMake 的尝试已经进行了很长时间,但是在 ligfx 之前没有人
    提供了完整的解决方案。
    继续支持和使用 Autotools 上的旧构建系统,
    并且在可预见的未来没有放弃它的计划(部分是为了不创造
    分发开发人员的问题,部分原因是旧的构建系统
    比新的更稳定和简洁)。
    这两个系统同样使用 Travis CI 进行持续测试。

  • 添加使用时在配置中设置接口代码的功能
    通用API(generic API)。 以前,大多数 API 必须在表单中指定
    函数或函数宏。 现在它们可以以任意的形式设置
    具有 @@{name} 或 @@ 形式的命名模板参数的字符串(如果
    只有一个参数,没有歧义)。 API风格可配置
    re2c:api:style(函数值指定功能样式,而自由格式值是任意的)。

  • 改进了 -c, --start-conditions 选项的操作,它允许您组合多个
    一个 re2c 块中的互连词法分析器。 现在你可以使用
    普通块与条件块相提并论,并设置几个不相关的条件
    块在一个文件中。
    改进的 -r, --reuse 选项(重复使用一个块中的代码
    在其他块中)结合 -c, --start-conditions 和 -f, --storable-state 选项
    (可以在任意位置中断的有状态词法分析器
    稍后继续执行)。

  • 修复了新添加的处理输入数据结束的算法中的一个错误
    (EOF 规则),在极少数情况下会导致不正确的处理
    重叠的规则。

  • 简化的引导过程。 以前,构建系统试图动态查找已经
    构建了可用于重建自身的 re2c。
    这导致了不正确的依赖关系(因为依赖关系图原来是
    动态的,大多数构建系统不喜欢)。
    现在,为了重建词法分析器,明确要求
    配置构建系统并设置 RE2C_FOR_BUILD 变量。

感谢所有为此版本做出贡献的人!

来源: linux.org.ru

添加评论