Visa version
Visa
< föregående
|
nästa >
Jämför
< föregående
|
nästa >
Laboration 9
I denna labb ska du
- Skriva ett program som läser in molekylformler och kontrollerar om dom är syntaktiskt korrekta, med hjälp av rekursiv medåkning.
Förberedelser
- Läs instruktionerna för problemet formelkoll.
- Skriv ett testprogram med unittest för den första omgången med testdata (Sample Input 1/Sample Output 1).
- Skriv ett testprogram för den andra omgången med testdata (Sample Input 2/Sample Output 2).
Formelkoll
Ditt program ska läsa formeln tecken för tecken och med rekursiv medåkning kolla syntaxen. Rekursiv medåkning innebär att huvudprogrammet först gör anropet readformel(), varefter readformel() anropar readmol() som anropar readgroup() och sedan eventuellt sej själv (men inte om inmatningen är slut eller om den just kommit tillbaka från ett parentesuttryck).
Funktionen readgroup() anropar antingen readatom() eller läser en parentes och anropar readmol() etc - allt enligt grammatiken. När ett syntaxbrott upptäcks genereras en exception (raise Syntaxfel("Saknad högerparentes")) som fångas i huvudprogrammet och där skrivs hela resten av indataraden ut.
Man måste ofta tjuvtitta på nästa tecken i kön (med peek()) för att veta vilken gren man ska följa i syntaxträdet.
Redovisning
Labben lämnas in på kurswebbsidan (se Inlämningsuppgifter i vänstermenyn) och redovisas muntligt av bägge gruppmedlemmarna.
Vid redovisningen ska du kunna
- Beskriva hur rekursiv medåkning fungerar.
- Visa hur dina funktioner speglar den givna syntaxen.
- Förklara varför man inte måste räkna antalet parenteser.
Betyg
Denna labb kan endast ge betyg E. Du måste lämna in den och redovisa den i tid för att få göra labbarna för högre betyg i nästa period.