Hvordan Man Skriver En Oversætter

Indholdsfortegnelse:

Hvordan Man Skriver En Oversætter
Hvordan Man Skriver En Oversætter

Video: Hvordan Man Skriver En Oversætter

Video: Hvordan Man Skriver En Oversætter
Video: Novelle - sådan gør du 2024, Kan
Anonim

Der er mange programmeringssprog, der har deres egne unikke egenskaber. Men for at et program skrevet i nogen af dem skal fungere, skal du udsende det. Nogle gange udvikles programmeringssprog til deres egne behov (for eksempel support til automatisering i store applikationer), og derefter bliver det nødvendigt at skrive en oversætter.

Hvordan man skriver en oversætter
Hvordan man skriver en oversætter

Nødvendig

  • - naturlig grammatik eller BNF på kildesproget
  • - udviklingsværktøjer.

Instruktioner

Trin 1

Forbered dataene til leksikalanalyse af teksten på kildesproget. Liste over alle tokens på sproget. Opdel dem i kategorier (nøgleord, numeriske og strenge bogstaver, identifikatorer, mellemrum, tegnsætning osv.).

Trin 2

Implementere et modul eller en lexer. Ved indgangen skal den modtage en "rå" datastrøm, og ved udgangen danne en liste over elementer, der indeholder tokens og deres typeidentifikatorer i den rækkefølge, som de forekommer i kildeteksten. Parseprogrammet kan være ret simpelt " enkelt-niveau "scanner. Implementering af fejlgendannelse giver ikke mening. Ugyldige tegn skal behandles som fejl.

Trin 3

Forbered dataene til parsing. Baseret på kildesprogets naturlige grammatik eller BNF, komponér dens LL1-grammatik. Baseret på denne type grammatik, udarbejd en parsingordning med hensyn til kategorierne af gyldige tokens og semantiske konstruktioner af sproget.

Trin 4

Implementere et modul eller en parser. Ved input skal den modtage en liste over tokens, der er udarbejdet på tidspunktet for leksikal parsing. Udvikl rekursive algoritmer til kontrol af syntaks ved hjælp af det skema, du oprettede i trin tre. Implementér om nødvendigt fejlgendannelsesmekanismer. Tilføj funktionalitet til parsingsalgoritmerne for at opbygge et træ til beregning af funktioner, klassemetoder. Med den korrekte struktur af parsingsalgoritmer kan denne funktionalitet implementeres uden problemer. Dette undgår behovet for at implementere det som et separat modul. De oprettede datastrukturer skal indeholde lister over instruktioner i form af "flade" sekvenser (aritmetiske udtryk udvidet til postfix-form egnet til beregning på en stakmaskine, sløjfer konverteret til kombinationer af sekvenser af beregningsinstruktioner og betingede eller ubetingede spring osv.).

Trin 5

Opret et optimeringsmodul, hvis det er nødvendigt. Den skal behandle og transformere datastrukturer, der er udarbejdet i det foregående trin. Optimeringsalgoritmer og -metoder er meget forskellige.

Trin 6

Udvikl en kodegenerator. Når man behandler strukturer, der er forberedt i det fjerde eller femte trin, skal det simpelthen transformere sekvenserne af abstrakte instruktioner til instruktioner til udførelse på en bestemt platform.

Trin 7

Opret et bindeprogram (linker), hvis det er nødvendigt. Det skal danne det resulterende eksekverbare modul ved at vælge placeringen af kodesegmenterne, beregne adresserne på etiketterne osv.

Anbefalede: