Projektek: MyPascal
Főlap
Projektek
MyPascal
PLC
NWNEdit
QuickExpr
WebUpdate
Utils
Linkek

websas.hu
 

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:
  • A fordító elszállt, hogyha olyan függvényt deklaráltak, aminek nem volt paramétere:

    function x;

    A hibát a paraméter számláló inicializálatlansága okozta. A HIBA JAVÍTVA LETT.

  • A végrehajtó egység nem kezelte megfelelően a veremszerkezetet. Ez a hiba akkor jött elő, ha valaki függvényben függvényt deklarált és használt. Amennyiben nem ágyazódott egymásba több függvény, a hibának semmi hatása nem volt. A HIBA KI LETT JAVÍTVA.

 
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.

(C) Karnok Dávid, 2005