Mange mennesker har problemer eller frustrationer angående de sprog, de bruger hver dag. Nogle foretrækker at visse ting behandles mere abstrakt, mens andre ikke kan lide at skulle implementere funktioner, der burde være indfødte for dem. Det er ligegyldigt, om du er en it-professionel eller bare et program for fornøjelse, det kan komme, når du opretter dit eget programmeringssprog, bliver en meget attraktiv idé.
Bekendtgør dig med terminologien. Folk, der programmerer en compiler, bruger normalt nogle komplicerede vilkår, så det er vigtigt at læse lidt om det, før de fortsætter. Prøv at lære alt hvad du behøver.
2
Definer, hvilket problem dit sprog vil løse. Vil det være domæne-specifikt eller generelt?
3
Tænk på semantikken i dit sprog og de begreber der er relateret til det.
Vil du tillade direkte adgang til peger?
Hvad bliver sprogdatatyperne?
Er det et statisk eller dynamisk sprog?
Hvad bliver hukommelsesmodellen? Du vil bruge en affaldssamler (affaldssamler) eller skal hukommelsen administreres manuelt? Når du bruger en affaldssamler, Du kan programmere en fra bunden eller tilpasse en, der allerede eksisterer for dit sprog.
Hvordan vil du håndtere konkurrencen? Du vil gennemføre en simpel skabelon baseret på tråde og gensidig udelukkelse eller noget mere komplekst som modellerne Linda og skuespilleren? Det er en vigtig beslutning, fordi computere i dag har flere behandlingskerner.
Vil der være primitive modersmålsfunktioner eller vil alt komme fra biblioteker?
Hvad bliver sprogets paradigme eller paradigme? Funktionel? Objektorienteret? Baseret på prototyper (som jаvascript)? Aspect-orienterede? Oriented skabeloner? Måske noget helt nyt?
Hvordan integrerer sproget med eksisterende biblioteker (hovedsagelig C-biblioteker)? Dette er meget vigtigt, når du udvikler et specifikt domænesprog.
At besvare disse spørgsmål vil hjælpe dig meget i de næste faser af sprogudvikling.
4
Tænk på enkle opgaver, som folk kunne gøre med deres sprog. De kan f.eks. "Lave en robot følge en linje", "skabe relativt bærbare programmer til desktops" eller "oprette webapplikationer".
5
Test med syntaxideer (sprogteksten) for eksemplerne ovenfor.
Husk at forsøge at holde sproget i den kontekstfrie kategori eller en anden kategori i den. din generator parser tak i fremtiden.
Video: Java 9. Arrays
6
Skriv en formel grammatik til syntaksen.
7
Bestem, om sproget vil blive fortolket med kompileret. Forskellen er, at brugeren i et fortolket sprog generelt vil redigere programmet gennem en editor og køre det direkte i tolken. Allerede i et kompileret sprog vil brugeren redigere programmet, så kompilere det, gemme det eksekverbare sted et sted og endelig udføre det.
8
Skriv front end scanner og parser eller find et værktøj til at hjælpe dig med denne proces.
Prøv også at definere, om kompilatoren eller tolken vil advare brugeren til programmeringsfejl eller syntaks.
9
Brug de oplysninger, der genereres af parseren til at skrive objektkoden eller en mellemrepræsentation. Lav parseren oprette en AST, og lav derefter objektet fra AST`en ved hjælp af tre-adressekode eller din ældrebror, SSA. Endelig skal du oprette en symboltabel for at definere funktioner, globale variabler og så videre.
Afhængigt af sproget foretrækker du måske at oprette tabeller med virtuelle pointers eller informationstabeller til klasser (for at understøtte refleksion eller RTTI).
10
Skriv eksekutor eller kode generator, der vil sætte alt sammen.
11
Skriv testprogrammer for at teste sproget.
Ideen er at skabe programmer, der skubber grænserne for dit formelle sprog til kanten for at se om kompilatoren accepterer alt, hvad der er inden for dets definition og afviser alt udenfor det.
12
Definer hvordan brugeren vil "debug" sine programmer.
Video: PHP kursus / tutorials for begyndere #19 Nyhedsbrev system med PHP og MySQL
13
Hvis sproget bruger et standardbibliotek, skal du programmere det. Du skal også skrive en affaldssamler og om nødvendigt andre run-time værktøjer.
Når du skriver en kompilator, skal du indstille koden, som operativsystemet skal køre for at begynde at udføre brugerkode (tildeling af alle globale variabler, for eksempel).
Video: Java 1. Klasser og objekter
14
Skriv sproget sammen med hendes specifikationer og et par eksempler på, hvad hun kan gøre.
Glem ikke at dokumentere, hvordan integration med eksisterende biblioteker og sprog vil være, og hvordan du bruger runtime- og standardbibliotekets funktioner.
tips
Start sprogprojektet uden at skrive nogen kode, indtil du er tilfreds, og har besvaret alle (eller de fleste) spørgsmål vedrørende projektet. Dette vil lette eventuelle fremtidige ændringer.
Indstil målplatformen (operativsystemer og biblioteker) til kompilatoren eller tolken, da du skal lære at bruge og manipulere det.
advarsler
Definer, om du virkelig har brug for et nyt sprog og hvad det vil have, som andre ikke har (det kan være en kombination af funktioner eller en bestemt funktion).
Skrive sprog er svært, hvis du ikke ved hvad du gør. Det kræver også en masse øvelse.
Vær forberedt på at bruge meget tid på sprogdesign, da du ikke vil kunne ændre det efter programmering af kompilatoren og afslutte planlægningsfasen.
Forsøg ikke at have som grundideal sammenslutningen af flere sprog, idet man siger, at dens oprettelse vil være foreningen af sproget X, Y og Z, for eksempel. Historien har vist, at sprog oprettet på denne måde aldrig kan lykkes, eller vi ville alle programmere i PL / 1 i stedet for noget baseret på C.
Nødvendige materialer
Tålmodighed.
Kendskab til ressourcer og sprogdesign (det er interessant at læse bogen Programmering Sprogdesign Koncepter af David A. Watt).
Kendskab til compilerteori (siden du vil skrive en kompilator eller tolk for sproget og dets implementering vil blive brugt som reference).
Sprogværktøj (husk at de mest anvendte programmeringssprog, som f.eks. C og Lisp, er designet til at gøre noget specifikt, f.eks. At oprette en Unix eller udføre symbolsk beregning).