Ada相当于Python的dir()方法

时间:2018-06-08 15:10:07

标签: xml ada

有没有办法在Ada中查看某个类型的属性?到目前为止我还没找到任何东西。我希望能够将一个类型传递给具有一些相应XML的泛型函数,并将其解析为另一个,而无需为每个记录编写一个定制函数。显然,我需要告诉解析器如何做基本类型,但我希望自动处理复合材料。 Python的dir()方法似乎是我在Python中使用的东西,如果我从头开始这样做,那么是否有更好的方法完全执行此操作,或者是否有相当于{{dir() 1}}在Ada?

2 个答案:

答案 0 :(得分:2)

Ada没有元编程设施,也没有反射(这是在Java / C#中完成这些事情的方式)。由于类型系统主要仅在编译时存在,因此您无法在运行时查询大量信息,当然也不能查询所需的信息。你不能简单地用通用函数来做这件事。

最好的办法是从XML模式生成Ada代码,或者(如果Ada类型定义XML结构)使用ASIS或libadalang从Ada类型的AST生成解析代码。请注意,这是相当复杂的,除非您熟悉处理AST,否则我不会推荐它。如果可以编写XML模式,我宁愿使用该模式生成Ada类型和相应的加载代码。

答案 1 :(得分:1)

类型具有哪些属性取决于它的类型: