Mange mennesker har problemer eller frustrationer over de programmeringssprog, de bruger hver dag. Nogle ønsker, at tingene skal håndteres mere abstrakt, mens andre ikke kan lide at implementere funktioner, som de ønsker var 'standard'. Uanset om du er en IT -professionel eller bare en hobbyist, kan du ofte finde på at ville oprette et nyt programmeringssprog.
Trin
Trin 1. Bliv fortrolig med teknologien
Du kan ikke oprette et programmeringssprog, hvis du ikke ved, hvordan du bruger en computer.
Trin 2. Bliv fortrolig med terminologien
Compilerskribenter bruger ofte ukendt terminologi. Læs op på kompilatorer, før du fortsætter. Sørg for at vide alt, hvad du har brug for at vide.
Trin 3. Beslut, hvilket problem dit sprog løser
Løser det et domænespecifikt problem, eller er det et generelt sprog?
Trin 4. Tænk over semantikken i dit sprog og begreberne i det
- Vil du tillade direkte markøradgang eller ej?
- Hvad er datatyperne for dit sprog?
- Er det et statisk eller dynamisk sprog?
- Hvad er din hukommelsesmodel? Vil du bruge en affaldssamler eller manuel hukommelsesstyring? (Hvis du bruger en affaldssamler, skal du forberede dig på at skrive en eller tilpasse en eksisterende til dit sprog.)
- Hvordan håndterer man samtidighed? Vil du bruge en simpel gevind-/låsemodel eller noget mere komplekst som Linda eller skuespillermodellen? (Da computere i dag har flere kerner.)
- Er der primitive funktioner indlejret i sproget, eller kommer alt fra et bibliotek?
- Hvad er paradigmet eller paradigmerne for dit sprog? Funktionel? Objektorienteret? Prototype (som JavaScript)? Aspektorienteret? Skabelonorienteret? Eller noget helt nyt?
- Hvordan vil dit sprog interagere med eksisterende biblioteker og sprog (hovedsageligt C)? Dette punkt er vigtigt, hvis du bygger et domænespecifikt sprog.
- Endelig vil nogle af svarene på disse spørgsmål blive besvaret af det andet trin og vil hjælpe dig med at besvare det næste trin.
Trin 5. Tænk på nogle specifikke opgaver, som nogen gerne vil kunne udføre med dit sprog
For eksempel 'de vil måske lede en robot til at følge en linje' eller 'de vil måske oprette relativt bærbare desktop -programmer i den' eller 'de vil måske oprette webapplikationer med det'.
Trin 6. Eksperimenter med syntaksideer (sprogets tekst) for ovenstående eksempler
Vær omhyggelig med at beholde dit sprog i den kontekstfrie sprogkategori eller noget inde i det. Din parser generator, og du vil sætte pris på det senere
Trin 7. Skriv en formel grammatik for syntaksen
Trin 8. Beslut, om sproget skal tolkes eller kompileres
Det vil sige, at i den fortolkede verden vil din bruger typisk redigere dit program i en editor og køre det direkte på tolken; mens i den kompilerede verden, vil din bruger redigere dit program, kompilere det, gemme den resulterende eksekverbare et sted og køre det.
Trin 9. Skriv frontend -scanneren og parseren, eller find et værktøj, der hjælper dig med dette
Tænk også over, hvordan din kompilator/fortolker vil advare din bruger om fejlagtige programmer og syntaksfejl
Trin 10. Brug parseroplysningerne til at skrive objektkoden eller en mellemrepræsentation
Få parseren til at oprette en AST, derefter oprette din objektkode fra AST ved hjælp af tre adressekoder eller dens storebror SSA, derefter oprette en symboltabel til at definere dine funktioner, globale variabler osv.
Afhængigt af dit sprog kan du også oprette virtuelle pegetabeller eller informationstabeller til dine klasser (for at understøtte refleksion eller RTTI)
Trin 11. Skriv eksekvereren eller kodegeneratoren, der vil binde alt sammen
Trin 12. Skriv mange testprogrammer for at teste sproget
Du vil oprette programmer, der understreger byrderne ved din formelle grammatik for at se, at din kompilator accepterer alt, hvad der er inde i din definition og afviser alt, hvad der er uden for den
Trin 13. Overvej hvordan brugeren vil debugge deres egne programmer
Trin 14. Hvis dit sprog bruger et standardbibliotek, vil du gerne skrive det
Sammen med en affaldssamler eller andre runtime -funktioner, hvis du har brug for det.
Specifikt, hvis du skriver en compiler, skal du bruge den kode, som operativsystemet vil udføre for at begynde at køre brugerkoden (f.eks. Allokering af alle globale variabler)
Trin 15. Udgiv dit sprog sammen med specifikationen for det og nogle eksempler på, hvad du kan gøre i det
Glem ikke at dokumentere, hvordan du kan integrere med eksisterende biblioteker, sprog og hvordan du bruger runtime -funktioner og/eller standardbibliotek
Video - Ved at bruge denne service kan nogle oplysninger blive delt med YouTube
Tips
- Start med at designe dit sprog, og skriv ikke nogen kode, før du er tilfreds og har besvaret alle (eller de fleste) spørgsmål eller problemer i forbindelse med dit design, da det er lettere at ændre designet tidligere end senere.
- Kend din målplatform (operativsystem og biblioteker) til din kompilator/tolk, du kommer trods alt til at bruge den og manipulere den.
Advarsler
- Tænk, hvis du virkelig har brug for et nyt sprog, og hvad dit sprog har af nyt, som andre sprog ikke har (Det kan være en kombination af funktioner eller en enkelt funktion).
- Det er svært at skrive sprog, hvis du ikke ved, hvad du laver. Det kræver også meget øvelse.
- Forbered dig på at bruge lidt tid på sprogdesign, da du ikke har mulighed for at ændre dit sprog, når du har skrevet kompilatoren og forbi designpunktet.
- Forsøg ikke at basere dine funktioner i en forening af flere sprog, som f.eks. At sige, at dit sprog vil være en forening af sprog X, sprog Y og sprog Z. Historien har vist os, at sprog, der er skabt på en sådan måde, aldrig vil lykkes, eller alle ville programmere PL/1 i stedet for noget baseret på C.