Mennyire nehéz feladat egy saját fordítóprogramot írni?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Semmiképpen sem triviális dolog, viszont mindenképpen megéri. Nagyon sok dolgot meg lehet tanulni közben. Feltételezem, hogy hobbiból szeretnél ilyet csinálni és nem professzionális környezetben. A következöket ennek fényében írom.
Ha elfogadsz néhány tanácsot:
- inkább interpretert kezdj el írni. Az interpreterek meg a compilerek felsö 2-3 rétege azonos, a végén nem kell szopnod kódgenerálással. Ha késöbb úgy döntesz (és a programnyelv, amit kitaláltál engedi), akkor kiegészítheted compilerré.
- válassz/találj ki olyan nyelvet, aminek nincs túl sok szintaktikai feature-je. Én azt ajánlom, hogy valami Lisp szerü nyelvet találj ki. Ha nincs kedved kitalálni sajátot, ajánlom a Scheme nevü lisp dialektust. Persze célszerü elsöre ennek is csak egy részhalmazát megvalósítani.
- válassz olyan nyelvet az implementációra(amiben írod a compilered), amiben kényelmesen tudsz dolgozni. Bármilyen rendes programozási nyelven lehet compilert írni(igen, még PHP-ban is, jöhet a lepontozás :D )
- Jó ha kicsit utánnaolvasgatsz a formális nyelvek témakörének. Elsöre elég matekos, igazság szerint másodikra is, de meg lehet érteni.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"Minden gépi kódra fordít."
Hát, nem egészen. A példádban említett JAVA sem, a VM-hez meg a fordítónak semmi köze, tehát a fordító írójának se sok.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Minek ma már olyat írni?
Antrl4-nek megadsz egy CF nyelvtant és legeneralod a fordítót és kész.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"#6: abszolút igazad van"
Dehogy van igaza!
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
In this Github repository, I'm documenting my journey to write a self-compiling compiler for a subset of the C language. I'm also writing out the details so that, if you want to follow along, there will be an explanation of what I did, why, and with some references back to the theory of compilers.
But not too much theory, I want this to be a practical journey.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!