Kako kreirati sopstveni programski jezik

Baby Yoda

Contributor
Poruka
21.755
Čitao sam da je neophodno da napravim sopstveni program - kompajler koji bi celokupnu sintaksu mog jezika podvrgavao testu da li je ispravno uneto nešto ili ne i da takav izvorni kod pretvara u izvršilački fajl. Premda mene interesuje izrada web jezika, ne jezika koji stvara .exe aplikacije. Ima li neko nekih smernica šta sve treba da naučim u tu svrhu?
 
Čitao sam da je neophodno da napravim sopstveni program - kompajler koji bi celokupnu sintaksu mog jezika podvrgavao testu da li je ispravno uneto nešto ili ne i da takav izvorni kod pretvara u izvršilački fajl. Premda mene interesuje izrada web jezika, ne jezika koji stvara .exe aplikacije. Ima li neko nekih smernica šta sve treba da naučim u tu svrhu?
Naravno, ako ces da naucis WEB jezik, znaj da se on sastojik, ako je sajt statican, od HTML jezika, a ako se bavi "opasnim forama" tu jos ima i ASP, JavaScript ili VisualBasicScript itd.. ZNACI, treba da napravis program koji ce tvoj kod da prevodi u HTML kod, sto je vrlo lako, i koji ce, sto je teze, da ga prevodi u, recimo, JavaScript. Dovoljan ti je najprostiji programski jezik (Visual Basic, C#) za pravljenje tako necega.
 
Potrebno je da napises leksicki analizator (dakle dobro poznavanje regularnih izraza, konacnih automata, ...), a potom i parser (kontekstno slobodne gramatike, ...).
Ako neces izvrsni fajl, onda pises interpreter.

Ili ako hoces *.exe, pises kompajler, i pritom vrlo dobro moras da znas asembler, koji je zavisan od hardvera.
A tu je naravno i optimizacija koda, itd. Citava nauka je iza kompajlera.

Izlaz iz kompajlera ne mora cak ni *.exe da bude, moze da bude i nesto poput objektnog koda koji se dobija u javi, pa se posle interpretira od strane JVM.

Jednostavan interpeter mozes da napises koristeci C/C++, LEX i YACC.
 
Poslednja izmena:
Čitao sam da je neophodno da napravim sopstveni program - kompajler koji bi celokupnu sintaksu mog jezika podvrgavao testu da li je ispravno uneto nešto ili ne i da takav izvorni kod pretvara u izvršilački fajl. Premda mene interesuje izrada web jezika, ne jezika koji stvara .exe aplikacije. Ima li neko nekih smernica šta sve treba da naučim u tu svrhu?

Naucis prvo to da moze to da se uradi na dva nacina: preko c kompajlera, prevedes svoj kod u c++ kod, i preko pozivanja (ne znam sad koja je funkcija za to, podsjetio bi se brzo) .exe fajla, sa parametrom imena fajla koji kompajliras, uneses "ime fajla koji kompajlira/komajlera(za c" i u parametre "ime fajla koga kompajliras"... drugi nacin je da prevodis svoj kod SVOG JEZIKA u masinski jezik/tj. Microsoft Macro Assember, i da koristis ml.exe, da napravis stvarno PRAVI programski jezik. Ni jedno ni drugo nije narocito tesko, mada je naporno...
 

Back
Top