【问题标题】:parsing and translating from text to xml解析和翻译从文本到 xml
【发布时间】:2010-03-02 17:14:31
【问题描述】:

我需要将用特定领域语言编写的程序翻译成 xml 表示。这些程序采用简单文本文件的形式。你会建议我什么方法?我应该使用什么api:

  1. 解析用这种语言编写的文本文件。
  2. 根据我获得的令牌和令牌流编写xml。

我的标准更多的是快速和更容易的开发,而不是内存或计算时间效率。

非常感谢 克坦

【问题讨论】:

标签: java xml text-parsing


【解决方案1】:

这项工作中不太重要的部分是第 1 步,解析域特定语言 (DSL) 文本,而不是第 2 步,将其推送到某种 XML 语言。

希望您可以轻松地为 DSL 提供解析器(显然这种语言必须在某处...),并且您可以将导出/转换逻辑“挂钩”到这个解析器。如果这不可能,您将需要编写一个新的解析器。

根据 DSL 的复杂性,您可能能够以简单的方式编写一个基于几个循环和切换案例的简单解析器。
对于更复杂的语言,ANTLR 通常是一个不错的选择。简而言之,将 DSL 的语法形式化为 Backus Naur 形式(BNF,或实际上是 EBNF,此处,即 Extended 系列),ANTLR 生成一个以目标语言编写的解析器选择(包括 Java)。 ANTLR 的学习曲线是一个需要考虑的因素,但在中等到极其复杂的语言环境中,这是一项非常值得的投资。 ANTLR 与此类似,但在我看来,它是比 GNU Bison 更好的工具,但后者也可以解决问题,而且目标 Java 也是如此需要。
如果您熟悉其他语言,尤其是 Python,那么还有许多其他工具可以用于或多或少的 ad-hoc 解析器;我也用过PyParsing,很乐意推荐它。

【讨论】:

    【解决方案2】:

    XStream 是 Java EVAR 的最佳 XML 序列化器/反序列化器。如果您可以将您的 DSL 转换为 Java 类,那么这是一个很棒的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多