ASIS中一个元素的子元素列表(Ada语义接口规范)

List of Child Elements of a Element in ASIS(Ada Semantics interface Specification)

我正在使用 ASIS(Ada 语义接口规范)实现一个简单的工具。 我在给定 Elements.for 示例中列出子元素时遇到问题,我将赋值语句作为 C := A + B; 我能够从上面的赋值语句中获取代表 "A + B" 的元素(表达式),但需要从上面的表达式中分别提取 A、B 元素。 ASIS 中执行相同操作的查询是什么。我试过 "Traverse_element" 但没能成功。

A + B是一个函数调用,所以你必须提取函数调用的实际参数使用:

declare
   use ASIS.Expressions;
begin
   for Parameter_Association of Function_Call_Parameters (Expression => Element,
                                                          Normalized => True) loop
     declare
        Formal : constant Asis.Element := Formal_Parameter (Parameter_Association);
        Actual : constant Asis.Element := Actual_Parameter (Parameter_Association);
     begin
        ...
     end;
   end loop;
end;