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;
我正在使用 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;