SB ScriptBasic Általános Architektúra Peter Verhás Február 2002.

Slides:



Advertisements
Hasonló előadás
Operációs Rendszerek I.
Advertisements

Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
C++ programozási nyelv Gyakorlat hét
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
3. A programozás eszközei, programozás-technikai alapismeretek
SB Eszter SB Application Engine Peter Verhás 2002 április 9.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
JavaScript.
Dinamikus tömbök.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Java Típuskonverziók.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
VFP programozása report készítése menü készítése dinamikus elemek
Scriptnyelvek 9. gyakorlat Papp Gyula április 29.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
Szombathely Dinamikus WEB programozás: PHP és JSP.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
Operációs rendszerek gyakorlat 8. Gyakorlat Vakulya Gergely.
1 Bevezetés a funkcionális programozásba 2009.
A PHP (PHP: Hypertext Preprocessor) nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. Emiatt.
Podoski Péter és Zabb László. Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök.
Az ASP.NET programozási modell Ez az előadó neve beosztása vállalata.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
PHP oktatási tapasztalatok
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
Visual Basic 2008 Express Edition
Objektum orientált programozás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Podoski Péter és Zabb László. Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök.
WEBSTAR CSOPORT WC S ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE Marics Tamás június 20.
A Visual Basic nyelvi elemei
Java web programozás 7-8..
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
DLL használata és készítése Feladat
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Az 5,6,7 laborok VBA anyagának összefoglalása
Informatikai gyakorlatok 11. évfolyam
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Programstruktúrák. Program A program utasítások olyan sorozata, amely a számítógépen önállóan képes megoldani egy feladatot. A program háttértáron futtatható.
Adatstruktúrák Algoritmusok Objektumok
Programozási nyelvek típusossága.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Változók.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

SB ScriptBasic Általános Architektúra Peter Verhás Február 2002

SB Tartalom Fordítás, értelmezés általában ScriptBasic „fordító” felépítés, modulok Megfontolások, miért?

SB Hogyan fut le egy program? Fordítás vagy értelmezés a két véglet Kevert megoldások –Közbülső kódra fordít és értelmez (PASCAL p-code) –JIT fordítók közbülső kódról (Java,.NET)

SB A fordítás lépései Beolvasás Lexikális elemzés Szintaxis elemzés Közbülső kód generálás Optimalizálás Kód generálás Szerkesztés (link) –Szerkesztési optimalizálás Futtatás Futtatási modulok betöltése

SB Az értelmező lehetséges lépései Beolvasás –Értelmezés (benne tokenizálás, szintaxis elemzés) vagy Tokenizálás –Értelmezés (benne szintaxis elemzés) vagy Szintaxis elemzés és kódépítés Értelmezés

SB A három fő lépés Beolvasás Lexikális elemzés Szintaxis elemzés / kód építés Egybeintegráltan, pipe-line, „egyszerre” futnak, vagy Külön modul mindegyik Történelmi okok, memória ára, mérete, program források mérete...

SB Beolvasó Honnan olvas –Fájl –Adatbázis –Szabványos bemenet –TCP/IP socket –Másik szál által generált bájt sor Eredménye a beolvasott szöveg

SB Lexikális elemző Lehet reguláris kifejezés alapú, vagy Speciálisan adott célnak megfelelően megírt –előnyök, hátrányok Eredménye egy token sor Token: token ID attribútumokkal

SB Szintaxis elemző Táblázat vezérelt, vagy Speciálisan megírt –Előnyök hátrányok Milyen típusú nyelvet valósít meg? –LL(1), LR(1) –Compilers: principles, techniques and tools Aho, Setti, Ullman –Lex & Yacc Levine, Mason, Brown. O'Reilly, 1994 Eredménye szintaxis struktúra

SB Irodalom

SB Perl felépítés Beolvasás Tokenizálás, szintaxis elemzés, kód építés, közben futtatás (BEGIN blokk) Futtatás és ebben esetleg Újabb beolvasás stb.

SB XLISP rendszer Beolvasás Tokenizálás Szintaxis? A LISP-et nem kell elemezni!?!?!

SB ScriptBasic felépítés Beolvasó Tokenizáló Szintaxis elemző Építő Végrehajtó egymás után, külön modulokban, memóriában felépítve minden közbülső eredményt

SB Mi egy modul? Egy osztály, függvény csoport A globális adatok egy typedef struktúrába gyűjtve Többszálas

SB READER Beolvassa a teljes forrás programot a memóriába Láncolt listát hoz belőle létre Kezeli az include és import direktívákat reader.c

SB Beolvasó struktúra typedef struct _SourceLine { char *line; long lLineNumber; long LineLength; char *szFileName; struct _SourceLine *next; } SourceLine, *pSourceLine;

SB LEXER Speciálisan C-ben megírt (nem Lex) Eredmény: token lista Tábla definiálja a –szimbólumokat –Operátorokat, beépített függvényeket, kulcsszavakat Folytató sorok kezelése is itt történik lexer.c

SB Lexer struktúra typedef struct _Lexeme { enum LexemeType type; // type of the lexeme union { double dValue; // double value long lValue; // long value char *sValue; // string or symbol value } value; long sLen; //length of string or symbol char *szFileName; // where the lexeme is long lLineNumber; // where the lexeme is struct _Lexeme *next; // link to the next lexeme }Lexeme, *pLexeme;

SB Szintaxis analízis A token listából dolgozik Összetett, darabokból álló memória struktúrát készít (eNODE) Tábla definiálja –Parancsok szintaxisát –Unáris és bináris operátorokat –Beépített függvényeket –A kifejezések szintaktikájka a szokásos, „hard-coded” expression.c

SB Szintaxis eNODE struktúra typedef struct _eNODE { long OpCode; // the code of operation unsigned long NodeId; // the id of the node char *szFileName;// where the lexeme is long lLineNumber;// from which this syntax node is made union { // when the node is a command struct { union { struct _SymbolLABEL *pLabel; struct _eNODE *pNode; struct _eNODE_l *pNodeList; long lLongValue; double dDoubleValue; char *szStringValue; }Argument; long sLen; struct _eNODE *next; }CommandArgument; // when the node is an operation struct { struct _eNODE_l *Argument; }Arguments; // when the node is a constant struct { union { double dValue; long lValue; char *sValue; }Value; long sLen; //the length of the string constant }Constant; // when the node is a variable struct { unsigned long Serial; // the serial number of the variable }Variable; // when node is a user functions struct { pSymbolUF pFunction; // pointer to the function struct _eNODE_l *Argument; }UserFunction; }Parameter; } eNODE,*peNODE; Egy kicsit bonyolult, később részletesen megnézzük.

SB „Kód generátor” Feldolgozza az összepointerezett memória struktúrát Egy egyszerűsített, egybefüggő memóriaterületen levő, relatív pointereket használó kód. Ez a végső futtatható kód. Függvény SAVE és LOAD. builder.c

SB Builder cNODE struktúra Ha ha ha !

SB Végrehajtás A felépített kódot kapja meg, és végrehajtja Memóriát allokál a változóknak Kezeli a lokális változókat Kezeli a hiba helyzeteket,... execute.c

SB Segéd Modulok Memória kezelő modul ( myalloc.c ) Változó kezelő modul ( memory.c ) Külső modulokat kezelő modul ( modumana.c ) Szimbólum tábla kezelő modul ( sym.c )

SB Miért ez az architektúra? Fordíthatóság Gyors futtathatóság Programozó védelme

SB Fordíthatóság Legyen a nyelv fordítható –Ellenpélda: Perl BEGIN { print "almaAAA\n"; } zagyvavvavv "

SB Gyors futtathatóság A kód legyen újrafelhasználható –Nagyon fontos CGI scripteknél Szimbolikus információ nincs futási időben –Sebesség (n-edik változó elérése, vagy mindig keressük meg név szerint?)

SB Programozó védelme Szimbolikus információ nincs futási időben –Intellectual property protection –A felhasználó megvédése önmagától esetenként

SB Hátrányok Nincs futási időben változó név Nincs szimbolikus referencia Nincs eval ”” Nehezebb debuggert írni

SB Köszönöm a figyelmet.