gpt4 book ai didi

java - 我可以使用 ANTLR 进行双向解析/生成吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:41 25 4
gpt4 key购买 nike

我需要解析传入消息并生成 EDIFACT 格式(基本上是结构化分隔格式)的传出消息。

我想要一个通过解析消息生成的 Java 模型。然后我想使用相同的模型来创建实例并生成消息。

前半部分很好,我之前使用过 ANTLR 从原始 -> Java 对象。但我从来没有做过相反的事情,或者如果我有的话也是习惯性的。

ANTLR 是否支持使用语法生成,或者它实际上只是一个仅解析的工具?

编辑:

扩展 - 我想理想地定义两件事。描述原始消息的语法(在本例中为 EDIFACT,但如果您愿意,可以假装它是 CSV)。以及 Java 对象模型。

我知道我可以编写一个 ANTLR 语法来从原始 -> Java 模型中获取。例如解析 SQL 字符串 -> Java 模型,我之前已经做过。但理想情况下我也需要走另一条路,而不改变语法。

如果您将其比作 JAXB(XML 世界),我真的希望将 JAXB 用于 EDIFACT(而不是 XML)。

最佳答案

ANTLR 可以做你所要求的事情吗,是的。尽管它可能需要多个语法。

对我来说,这听起来像是您想从解析器创建 AST。让一个树遍历器完成所需的所有 java 对象创建(可能是第二个语法)。然后第二个树遍历器创建输出消息(第三个语法),如果需要,您甚至可以使用 StringTemplate。也许你可以摆脱两个语法。

但此时必须提供实际详细信息才能获得更多帮助,例如特定输入的 AST 是什么样子以及输出消息应该是什么。

关于java - 我可以使用 ANTLR 进行双向解析/生成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com