注释Ada语言(安娜)

时间:2012-08-04 14:50:08

标签: ada

我是Ada语言的初学者,我想知道符号的含义。我在Kreuger软件重用论文中读到,Anna是一种描述Ada的注释语言。这是否被认为是对Ada代码的正式评论?

例如:

subtype EVEN is INTEGER;

--| where X : EVEN = ) X mod 2 = 0;

第二行是第一行的Anna注释,即Ada代码。 第二行只是一个注释,让用户理解第一行,或者它是一个约束,必须是"提到不只是一个可选的线?

我真的很困惑

2 个答案:

答案 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.adaAda sub-reddit

答案 1 :(得分:3)

  1. EVEN是整数,其约束为,嗯,均匀。所以第二行是一个约束。但是编译器不会检查它 - 而且据我所知,Anna工具集从来没有能够检查这些约束。

  2. Anna很古老而且早已不复存在 - 但最近的Ada标准(Ada 2012)支持这样的注释(甚至可以由编译器检查)。因此,您的Ada / Anna表达可以在Ada 2012中编写为

    子类型甚至是整数 with Dynamic_Predicate =>甚至mod 2 = 0;

  3. 这实际上是Ada 2012理由中的一个示例,请参阅Ada 2012