Prosiłbym o jakieś ogólne porady jak napisać szybko działający interpreter. Tworzę bowiem pewien język skryptowy na swoje potrzeby (gra) i chciałbym się dowiedzieć jak ten problem ugryźć. Nie chcę stosować istniejących rozwiązań typu lua, python, itd. gdyż chcę aby język który zastosuję był skrojony namoje potrzeby.
Parsowanie komand jest najłatwiejsze, wystarczy rozbić linię na poszczególne części składowe jak nazwa procedury, parametry, itd. Większy problem stanowi dla mnie właściwa interpretacja, tzn. można zrobić tablicę zawierającą wszystkie możliwe komendy a potem loopować się przez nią forem, ale takie rozwiązanie nie będzie zbyt szybkie, a jak mówiłem ja chcę tego użyć do oskryptowania gry (by w rekompilować dopiero w ostateczności gdy będzie jakiś bug w interpreterze, a tak to tylko zmieniać skrypty gry), więc powinno być szybkie.
Co do parsowania jeszcze to może też być problem z usuwaniem komentarzy. Tzn jak komentarze są w osobnej linii to problemu nie będzie, gorzej jeśli znajdzie się w linii z komendą (komentarze w moim języku zaczynają się od znaku #). Jeszcze będzie problem jeśli chodzi o wielowyrazowe stringi gdyż przykładowe wywołanie będzie wyglądać tak:
procedura parametr1 parametr2 parametr3
czyli delimiterem będzie spacja. Oczywiście do stringów będzie używany cudzysłów, jednak jak zrobić, aby parser sparsował to właściwie, czyli zamiast takiej tablicy:
procedura
123
abcdegf
"To
jest
string"
dostać coś takiego:
procedura
123
abcdegf
"To jest string"
?
Pomożecie mi z tym?