ProgrammeerTalen

Cecil

Cecil is een taal ontworpen door Craig Chambers en de Cecil Group aan de univ van Washington.

object Food;
var field stock(@Food) := 1;

object pizza isa Food;
object Toon;

field strength(@toon) := 10;

predicate out_of_stock_food isa Food when(Food.stock <= 0);
predicate in_stock_food isa Food when(Food.stock > 0);

divide Food into in_stock_food, out_of_stock_food;

method eats(toon@Toon,food_stock@out_of_stock_food) {
     _print_line"Out of food! Getting new supplies!";
     toon _getmorefood food_stock;
     eats(toon,food_stock);
}

method eats(toon@Toon,food_stock@in_stock_food) {
     "YammiYammi, eating the good stuff, a ".print;
     foodstock.print_line;
     foodstock.stock := _-(foodstock.stock,1);
}

method getmorefood(toon@Toon, foodstock@Food) {
     foodstock.stock := _+(foodstock.stock, toon.strength);
     print_line("Refilled stock!");
}

method hungryfor(toon@Toon, food@Food) {
     toon _eats food;
     hungryfor(toon, food);
}

hungryfor(Toon,pizza);

Een handige paper kan hier gevonden worden. Hij bevat de taalspecificaties voor v3.2.

99 Bottles Of Beer

Installation Notes (Linux, Tricky Tricky!)

Let op! De interpreter/compiler zijn gc doet een beetje raar. Dit kan omzeilt worden door:

  • De optie -noGC mee tegeven bij het opstarten (let wel... dan heb je dus wel noGC :))
  • Raar maar waar: de executable op een schijf te zetten die genfsmount wordt, en van die nfsmount booten. (bvb in uw home op wendy (de wilma-imports, en zaal-homes) en dan runnen op wilma)
    • Quote: "NFS, the filesystem of the future for the language of the future" reynaert

In geval van nfs-installate:

  • Zet de files van vortex in een directory, bvb /cecil.
  • zet de files van de interpreter in een directory in /cecil (bvb /cecil/Cecil)
    • niet zeker of deze stap nodig is, nog niet hertest zonder de stap
  • voeg de nfs-modules toe aan de kernel, indien ze nog niet toegevoegd zijn
  • open /etc/exports en voeg devolgende lijn toe: /cecil <ip>(rw,async,all_squash,anonuid=<userid>,anongid=<gid>)
    • <ip> vervangen door ip-adres van eigen pc, <userid> en <gid> door eigen ids die je kan opvragen door in een shell "id" te typen.
  • Start, of herstart de nfs-daemon. (voor gentoo: "/etc/init.d/nfs (re)start")
  • maak een dir aan in je home (stel /home/tverwaes/cecil).
  • mount nu de eigen geexporteerde schijf naar de juist aangemaakte map door "mount <ip>:/cecil cecil" uit te voeren.

Verder voor eender welke installatie:

  • ga in je cecil/bin/shell-map (voor nfs-mensen in de nfs-mounted map in je home)
  • voer hier SETUP uit door "./SETUP" te typen.
  • open dan vortex.bashrc met je favoriete editor en verander de lijn export VORTEX_BASELINE=.. door export VORTEX_BASELINE=/home/tverwaes/cecil (je cecil-root)
  • open ~/.bash_profile en/of ~/.bashrc en voeg de lijn "source <cecil-root>/bin/shell/vortex.bashrc" toe.
  • Herstart je terminal of doe "source ~/.bashrc"
  • Start nu de compiler door "vortex" in je shell te typen.

Een programma maken (let op, doe dit niet voor SETUP klaar is, of je kan herbeginnen):

  • in je vortex-compiler, voer je "make <filename-with.cecil>" uit
  • Je binary zou nu in de directory "gen" moeten zitten, als alles goed gegaan is.