Göm menyn

TDDI02 Programmeringsprojekt

Projektförslag: Minispråksinterpretator


Projektförslag: Minispråksinterpretator

Gör en interpretator för ett enkelt programmeringsspråk!

Exempel på hur ett program i språket skulle kunna se ut:

    # Program för inköpsanalys
    PRINT "Hur många varor vill du köpa?"
    INPUT N
    PRINT "Vad kostar varje vara?"
    INPUT A
    LET K = N * A
    PRINT "Hur mycket pengar har du?"
    INPUT T
    IF K > T THEN
        PRINT "Du har inte råd!"
        LET B = T / A
        PRINT "Du har bara råd att köpa"
        PRINT B
        PRINT "varor."
    ELSE
        PRINT "Du kan köpa varorna."
    ENDIF
Programspråket i exemplet ovan klarar alltså av att hantera in- och utmatning av heltal (och kanske också tal med decimaler?) med kommandona INPUT och PRINT, att hantera (heltals-)variabler och att beräkna enkla (heltals-)uttryck. Det kan skriva ut textsträngar, och det har en valmekanism (IF-ELSE-ENDIF). Dessutom ingår kommentarsrader.

Ett annat, lite mer avancerat programspråk skulle kunna klara exempelvis detta program:

    // Program för inköpsanalys
    write "Hur många varor vill du köpa?" + EOLN
    read antal_varor
    write "Vad kostar varje vara?" + EOLN
    read styckepris
    write "Hur mycket pengar har du?" + EOLN
    read tillgångar  // Hur mycket pengar man har
    if (antal_varor * styckepris) > tillgångar then
        write "Du har inte råd! Du kan bara köpa " +
              (tillgångar / styckepris) +
              " stycken varor." + EOLN
    else // Om pengarna räckte
        write "Du kan köpa varorna." + EOLN
    endif
Programspråket i det andra exemplet klarar alltså mer komplicerade uttryck, och det kan tydligen beräkna uttryck med textsträngar också. Kommentarmekanismen är också mer avancerad, med kommentarer som kan börja mitt på en programrad.

Din interpretator läser lämpligen programkoden från en fil, översätter den till någon lämplig datastruktur, och exekverar sedan denna! Du behöver nog också någon form av intern tabell över alla variabler och deras värden, och så måste du ju skriva kod i C eller C++ för allt som ska hända när programmet körs, t. ex. in- och utmatningsfunktionerna.

Ett annat trevligt alternativ vore att ha en interaktiv miljö, med ett grafiskt gränssnitt, kanske så här:

En bild på ett grafiskt gränssnitt Nej, knapparna fungerar inte!


Thomas Padron-McCarthy, 20 september 1998.

Sidansvarig: Klas Arvidsson
Senast uppdaterad: 2012-08-23