Список дочерних элементов элемента в ASIS (спецификация интерфейса семантики Ada) - PullRequest
0 голосов
/ 11 июня 2018

Я внедряю простой инструмент с использованием ASIS (Спецификации интерфейса семантики Ada).У меня проблема с перечислением дочерних элементов в данном Elements. Например, у меня есть оператор присваивания, как C := A + B; Я могу получить элемент (выражение), который представляет «A + B», из приведенного выше оператора присваивания, но мне нужноИзвлечь элементы A, B индивидуально из вышеприведенного выражения.что такое запрос в ASIS для того же.я пробовал "Traverse_element", но не смог добиться успеха.

1 Ответ

0 голосов
/ 11 июня 2018

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;
...