我最近为一个现有工具添加了源代码文件解析功能,该工具能够从复杂的命令行参数生成输出文件。
由于命令行参数变得非常复杂,我们开始允许将它们作为文件提供,以便像处理非常长的命令行一样进行解析,但语法仍然很笨拙。因此,我增加了使用更合理的语法来解析源文件的功能。
我在Windows平台上使用了flex 2.5.4来生成该自定义源文件格式的标记器,并且它有效地工作。但是我讨厌这个代码。全局变量,奇怪的命名约定,以及它生成的C++代码都很糟糕。现有的代码生成后端与flex的输出粘合在一起,我不使用yacc或bison。
我即将深入研究这个代码,并且想使用一个更好/更现代的工具。有人知道这样的工具吗?
- 在Windows命令提示符中运行(Visual Studio集成可行,但我使用make文件构建)
- 生成适当封装的C++标记器。(没有全局变量)
- 使用正则表达式描述标记规则(兼容lex语法的加分项)
- 不强制我使用C运行时(或伪造它)进行文件读取。(从内存中解析)
- 当我的规则强制标记器回溯时,警告我(或自动修复)
- 允许我完全控制变量和方法名称(以便符合我的现有命名约定)
- 允许我将多个解析器链接到单个.exe中,避免名称冲突
- 如果需要,可以生成UNICODE(16位UCS-2)解析器
- 不是集成的标记器+解析器生成器(我想要一个lex替代方案,而不是lex + yacc替代方案)
如果只有生成标记表的工具,我可能可以找到一种方法来解决。