Baie mense het probleme of frustrasies met die programmeertale wat hulle elke dag gebruik. Sommige wil hê dat dinge meer abstrak hanteer moet word, terwyl ander nie hou by die implementering van funksies wat hulle 'standaard' wil hê nie. Of u nou 'n IT -professionele persoon of net 'n stokperdjie is, u wil baie keer 'n nuwe programmeertaal skep.
Stappe
Stap 1. Maak kennis met die tegnologie
U kan nie 'n programmeertaal skep as u nie weet hoe om 'n rekenaar te gebruik nie.
Stap 2. Maak kennis met die terminologie
Opstelskrywers gebruik dikwels onbekende terminologie. Lees op oor opstellers voordat u verder gaan. Maak seker dat u alles weet wat u moet weet.
Stap 3. Besluit watter probleem u taal oplos
Gee dit aandag aan 'n domeinspesifieke probleem, of is dit 'n algemene taal?
Stap 4. Dink na oor die semantiek van u taal en die konsepte daarvan
- Gaan u direkte wysertoegang toe of nie?
- Wat is die datatipes van u taal?
- Is dit 'n statiese of dinamiese taal?
- Wat is jou geheuemodel? Gaan u 'n vullisverwyderaar of handmatige geheue bestuur? (As u 'n vullisversamelaar gebruik, moet u voorberei om een te skryf of 'n bestaande een by u taal aan te pas.)
- Hoe gaan gelyktydigheid hanteer word? Gaan u 'n eenvoudige draad-/sluitmodel of iets meer ingewikkeld soos Linda of die akteursmodel gebruik? (Aangesien rekenaars deesdae verskeie kerne het.)
- Is daar primitiewe funksies in die taal ingebed, of kom alles uit 'n biblioteek?
- Wat is die paradigma of paradigmas van u taal? Funksioneel? Objekgeoriënteerde? Prototipe (soos JavaScript)? Aspekgerig? Sjabloon georiënteerd? Of iets heeltemal nuuts?
- Hoe gaan u taal met bestaande biblioteke en tale (hoofsaaklik C) skakel? Hierdie punt is belangrik as u 'n domeinspesifieke taal bou.
- Uiteindelik sal sommige van die antwoorde op hierdie vrae deur die tweede stap beantwoord word, en dit sal u help om die volgende stap te beantwoord.
Stap 5. Dink aan 'n paar spesifieke take wat iemand met u taal wil kan uitvoer
Byvoorbeeld, 'hulle wil dalk 'n robot aanwys om 'n lyn te volg' of 'hulle wil dalk relatief draagbare lessenaarprogramme daarin skep' of 'hulle wil dalk webtoepassings daarmee maak'.
Stap 6. Eksperimenteer met sintaksisidees (die teks van die taal) vir die voorbeelde hierbo
Wees versigtig om u taal in die konteksvrye taalkategorie of iets daarin te hou. U ontledingsopwekker en u sal dit later waardeer
Stap 7. Skryf 'n formele grammatika vir die sintaksis neer
Stap 8. Besluit of die taal geïnterpreteer of saamgestel sal word
Dit beteken dat u gebruiker in die geïnterpreteerde wêreld u program gewoonlik in 'n redakteur sal redigeer en dit direk op die tolk kan laat loop; in die saamgestelde wêreld, sal u gebruiker u program redigeer, dit opstel, die uitvoerbare program iewers stoor en uitvoer.
Stap 9. Skryf die voorste skandeerder en ontleder, of vind 'n hulpmiddel wat u hiermee kan help
Dink ook aan hoe u samesteller/tolk u gebruiker sal waarsku oor verkeerde programme en sintaksisfoute
Stap 10. Gebruik die ontledingsinligting om die voorwerpkode of 'n tussenvoorstelling te skryf
Laat die ontleder 'n AST skep, en skep dan u voorwerpkode uit die AST met drie adreskode of die groot broer SSA, en skep dan 'n simbooltabel om u funksies, globale veranderlikes, ens.
Afhangende van u taal, wil u ook virtuele aanwysertabelle of inligtingstabelle vir u klasse skep (om refleksie of RTTI te ondersteun)
Stap 11. Skryf die eksekuteur of kodegenerator wat alles aanmekaar sal bind
Stap 12. Skryf baie toetsprogramme om die taal te toets
U wil programme skep wat die laste van u formele grammatika beklemtoon om te sien dat u samesteller alles wat binne u definisie is, aanvaar en alles wat daar buite is, verwerp
Stap 13. Oorweeg hoe die gebruiker hul eie programme sal ontfout
Stap 14. As u taal 'n standaardbiblioteek gebruik, sal u dit wil skryf
Saam met 'n vullisversamelaar of ander funksies vir tydsduur as u dit nodig het.
As u spesifiek 'n samesteller skryf, benodig u die kode wat die bedryfstelsel sal uitvoer om die gebruikerskode te begin gebruik (byvoorbeeld, toewysing van alle globale veranderlikes)
Stap 15. Publiseer u taal, saam met die spesifikasie daarvoor en 'n paar voorbeelde van wat u daarin kan doen
Moenie vergeet om te dokumenteer hoe u kan integreer met bestaande biblioteke, tale en hoe u die runtime -funksies en/of standaardbiblioteek kan gebruik nie
Video - Deur hierdie diens te gebruik, kan sommige inligting met YouTube gedeel word
Wenke
- Begin met die ontwerp van u taal en skryf geen kode nie, totdat u tevrede is en al (of die meeste) vrae of probleme met u ontwerp beantwoord het, aangesien dit makliker is om die ontwerp vroeër as later te verander.
- Ken u doelplatform (bedryfstelsel en biblioteke) vir u samesteller/tolk, u gaan dit immers gebruik en manipuleer.
Waarskuwings
- Dink daaraan as u regtig 'n nuwe taal nodig het, en wat u taal nuut het wat ander tale nie het nie (dit kan 'n kombinasie van funksies of 'n enkele funksie wees).
- Dit is moeilik om tale te skryf as jy nie weet wat jy doen nie. Dit verg ook baie oefening.
- Berei u voor om tyd te spandeer in taalontwerp, aangesien u nie die geleentheid sal hê om u taal te verander sodra u die samesteller geskryf het en die ontwerppunt verby is nie.
- Moenie probeer om u funksies in 'n vereniging van verskeie tale te verenig nie, soos om te sê dat u taal 'n vereniging van taal X, taal Y en taal Z is. Die geskiedenis het ons getoon dat tale wat op so 'n manier geskep is, nooit sukses sal behaal nie, of almal sou PL/1 programmeer in plaas van iets wat op C.