Hoe om 'n programmeertaal te skep: 15 stappe (met foto's)

INHOUDSOPGAWE:

Hoe om 'n programmeertaal te skep: 15 stappe (met foto's)
Hoe om 'n programmeertaal te skep: 15 stappe (met foto's)

Video: Hoe om 'n programmeertaal te skep: 15 stappe (met foto's)

Video: Hoe om 'n programmeertaal te skep: 15 stappe (met foto's)
Video: hoe om 'n das te bind. eenvoudige en vinnige & elegant. Windsor knoop. 2024, Mei
Anonim

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

Skep 'n programmeertaal Stap 1
Skep 'n programmeertaal Stap 1

Stap 1. Maak kennis met die tegnologie

U kan nie 'n programmeertaal skep as u nie weet hoe om 'n rekenaar te gebruik nie.

Skep 'n programmeertaal Stap 2
Skep 'n programmeertaal Stap 2

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.

Skep 'n programmeertaal Stap 3
Skep 'n programmeertaal Stap 3

Stap 3. Besluit watter probleem u taal oplos

Gee dit aandag aan 'n domeinspesifieke probleem, of is dit 'n algemene taal?

Skep 'n programmeertaal Stap 4
Skep 'n programmeertaal Stap 4

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.
Skep 'n programmeertaal Stap 5
Skep 'n programmeertaal Stap 5

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'.

Skep 'n programmeertaal Stap 6
Skep 'n programmeertaal Stap 6

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

Skep 'n programmeertaal Stap 7
Skep 'n programmeertaal Stap 7

Stap 7. Skryf 'n formele grammatika vir die sintaksis neer

Skep 'n programmeertaal Stap 8
Skep 'n programmeertaal Stap 8

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.

Skep 'n programmeertaal Stap 9
Skep 'n programmeertaal Stap 9

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

Skep 'n programmeertaal Stap 10
Skep 'n programmeertaal Stap 10

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)

Skep 'n programmeertaal Stap 11
Skep 'n programmeertaal Stap 11

Stap 11. Skryf die eksekuteur of kodegenerator wat alles aanmekaar sal bind

Skep 'n programmeertaal Stap 12
Skep 'n programmeertaal Stap 12

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

Skep 'n programmeertaal Stap 13
Skep 'n programmeertaal Stap 13

Stap 13. Oorweeg hoe die gebruiker hul eie programme sal ontfout

Skep 'n programmeertaal Stap 14
Skep 'n programmeertaal Stap 14

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)

Skep 'n programmeertaal Stap 15
Skep 'n programmeertaal Stap 15

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.

Aanbeveel: