Labb 8: En enkel syntax
- Inlämningsdatum 3 nov 2023 av 18:00
- Poäng 10
- Lämnar in en filuppladdning
Mål | Läs |
|
Föreläsning 12: Syntax, rekursiv medåkning, testning |
Molekyler
En enkel molekyl kan beskrivas med ett atomnamn, eventuellt följt av antalet atomer, till exempel Xe, H2 eller Cr12.
Du ska skriva ett program som kontrollerar om en inmatad molekyl följer denna syntax:
<molekyl> ::= <atom> | <atom><num>
<atom> ::= <LETTER> | <LETTER><letter>
<LETTER>::= A | B | C | ... | Z <letter>::= a | b | c | ... | z <num> ::= 2 | 3 | 4 | ...
För varje inmatad rad ska programmet skriva ut ett omdöme, antingen "Formeln är syntaktiskt korrekt" eller någon av felutskrifterna "Saknad stor bokstav vid radslutet" och "För litet tal vid radslutet" följt av en utskrift av den del av inmatningen som är kvar efter det tecken där felet påträffades.
Du kan förutsätta att inmatningen liknar de korrekta och felaktiga exemplen i tabellen nedan.
Du behöver inte
- undersöka om det kommer flera atomer, t ex H2O eller CO2 (det kommer i nästa labb),
- kontrollera att bokstäverna bildar ett verkligt atomnamn (det kommer också i nästa labb),
- undersöka om molekylen är rimlig kemiskt sett,
- kontrollera att raden verkligen tar slut efter molekylen.
Korrekta indata | Utskrift | ||||||
H2 | Formeln är syntaktiskt korrekt | ||||||
P21 | Formeln är syntaktiskt korrekt | ||||||
Ag3 | Formeln är syntaktiskt korrekt | ||||||
Fe12 | Formeln är syntaktiskt korrekt | ||||||
Xx5 | Formeln är syntaktiskt korrekt | ||||||
H10100 | Formeln är syntaktiskt korrekt |
Felaktiga indata | Utskrift |
a | Saknad stor bokstav vid radslutet a |
cr12 | Saknad stor bokstav vid radslutet cr12 |
8 | Saknad stor bokstav vid radslutet 8 |
Cr0 | För litet tal vid radslutet |
Pb1 | För litet tal vid radslutet |
H01011 | För litet tal vid radslutet 1011 |
K01 | För litet tal vid radslutet 1 |
- Skriv funktionshuvud för fem funktioner, en för varje regel i syntaxen ovan. Funktionskroppen ska fyllas i senare, i punkt 5.
- Gör en kopia av din LinkedQueue från labb 2, och lägg till metoden peek() som tittar på nästa värde i kön utan att plocka ut det.
- Gör ett eget särfall Syntaxfel som är subklass till (ärver från) Exception.
- Skriv ett testprogram med unittest som ska kontrollera att dina funktioner fungerar som avsett. Se exempel från syntaxföreläsningen. T ex kan ett test vara att kön innehåller en syntaktiskt korrekt molekyl, som A -> a -> 5 (OBS! De fem funktionerna ska skrivas i nästa punkt.)
- Lägg till kod i de fem funktionerna som kontrollerar syntaxen. Om en funktion upptäcker ett fel, tex Saknad stor bokstav eller För litet tal vid radslutet ska den göra raise Syntaxfel(felmeddelande). Om allt gått bra gör funktionen inget.
- Provkör med ditt testprogram.
- Gå till Kattis Links to an external site.och se till att ditt program klarar alla testfall!
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 period 2.
Redovisning
Labben (syntaxprogrammet och unittest) lämnas in individuellt med "Lämna in uppgift"-knappen högst upp på sidan, och ska redovisas muntligt av bägge gruppmedlemmarna. Skriv gruppmedlemmarnas namn i kommentarsfältet!
Vid redovisningen ska du kunna
- Visa hur unittest används för testning av dina funktioner
- Förklara hur ditt program avspeglar den givna syntaxen.
- Visa att ditt program klarar alla testfallen i Kattis.