gpt4 book ai didi

java - 有没有用 Java 编写的 ADA 解析器?

转载 作者:行者123 更新时间:2023-12-01 09:17:53 24 4
gpt4 key购买 nike

我希望使用 Java 解析 ADA 代码并构建其 AST。我相信有一个用 Java 编写的解析器可以解析几乎所有编程语言,但是经过几天的研究我没有发现任何东西。

我发现的唯一有前途的工具是 Adacore 的 libadalang ( https://github.com/AdaCore/libadalang )。但是,这仅提供 Ada 和 Python 的 api(尽管在自述文件中提到了 Java)。

你有什么建议吗?如果没有使用 Java 直接解析 Ada 的方法,你们中有人熟悉可以作为中间体的库吗?例如,使用XXX工具解析Ada并将AST存储在模式(例如XML)中,然后使用Java解析XML?

最佳答案

我是 Libadalang 开发人员之一,我们确实计划在某个时候添加 Java 绑定(bind),但目前这不是一个高优先级项目。

拥有一个通用格式的序列化器是很容易添加的,特别是对于 python API,如果你对树有充分的内省(introspection)。

这是 Libadalang 的 python API 的 JSON 序列化器:

import json

def node_to_data(self):
if isinstance(self, ASTList):
return [i.to_data() for i in self if i is not None]
else:
return {n: v.to_data()
for n, v in self.iter_fields(with_properties=False)
if v is not None}

def token_to_data(self):
return {"kind": "Token", "token_kind": self.kind, "text": self.text}

ASTNode.to_data = node_to_data
Token.to_data = token_to_data
ASTNode.to_json = lambda self: json.dumps(self.to_data())

我很快就会将其添加到 Libadalang 的开发版本中!

关于java - 有没有用 Java 编写的 ADA 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400584/

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