我最近将源文件解析添加到现有工具中,该工具从复杂的命令行参数生成输出文件。
命令行参数变得如此复杂,以至于我们开始允许将它们作为一个文件提供,该文件被解析为一个非常大的命令行,但语法仍然很笨拙。所以我添加了使用更合理的语法解析源文件的能力。
我使用 flex 2.5.4 for windows 来为这种自定义源文件格式生成标记器,它工作正常。但我讨厌代码。全局变量、奇怪的命名约定以及它生成的 c++ 代码非常糟糕。现有的代码生成后端粘在 flex 的输出上——我不使用 yacc 或 bison。
我即将深入研究该代码,并且我想使用更好/更现代的工具。有谁知道那件事。
- 在 Windows 命令提示符下运行(Visual Studio 集成没问题,但我使用 make 文件构建)
- 生成适当封装的 C++ 标记器。(没有全局变量)
- 使用正则表达式来描述标记化规则(与 lex 语法兼容)
- 不强迫我使用 c-runtime(或伪造它)进行文件读取。(从内存中解析)
- 当我的规则强制标记器回溯(或自动修复它)时警告我
- 让我完全控制变量和方法名称(这样我就可以符合我现有的命名约定)
- 允许我将多个解析器链接到单个 .exe 中而不会发生名称冲突
- 如果我愿意,可以生成一个 UNICODE(16 位 UCS-2)解析器
- 不是集成标记器 + 解析器生成器(我想要 lex 替换,而不是 lex+yacc 替换)
如果这是唯一可用的工具,我可能会使用刚刚生成标记表的工具。