Compiler
Nagy Endre
gumo at lucifer.kgt.bme.hu
Tue May 6 11:04:22 CEST 2003
> De szerintem az istvan compilert akar irni
> tehat ha felhasznal minden fajta jotment dolgot (nem bantani akarom a
> yacc(bison) valamit bar magunk kozot megvalva fingom sincs mik lehetnek azok)
> akkor hol marad az alkotas orome.
yacc: yet another compiler compiler
> kozben letoltotem valami bison felet (egy regi legkissebet)
> bevalom ferfiasan ehhez en hulye vagyok
> forras szinten 260Kbyte!!!!! (c-ben)
Ez csak egy eszkoz, nem ezt kell betuszkolni a mikrokontrollernek :)
(Mint ahogy a syntax highlight-os szovegszerkesztot sem kell
ratolteni, pedig az is milyen sokat segit...)
> biztos nagyon jo
> de aki ezt irta annak nem volt gyerek szobaja
> vagy legalabis nem olyan amiben let volna valami 8 bites kis szamitogep
Nagyon regi joszagok ezek, szerintem boven a 8 bites korszakbol.
> abban az idoben meg nem hivtak ilyen kacifantos modon az algoritmusokat
> sem a megoldasokat
> visszont megtudtak csinalni rendesen
Lehet intuitiv modon is csinalni, de nagyobb nyelvtanoknal sokkal
megbizhatobb az eredmeny, ha formalis szabalyok alapjan generalunk hozza
parsert.
A yacc arrol szol, hogy beadjuk a szabalyokat (operatorok, elvalasztok,
whitespace, precedencia, kifejezesek alakja stb.), es abbol egy C forrast
general. Aztan ezt kiegeszited pl. egy C nyelven irt OR(x,y) fuggvennyel,
es azt mondod neki, hogy ha az inputban az OR operatornak valamelyik
formaja elofordul, akkor az OR() fuggvenyedet hivja meg ra a ket oldalan
allo kifejezesek ertekevel. A kiertekelest, sorrend meghatarozasat, es
minden mas kellemetlen tennivalot automatikusan general. Neki csak a
szabalyok, a hibauzenetek, meg a muveletek kellenek.
Ugyanigy generalhato hozza lexikai ellenorzo is pl. flex-szel.
A kesz kod kicsi es hatekony, es csak ennek kell bekerulnie a compilerbe.
A make (termeszetesen) alapbol ismeri a .yy file-okat, tehat
egyszeruen csak fel kell sorolni fuggosegnek, es maris fordul...
UNIX fejlesztoi kornyezethez szokott embereknek idealis.
> es nem az volt a feladat megoldas hogy letoltunk a netrol valami kesz dll-t
> vagy exe-t
Ez nem kesz dll, csak egy segedprogram. Ettol meg te irod a forditot...
Gumo
More information about the Elektro
mailing list