Om een interpreter te maken, moet je een broncode-parser, een bytecode-uitvoeringslus en een enorme hoeveelheid standaardbibliotheekcode schrijven. Het is niet altijd leuk en gemakkelijk als je niet de tools gebruikt die de compiler en parser voor je zullen genereren. Met hen zal het net zo eenvoudig zijn als het pellen van peren om een taaltolk te schrijven voor een deskundig persoon. Laten we eens kijken naar een voorbeeld van het schrijven van een tolk met JIT in PyPy.
instructies:
Stap 1
Kies een taal om te schrijven. In dit geval is het brainfuck. Het is heel eenvoudig en bestaat uit een band met gehele getallen, die worden geïnitialiseerd op nul, en 1 pointer naar de huidige cel in de band. Er zijn slechts acht opdrachten in de taal: ">" - verplaats de aanwijzer naar de volgende cel,"
Stap 2
Schrijf een tolk in gewone Python. De instructieteller zal verwijzingen naar de huidige instructie opslaan. De eerste expressie haalt het statement op, waarna verschillende statements bepalen hoe het moet worden uitgevoerd. Laat de implementatie van de operatoren "[" en "]" weg, omdat ze de commandoteller moeten veranderen in de positie van hetzelfde haakje.
Stap 3
Implementeer een Tape-klasse die een pointer opslaat naar het huidige nummer en een tape met gehele getallen. De tape groeit naar behoefte. Parseer de broncode van tevoren, zodat meerdere opmerkingen niet één byte tegelijk worden gelezen. Maak ook een haakjeswoordenboek, zodat u er indien nodig bijpassende haakjes in kunt vinden.
Stap 4
Voer def parse (programma) uit. Deze functie retourneert alleen tekenreeksen van opdrachten en het haakjeswoordenboek.
Stap 5
Zet alles bij elkaar en je hebt een werkende brainfuck tolk. Start de Python-interpreter en zorg ervoor dat deze werkt. Dit is slechts een enkel geval van het schrijven van een tolk in de eenvoudigste taal. Als je wilt, kun je in bijna elke taal schrijven, nadat je jezelf vertrouwd hebt gemaakt met de eigenschappen en het doel ervan.