我是Ada语言的初学者,我想知道符号的含义。我在Kreuger软件重用论文中读到,Anna是一种描述Ada的注释语言。这是否被认为是对Ada代码的正式评论?
例如:
subtype EVEN is INTEGER;
--| where X : EVEN = ) X mod 2 = 0;
第二行是第一行的Anna注释,即Ada代码。 第二行只是一个注释,让用户理解第一行,或者它是一个约束,必须是"提到不只是一个可选的线?
我真的很困惑
答案 0 :(得分:3)
安娜古老,不要浪费你的时间。
有许多地方可以从Ada开始。其中包括Ada Wikibook,Ada信息交换中心(AdaIC)维持list of suggested resources。
如果您对适用于Ada的形式逻辑感兴趣,您将需要研究SPARK(“SPARK是一种编程语言,一组源代码分析(静态验证)工具,以及一种设计方法开发高保证软件。“)这是一个quick overview and tutorial,虽然你可能不想解决这个问题,直到你开始练习Ada练习。
您可能已经了解了GNAT编译器,但为了以防万一,GNAT GPL 2012是一个可用于Linux,Windows和其他一些平台的开源编译器。 (GNATPro可用于许多平台。)
祝你好运,在这里提问,其他资源包括comp.lang.ada和Ada sub-reddit。
答案 1 :(得分:3)
EVEN是整数,其约束为,嗯,均匀。所以第二行是一个约束。但是编译器不会检查它 - 而且据我所知,Anna工具集从来没有能够检查这些约束。
Anna很古老而且早已不复存在 - 但最近的Ada标准(Ada 2012)支持这样的注释(甚至可以由编译器检查)。因此,您的Ada / Anna表达可以在Ada 2012中编写为
子类型甚至是整数 with Dynamic_Predicate =>甚至mod 2 = 0;
这实际上是Ada 2012理由中的一个示例,请参阅Ada 2012。