Witam, zaczynam pisać (któryś raz z kolei) język skryptowy. Wcześniej pisałem coś w stylu
string c;
plik >> c;
if( c == "jakas komenda" )
{
}
Teraz zabrałem się za to inaczej. Najpierw napisałem parę przydatnych funkcji np. taką która usuwa niepotrzebne spacje lub tabulatory np. z takiego kodu:
int x = a * b*(c +3);
Otrzymam taki:
int x=a*b*(c+3);
Funkcja dzięki której otrzymuje poszczególne tokeny czyli w tym przypadku po kolei:
"int", "x", "=", "a", "*", "b", "*", "(", "c", "+", "3", ")", ";"
Zastanawiam się teraz jak zorganizować zasoby parsera czyli jakby wirtualne zmienne. Chciałbym żeby zmienna mogła zmieniać typ tak jak w php. Teraz kluczowe pytania
1) Jak zorganizować zmienne dla parsera (uwzględniając zasięg zmiennych w poszczególnych blokach)
2) Jaki dostęp do wirtualnych zmiennych dać użytkownikowi - każdej lokalnej zmiennej czy co? Biorę funkcje, każdemu argumentowi przyporządkowuje "prawdziwą" zmienną i po wykonaniu przypisuje jej wartość czy co?
3) W jaki sposób zorganizować bloki kodu - jakoś sobie tego nie wyobrażam
Przykładowo dla takiej funkcji parsera
function BezpieczneDzielenie(var x, var y)
{
var jakasZmienna = 0;
if(y != 0)
{
var jakasZmienna2 = 1;
return x / y;
}
else
{
return 0;
}
}
Jak zaprogramowac to ze gdy parser "wyjdzie" z bloku
if to już nie będzie zmiennej jakasZmienna2? Po prostu usuwać te zmienne jak wychodze z jej bloku czy czekać do zakończenia wykonywania skryptu. I wreszcie jak zrobić klasy?