Laatste nieuws

22 april

Er is een herkansingspraktikum beschikbaar via de praktikum site van IPT. Het heeft wat langer geduurd
dan aanvankelijk was beloofd waarvoor mijn excuses. Niettemin heb je nog wel even de tijd voor deze
opgave. Het is iets anders dan de vorige keer: dit keer hoef je niet te programmeren. Meer erover lees je
op deze pagina.

10 februari

Het praktikum is nu in zijn geheel nagekeken, maar ik heb nog geen tijd gehad het op het net te zetten. Morgen zal ik de uitslagen van het praktikum bekend maken en de regeling geven voor de mensen die het praktikum nog niet gehaald hebben. Het herkansingspraktikum zal geent zijn op de derde opgave zodat mensen die het net niet gehaald hebben, kunnen voortborduren op hun kennis omtrend deze derde opgave.

9 januari

In de directory /praktikum/ipt staat een projectfile die SL heet. Door ":l SL" in te tikken zal deze file geprobeerd worden te lezen. Dat wil je niet. Hernoem deze file of tik in ":l SL.hs" (Hugs zoekt de file in de current dir en probeert het pas daarna met de ".hs" extensie, vandaar.

Voor de mensen die het boek Computer Architecture op de kop getikt hebben: de hoofdstukken 1,7,8 en 10 leken mij de interessantste. Overigens blijft de stof behandeld op het college en werkcollege het uitgangspunt voor het tentamen. Succes met studeren.

6 januari

Er staat een berichtje op het news over de beloofde uitwerking van de derde opgave.

22 december

Voor belangstellenden heb ik nog wat interessante literatuur in de aanbieding: GRATIS. Bij het archiveren was er een aantal dictaten over van het vak Structuur van Programmeertalen. Het dictaat bevat o.a. het artikel van Turner maar ook andere aan ipt gerelateerde onderwerpen. Dus als je het leuk vindt?.... Wees er snel bij want ik heb er maar een beperkt aantal over.

17 december

Voor het werkcollege van vanmiddag is het volgende de bedoeling: In de eerste helft is er gelegenheid om vragen te stellen over alle onderdelen van de stof (zoals aangekondigd in de belangrijke data van dit vak). Daarna zullen we verhuizen naar de praktikumzalen om assistentie te krijgen bij het praktikum.

15 december

In de labels van het if-statement is een foutje ontdekt door Arthur. Het was mezelf nog niet opgevallen, maar verbeteren van dit mankementje staat wel zo aardig: Het if-statement heeft geen synthesized attribuut specificatie in de huidige AG; toevoegen van "lab = elsepart_lab;" levert
'interessantere 'labels in je gegenereerde code.

10 december

Bij het submitten schijnt het een en ander niet te werken. De juiste manier van submitten is:
submit ipt 2 * in de directory waar de boel staat. Gelieve dit nogmaals te doen.

De opdracht voor de derde opgave is het afmaken van de 2e opgave. De 2e opgave zoals die nu is
ingeleverd wordt apart beoordeeld en meegenomen procentueel (20%) in het eindcijfer van het praktikum. Morgen is er een vragenuur ingelast van 15-17 uur (C006). Hier kun je vragen stellen over het praktikum om de voetangels eruit te halen. Ik zal morgen een zaal bekend maken waar dat gebeurt.

De 'derde opgave'moet dan om 14 uur op vrijdag de 19e zijn gesubmit.

In de kerstvakantie zullen we programmeren om een voorbeeldoplossing in elkaar te schroeven die tevens dan stof is voor het tentamen!

1 december

De datum voor het inleveren van de 2e opgave van IPT is op veler verzoek verschoven naar dinsdag de 9e december. Ik zal binnenkort iets over opgave 3 op het net zetten zodat degenen die klaar zijn met opgave 2 alvast kunnen beginnen aan opgave 3.

Kijk voor het inleveren van de 2e opgave nog eens naar de pagina daarover!

27 november

De uitslag van de midesemestertest.

13 november

De inleverdatum voor de 2e opgave heb ik opgeschort: ik houd als inleverdatum de 28e november aan; maar gezien de mogelijke software project perikelen op die dag, mag je het ook uiterlijk dinsdag de 2e dec. inleveren. Dus de looptijd voor de derde opave begint op de 1e december.
De derde opgave zal de 19e moeten worden ingeleverd.

11 november

Een specificatie van de tweede opgave kun je vinden op de praktikum site van ipt:
....../ipt/1997/praktikum/.

10 november

De benodigde files kun je vanaf heden vinden op /praktikum/ipt.

22 oktober

Er zijn opgaven beschikbaar voor het werkcollege/vragenuur van vandaag.

17 oktober

-Voor de midsemester test van volgende week kun je de stof behandeld op college min of meer nalezen in de volgende hst'en uit het boek: Hst 1, Hst2, Hst 6- Hst 9.3.
-Het komende werkcollege/vragenuur is er de gelegenheid tot het stellen van vragen en het maken van sommen die vlak voor het werkcollege worden bekendgemaakt. (Waarchijnlijk uit het boek).
-Deze mensen hebben een praktikum ingeleverd. Als jouw naam er ten onrechte niet tussen zou staan, neem dan zo spoedig mogelijk contact (uiterlijk voor dinsdag) op met mij.

15 oktober

Ik heb wat extra informatie verschaft over hoe operatoren te herkennen. Dit is al vast voor volgende week, maar voor diegenen die vast zitten is het wellicht toch leuk te zien waar ze welicht niet verder kunnen en hoe dit aan te pakken.

14 oktober

Als je morgen nog niet helemaal klaar bent: vreest niet: lever gewoon in wat je hebt. De maatstaaf is het kunnen parsen van de operator-definities. De week na de midsemestertesten, zal het complete programma gevraagd worden (zie ook hierboven)

13 oktober

In antwoord op een aantal vragen hoe het resultaat van het herkennen van de operatoren te gebruiken bij het herkennen van de expressies heb ik enige toelichting geschreven.

13 oktober

Komende woensdag na het werkcollege zal er nog een extra assistentie gelegenheid zijn. En wel tussen 3 en 5 's middags.

13 oktober

Om jullie de gelegenheid te geven om evt nieuw verkregen inzichten op het komende werkcollege te verwerken in het praktikum, zal de uiterste inleverdatum donderdag om 9 uur 's ochtends zijn. Mocht je nog niet klaar zijn, lever dan in ieder geval in wat je hebt!!! De beoordeling hangt tenslotte van meer factoren af dan alleen een goed programma (en de eerste opgave).

10 oktober

Er is een submit commando beschikbaar voor het inleveren van de eerste opgave. Denk ook aan
de toelichting die je mee moet sturen (dat je daar niet woensdag achter komt). Hoe te submitten kun je vinden op de praktikumpagina voor de eerste opgave.

7 oktober

Voor degenen die dat nog niet vernomen hebben: de praktikum submit datum is een week verschoven naar de 15e oktober. (Er bleken mensen te zijn die dat nog niet wisten.) Inmiddels heb ik het overeenkomstig in de planning aangepast. Houd er rekening mee dat de overige data ook nog wel eens zouden kunnen schuiven hierdoor. Het submit commando zal ik morgen of anders in de loop van de week op news en www bekend maken.

1 oktober

Het blijkt dat nog steeds veel mensen problemen hebben met het functioneel programmeren. dat zal wel niet 123 over gaan, maar toch is het misschien handig eens hier te kijken voor achtergrondinformatie.

1 oktober

Er zijn (voorlopige) aantekeningen voor College2 verschenen.

30 september

Er zijn een tweetal extra praktikum begeleidingsuren ingelast op de vrijdagochtend van 9 tot 11 in de praktikumzalen 022 en 026. Een of twee assistenten zullen je daar assisteren.

25 september

Ik heb de file Print.hs aangepast zodat je niet telkens in je Sem.hs file achter elk datatype hoeft te tikken "deriving Show". Als je niet telkens dit wilt intikken, kun je nu de nieuwe printfile van /praktikum/ipt plukken. Succes ermee!

In de directory /praktikum/ipt kun je nu de files voor de mains en de nieuwe library van parser combinators ophalen die een kleine wijziging hebben ondergaan om het leven makkelijker te maken voor deel 4 van de praktikum opgave. In de main is de variabele "rest" de rest van de invoer na de parsing. Nu kun je dus een gedeelte van de invoer (komend uit de scanner) parsen en daarna nogmaals parsen maar dan met de overgebleven input (uit de scanner).

Documentatie over de taal Haskell kun je vinden op de homepage van haskell.

23 september

Er is gevraagd: Hoe moet Slparser_not_complete.hs getest worden?

Antwoord: Verander de files die iets als non_completed in hun naam hebben. Zorg ervoor dat de module naam in die file hetzelfde is als de filenaam (zonder de extensie), en start dan Hugs op. Het laden van het "hoofdprogramma" zal er dan voor zorgen dat alle benodigde modules opgezocht, gevonden en geladen worden. Voor een voorbeeldsessie zie hieronder.

      ___    ___   ___    ___   __________   __________                        
     /  /   /  /  /  /   /  /  /  _______/  /  _______/       Hugs 1.4         
    /  /___/  /  /  /   /  /  /  / _____   /  /______                          
   /  ____   /  /  /   /  /  /  / /_   /  /______   /  The Nottingham and Yale
  /  /   /  /  /  /___/  /  /  /___/  /  _______/  /    Haskell User's System 
 /__/   /__/  /_________/  /_________/  /_________/         Version 970410
 
   Copyright (c) The University of Nottingham and Yale University, 1994-1997.
    Bug reports: hugs-bugs@haskell.org.   Web: http://www.haskell.org/hugs.
 
Reading file ":lib:Prelude.hs":
 
Hugs session for:
:lib:Prelude.hs
Type :? for help
Prelude> :l Slmain.hs
Reading file "Slmain.hs":
Reading file ":lib:hugs:Pretty.lhs":
Reading file "Scanner_lib.hs":
Reading file "Slparser.hs":
Reading file "Sem.hs":
Reading file "Parse_comb_lib.hs":
Reading file "List.hs":
Reading file ":lib:Maybe.hs":
Reading file "List.hs":
Reading file "Parse_comb_lib.hs":
Reading file "Slparser.hs":
Reading file "Slmain.hs":
 
Hugs session for:
:lib:Prelude.hs
:lib:hugs:Pretty.lhs
Scanner_lib.hs
Sem.hs
:lib:Maybe.hs
List.hs
Parse_comb_lib.hs
Slparser.hs
Slmain.hs
Slmain> main
Mini Compiler, SD Swierstra, Version 0.1 
Type input <filename>.sl :test
test
test.code generated
Slmain> 
 
22 september
In de Scanner_lib.hs stond in de toevoeging die ik er vast voor jullie in had gezet (het herkennen van integers) nog een klein foutje: er werd als resultaat van het token een verkeerd tokentype opgeleverd. Dus even de nieuwe versie ophalen voorzover je dat nog niet had gedaan.

18 september

Om iedereen aan het werk te krijgen zijn er ingangseisen gesteld voor het volgende werkcollege. Kijk hier voor verder informatie.

17 September

In de directory /praktikum/ipt staat de laatste versie van de semantiek generator, voortaan maar als SemGen aan te duiden. Er is een kleine gebruiksaanwijzing toegevoegd.

13 September

Er zijn een paar kleine uitbreidingen aan SenGen toegevoegd teneinde je het leven wat makkelijker te maken:

DATA   Expr = ConInt   i   :Int
            | ConBool  b   :Bool
            | Apply    f   :Expr    arg     :Expr
 
--------------------------------------------- 
-- The Basic Stack machine
---------------------------------------------
DATA Code = Loadint  i:Int
          | Loadbool b:Bool
          | Call
 
OUT [Expr] code
 
FOR Expr.ConInt  USE { code = "[Loadint i]"}
FOR Expr.ConBool USE { code = "[Loadbool b]"}
FOR Expr.Apply   USE { code = "arg_code ++ f_code ++ [Call]"}
 
--------------------------------------------- 
-- Addition of Conditional Expressions
---------------------------------------------
EXTEND Expr   = If cond:Expr thenpart:Expr elsepart:Expr
 
EXTEND Code   = Brfalse   label:Int
              | Bralways  label:Int
              | Label     label:Int
              
INOUT  [Expr]  lab
 
-- First provide the attribute computations for this alternative
 
FOR Expr.If  USE
 { lab@cond     = "(lab+2)"
 ; lab@thenpart = "cond_lab"
 ; lab@elsepart = "thenpart_lab"
 ; lab          = "elsepart_lab"
 ; code         = "cond_code ++ [Brfalse lab]++thenpart_code++[Bralways (lab+1),  Label lab]++elsepart_code++[Label (lab+1)]"
 }
        
-- and then add the definitions for the new attributes
-- to the previous alternatives
 
FOR Expr.Apply USE
        { lab@arg = "f_lab"
        ; lab     = "arg_lab"
        }
 
--------------------------------------------- 
-- Addition of Declarations and Lexical Levels
---------------------------------------------
DATA   Decl = Nulldecl
            | Dec  name:String e:Expr decs:Decl
            
EXTEND Expr = Var s:String
            | Where body:Expr locals:Decl
 
-- first get the label counters correct
 
FOR Decl.Dec USE
  { lab@e    = "decs_lab"
  ; lab      = "e_lab"
  }
 
-- and now add the environment passing and level computation
 
IN [Expr]  env,level
INOUT [Decl] env, lab
IN  [Decl] level
OUT [Decl] count, code
 
 
FOR Expr.Where USE
      { level@body   = "(level+1)"
 
.... etc. .....