Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 16.8.2007, 1:14   #1
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Mpl iliti mine programming language :)

E ovako, video sam razlicite programske jezike, od onih sto jedan covek ne moze da napravi tipa VB ili C#, pa sve do programskih jezika koji zahtevaju jedno popodne da se naprave tipa Brainfuck. Posle svega toga odlucio sam i ja malo da se pozabavim tom tematikom, pa sam tako odlucio da napravim MPL sto znaci mine programming language.Jezik ce biti radjen u VB6 i prevodice kod u C, dok cu posle nekog vremena napraviti mogucnost pravljenja COM fajlova. Cilj mi je da napravim programski jezik u kome cu uspeti da napravim kompajler za njega. Jezik ce biti namenjen najvise pocetnicima, ali bice zanimljiv i za ljude sa iskustvom.
Jezik ce imati 5 instrukcija za baratanje sa promenljivama ($, %, ., PUT), 4 IO instrukcije (getf*, putf*, print, get), 5 aritmetickih operacija (+,-,*,/,sqrt), 3 funkcije za kontrolu toka (case, if, do).
*getf i putf funkcije su funkcije za otvaranje datoteke za input i otvaranje datoteke za output.
Sutra ili prekosutra ocekujte prvi mali kompajler.
nika100 je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 1:35   #2
veverica
Član
 
Član od: 16.6.2007.
Lokacija: Backa Topola
Poruke: 160
Zahvalnice: 53
Zahvaljeno 71 puta na 42 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Jedva cekam da vidim shta ce biti od ovoga

btw. puno srece ^_^
veverica je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 1:38   #3
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Hvala .
Bice nesto ... Nadam se dobro....
nika100 je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 12:28   #4
seymourc64
Član
 
Član od: 5.12.2005.
Lokacija: Sombor
Poruke: 245
Zahvalnice: 7
Zahvaljeno 31 puta na 24 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Pre nego sto pocnes,mozda bi trebao procitati malo strucne literature.Da naucis sta su skaneri,parseri...Lakse je takve stvari resavati sa lex-om i yacc-om(i derivatima) nego pisati ceo kod od nule.

Inace po ovome sto si naveo,vise mi lici da pravis model nekog zamisljenog (mikro)procesora,nego programski jezik viseg nivoa,ali ajde...Svejedno je zanimljiva oblast
seymourc64 je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 18:01   #5
LoneWolf
Deo inventara foruma
 
Član od: 9.1.2006.
Lokacija: Kafana
Poruke: 7.665
Zahvalnice: 1.612
Zahvaljeno 2.006 puta na 1.418 poruka
Slanje poruke preko Skypea korisniku LoneWolf
Određen forumom Re: Mpl iliti mine programming language :)

Prije nego sto pocnes trebao bi da procitas malo engleske gramatike jer ne moze da bude MINE programming language,nego samo MY programming language.

Primjer :

This is my book.
This book is mine.

Znaci samo pa polako.
LoneWolf je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 18:24   #6
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.081
Zahvaljeno 4.922 puta na 2.858 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Citat:
seymourc64 kaže: Pregled poruke
Pre nego sto pocnes,mozda bi trebao procitati malo strucne literature.Da naucis sta su skaneri,parseri...Lakse je takve stvari resavati sa lex-om i yacc-om(i derivatima) nego pisati ceo kod od nule.
Slažem se. Ovoj temi su ipak posvećeni čitavi predmeti na tehničkim fakultetima, tako da je daleko od zezanja (naravno ako se cilja na pravljenje upotrebljivog jezika).
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 18:43   #7
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Ja sam i hteo prvo da napisem MY, nego su me istripovali da je mine ispravnije
nika100 je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 20:07   #8
Deusdies
Starosedelac
 
Član od: 9.11.2005.
Lokacija: bo@galaxy: ~$
Poruke: 1.554
Zahvalnice: 54
Zahvaljeno 439 puta na 215 poruka
Slanje poruke preko AIM-a korisniku Deusdies Slanje poruke preko MSN-a korisniku Deusdies Slanje poruke preko Skypea korisniku Deusdies
Određen forumom Re: Mpl iliti mine programming language :)

E super. Puno ti sreće želim. Posle mogu da se hvalim kako poznajem autora MPL (nika100, upoznali smo se: dao si mi Mandrake 10 kod Zelengore, sećaš se? )
Deusdies je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 20:12   #9
rile
Član
 
Član od: 9.7.2007.
Poruke: 119
Zahvalnice: 2
Zahvaljeno 31 puta na 29 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Preporučujem ti da uzmeš ANTLR i praviš svoj MPL u tome umesto u VB-ju.
rile je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 21:56   #10
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Re: Mpl iliti mine programming language :)

@Dellion:
A, da secam se.
Dobro, od ove godine idemo i u istu skolu, osim ako nisi zavrsio 4.godinu
@Rile:
Sta je to?
nika100 je offline   Odgovor sa citatom ove poruke
Stara 16.8.2007, 23:19   #11
rile
Član
 
Član od: 9.7.2007.
Poruke: 119
Zahvalnice: 2
Zahvaljeno 31 puta na 29 poruka
Određen forumom Re: Mpl iliti mine programming language :)

ANTLR je parser generator.
http://www.antlr.org/
Ukratko: ovo je alatka koja ti omogucava da pravis kompajlere/interpretere.
Tradicionalno, za to se su se koristili Lex i Yacc (i varjante), koji su bottom-up parser generatori (lex pravi lexer - lekser cita ulaznu sekvencu karaktera i prepoznaje ih i oznacava brojevima - tokenima. Tokeni su ulaz u parser, koji se generise pomocu yacc na osnovu formalne gramatike u BNF notaciji). Parser generise AST (abstract syntax tree) na osnovu kojeg mozes da vrsis transformacije ulaznog jezika u ono sto hoces ("redukujes" ga kako bi se to reklo u parserskom recniku). Sva kombinatorika u ovom botom-up (odozdo nagore) pristupu je predstavljena kao "state-machine" odnosno kombinacionim automatom.

ANTLR radi slicnu stvar, ali drugacije. On generise top-down (odozgo na dole) parsere koji lice na rucno pravljene parsere i generalno je lakse raditi sa njim nego sa tradicionalnim alatima. Pristup "odozgo na dole" je "prirodan" nacin razmisljanja kada rucno pravimo parsere (mada je moguce raditi i obrnuto). U ovom pristupu krecemo od najviseg simbola u gramatici (na primer "start") i onda iduci "nadole" ka "nizim" definicijama, pokusavamo da uparimo moguce sledece simbole. Implementacija je obicno: jedno gramaticko pravilo = jedna funkcija. ANTLR upravo ovo generise.

U svakom slucaju, ja bih otisao na onaj gore link i procitao malo, ima primera gramatika za razne jezike, kako veoma jednostavne (za ucenje) tako i kompleksnih, na primer za C ili za C++ (ne znam koliko dobro radi ova za C++ ali bih ocekivao da je za C kompletna).

Dobra stvar je sto mozes da ga radis u javi dok ucis, postoji i plug-in za eclipse, pa je rad prilicno komforan. Ali ANTLR takodje ima mogucnost generisanja parsera u C++.
rile je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 10:01   #12
M.Silenus
Veteran
 
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Pogledaj neku od sledećih knjiga:
Compilers: Principles, Techniques, and Tools iliti Dragon Book kako je još zovu, a inače je osnovno štivo za svakoga ko želi da se bavi konstrukcijom bilo kakvih kompajlera ili interpretera
Modern Compiler Implementation in C/Java/ML, gde imaš kompletne implementacije kompajlera pisane u, zamisli, C/Java/ML-u...
A imaš i na srpskom relativno sveže Prevodioce i Interpretatore Duška Vitasa ( on drži predavanja iz istoimenog predmeta na MATF-u, jel' ), pa uživaj.

Inače, šta da ti kažem, srećno sa tim!

PS: ako se dobro sećam, bottom-up analiza je daleko zahvalnija za rano detektovanje grešaka od top-down sistema (a inače, oba mogu ručno da se urade)

Poslednja ispravka: M.Silenus (17.8.2007 u 10:09)
M.Silenus je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 16:27   #13
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Sada sam probao ovaj ANTLR, i uopste ga ne kapiram...
Uzeo sam i neki primer da vidim kako je to, ali mi se ne svidja.
I ne mogu da napravim kompajler kao EXE fajl....
Sada cu ja natenane to da uradim u VB6, koji ce da kompajlira kôd u C, pa ce onda preko GCC-a da ga kompajlira u exe.

Poslednja ispravka: nika100 (17.8.2007 u 16:40)
nika100 je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 17:19   #14
aljoshaaa
Član
 
Član od: 2.6.2007.
Poruke: 36
Zahvalnice: 6
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: Mpl iliti mine programming language :)

Please say you're joking .. znaci .. ti hoces da napravis nesto kao IDE koji 'tvoju' sintaksu prevodi u c sintaksu .. i zove gcc i kompajlira kod ?
aljoshaaa je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 17:22   #15
nika100
Veteran
 
Član od: 25.12.2005.
Lokacija: Kragujevac
Poruke: 541
Zahvalnice: 67
Zahvaljeno 55 puta na 28 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Da, ali to i nije toliko tesko, jer to nece biti bas neki ide, nego ce imati jedan Richtextbox sa syntax highligtingom i kada se nesto uradi i kada se klikne 'compile' prevesce u C kod na jedan prost nacin.
I mislim da sam provalio to za parser i tako to:
Znaci ja napravim niz od n elemenata (n je broj funkcija).
Kada ja unesem naprimer 'IF' on ce proveriti da li 'IF' ima u nizu, ako ima neka pogleda koji je broj po redu, i to je znaci token, i kasnije samo te brojeve pregleda i gleda sta oni znace. Onda kada vidi sta znaci, pretvara to u sintaksu drugog jezika i to kasnije cuva.

Poslednja ispravka: nika100 (17.8.2007 u 17:31)
nika100 je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 17:24   #16
aljoshaaa
Član
 
Član od: 2.6.2007.
Poruke: 36
Zahvalnice: 6
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: Mpl iliti mine programming language :)

Mislis ovo ... http://www.sk.co.yu/forum/showthread...hlight=alc0h0l
aljoshaaa je offline   Odgovor sa citatom ove poruke
Stara 17.8.2007, 17:38   #17
seymourc64
Član
 
Član od: 5.12.2005.
Lokacija: Sombor
Poruke: 245
Zahvalnice: 7
Zahvaljeno 31 puta na 24 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Pogresno si shvatio sustinu kompajlera.Njegov cilj jeste prevodjenje neke gramatike u kod razumljiv procesoru,ali da bi dotle dosao treba da odredis samu gramatiku jezika(znaci da je osmislis teorijski),sintaksu,semantiku jezickih konstrukcija...
seymourc64 je offline   Odgovor sa citatom ove poruke
Stara 25.10.2008, 19:57   #18
liska
Novi član
 
Član od: 25.10.2008.
Poruke: 1
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Citat:
seymourc64 kaže: Pregled poruke
Pre nego sto pocnes,mozda bi trebao procitati malo strucne literature.Da naucis sta su skaneri,parseri...Lakse je takve stvari resavati sa lex-om i yacc-om(i derivatima) nego pisati ceo kod od nule.

Inace po ovome sto si naveo,vise mi lici da pravis model nekog zamisljenog (mikro)procesora,nego programski jezik viseg nivoa,ali ajde...Svejedno je zanimljiva oblast
Vidim da pominjes lex pa bih i ja nesto konkretno pitala ako je neko spreman da odgovori
liska je offline   Odgovor sa citatom ove poruke
Stara 28.10.2008, 15:25   #19
JBlitzkrieg
Član
 
Član od: 6.3.2006.
Lokacija: Nis
Poruke: 141
Zahvalnice: 31
Zahvaljeno 9 puta na 7 poruka
Određen forumom Re: Mpl iliti mine programming language :)

Da, lepo su ti svi rekli da treba da procitas dobar deo literature oko programskih prevodilaca i da naucis sta su leksicka, sintaksna i semanticka analiza. Posle analize jezika ide i njegova sinteza (prevodjenje u medjukod, optimizacija medjukoda, pa prevodjenje u asemblerski jezik i opet njegova optimizacija).
Jeste da ce ti ovo oduzeti dosta vremena, ali bolje ovako, nego da tu negde na pola projekta shvatis da nisi uzeo sve mogucnosti u opticaju (i shift-deletujes sve sto si radio), a ucenje na ovaj "tenicki" nacin je, kako se kaze, bullet-proof na razlicite greske.

Mada ti hoces da kod prevedes u C pa onda da zoves gcc... To sto ti pravis se zove parser jezika (samo analiza bez sinteze). Preporucujem ti da naucis kako se zadaje gramatika jezika, da posle napravis neki tokenizer i na kraju uradis sintaksnu analizu koji je i najtezi deo. Preporucujem da koristis Bottom-up analizu (LR(1) parser), jer najbolje resava te probleme uz minimalne (ili nikakve) promene nad postojecom gramatikom (problem leve rekurzije i itd...).

Lex i Yacc : odlican pocetak da naucis osnove kompajlera je preko ovih generatora.
JBlitzkrieg je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Language bar DobroslaV Operativni sistemi 8 1.6.2007 21:10


Sva vremena su po Griniču +2 h. Sada je 0:20.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com