Kezdőoldal » Számítástechnika » Programozás » Hogyan csinálják (csinálták)?...

Hogyan csinálják (csinálták)? többi lent

Figyelt kérdés
Sziasztok! érdeklődnék,hogy programozási nyelvet,hogy készítették ?? valaki leírná részletesen!
2012. jún. 4. 16:26
 1/3 zsomkovacs ***** válasza:

Huhh... Elég nehezet kérdezel, ezt 6. félévben oktatják nálunk (ELTE-IK) BSc-n.


Vázlatosan kb. úgy, hogy megalkotnak egy nyelvet (ez lesz a programozási nyelv), amit különféle szabályokkal le lehet írni. Fontos szempont, hogy algoritmikusan eldönthető legyen, hogy eleme-e egy szöveg (a program) a nyelvnek - ez azt jelenti, hogy a program érvényes. Ha eleme, akkor egy másik algoritmus meghatározza, hogy melyik elemi kifejezésekből és milyen módon épül fel a program, ezt a szerkezetet pedig egy fordító újraépíti egy másik nyelven (ez lehet gépi kód, de akár egy magasabb szintű nyelv, pl. a .NET is). Ez éppen a fordítókra (compiler) igaz, de az értelmezők (interpreter) is hasonlóan működnek, csak azok parancsonként fordítanak.


A fordítót/értelmező meg kb. bármilyen rendelkezésre álló nyelven meg lehet írni, akár gépi kódban is, csak úgy macerás.

2012. jún. 4. 17:13
Hasznos számodra ez a válasz?
 2/3 Srapnel ***** válasza:

Egy nyelvet első sorban a szintaxisa jellemez.


Egy nyelv készítésekor először ki kell találni magát a nyelvet: mire akarod használni, milyen elemei lesznek, miket kell tudnia (előzőnek: nem feltétlenül kell "teljesnek" lennie, hiszen lehet egy leíró nyelv is valami doménre). Ha a koncepció megvan, akkor általában egy másik nyelven szabatosan leírják. Úgy kell elképzelni, mint amikor egy szöveges feladatot képletekké formálnak, hogy a matematikai módszerekkel már kiértékelhető legyen. Itt is így van, a konkrét "képleteket" ld. lent.


A nyelvhez kell egy parser. Ez nem más, mint egy program, ami a készített nyelven írt szöveget fel tudja dolgozni. Hogy mit csinál vele, ld. lent.


A feldolgozás általában úgy történik, hogy legalább két menete van a szöveg feldolgozásának:


1. Lexikai analízis - Ekkor egy célprogram a programkódot "szavakra", illetve elemeire bontja, mint pl. kulcsszavak, számok, stringek, műveleti jelek, stb. Ilyenkor általában a megjegyzések és a szóközök is "eltűnnek" (olyan nyelveknél, ahol a whitespace-ek nem jelentenek semmit), illetve lenyelődnek. A szabályokat, amik megmondják, hogy hogyan és mit kell nyelvi elemnek értelmezni, egy ehhez hasonló nyelven is meg lehet fogalmazni: [link] Ekkor persze ezt a leírást szintén egy program dolgozza föl, ami készít egy másik programot, ami a lexikai analízist végrehajtja. Ez utóbbi neve általában a Lexer. Ez része a fent említett, nyelvi szöveget feldolgozó programnak.


2. Parsolás (nyelvi elemzés) - Ez a fázis már nyelvi elemek sorozatát látja, nem karakterek sorozatát. Az előző leíráshoz hasonló formális "képlettel" megadható: [link] Úgy is értelmezheted, hogy van egy egyszerű formája annak, hogy leírd, milyen elemnek kell mi után hányszor következnie ahhoz, hogy a nyelved érvényes mondatai előálljanak. Ebből a leírásból készül a parser. Ez a felismert nyelvi struktúrákból általában egy fa struktúrát készít: [link] Ezt úgy képzelheted el, mint egy absztrakt, szövegfüggetlen reprezentációja a bevitt forráskódnak, ahol már egyértelmű, hogy mit jelent a program.


3. A további teendők már attól függenek, hogy mi a cél:

3.a. Az absztrakt szintaxis fát (AST) közvetlenül is lehet futtatni (ha úgy írod meg a fát alkotó csúcsokat, hogy legyen futtatási funkciójuk).

3.b. Az egész fát egy algoritmus lefordítja egy adott processzor és platform gépi kódjává (ezek a compilerek).

3.c. Az egész fát egy algoritmus lefordítja valami virtuális gép gépi kódjává (pl. Java, .NET nyelvek).

3.d. Az egész fából egy program egy másik nyelven írt forrást készít (cross-compiler).

3.e. Az AST felhasználható egy editorban szintaktikai színezésre (amikor a szerkesztő beszínezgeti az elemeket).

3.f. Végezhetsz kódanalízist (pl. megszámolhatod, hogy miből mennyi van a kódban, vagy hány változó, stb.)

stb.

2012. jún. 5. 08:27
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Úhhhhhhhh b*szki ez azért nem olyan egyszerű ;) de csak érdekelt :D komoly aki tud ilyet készíteni
2012. jún. 5. 14:09

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!