Sather Home Page

Section 6.3.1:
Routine Signatures

A routine is a language construct that encapsulates programmer-defined actions and control in a similar manner to the role played by routines, procedures and functions in many other programming languages. A routine signature therefore defines the forms and types of arguments and, if appropriate, a returned value type definition.

The only difference between routine and iter parameters is that a routine parameter may not be specified as once.

Concrete Syntax

abstract routine signature = identifier, [routine parameter pack], [return signature] ;
routine parameter pack = Left_Parenthesis_SY,
routine argument list, Right_Parenthesis_SY ;
routine argument list = routine argument, {Comma_Sy, routine argument} ;
routine argument = routine mode, identifier list, return signature ;
routine mode = [(Out_SY | Inout_SY)] ;

Abstract Syntax

The Feature abstract syntax which is common to all class components is given here with an invariant specifically for the case of a routine. Since this is a signature there is no implementation component and no value.

Feature ::
      name : token
      args : [ set of Feature ]
      kind : [ Type_Specifier 
      value : [ Expression ]
      impl : [ seq of Statement ]
      vis : [ Visibility ]
      ext_vis : Visibility
      uses : [ Method_Kind ] ;
   inv mk_Feature(-,-,-,val,impl,-,-,use) ==
      use = One_Shot
      and impl = nil
      and val = nil

Static Semantics

TO BE DONE

Dynamic Semantics

Having no implementation and no value - being only a signature (found in abstract classes or as a stub or type definition) there can be no run-time meaning.


Specification Index Language Index Examples Section 6 Index
Comments or enquiries should be made to Keith Hopper.
Page last modified: Thursday, 26 April 2001.
Produced with Amaya