an implementation of anna
Anna is a language extension of Ada to include facilities for formally specifying the intended behavior of Ada programs. It augments Ada with precise machine-processable annotations so that well established formal methods of specification and documentation can be applied to Ada programs.This paper describes an implementation of a subset of Anna. The implementation is a transformer that accepts as input an Anna parse tree and produces as output an equivalent Ada parse tree that contains the necessary executable runtime checks for the Anna specifications. An approach called the Checking Function Approach is used. This involves the generation of a function for each annotation and generating calls to these functions at appropriate places. The transformer has to take care of various details like hiding, overloading, nesting, etc.It is hoped that the transformer will eventually cover most of Ann and have various features like a good user interface, interaction with a symbolic debugger, and optimization of runtime checks for permanent inclusion.
implementation language extensibility behavior program precise annotation formal methods documentation paper input tree runtime functional generation place overload feature user interface interaction optimality inclusion