Weboldalunk cookie-kat használhat, hogy megjegyezze a belépési adatokat, egyedi beállításokat, továbbá statisztikai célokra és hogy a személyes érdeklődéshez igazítsa hirdetéseit. További információ
Kezdőoldal » Számítástechnika » Programozás » Mi lenne a jobb megoldás?

Mi lenne a jobb megoldás?

Figyelt kérdés
Fejlesztek egy programnyelvi interpretert. A gondom a kulcsszavakkal van, hogy ezeket ne lehessen használni változók azonosítójaként. Mi lenne jobb megoldás, ha elődeklarálnám ezeket változóként és lockolnám a hozzáférést, vagy valami más út?

jún. 24. 12:33
 1/8 A kérdező kommentje:

A változók kezelése úgy történik, hogy egy dinamikus tömbben nyernek elhelyezést, egy-egy név-érték páros formájában. A tömb mérete mindig a változók számához igazodik.

Arra gondoltam, hogy az interpreter inicializálásánál a nyelv kulcsszavait változóként deklarálnám, tehát elhelyezném a kulcssaztavakat ebben a dinamikus tömbben és az eredetileg név-érték tartalmú struktúra kiegészülne egy boolean taggal is, amit a kulcsszavak esetében FALSE értékre állítanék.

Ha valaki tud valami ettől különböző, lehetőleg jobb, praktikusabb megoldást a kulcsszavak kezelésére, azt szívesen venném.

jún. 24. 13:24
 2/8 anonim ***** válasza:
Müködhet úgy is, ahogy írtad, de ezt úgy sokás megoldani, hogy már a tokenizálásnál felismered, hogy az az azonosító egy kulcsszó és egy megfelelö tokent adsz vissza(nem pedig egy olyat, amit változóknál használsz)
jún. 24. 13:37
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

2-es vagyok.

A te módszered csak akkor fog müködni szépen, ha a kulcsszavaidnak nincs speciális szintaxisa(mint pl a lisp nyelvekben).

Gondolj csak bele, hogy pl a for ciklushoz tartozik egy 'for' kulcsszó, a nyelvedben meg leírod azt, hogy:

for i in (0..5) <- tegyük fel, hogy ez egy valid részlet.

Ha ezt tokenizálod, akkor kapsz valami olyan token streamet, hogy:

ID(for), ID(i), ID(in), L_BRACKET, LITERAL(0), DOTDOT, LITERAL(5), R_BRACKET.


Mivel ugyanolyan fajta tokent használsz(ID) a kulcsszavaidra(for, in) mint a változóidra(i), ezért a szintaktikai parseolásnál nem fogod tudni kiszürni az ilyen sorokat:

a b c (1 .. 5)

gondolom ennek a sornak nem kéne validnak lennie. De ezt már csak valami szemantikai ellenörzésnél fogod tudni kiszürni.

jún. 24. 13:48
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Jó az, amiket írsz, de én a forráskód feldolgozása során nem feleltetem meg a kulcsszavakat vagy a nyelv operátorait belső azonosítókkal. Bár tény, hogy általában így szokás ezt, ahogy te írod.

Az interpreter szerkezete roppant egyszerű. Első lépésben megtisztítja a kódot, tehát kiszórja a komment sorokat és némi előfeldolgozást végez, ami annyit tesz, hogy regisztrálja a függvények és a main loop belépési címét. Ezután soronként dolgozza fel és hajtja végre a forrást. Nincs tokenizálás, meg szintaxisfa.

jún. 24. 14:21
 5/8 anonim ***** válasza:
50%

LooooooooL

Végülis kb 80 éves szakirodalom van arról, hogy hogyan kell egy nyelvet/fordítót/interpretert megírni, de végülis minek vesztegetné az ember a drága idejét ilyen bohóckodásokkal. :D :D

Meg amúgyis minek kellenének egy nyelvbe függvények vagy egyéb bármilyen más úri huncutságok.

jún. 24. 14:46
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Arról nincs semmiféle szakirodalom, hogy hogyan kell. Arról van csak, hogy hogyan lehet. Hát igen, úgy is lehet. Meg másképpen is.
jún. 24. 15:06
 7/8 anonim ***** válasza:
Váó.
jún. 24. 15:58
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Összességében arról van szó, hogy ez az egyszerű kis interpreter egy részfeladat megkönnyítésére lett létrehozva. Teszi is a dolgát, ahogy kell. Nem lett 100 %-osan hibatűrő, mert nem láttam értelmét, csak az idő ment volna el vele. Elvégre, nyilván nem fogom, mondjuk a THEN kulcsszót változó azonosítóként felhasználni, ráadásul, egyedül én használtam eddig az interpretert.

A helyzet most változott, mert úgy alakult, hogy más is használni fogja ezt a vackot, neki meg nem szeretném úgy a kezébe adni, ahogy most van, mert ha így használja majd és belefut egy két hibába, az az egészről igénytelenséget sugalmazna.

Nincs nagy jelentősége a kérdésnek, mert az általam vázolt módon kivitelezhető a dolog csak kiváncsi voltam, akad-e valami más, frappánsabb megoldás.

Az első válaszolónak nagyon köszönöm a remek megállapításait, észrevételeit, a második válaszolónak meg azt javasolnám, hogy ne itt adjon kioktató jellegű "tanácsot" másoknak, hanem inkább ő fogadja meg, egy pszichológus tanácsait, mert innen úgy tűnik, hogy nagyon ráfér.

jún. 24. 16:28

Kapcsolódó kérdések:





Minden jog fenntartva © 2022, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | WebMinute Kft. | Facebook | Kapcsolat: info@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!