A Cecil programozási nyelv

A specializáció

A specializáció

A formális paraméterekre adott specializáció az aktuális paraméterként adható reprezentáló objektumra ad megkötést (azzal egyenlő, vagy annak leszármazottja lehet). Ez a fogalom különbözik a típus fogalmától. A típusdeklarációkban azt követeljük meg, hogy bizonyos operációkat támogasson az adott objektum, de nem teszünk megkötéseket arra vonatkozóan, hogy azok az operációk hogyan vannak megvalósítva. A nem specializált argumentumokat az any előre definiált objektumra specializáltként kezeli (ez minden más objektumnak az őse).

A metódus törzsének szintaxisa:

body ::= {stmt} result
  | empty      return void
result ::= normal_return      return an expression
  | non_local_rtn      return from the lexically- enclosing method
normal_return ::= decl_block [“;”]      return void
  | assignment [“;”]      return void
  | expr [“;”]      return result of expression
non_local_rtn ::= “^” [“;”]      do a non-local return, returning void
  | “^” expr [“;”]      do a non-local return, returning a result