Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Język skryptowy - Organizacja zasobów parsera i bloki kodu

Ostatnio zmodyfikowano 2014-12-31 23:53
Autor Wiadomość
RazzorFlame
Temat założony przez niniejszego użytkownika
[C++] Język skryptowy - Organizacja zasobów parsera i bloki kodu
» 2014-12-27 18:48:52
Witam, zaczynam pisać (któryś raz z kolei) język skryptowy. Wcześniej pisałem coś w stylu
C/C++
string c;
plik >> c;
if( c == "jakas komenda" )
{
    //zrob cos
}
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?
P-123382
darko202
» 2014-12-27 22:07:26
nie zajmowałem się tym nigdy ale z ciekawości znalazłem coś takiego

http://warsztat.gd/wiki/Własny+język+skryptowy%2C+część+1
http://warsztat.gd/wiki/Własny+język+skryptowy%2C+część+2
http://warsztat.gd/wiki/Własny+język+skryptowy%2C+część+3

może to odpowie na część postawionych przez Ciebie pytań
P-123392
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2014-12-27 22:35:20
Czytałem to ale jego "składnia" wygląda odpychająco, bardzo odpychająco. I szczerze mówiąc to nic ciekawego czego bym nie wiedział tam nie znalazłem, ale dzięki.
P-123396
darko202
» 2014-12-27 23:24:06
to jest ciekawy temat, ale jakoś nie rozumiem Twojego zadania
czy chodzi ci o coś podobnego do http://cpp0x.pl/artykuly/?id=46


P-123407
Parapet
» 2014-12-28 08:28:01
<sarkazm>Zrób wszystko na if lub w switchu.</sarkazm>
P-123417
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2014-12-28 12:25:08
W tym artykule co podałeś jest opisane jak napisać parser wyrażeń matematycznych ONP a to już potrafie. Interesuje mnie tylko to co napisalem w pytaniach.
P-123424
Parapet
» 2014-12-28 12:46:01
Poczytaj o działaniu kompilatorów oraz analizie kodu.
P-123427
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2014-12-28 15:07:00
To nie ma być język kompilowany tylko najzwyklejszy język skryptowy! Już nie wiem co Wam mam napisać żebyście wreszcie przestali podawać zbędne przykłady. Chodzi tylko o te trzy zagadnienia.
P-123445
« 1 » 2
  Strona 1 z 2 Następna strona