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