Prikaz jedne 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