【发布时间】:2016-03-28 07:30:11
【问题描述】:
我正在从事一个涉及 ANTLR 的项目。我生成了 Lexer 和 Parser 并将其用于另一个目录中的项目。该项目托管在 GitHub 上,因此我仍然拥有 ANTLR 与我一起生成的所有文件。但是由于硬盘故障,我丢失了语法文件。有没有办法从 ANTLR 生成的文件中重新生成语法文件?再次重写语法文件是一件令人头疼的事情,并且会涉及在很多地方更改我的项目代码。
【问题讨论】:
我正在从事一个涉及 ANTLR 的项目。我生成了 Lexer 和 Parser 并将其用于另一个目录中的项目。该项目托管在 GitHub 上,因此我仍然拥有 ANTLR 与我一起生成的所有文件。但是由于硬盘故障,我丢失了语法文件。有没有办法从 ANTLR 生成的文件中重新生成语法文件?再次重写语法文件是一件令人头疼的事情,并且会涉及在很多地方更改我的项目代码。
【问题讨论】:
答案是:只是部分。生成的文件包含与原始规则名称(词法分析器和解析器)相对应的函数/枚举。所以你可以恢复整体结构。但是您不会走得太远,因为规则本身已被转换为状态更改以加速处理 (DFA)。这些状态使用生成的数字,您没有将其映射回原始代码。
一如既往:问题根本不是您是否需要备份数据,而是何时。
【讨论】: