您如何为非典型文件格式提供有效的解析器?

时间:2014-11-10 10:10:30

标签: java parsing

我正在尝试解析保存在文件中的以下行,您可以看到不是典型的文件格式。 对于包含以下行的此类文件,最好的解析器是什么?文件名是file.make

[Silver: 9]
[Gold: 2]
[Utilize 2x Bolt to Helicopter until 10s] 
[Utilize 5x Ruler with 3x Bolt to Car until 7s] 
[Utilize Boat until 5s] 
[Utilize Tank until 4s] 
[Utilize 1x Paint with 2x Bolt with 5x Wrench to Motorcycle until 6s]

我注意到的一件事是,在“使用”一词后面跟随工具/或工具及其名称/名称的数量,“带”一词后跟另一个工具 单词“to”后跟一个车辆,最后一个单词“until”后跟一个时间。黄金和白银只代表成本。

2 个答案:

答案 0 :(得分:0)

您应该特别注意不要让流程渗透。您的评论“使用”一词跟随工具/或工具的数量建议您已经这样做。

出血是指当您尝试同时对数据执行多项操作时 - 在您解析解释的情况下。

在你的情况下,我会建议:

  1. 将其分成几行。
  2. 确保每一行都被“[]”包围并删除它们(或其他)。
  3. 将该行拆分为单词。
  4. 扫描每个单词以查看它们是否特殊(例如,使用,直到)。
  5. 尝试解释词语。
  6. 确保您执行上述各项功能单独。不要试图跳过去。

答案 1 :(得分:0)

如果您为它们提供语法规则,有些工具可以自动为您创建解析器。 ANTLR就是一个例子。

但是,您可以自定义语法或从现有示例中删除语法规则,因为您提供的示例将类似于:

S -> RESOURCE: INTEGER
RESOURCE -> Silver, Gold
INTEGER -> [1..1024]