Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Własny "język" programowania
Forum PHP.pl > Inne > Hydepark
Fifi209
Witam!

Zastanawiałem się zawsze, ludzie wymyślają "swoje" języki programowania, piszą kompilatory/parsery/interpretatory.

Interesuje mnie bardziej czy ktoś z Was pisał coś podobnego? Jeżeli tak to w jakim języku jest napisany kompilator/parser/interpretator ?

A temat powstał właściwie z nudów, zawsze chciałem napisać parser...
Wymyślić składnię języka nie jest trudno...
W jakim języku napisać parser? (nie musi być wydajny, parserem mógłby być nawet php [jak uważacie?])

Ponadto trzeba brać pod uwagę instrukcje warunkowe, zasięg zmiennych etc.
Spawnm
Parsery pewnie są pisane w c/c++ zależy czy chodzi ci o języki takie jak php , perl czy c++,pascal jeśli o to 2gie to nie wiem tongue.gif
wookieb
Obojętnie w czym napiszesz. C++ jest do celu raczej bardzo dobry.
Widziałeś może książkę "Hacking sztuka penetracji"? Tam autor pokazuje np jak kod napisany w c++ staje się kodem w assemblerze. To wiele by cię nauczyło. Zasięg zmiennych, instrukcje warunkowe, obsługa tekstu to nie są tak bardzo proste rzeczy z poziomu Assemblera. A o klasach nie wspomnę.
Fifi209
Cytat(wookieb @ 12.08.2009, 17:55:58 ) *
Obojętnie w czym napiszesz. C++ jest do celu raczej bardzo dobry.

Miałem mało styczności z C++ ale nigdy nie wydawał mi się zbyt "przyjazny".
W php pisanie parsera chyba byłoby prostsze pod względem przeszukiwania tekstu...
np. szukanie kodu funkcji to jedno wyrażenie regularne i potem obrobienie tego co jest w środku to kilka innych wyrażeń.
Właściwie wszystko można oprzeć o wyrażenia regularne.

Cytat(wookieb @ 12.08.2009, 17:55:58 ) *
Widziałeś może książkę "Hacking sztuka penetracji"? Tam autor pokazuje np jak kod napisany w c++ staje się kodem w assemblerze. To wiele by cię nauczyło. Zasięg zmiennych, instrukcje warunkowe, obsługa tekstu to nie są tak bardzo proste rzeczy z poziomu Assemblera. A o klasach nie wspomnę.

Nie widziałem, nie czytałem.
bhacas
Dla c/c++ są takie narzędzia jak flex i bison odpowiednio do analizy leksykalnej i składniowej. Generują one za Ciebie dużo kodu i są bardzo przydatne ale najtrudniejsza część to sporządzenie tablicy symboli (przechowuje wszystkie zmienne, parametry funkcji, tymczasowe zmienne przechowujące np wynik gdy w kodzie napiszesz sobie $i = 1 + 2 + 3).
Możesz przejrzeć sobie: http://neo.dmcs.pl/tk, to przedmiot który miałem w poprzednim semestrze, jeden z najcięższych (o ile nie najcięższy) na moim kierunku. Powodzenia życzę smile.gif
wookieb
Wbrew pozorom tak wiele nie dzieje się na wyrażeniach regularnych.
M4chu
Przyjrzyj się implementacji języków skryptowych np CPython, PyPy, JRuby, Rubinius - może pomóc.
dr_bonzo
http://www.antlr.org/ - w tym na zajeciach na polibudzie tworzylismy kompilatory i parsery (ma tez plugin do eclipsa) - nie jestem w tym dobry wiec wiecej ci nie powiem.
nospor
ja pisalem w .NET. Było to zaliczenie jakiegoś tam przedmiotu na studiach. Muszę powiedzieć iż było to ciekawe doświadczenie, nauczyło mnie paru ciekawych podejść do pewnych rzeczy.

Jeśli piszesz takie coś dla nauki, to na dobrą sprawę nie ważne w czym to będziesz pisał. Wydaje mi się, iż tutaj chodzi o poznanie pewnych mechanizmów, algorytmów. Znając to, jesteś w stanie napisać to w czymkolwiek. A przecież wszyscy wiemy, że na 99% nie wymyślimy nowego poważnego języka, więc naprawde nie ma co się martwić o jego wydajność winksmiley.jpg
marcio
Cytat
Właściwie wszystko można oprzeć o wyrażenia regularne.


I tak wlasnie tworzy sie wlasne jezyki skryptowe do oskryptowania gier np.

Wejdz na gamedev.pl tam masz obszerny watek na ten temat teraz nie chce mi sie szukac.

P.S nie dawno nawet jakis student na politechnice wroclawskiej chyba nawet stworzyl wlasny jezyk z calym IDE jak znajde jego site to ci podam mial tam chyba nawet zrodla duzo rzeczy opieralo sie o WinApi i pisal to chyba w czystym C jak dobrze pamietam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.