Kezdőoldal » Számítástechnika » Programozás » Programozási nyelvet hogy...

Programozási nyelvet hogy csinálnak?

Figyelt kérdés
Hogyan oldják meg, hogy az egyes parancsok mit jelentsenek?
2023. jún. 11. 23:32
 1/8 anonim ***** válasza:
11%

Programozási nyelvet úgy terveznek, hogy először is, szükségét látják egy olyannak, ami még nincs. Ezért nekiállnak egy új nyelv alapkoncepcióját kidolgozni, a nyelv kontúrjait megfogalmazni.

Ez azt foglalja magában, hogy eldönti a konstruktőr, hogy interpríteres vagy kompájleres nyelv lesz, hogy általános célú nyelv születik, vagy speciális.

Ha ez is megvan, akkor már csak a nyelv által használt adattípusokat és a nyelv szintaxisát kell kimunkálni. Az, amit kérdezel, semmit nem jelent. Hogy most azt gépeli valaki, hogy "while" vagy "amíg" vagy "kraksz", esetleg "blut", az nem oszt és nem szoroz.


A nyelv szintaxisának pontos leírására meg ott van az EBNF. Erre rákereshetsz, ha akarsz.

2023. jún. 12. 00:04
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
37%
Úgy oldják meg, hogy megírják, egy már létező másik programozási nyelven...
2023. jún. 12. 00:15
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
3%
Programozási nyelvet nem lehet programozási nyelven írni.
2023. jún. 12. 01:31
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
65%

Lehet Kérdező a fordítós nyelvekre gondolt és hogy miképpen társítanak szavakhoz utasításokat.

Minden utasításnak rögzítve van az adott platformon a gépi kódú megfelelője.

2023. jún. 12. 02:32
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
41%

"Minden utasításnak rögzítve van az adott platformon a gépi kódú megfelelője."


Ez azért nem teljesen igaz. Ha így volna, akkor nem lenne különbség a fordítók között, pedig van.

Egy utasítás lehet egyszerűbb és összetettebb. Ha összetett, akkor adott nyelv interpreterének, compilerének írójától függ, hogy miképpen implementálja azt az utasítást, de még az egyszerűbb utasítások zöme is egynél több gépi kódú utasításból áll össze. Egy növekményes (for) ciklus is több gépi kódú utasítást foglal magába, hiszen nyilván kell tartani a ciklusváltozót, inkrementálni/dekrementálni kell, van feltételvizsgálat, ahol is komparálni kell a felső- vagy alsóértékkel, és ez még a legegyszerűbb eset.

De ez már nem a programozási nyelv megalkotásához, hanem csak egy adott nyelv compilerének implementálásához tartozó feladat.


Egy programnyelv magából a nyelv szintaxisából és néhány belső szabályból áll.

2023. jún. 12. 07:56
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
80%

Nekünk az egyetemen volt olyan tárgy, ahol fordítóprogramot fejlesztettünk egy egyedi nyelvhez. 4 fő lépése volt ennek.


Tokenizálás

Ebben a részben felsoroltuk a tokeneket, hogy mik szerepelhetnek a kódban, és ebbe skatulyáztuk be az a karaktersorozatot, amit te kódnak hívsz. Tehát pl int x = 10; -ből az lett, hogy <TÍPUS><VALTOZONEV><E.OPERATOR><SZAMLITERAL><PONTOSVESSZO>


Szintaktikai elemzés

Ebben vizsgáltuk meg, hogy megfelel-e a kód a szintaktikai szabályoknak. Tehát pl hogy <E.OPERATOR> bal oldalán nem állhat <SZAMLITERAL>, vagy hogy <FOR> után csak <ZAROJELNYIT> állhat stb.


Szemantikai elemzés

Azt már tudjuk, hogy a nyelv szabályai szerint íródott a kód, de itt vizsgáljuk, hogy van-e értelme. Pl, hogy nem-e használsz egy változónevet, mielőtt definiálnád. Vagy használod-e a for ciklusváltozóját két sorral lentebb, miközben nem tettél kapcsos zárójelet. Vagy hogy az if-be írt kifejezés boolean típusú-e, stb.


Ha mindennel megvagyunk, és a kód olyan, ahogy azt a szabályaink megkövetelik, és értelme is van, akkor jöhet a következő lépés.


Kódgenerálás

Itt kaptunk egy cheatsheet-et (amit persze tudni kellett), hogy assembly-ben hogy néz ki két szám összeadása, hogy néz ki egy forciklus, mit csinálsz a regiszterekkel, stb. És akkor szépen leprogramozod, hogy hogy lesz a for-ból assembly kód, meg minden egyébből. Miután előállt az assembly, után annak fordítójával elkészül a gépi kód az adott platformra.


Ha a 4 lépés megvan, akkor megalkottál egy új nyelvet. Ezt még ki lehet egészíteni egyebekkel, mondjuk kódoptimalizálással.

2023. jún. 16. 09:16
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

Ennek, amit leírsz, semmi köze a programnyelvek fejlesztéséhez.

Te csak egy valamilyen - már kész, kifejlesztett - programnyelv fordítójának az elkészítését ismerteted.

A 4. lépés megtétele után neked nem programnyelved lesz, hanem egy, már meglévő nyelvhez való fordítód.

2023. jún. 17. 00:06
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
100%

Igen, ez így van. Írtam is, hogy fordítóprogramot fejlesztettünk, a kérdező kiírásából az jött le nekem, hogy erre gondolt valójában.

A nyelv szabályrendszerének megalkotása egy nagy elméleti feladat, ami megelőzi a fordítóprogramot.

2023. jún. 17. 00:28
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!