Kuidas Kirjutada Tõlk

Sisukord:

Kuidas Kirjutada Tõlk
Kuidas Kirjutada Tõlk

Video: Kuidas Kirjutada Tõlk

Video: Kuidas Kirjutada Tõlk
Video: Kuidas saada TikTokis KUULSAKS! 2024, Aprill
Anonim

On palju programmeerimiskeeli, millel on oma ainulaadsed omadused. Kuid selleks, et mõnes neist kirjutatud programm töötaks, peate selle edastama. Mõnikord töötatakse programmeerimiskeeled välja nende enda vajaduste jaoks (näiteks automatiseerimise tugi suurtes rakendustes) ja siis on vaja kirjutada tõlk.

Kuidas kirjutada tõlk
Kuidas kirjutada tõlk

Vajalik

  • - lähtekeele loomulik grammatika või BNF;
  • - arendusvahendid.

Juhised

Samm 1

Valmistage andmed ette lähtekeelse teksti leksikaalseks analüüsiks. Loetlege kõik märgid keeles. Jagage need kategooriatesse (märksõnad, numbri- ja stringiliitrid, identifikaatorid, tühik, kirjavahemärgid jne).

2. samm

Rakenda moodul või lekser. Sisendis peaks see saama "toore" andmevoo ja väljundis moodustama loendi elementidest, mis sisaldavad märke ja nende tüübi identifikaatoreid järjestuses, milles need algtekstis esinevad. Parsimisprogramm võib olla üsna lihtne " ühetasandiline "skanner. Vigade taastamise rakendamine pole mõttekas. Kehtetuid tähemärke tuleks käsitleda vigadena.

3. samm

Valmistage andmed sõelumiseks ette. Lähtekeele loomuliku grammatika või BNF põhjal koostage selle LL1 grammatika. Selle grammatika tüübi põhjal koostage sõelumisskeem kehtivate märkide kategooriate ja keele semantiliste konstruktsioonide osas.

4. samm

Rakendage moodul või parser. Sisendina peaks see saama leksikaalse sõelumise etapis koostatud märgendite loendi. Arendage rekursiivsed süntaksikontrolli algoritmid, kasutades kolmandas etapis loodud skeemi. Vajadusel rakendage vigade taastamise mehhanismid. Funktsioonide, klassi meetodite arvutamiseks puu ehitamiseks lisage parsimisalgoritmidele funktsionaalsus. Parsimisalgoritmide õige struktuuri korral saab seda funktsionaalsust ilma probleemideta rakendada. See väldib vajadust seda eraldi moodulina rakendada. Loodud andmestruktuurid peaksid sisaldama käskude loendeid "lamedate" jadade kujul (postfixi vormis laiendatud aritmeetilised avaldised, mis sobivad virnamasinas arvutamiseks, arvutuslike juhiste järjestuste kombinatsioonideks ja tingimuslikeks või tingimusteta hüpeteks jne)..

5. samm

Vajadusel looge optimeerimismoodul. See peaks töötlema ja muutma eelmises etapis ettevalmistatud andmestruktuure. Optimeerimisalgoritmid ja -meetodid on väga erinevad.

6. samm

Arendage koodigeneraator. Neljandas või viiendas etapis ettevalmistatud struktuuride töötlemisel peaks see lihtsalt teisendama abstraktsete käskude jadad konkreetsel platvormil täitmise juhisteks.

7. samm

Vajadusel looge sideaine programm (linker). See peaks moodustama tulemuseks oleva käivitatava mooduli, valides koodisegmentide asukoha, arvutades siltide aadressid jne.

Soovitan: