16/2/2010
Idag började vi göra uppgift 2 där man ska göra om dice roller klassen till ett eget “språk”.
Vi fick ett problem där det inte fungerar att använda flera i regeln, det funkar om man använder en som men ej om man använder ett “or” ,”and” eller “not”.
Vi misstänker att vårt reguljära uttryck för “var” ställer till det för oss. “/[a-zA-Z_][\w]*/”
T.ex:
(set a true) -Fungerar! = true
(and a false) -Fungerar! = false
(set b false)
(and a b) -Fungerar inte!
Vi löste detta genom att skapa en hashtabell där vi lägger variabelns namn och värde som vi sedan hämtar ut värdet av i och returnerar för att få ett “true/false” istället för variabelns namn. Problemet innan var att variabenl inte sparades undan när vi skrev “a = b”, det värdet försvann när vi gick vidare till nästa “do/end” sats.
Vi märkte även att man inte kunde skriva hashtabellsvariabeln som medlemsvariabel utan den var tvungen att vara lokal annars fick vi felmeddelanden.
17/2/2010
Idag har vi kämpat med uppgift 1 om databaser och DSL. Vi är inte säkra på att vi ens har löst uppgiften på rätt sätt, men vi har lagt ner mycket tid på att få körexemplet att fungera. Vi kom heller inte på något bra sätt att enhetstesta programmet eftersom vi har byggt upp det så att man behöver “user input”. Ett alternativ skulle ju vara att skriva om koden men det hinner vi tyvärr inte idag.
Allt som allt så var uppgiften väldigt svår att förstå, eftersom vi fortfarande inte är säkra på om vi har gjort rätt. Det var mycket information att ta in och läsa om (referenser på hemsidan), och även med den informationen så var instruktionerna svårtolkade.
Vi har till slut en lösning som låter användaren skapa en klass med ett antal attributer. Kortfattat så tolkar Ruby strängar som vi skapar, för att definiera användarens klass enligt “mofo” syntax. Man kan sedan instansiera sin definierade klass och sätta värden på dessa attributer, precis som körexemplet på kurshemsidan. Däremot så vet vi inte vad vi ska göra med den så kallade databasen, eftersom det står att man inte måste kunna varken “hitta” eller “ta bort” objekt ifrån den.