Hoe om `n programmeertaal te skep

Baie mense het probleme of frustrasies met die programmeringstale wat hulle elke dag gebruik. Sommige wil hê dat dinge meer abstrak kan hanteer, terwyl ander nie van die implementering van eienskappe wat hulle wil, `standaard` was nie. Of jy nou `n professionele of net `n stokperdjie is, baie keer kan jy jouself vind wat `n nuwe programmeertaal wil skep.

Stappe

  1. Beeld getiteld Skep `n programmeertaal Stap 1
1. Word vertroud met die tegnologie. Jy kan nie `n programmeertaal skep as jy nie weet hoe om `n rekenaar te gebruik nie.
  • Beeld getiteld Skep `n programmeertaal Stap 2
    2. Vertroud raak met die terminologie. Kompilderskrywers gebruik dikwels onbekende terminologie. Lees op samestellers voordat u verder gaan. Maak seker dat jy alles weet wat jy moet weet.
  • Beeld getiteld Skep `n programmeertaal Stap 3
    3. Besluit watter probleem jou taal is op te los. Is dit `n domeinspesifieke probleem aangespreek, of is dit `n algemene taal?
  • Beeld getiteld Skep `n programmeertaal Stap 4
    4. Dink aan die semantiek van jou taal en die konsepte daarvan.
  • Gaan jy direkte wyser toegang verleen of nie?
  • Wat is die datatipes van jou taal?
  • Is dit `n statiese of dinamiese taal?
  • Wat is jou geheuemodel? Gaan jy `n vullisversamelaar of handmatige geheuebestuur gebruik? (As jy `n vullisversamelaar gebruik, berei voor om een ​​te skryf of `n bestaande een aan jou taal aan te pas.)
  • Hoe gaan dit gelyktydig hanteer? Gaan jy `n eenvoudige draad / sluitmodel of iets meer kompleks soos Linda of die akteurmodel gebruik? (Sedertdien het rekenaars verskeie kerne.)
  • Is daar primitiewe funksies wat in die taal ingebed is of sal alles uit `n biblioteek kom?
  • Wat is die paradigma of paradigmas van jou taal? Funksioneel? Objekgeoriënteerde? Prototipe (soos jаvascript)? Aspek-georiënteerde? Sjabloon georiënteerd? Of iets heeltemal nuut?
  • Hoe gaan jou taal in koppelvlak met bestaande biblioteke en tale (hoofsaaklik c)? Hierdie punt is belangrik as jy `n domein-spesifieke taal bou.
  • Ten slotte sal sommige van die antwoorde op hierdie vrae deur die tweede stap beantwoord word en sal u help om die volgende stap te beantwoord.
  • Beeld getiteld Skep `n programmeertaal Stap 5
    5. Dink aan `n paar spesifieke take wat iemand met jou taal wil kan doen. Byvoorbeeld, ".
  • Beeld getiteld Skep `n programmeertaal Stap 6
    6. Eksperimenteer met sintaksides (die teks van die taal) vir bogenoemde voorbeelde.
  • Wees versigtig om jou taal in die konteksvrye taalkategorie of iets daarin te hou. Jou parser generator en jy sal dit later waardeer.
  • Beeld getiteld Skep `n programmeertaal Stap 7
    7. Skryf `n formele grammatika vir die sintaksis uit.
  • Beeld getiteld Skep `n programmeertaal Stap 8
    8. Besluit of die taal geïnterpreteer of saamgestel sal word. Dit beteken dat in die interpreteerde wêreld jou gebruiker tipies jou program in `n redakteur sal wysig en dit direk op die tolk bestuur - terwyl jy in die saamgestelde wêreld jou program sal wysig, dit opstel, stoor die resulterende uitvoerbare iewers en hardloop dit.
  • Beeld getiteld Skep `n programmeertaal Stap 9
    9. Skryf die voorste skandeerder en parser of vind `n instrument wat u hiermee help.
  • Dink ook aan hoe jou samesteller / tolk jou gebruiker sal waarsku oor foutiewe programme en sintaksfoute.
  • Beeld getiteld Skep `n programmeertaal Stap 10
    10. Gebruik die parser inligting om die objek kode of `n intermediêre voorstelling te skryf. Laat die parser `n AST skep, skep dan jou voorwerpkode van die AST met drie adreskode of sy Big Brother SSA en skep dan `n simbooltafel om jou funksies, globale veranderlikes, ens. Te definieer.
  • Ook, afhangende van jou taal, kan jy ook virtuele wyser tabelle of inligtings tabelle vir jou klasse skep (ten einde refleksie of rtti te ondersteun).
  • Beeld getiteld Skep `n programmeertaal Stap 11
    11. Skryf die eksekuteur of kode generator wat alles saam bind.
  • Beeld getiteld Skep `n programmeertaal Stap 12
    12. Skryf baie toetsprogramme om die taal te toets.
  • Jy wil programme skep wat die laste van jou formele grammatika beklemtoon om te sien dat jou samesteller alles aanvaar wat binne jou definisie is en alles wat daar buite is, verwerp.
  • Beeld getiteld Skep `n programmeertaal Stap 13
    13. Oorweeg hoe die gebruiker hul eie programme sal ontfout.
  • Beeld getiteld Skep `n programmeertaal Stap 14
    14. As u taal `n standaard biblioteek gebruik, sal u dit wil skryf. Saam met `n vullisversamelaar of ander runtime-kenmerke as jy dit nodig het.
  • Spesifiek, as u `n samesteller skryf, benodig u die kode wat die bedryfstelsel sal uitvoer om die gebruikerskode te begin (byvoorbeeld, alle globale veranderlikes toeken).
  • Beeld getiteld Skep `n programmeertaal Stap 15
    15. Publiseer jou taal, saam met die spesifikasie vir dit en `n paar voorbeelde van wat jy daarin kan doen.
  • Moenie vergeet om te dokumenteer hoe jy met bestaande biblioteke, tale kan integreer en hoe om die runtime-kenmerke en / of standaard biblioteek te gebruik nie.
  • Video

    Deur hierdie diens te gebruik, kan sommige inligting met YouTube gedeel word.

    Wenke

    Begin deur jou taal te ontwerp en skryf nie enige kode nie, totdat jy tevrede is en al (of die meeste) van die vrae of probleme wat verband hou met jou ontwerp, beantwoord het, aangesien dit makliker is om die ontwerp vroeër as later te verander.
  • Ken jou teikenplatform (bedryfstelsel en biblioteke) vir jou samesteller / tolk, jy gaan dit immers gebruik en manipuleer.
  • Waarskuwings

    Dink as jy regtig `n nuwe taal nodig het en wat jou taal van nuut is wat ander tale nie het nie (dit kan `n kombinasie van funksies of `n enkele kenmerk wees).
  • Skryf tale is moeilik as jy nie weet wat jy doen nie. Dit verg ook baie oefening.
  • Berei voor om tyd in taalontwerp te spandeer, aangesien u nie die kans sal hê om u taal te verander sodra u die samesteller geskryf het nie en die ontwerppunt verby het.
  • Moenie probeer om jou eienskappe in `n unie van verskeie tale te baseer nie, soos om te sê dat jou taal `n unie van taal x, taal y en taal z sal wees. Geskiedenis het ons getoon dat tale wat op so `n manier geskep is, nooit sukses sal vind nie, of almal sal PL / 1 wees in plaas van iets wat op C gebaseer is op C.
  • Dinge wat jy sal nodig hê

    • Geduld.
    • Kennis oor taalkenmerke en taalontwerp (jy wil dalk programmeertaalontwerpkonsepte van David A lees. Watt).
    • Kennis oor samesteller teorie (aangesien u `n samesteller / tolk vir u taal sal skryf en u implementering sal die verwysingsimplementering wees).
    • Gebruik vir jou taal (onthou dat sommige van die mees gebruikte tale soos C of Lisp geskep is om iets spesifiek te doen soos om Unix te skep of simboliese berekening te doen).
    Deel op sosiale netwerke:
    Soortgelyk