Hoe Schrijf Je Een Vertaler?

Inhoudsopgave:

Hoe Schrijf Je Een Vertaler?
Hoe Schrijf Je Een Vertaler?

Video: Hoe Schrijf Je Een Vertaler?

Video: Hoe Schrijf Je Een Vertaler?
Video: Deze gadget laat je praten met mensen die jouw taal niet spreken 2024, November
Anonim

Er zijn veel programmeertalen die hun eigen unieke kenmerken hebben. Maar om een programma dat in een van deze programma's is geschreven te laten werken, moet u het uitzenden. Soms worden programmeertalen ontwikkeld voor hun eigen behoeften (bijvoorbeeld ondersteuning voor automatisering in grote applicaties) en dan wordt het noodzakelijk om een vertaler te schrijven.

Hoe schrijf je een vertaler?
Hoe schrijf je een vertaler?

Noodzakelijk

  • - natuurlijke grammatica of BNF van de brontaal;
  • - Ontwikkelingshulpmiddelen.

instructies:

Stap 1

Bereid de gegevens voor voor lexicale analyse van de tekst in de brontaal. Maak een lijst van alle tokens in de taal. Verdeel ze in categorieën (trefwoorden, numerieke en tekenreeksletters, identifiers, witruimte, interpunctie, enz.).

Stap 2

Implementeer een module of lexer. Bij de invoer zou het een "onbewerkte" gegevensstroom moeten ontvangen en bij de uitvoer een lijst vormen met elementen die tokens en hun type-ID's bevatten in de volgorde waarin ze in de brontekst voorkomen. Het parsing-programma kan een vrij eenvoudig zijn " single-level" scanner. Foutherstel implementeren heeft geen zin. Ongeldige tekens moeten als fouten worden behandeld.

Stap 3

Bereid de gegevens voor om te parseren. Stel op basis van de natuurlijke grammatica of BNF van de brontaal de LL1-grammatica samen. Stel op basis van dit type grammatica een ontledingsschema op in termen van de categorieën van geldige tokens en semantische constructies van de taal.

Stap 4

Implementeer een module of parser. Bij de invoer zou het een lijst met tokens moeten ontvangen die zijn voorbereid in het stadium van lexicale ontleding. Ontwikkel recursieve algoritmen voor het controleren van syntaxis met behulp van het schema dat u in stap drie hebt gemaakt. Implementeer indien nodig mechanismen voor foutherstel. Voeg functionaliteit toe aan de parseeralgoritmen om een boomstructuur te bouwen voor het berekenen van functies, klassenmethoden. Met de juiste structuur van parsing-algoritmen kan deze functionaliteit zonder problemen worden geïmplementeerd. Dit vermijdt de noodzaak om het als een aparte module te implementeren. De gecreëerde datastructuren moeten lijsten met instructies bevatten in de vorm van "platte" reeksen (rekenkundige uitdrukkingen uitgebreid tot postfix-vorm die geschikt zijn voor berekening op een stapelmachine, lussen omgezet in combinaties van reeksen van computationele instructies en voorwaardelijke of onvoorwaardelijke sprongen, enz.).

Stap 5

Maak indien nodig een optimalisatiemodule aan. Het moet de gegevensstructuren die in de vorige stap zijn voorbereid, verwerken en transformeren. Optimalisatiealgoritmen en methoden zijn zeer divers.

Stap 6

Ontwikkel een codegenerator. Bij het verwerken van de structuren die in de vierde of vijfde stap zijn voorbereid, moet het eenvoudig de reeksen abstracte instructies omzetten in instructies voor uitvoering op een specifiek platform.

Stap 7

Maak indien nodig een bindprogramma (linker) aan. Het zou de resulterende uitvoerbare module moeten vormen door de locatie van de codesegmenten te kiezen, de adressen van de labels te berekenen, enz.

Aanbevolen: