使用ASIS比较Ada中两个子类型的混合、最大值

使用ASIS比较Ada中两个子类型的混合、最大值,ada,asis,Ada,Asis,我想比较两个子类型的最小值和最大值。例如,在Ada语言中,可以在两个不同的子类型之间赋值 程序示例_1为 子类型类型_1是范围为0的整数。。10; 子类型类型_2是范围为0的整数。。30; A:类型_1:=0; B:类型_2:=12; 开始 A:=B; 结束示例1; 在运行时A:=B会给出范围溢出错误。在ASIS中,是否可以比较子类型、子类型(整数、实数、枚举类型)的最小/最大值,以便在运行时之前识别溢出问题?编译器在使用-gnatVa-gnat12编译时检测到此问题编译器在使用-gnatVa

我想比较两个子类型的最小值和最大值。例如,在Ada语言中,可以在两个不同的子类型之间赋值

程序示例_1为
子类型类型_1是范围为0的整数。。10;
子类型类型_2是范围为0的整数。。30;
A:类型_1:=0;
B:类型_2:=12;
开始
A:=B;
结束示例1;

在运行时
A:=B
会给出范围溢出错误。在ASIS中,是否可以比较子类型、子类型(整数、实数、枚举类型)的最小/最大值,以便在运行时之前识别溢出问题?

编译器在使用-gnatVa-gnat12编译时检测到此问题编译器在使用-gnatVa-gnat12编译时检测到此问题是,可以通过ASIS检查这一点


有关如何提取子类型的
'First
'Last
的信息,请参阅。

是的,可以使用ASIS进行检查


有关如何提取子类型的第一个和最后一个。

谢谢您的回答,先生。我在枚举类型的“sub_约束”调用中遇到异常。请让我知道如何克服这个问题。如果没有更多的背景,我无法帮助你解决这个问题。也许你应该写一个新的问题,展示你已经走了多远或者用其他上下文更新这个。谢谢你的回答,先生。我在枚举类型的“sub_约束”调用中遇到异常。请让我知道如何克服这个问题。如果没有更多的背景,我无法帮助你解决这个问题。也许你应该写一个新的问题,展示你已经走了多远或者只是用额外的上下文更新这个。