SzámítógépekProgramozás

Broadcaster - jelentése ... Típusú fordító. Átalakítás és sugárzott műsorok

Programok, valamint az emberek lefordítani egyik nyelvről a másikra szüksége tolmácsra vagy fordító.

alapfogalmak

A program egy nyelvi ábrázolása számítások: i → P → P (i). Egy tolmács egy olyan program, amely szállított a bemeneti P program és néhány bemeneti x. Ez végzi a P x: I (P, x) = P (x). Az a tény, hogy csak egy fordító képes végrehajtani az összes lehetséges programot (ami lehet a formális rendszer) egy nagyon mély és jelentős felfedezés Turing.

A processzor tolmácsot programok gépi kódban. Általában túl drága, hogy írjon tolmácsok magas szintű nyelvek, így lefordítani olyan formában, hogy könnyebben értelmezhető legyen.

Bizonyos fajta fordítói nagyon furcsa nevek:

  • A szerelő fordítja assembly programokban a gép nyelvére.
  • A fordító lefordítja a magas szintű nyelvi alacsonyabb nyelvet.

Broadcaster - egy olyan program, amely veszi bemeneti adatok a program egyes nyelvi S és gyárt T program oly módon, hogy mindketten ugyanazt a szemantika: P → → X Q. Azaz, ∀x. P (x) = Q (X).

Ha sugárzott az egész programot valami értelmezhető, ez az úgynevezett egy összeállítás a végrehajtás előtt, vagy AOT összeállítása. AOT fordító lehet használni a sorozatban, amely utóbbi gyakran a assembler, például:

A forráskód lefordítását → (fordító) → → assembly szerelő (compiler) → → CPU gépi kódot (interpreter).

Operatív vagy dinamikus összeállítása következik be, ha a program sugárzott, amikor végre más korábban összeállított részét. JIT-fordító emlékszik, amit már kész, hogy ne ismételje meg a forráskódot újra és újra. Ők is termelnek adaptív összeállítása és újrafordítás viselkedése alapján a program végrehajtási környezet.

Sok nyelv lehetővé teszi, hogy végre kódot fordítási időben, és összeállítja az új kódot a futás során.

fordítás színpadon

Broadcast a következő lépéseket tartalmazza elemzése és szintetizáló:

A forráskód elemző → → → elvi ábrázolása generátor (szintetizátor) → Cél kódot.

Ez annak köszönhető, hogy ezek miatt:

  • Bármely más módszer nem alkalmas. Szófordítás egyszerűen nem működik.
  • Jó műszaki megoldás: ha azt akarjuk, hogy írjon fordítók M és N forrás nyelven célzott kell írni csak M + N egyszerű programok (polukompilyatorov) helyett M × N komplex (összesen fordító).

A gyakorlatban azonban, a fogalmi képe nagyon ritkán kifejező és elég erős ahhoz, hogy valamennyi elképzelhető forrás- és célnyelv. Míg néhány tudtak került közel ehhez.

Valódi fordítóprogramok áthaladnak több szakaszban. Amikor létrehozza a saját fordító nem szükséges megismételni a kemény munka, hogy az emberek tettek, hogy hozzon létre reprezentációk és generátorok. Akkor fordítja le a nyelv közvetlenül JavaScript vagy C és kihasználják a meglévő JavaScript-motort és a C fordító a többit. Ön is használja a meglévő köztes képviselet és a virtuális gépek.

rekord fordító

Broadcaster - egy program vagy hardver, amely az érintett három nyelven: a forrás, a cél és a bázis. Ők lehet írni egy T-alakú, az eredeti behelyezése balra, jobbra és cél bázis alább.

Háromféle fordítóprogramok:

  • Broadcaster - jelentése samokompilyator ha megfelel az alapvető forrás nyelvet.
  • Fordító, amely célnyelv a kiindulási, az úgynevezett samorezidentnym.
  • Broadcaster - határon fordító, ha ő célzott és alapvető különböző nyelveken.

Miért fontos ez?

Akkor is, ha soha nem igazi fordítót, jól ismeri a technológiát annak létrehozását, mert a koncepció erre a célra széles körben használják, mint például:

  • formázás szöveget;
  • nyelvi kérdések adatbázisokhoz;
  • korszerű számítógépes architektúra;
  • általános optimalizálási problémák;
  • GUI;
  • szkriptnyelvek;
  • vezérlők;
  • virtuális gépek;
  • A gépi fordítás.

Ezen felül, ha azt szeretné, hogy írjon preprocessors, kapcsolókat, rakodógépek, hibakereső és profilerek, akkor megy keresztül ugyanazon lépéseket írásakor fordító.

Azt is megtanulják, hogyan kell jobb programok létrehozása óta a fordító a nyelv, amely jobb megértéséhez a bonyolult és félreértések. A tanulmány általános elveinek műsorszórás is lehetővé teszi, hogy legyen egy jó tervező nyelvet. Tehát nem mindegy, hogy hogyan meredek a nyelvet, ha nem lehet hatékonyan végrehajtani?

átfogó technológiai

fordítási technológia magában foglalja a különböző területeken a számítógép-tudomány:

  • formális elmélet nyelv: nyelvtani elemzés, kiszámíthatóság;
  • számítógép architektúra: utasításkészletei, RISC vagy CISC, futószalag feldolgozó mag órajel ciklust, stb.;
  • fogalmakat programozási nyelvek, például ellátó-szabályzás, feltételes, iteráció, rekurzió, funkcionális felbontás, modularitás, a szinkronizálás, meta-programozás, hatályát, állandó altípusai, sablonok, kimenet, prototípusok, kommentárok, áramlás, monádoknak, postaládák, továbbra is , joker, a reguláris kifejezések, tranzakciós memória, öröklés, polimorfizmus, mód beállításait, és így tovább., stb.;
  • absztrakt nyelv és virtuális gépek;
  • algoritmusok és adatszerkezetek: reguláris kifejezések, elemzés algoritmusok, grafikai algoritmusok dinamikus programozás, képzés;
  • programozási nyelvek: szintaxis, szemantika (statikus és dinamikus), támogatás paradigmák (strukturális, OOP, funkcionális, logikai, verem, párhuzamosság, meta-programozás);
  • szoftver (fordítóprogramok általában nagy és komplex): lokalizáció, caching, componentize, API-felületek, újrafelhasználás, szinkronizáció.

fordítóprogram tervezés

Néhány problémák a fejlesztés a valós fordító:

  • Gondok vannak a forrás nyelvet. Vajon könnyű lefordítani? Van preprocessor? Hogy milyen típusú? Van egy könyvtárban?
  • Csoportosítása fordító halad: egy-vagy több-utas?
  • A mértékű optimalizálást kívánt. Gyors és tisztátalan sugárzott műsorok csekély vagy semmilyen optimalizálás lehet normális. Over-optimalizálása fordítóprogram lassú, de jobb kódot futás közben is megéri.
  • A szükséges mértékű hiba észlelése. Lehet egy fordító csak megáll az első hiba? Hogy mikor kell leállítani? Akár bízik a fordító hibajavítást?
  • A rendelkezésre álló eszközöket. Ha az eredeti nyelv nem nagyon kicsi, a szkenner és a generátor elemző van szükség. Vannak is generátorok, kódgenerátorok, de ezek nem olyan gyakori.
  • Type of target kódot generál. Megválaszthatjuk tiszta kiegészíteni vagy virtuális gép kódját. Vagy csak írj egy bejegyzést része, amely létrehoz egy népszerű köztes reprezentációs, mint LLVM, RTL, vagy JVM. Vagy, hogy a fordítás az eredeti forráskód C vagy JavaScript.
  • A méret a cél kódot. Kiválaszthatja assembly nyelv, egy hordozható gépi kód, gépi kód memória képet.
  • Retargeting. Amikor a beállított generátorok jó, hogy van egy közös bemeneti szakasz. Emiatt a legjobb, ha van egy generátor van a bemeneti sok részből áll.

fordítóprogram architektúra: alkatrészek

Ezek a fő funkcionális komponensek a fordító generál natív kód (ha a kimeneti program olyan program C-ben, vagy egy virtuális gép, akkor nem kell olyan sok lépésben):

  • A beviteli program (folyási nyomok) tápláljuk be a lapolvasó (lexikális elemző), amely átalakítja azt áramban zsetont.
  • Értelmező (parser) építése, absztrakt szintaxis fát.
  • Szemantikus elemző bomlik szemantikai információkat és ellenőrzi a facsomópontok hibákat. Ennek eredményeként épült szemantikus gráf - abstract syntax tree további tulajdonságai és a teremtett kapcsolatot.
  • Intermedier kódgenerátor épít áramlási gráf (tuple vannak csoportosítva fő blokkok).
  • Gépfüggetlen kódot optimalizáló folytat mind a helyi (az alapegység) és globális (minden blokk) optimalizálás alapvetően belül maradó rutinok. Csökkenti felesleges kódot, és egyszerűsíti a számításokat. Az eredmény egy módosított áramlási gráf.
  • Generátor kötődik célkódlapokkal alap blokkokat egy egyenes vonalú átviteli vezérlő kódot, ami egy tárgy fájl assembler virtuális regiszterek (esetleg hatástalan).
  • Gépfüggő optimalizáló, linker memóriát nyilvántartások közötti teszi tervezi csapatok. Ellátja az átalakítási programot assembly nyelven ezen a szerelvény egy jó hasznát pipeline.

Ezen túlmenően, a használata hiba detektálás alrendszer kezelő és szimbólum táblázatokat.

Lexikális elemzés (scanning)

A szkenner átalakítja a adatfolyamforrást karakter áramába zsetonok, térközök eltávolításával, észrevételek és bővülő makrókat.

Szkennerek gyakran nehézségekbe ütköznek, így-e vagy sem, hogy vegye figyelembe az ügyben, margók, a sortöréseket és beágyazott észrevételeit.

Esetlegesen előforduló hibákat szkennelés során, az úgynevezett lexikális és tartalmazza:

  • karakter, amely nem az ábécé;
  • meghaladja a karakterek száma egy szó vagy sor;
  • nem egy zárt jel vagy szövegkonstans;
  • fájl vége a megjegyzésben.

Elemzésére (elemzés)

Az értelmező átalakítja a szekvenciáját zsetonok egy absztrakt szintaxis fa. Minden levél a fában tároljuk, mint egy tárgy a mezőkre, amelyek közül sok a maguk facsomópontok. Ebben a szakaszban nincsenek ciklusok. Amikor létrehoz egy elemző kell figyelni, hogy a komplexitás nyelvtani (LL vagy LR), és megtudja, hogy van-e szabályokat egyértelműsítő. Néhány nyelv nem igényel szemantikai elemzés.

Talált hibák ebben a szakaszban hívják szintaxis. Például:

  • k = 5 * (7 - y;
  • J = / 5;
  • 56 = x * 4.

szemantikai elemzés

A szemantikai elemzés , hogy ellenőrizze a megengedhetőségével szabályok és társult részei az elemzési fa (lehetővé téve hivatkozási nevek behelyezése művelet implicit típusátalakítások, és így tovább. D.) kialakítására a szemantikus gráf.

Nyilvánvaló, hogy a készlet elfogadhatóságát szabályok különböző nyelveken más. Ha össze a Java-alapú nyelveket, fordítóprogramok lehet találni:

  • többváltozós nyilatkozatot annak hatálya alá;
  • utalás egy változót, majd nyilatkozatát;
  • megnevezésre a be nem jelentett;
  • megsértése szabadalmi jogok;
  • túlzott vagy nem megfelelő számú érv eljárás hívás;
  • típus hibás.

generáció

Köztes kódot generációs termel gráf tagjai sorok, csoportosítva alapvető blokkok.

kódgenerálási termel valódi gépi kód. A hagyományos fordítóprogramok a RISC-gép az első lépést, akkor létrehozhat egy szerelő végtelen számú virtuális regiszterek. Mert CISC-gép valószínűleg nem fog megtörténni.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 hu.delachieve.com. Theme powered by WordPress.