Főlap
Projektek
Linkek
|
|
Projekt név
|
MyPascal
|
|
Rövid leírás
|
Pascal szintaxisra épülő, gyengén típusos szkriptnyelv interpreter Delphiben.
A projekt célja egy jól használható, natív és DLL alapú interpreter megvalósítása,
és a 2005-ös évi Országos TDK-n, valamint a Dimpomatervezéshez való felhasználása.
|
|
Utolsó frissítés dátuma
|
2005. Március 21., Hétfő, 14:00
|
|
Verziószám
|
1.5.0.59
|
|
Letöltés
|
Interpreter.zip (1 222 632 bájt)
MyPascal_DLL.ZIP (1 416 490 bájt)
JMyPascal.zip
|
|
Dokumentáció
|
Docs.zip (337 943 bájt)
HTML Dokumentáció
|
|
Állapot
|
AKTÍV
|
Képességek
Telepítés
Leírás
Hírek
2005. Március 21., Hétfő, 14:00
|
|
A MyPascal Interpreteren két súlyos hibára derült fény:
|
2005. Február 28., Hétfő, 23:00
|
|
Verziószámot váltott az interpreter: 1.5;
Jelentős frissítések történtek:
- A DLL számtalan függvénnyel bővült
- Elkészítettem egy C++ header fájlt, ami segíthet a DLL használatában (függvény prototípusok)
- Készítettem egy Visual Basic deklarációt is a DLL függvényeiről, valamint van egy Excel-makró példa
- Elkeztem (át)alakítani a dokumentációt. Mostantól HTML alapú lesz az egész (Sokkal platformfüggetlenebb és szebb)
- A nyelv fontos bővítést kapott: Tömb mezőinek elérése a pont (.) operátorral. (azaz Tomb['elem'] -> Tomb.elem)
- Új, hasznos belső függvények: Record, SetLength
|
2005. Február 14., Hétfő, 23:00
|
|
Elkezdtem kialakítani az interpreter DLL megfelelőjét. Eddig csak pár eljárás lett
közzétéve, de hamarosan bővül a helyzet. Feltehetőleg a Delphi közeli és DLL
alapú interpreter vonal kicsit ketté válik (a szkript nyelv azonos).
|
2005. Január 29., Szombat, 11:00
|
|
A projekt normális honlapot kapott.
|
Képességek
A MyPascal nyelv a szabványos Pascal némiképp módosított változata. A módosítások
részben egyszerűsítések, részben fejlesztések. A nyelv megalkotásakor a Delphi [8],
a JAVA [6], valamint a PHP nyelv szolgált mintául [10].
A szkriptnyelv eltérései a Pascal nyelvtől:
- nincsenek szigorúan típusos változók,
- csak függvényeket lehet deklarálni, eljárásokat nem,
- minden helyi változó inicializált, vagyis nem tartalmaz véletlenszerű adatot,
- a helyi változóknak is lehet kezdőértékük,
- a kezdőértékek nem lehetnek kifejezések,
- nincsenek rekordok, felhasználó által deklarált típusok,
- az értékadás művelet is kifejezésnek minősül, így egymásba ágyazhatók,
- egy utasításban többszörös hozzárendelés is elvégezhető,
- az alapvető operátorok automatikus típuskonverziót hajtanak végre,
- FOR...IN...DO szerkezet (új a Delphi 9-ben),
- a paraméter nélküli függvényhívást mindig jelezni kell üres zárójellel,
- minden tömb dinamikus és elemei tetszőleges értékeket tárolhatnak (rekordok is
helyettesíthet),
- a CASE szerkezet nemcsak megszámlálható típusú értékeket tartalmazhat, hanem pl.
szöveget vagy szövegtartományt is,
- A tömbök mindig nullától indexelődnek, továbbá lehetőség van szöveges tömbindexek
megadására is,
- függvények visszatérési értékeit csak a 'result' változón keresztül lehet beállítani,
és nem a függvény nevéhez történő hozzárendeléssel,
- a 'continue' és 'break' pascal utasítások függvényekké váltak, melyeknek meg lehet
adni, hány egymásba ágyazott ciklusból lépjenek ki,
- az 'exit' pascal utasítás is függvénnyé vált, paraméterében megadható a visszatérési
érték, akárcsak a C-ben a 'return',
- nincsenek mutatók, csak korlátozott képességű referenciák,
- a stringek nem kezelhetők tömbként, hanem beépített függvények szolgálnak a karakterek
módosítására és lekérdezésére.
Telepítés
A unitokat a Delphi Library Path útvonalába fel kell venni, illetve DLL esetén a program fájl
mellett kell lennie. Ha közvetlenül implementáljuk saját programunkba, akkor a uses listába fel
kell venni a szükséges unitokat.
Leírás
A számítógépek programozásában a programnyelvek szolgálnak arra, hogy a programozó a
megoldandó problémáját a számítógéppel közölje. Egy hatékony programnyelv nemcsak a probléma
megfogalmazását, hanem a program megtervezését és megírását is megkönnyíti.
Egy probléma számítógépes megoldása annál könnyebb, minél közelebb van az adott probléma a
programozási nyelvhez, azaz a probléma megfogalmazásában használt konstrukciók megtalálhatók a
programnyelvben, és ha az adott programozási nyelv független a számítógéptől. Ezeket a
nyelveket nevezzük magas szintű programnyelveknek [2]. Ugyanakkor a számítógépek csak egy
saját, speciális alacsony szintű nyelvet, a gépi kódot fogadják el, ami nem más, mint nullák
és egyesek sorozata. Ez a sorozat az eredeti probléma magas szintű programnyelven történt
megfogalmazásától nagyon különbözik. A két programnyelv közötti különbség a fordítóprogramok
felhasználásával hidalható át [2].
Egy magas szintű programnyelvről alacsony szintű programnyelvre fordításon kívül vannak olyan
területek is, ahol a fordítókban alkalmazott módszerek jól használhatók. Ilyenek például a
következők [2]:
- szilikon-fordító: a fordítóprogram bemenete egy olyan magas szintű programnyelven
megírt program, ahol a nyelv változói nem memóriahelyekhez tartoznak, hanem áramkörökben
levő logikai jeleket vagy jelcsoportokat reprezentálnak, a kimenete pedig a leírt
logikai rendszernek megfelelő nyomtatott áramkör terve,
- lekérdező-rendszer: egy relációkat és logikai műveleteket tartalmazó feltételrendszert
olyan utasításra fordít le, amellyel egy adatbázisnak a feltételt kielégítő rekordjai
megkereshetők,
- szöveg-átalakító rendszer: bemenete egy szöveg és a szövegre vonatkozó módosító
parancsok, kimenete pedig a szövegnek a parancsokkal átalakított képe.
A fordítók (compilerek) és értelmezők (interpreterek) között van némi különbség.
A fordítók az adott processzor és operációs rendszer számára közvetlenül érthető és
feldolgozható formájúvá alakítják a bemenő forráskódot. Rendkívül hatékony és gyors
kód keletkezik így. Hátránya, hogy a forráskód módosítása után mindig újra és újra le
kell fordítanunk az egész programot (vagy DLL-t). Ezzel szemben az értelmezők a
forráskódot nem közvetlen gépi kódra fordítják le, hanem egy ún. köztes formára.
Ez a köztes forma némiképp hasonlíthat a gépi kódra, de a benne levő utasítások az
interpreternek szólnak és nem közvetlenül a processzornak. Előnyük, hogy menet közben a
forráskód módosítása után újrafordítva a azonnal interpretálhatók. Hátrányuk a lassúság,
mivel a processzor közvetve hajtja végre a programot.
|