1

I am implementing a simple tool using ASIS(Ada Semantics interface Specifications). I am having problem with listing child elements in a given Elements.for example i am having assignment statement as C := A + B; i am able to get the element(expression) which represents "A + B", from the above assignment statement but need to extract A, B elements individually from the above expression. what is the query in ASIS for doing the same. i have tried "Traverse_element" but not able to succeed.

1 Answers1

3

A + B is a function call, so you have to extract the actual parameters of the function call using:

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;