Kako stvoriti programski jezik: 15 koraka (sa slikama)

Sadržaj:

Kako stvoriti programski jezik: 15 koraka (sa slikama)
Kako stvoriti programski jezik: 15 koraka (sa slikama)

Video: Kako stvoriti programski jezik: 15 koraka (sa slikama)

Video: Kako stvoriti programski jezik: 15 koraka (sa slikama)
Video: Zamena procesora Intel i5-7600k i stavljanje termalne paste. 2024, Maj
Anonim

Mnogi ljudi imaju poteškoća ili frustracija s programskim jezicima koje svakodnevno koriste. Neki žele da se stvarima apstraktnije upravlja, dok drugi ne vole implementacijske funkcije za koje bi voljeli da su „standardne“. Bez obzira jeste li IT stručnjak ili samo hobist, često ćete se možda zaželjeti stvoriti novi programski jezik.

Koraci

Kreiranje programskog jezika Korak 1
Kreiranje programskog jezika Korak 1

Korak 1. Upoznajte se sa tehnologijom

Ne možete stvoriti programski jezik ako ne znate koristiti računar.

Kreiranje programskog jezika Korak 2
Kreiranje programskog jezika Korak 2

Korak 2. Upoznajte se sa terminologijom

Autori kompajlera često koriste nepoznatu terminologiju. Pročitajte kompajlere prije nego nastavite. Budite sigurni da znate sve što trebate znati.

Kreiranje programskog jezika Korak 3
Kreiranje programskog jezika Korak 3

Korak 3. Odlučite koji problem rješava vaš jezik

Da li se rješava problem specifičan za domenu ili je to jezik opće namjene?

Kreiranje programskog jezika Korak 4
Kreiranje programskog jezika Korak 4

Korak 4. Razmislite o semantici vašeg jezika i njegovim konceptima

  • Hoćete li dopustiti direktan pristup pokazivačem ili ne?
  • Koji su tipovi podataka vašeg jezika?
  • Je li to statički ili dinamički jezik?
  • Koji je vaš model memorije? Hoćete li koristiti sakupljač smeća ili ručno upravljanje memorijom? (Ako koristite sakupljač smeća, pripremite se da ga napišete ili prilagodite postojeći svom jeziku.)
  • Kako ćete se nositi s istovremenošću? Hoćete li koristiti jednostavan model navoja/zaključavanja ili nešto složenije poput Linde ili modela glumca? (Od danas računari imaju više jezgara.)
  • Postoje li primitivne funkcije ugrađene u jezik ili će sve doći iz biblioteke?
  • Koja je paradigma ili paradigma vašeg jezika? Funkcionalno? Objektno orijentisano? Prototip (poput JavaScript -a)? Orijentisano na aspekte? Predložak orijentisan? Ili nešto sasvim novo?
  • Kako će se vaš jezik povezati sa postojećim bibliotekama i jezicima (uglavnom C)? Ovo je važno ako gradite jezik specifičan za domenu.
  • Konačno, na neke od odgovora na ova pitanja odgovorit će drugi korak i pomoći će vam da odgovorite na sljedeći korak.
Kreiranje programskog jezika Korak 5
Kreiranje programskog jezika Korak 5

Korak 5. Zamislite neke specifične zadatke koje bi neko htio da može izvesti s vašim jezikom

Na primjer, "možda će htjeti usmjeriti robota da slijedi liniju" ili "možda će htjeti u njemu stvoriti relativno prenosive programe za računare" ili "možda će htjeti stvoriti web aplikacije s njim".

Kreiranje programskog jezika Korak 6
Kreiranje programskog jezika Korak 6

Korak 6. Eksperimentirajte sa idejama sintakse (tekst jezika) za gornje primjere

Pazite da vaš jezik bude u kontekstualnoj kategoriji jezika ili u nečemu sličnom. Vaš generator parsera i kasnije ćete to cijeniti

Kreiranje programskog jezika Korak 7
Kreiranje programskog jezika Korak 7

Korak 7. Napišite formalnu gramatiku za sintaksu

Kreiranje programskog jezika Korak 8
Kreiranje programskog jezika Korak 8

Korak 8. Odlučite da li će se jezik tumačiti ili sastavljati

Što znači da će u tumačenom svijetu vaš korisnik obično uređivati vaš program u uređivaču i izvoditi ga direktno na tumaču; dok ste u kompiliranom svijetu, vaš korisnik će urediti vaš program, kompajlirati ga, sačuvati rezultirajuću izvršnu datoteku negdje i pokrenuti je.

Kreiranje programskog jezika Korak 9
Kreiranje programskog jezika Korak 9

Korak 9. Napišite prednji kraj skenera i raščlanjivača ili pronađite alat koji će vam u tome pomoći

Također razmislite o tome kako će vaš kompajler/tumač upozoriti vašeg korisnika na pogrešne programe i sintaksne greške

Kreiranje programskog jezika Korak 10
Kreiranje programskog jezika Korak 10

Korak 10. Upotrijebite informacije raščlanjivača da napišete objektni kod ili posrednički prikaz

Neka parser kreira AST, zatim kreira vaš objektni kod iz AST -a koristeći tri adresni kôd ili njegov veliki brat SSA, zatim kreirajte tablicu simbola za definiranje vaših funkcija, globalnih varijabli itd.

Također, ovisno o vašem jeziku, možda ćete također htjeti stvoriti tablice virtualnih pokazivača ili tablice informacija za svoje klase (kako biste podržali refleksiju ili RTTI)

Kreiranje programskog jezika Korak 11
Kreiranje programskog jezika Korak 11

Korak 11. Napišite izvršitelja ili generator koda koji će sve povezati

Kreiranje programskog jezika Korak 12
Kreiranje programskog jezika Korak 12

Korak 12. Napišite mnogo programa za testiranje jezika

Želite stvoriti programe koji naglašavaju opterećenja vaše formalne gramatike kako biste vidjeli da vaš kompajler prihvaća sve što je unutar vaše definicije i odbacuje sve što je izvan nje

Kreiranje programskog jezika Korak 13
Kreiranje programskog jezika Korak 13

Korak 13. Razmotrite kako će korisnik otklanjati greške u vlastitim programima

Kreiranje programskog jezika Korak 14
Kreiranje programskog jezika Korak 14

Korak 14. Ako vaš jezik koristi standardnu biblioteku, poželjet ćete je napisati

Zajedno sa sakupljačem smeća ili drugim funkcijama za vrijeme izvođenja ako vam zatreba.

Konkretno, ako pišete kompajler, trebat će vam kôd koji će operativni sistem izvršiti da biste započeli s pokretanjem korisničkog koda (na primjer, dodjeljivanje svih globalnih varijabli)

Kreiranje programskog jezika Korak 15
Kreiranje programskog jezika Korak 15

Korak 15. Objavite svoj jezik, zajedno sa specifikacijama i nekim primjerima onoga što možete učiniti na njemu

Ne zaboravite dokumentirati kako se možete integrirati sa postojećim bibliotekama, jezicima i kako koristiti funkcije za vrijeme izvođenja i/ili standardnu biblioteku

Video - Korištenjem ove usluge neke se informacije mogu podijeliti s YouTubeom

Savjeti

  • Počnite tako što ćete dizajnirati svoj jezik i nemojte pisati nikakav kôd, sve dok ne budete zadovoljni i odgovorite na sva (ili većinu) pitanja ili probleme vezane za vaš dizajn jer je lakše promijeniti dizajn ranije nego kasnije.
  • Upoznajte svoju ciljnu platformu (operativni sistem i biblioteke) za svog kompajlera/tumača, na kraju krajeva, vi ćete je koristiti i manipulirati njome.

Upozorenja

  • Razmislite da li vam zaista treba novi jezik i šta vaš jezik ima od novog što drugi jezici nemaju (to može biti kombinacija funkcija ili jedna funkcija).
  • Pisanje jezika je teško ako ne znate šta radite. Takođe je potrebno mnogo prakse.
  • Pripremite se da provedete neko vrijeme u dizajnu jezika jer nećete imati priliku promijeniti jezik nakon što napišete kompajler i prijeđete točku dizajna.
  • Ne pokušavajte svoje osobine zasnivati na uniji više jezika, na primjer recite da će vaš jezik biti unija jezika X, jezika Y i jezika Z. Historija nam je pokazala da jezici stvoreni na takav način nikada neće postići uspjeh, ili bi svi programirali PL/1 umjesto nečega zasnovanog na C.

Preporučuje se: