我需要将以特定领域语言编写的程序翻译成xml表示。这些程序采用简单的文本文件形式。你建议我采取什么方法?我应该使用什么API:
我的标准更多的是快速而简单的开发,而不是内存或计算时间效率。
非常感谢 科坦
答案 0 :(得分:2)
这项工作的不太重要的部分是第1步,解析域特定语言(DSL)文本,而不是#2,将其推送到某种XML语言。
希望您能轻松拥有DSL的解析器(显然这种语言必须已经使用某处 ...),您可以将导出/转换逻辑“挂钩”到这个解析器。如果不可能,您需要编写一个新的解析器。
根据DSL的复杂程度,您可以使用基于几个循环和切换案例的简单解析器来编写。
对于更复杂的语言,ANTLR通常是一个不错的选择。简而言之,在Backus Naur形式(BNF,或实际上EBNF,这里,即扩展系列)中形成DSL的语法,并且ANTLR生成一个解析器,用选择目标语言(包括Java)。使用ANTLR的学习曲线是一个需要考虑的因素,但在中等到非常复杂的语言环境中,值得投资。 ANTLR是类似的,但在我看来,它是一个比GNU Bison更好的工具,但是后者也可以做到这一点,同样也需要目标Java。
如果您熟悉其他语言,特别是Python,那么还有许多其他工具可以用于或多或少的ad-hoc解析器;我也使用过PyParsing,很乐意推荐它。
答案 1 :(得分:1)
XStream是Java EVAR的最佳XML序列化器/反序列化器。如果您可以将DSL转换为Java类,那么这是一个很棒的库。