Mange mennesker har problemer eller frustrationer med de programmeringssprog, de bruger hver dag. Nogle vil have, at ting skal håndteres mere abstrakt, mens andre ikke kan lide at gennemføre de funktioner, de ønsker, var "standard". Uanset om du er en it-professionel eller bare en hobbyist, kan du ofte finde dig selv, der ønsker at oprette et nyt programmeringssprog.

Steps

  1. 1 Bliv fortrolig med teknologien. Du kan ikke oprette et programmeringssprog, hvis du ikke ved, hvordan man bruger en computer.
  2. 2 Bliv fortrolig med terminologi. Compilators forfattere bruger ofte ukendt terminologi. Læs videre på kompilatorer, inden du fortsætter. Sørg for at vide alt, hvad du behøver at vide.
  3. 3 Bestem hvilket problem dit sprog løser. Er det rettet mod et domæne-specifikt problem, eller er det et generelt sprog?
  4. 4 Tænk på semantikken i dit sprog og dets begreber.
    • Vil du tillade direkte pointer adgang eller ej?
    • Hvad er datatyperne på dit sprog?
    • Er det et statisk eller dynamisk sprog?
    • Hvad er din hukommelsesmodel? Skal du bruge en affaldssamler eller manuel hukommelsesstyring? (Hvis du bruger en affaldssamler, skal du forberede dig til at skrive en eller tilpasse en eksisterende til dit sprog.)
    • Hvordan skal man håndtere samtidighed? Skal du bruge en simpel trådlåsemodel eller noget mere komplekst som Linda eller skuespillermodellen? (Siden computere i dag har flere kerner.)
    • Er der primitive funktioner indlejret i sproget eller vil alt komme fra et bibliotek?
    • Hvad er dit sprogs paradigme eller paradigme? Funktionel? Objektorienteret? Prototype (som JavaScript)? Aspect-orienterede? Skabelon orienteret? Eller noget helt nyt?
    • Hvordan går dit sprog til grænseflade med eksisterende biblioteker og sprog (hovedsagelig C)? Dette punkt er vigtigt, hvis du opbygger et domæne-specifikt sprog.
    • Endelig vil nogle af svarene på disse spørgsmål besvares af andet trin og hjælpe dig med at besvare det næste trin.
  5. 5 Tænk på nogle specifikke opgaver, som en person vil kunne udføre med dit sprog. F.eks. Kan de måske rette en robot til at følge en linje, eller "de vil måske oprette relativt bærbare desktop-programmer i det" eller "de vil måske gerne oprette webapplikationer med det".
  6. 6 Eksperiment med syntaxideer (sprogets tekst) for ovenstående eksempler.
    • Pas på at holde dit sprog i den kontekstfrie sprogkategori eller noget inde i den. Din parser generator og du vil sætte pris på det senere.
  7. 7Skriv ud en formel grammatik til syntaksen.
  8. 8 Bestem, om sproget skal fortolkes eller kompileres. Det betyder at i den tolkede verden vil din bruger typisk redigere dit program i en editor og køre det direkte på tolken. mens i kompilere verden vil din bruger redigere dit program, kompilere det, gemme det resulterende eksekverbare sted et sted og køre det.
  9. 9 Skriv frontscanneren og parseren eller find et værktøj, der hjælper dig med dette.
    • Tænk også på, hvordan din kompilator / tolk vil advare din bruger om fejlagtige programmer og syntaksfejl.
  10. 10 Brug parseroplysningerne til at skrive objektkoden eller en mellemrepræsentation. Få parseren til at oprette en AST, og lav derefter din objektkode fra AST'en ved hjælp af tre adressekoder eller dens storebror SSA, og lav derefter en symboltabel for at definere dine funktioner, globale variabler mv.
    • Afhængigt af dit sprog kan du også oprette virtuelle pointertabeller eller informationstabeller til dine klasser (for at understøtte refleksion eller RTTI).
  11. 11Skriv eksekutor eller kode generator, der vil binde alt sammen.
  12. 12 Skriv mange testprogrammer for at teste sproget.
    • Du vil oprette programmer, der understreger byrderne i 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 det.
  13. 13Overvej hvordan brugeren vil debug deres egne programmer.
  14. 14 Hvis dit sprog bruger et standardbibliotek, vil du gerne skrive det. Sammen med en garbage collector eller andre runtime funktioner, hvis du har brug for det.
    • Specifikt, hvis du skriver en kompilator, skal du bruge koden, som operativsystemet skal udføre for at begynde at køre brugerkoden (for eksempel tildele alle globale variabler).
  15. 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-funktionerne og / eller standardbiblioteket.