Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.

Slides:



Advertisements
Verwante presentaties
Hoofdstuk 14: Exception Handling JAVA -- H14.
Advertisements

Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
Conditional Clauses If-zinnen.
Programmeren in Java met BlueJ
Van domeinklasse tot implementatie
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
AAHA (voor intern gebruik)
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Inleiding Databanken: oefeningen
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Server side scripting 1 Webtechnologie Lennart Herlaar.
1/1/ / faculty of Computer Science eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(2): Vertalen.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Inleidend probleem Data structuur (hiërarchie van classes)
Databases I (H.3) Het Entity-Relationship Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
GESPRG Les 12 Gestructureerd programmeren in C. 152 Huiswerk Uitwerking void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last)
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Zelfgemaakt datatype voor bomen nMet functies data Tree a = Bin (Tree a) (Tree a) | Leaf a foldTree :: Tree a  b foldTree (b,lf) (Bin le ri) = b (foldTree.
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoorcollege 14 Vijanden, excepties. Wat zit allemaal in een level? Startpositie van de speler Waterdruppels Tiles Vijanden Einde van het level Achtergronden.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
JAVA -- H81 Exception: ongewone of foutieve situatie->prog. mislukt kan onderschept en afgehandeld worden. = een object van de klasse Throwable, gegenereerd.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Hibernate Object relational mapping
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
H21. en H22. COLLECTIONS FRAMEWORK. 1. INLEIDING.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Hoofdstuk 5 – Object Based Programmeren
1 Hoofdstuk 11: Strings en karakters Inleiding In dit hoofdstuk bespreken we de mogelijkheden van de klassen : String StringBuffer Character StringTokenizer.
Hoofdstuk 15: Exception Handling JAVA -- H15.
HOOFDSTUK 7 ARRAYS 7.1.     INLEIDING Array
Visual Basic.Net - Overzicht
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoofdstuk 9 Objecten en klassen.
Hoorcollege 9 Jewel Jam The revenge. Hierarchie van game objecten Game object (lijst) Game object (grid) Game object (lijst) Game object.
Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving Yves Vandewoude Peter Rigole.
Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
TOPIC O: Pointers | pag. 1 Pointer = adres in het geheugen, is zelf geen geheugen! Expliciet geheugen aanvragen vóór gebruik.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
In samenwerking met HowITsDone Spring as legacy Hoe innovatie legacy kan worden.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Algoritmiek Class Hierarchies, Inheritance. Hoorcollege 12 - Ma. 20 nov L.M. Bosveld-de Smet.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Parsing 1. Situering Contextvrije grammatica’s Predictive (of recursive-descent) parsing LR-parsing Parser generator: Yacc Error recovery 2.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Klassen en objecten
Transcript van de presentatie:

Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te gebruiken door de compiler. –Type voor types, value voor variables. In 1 table -> 1 gebruik.

CODE SLIDE AUB package Symbol; public Class Symbol{ public String tostring(); public static Symbol symbol(string s); } public class Table{ public Table(); public void put(Symbol key,Object value); public Object get(Symbol Key); public void beginscope(); public void endscope(); public java.util.Enumeration keys(); }

Symbool Implementatie In java : java.lang.String maakt van elke string een uniek object. Symbool -> String : elk symbool bevat een string. String -> Symbool : Moet via een hast- tabel. (java.util.hashtable)

CODE SLIDE AUB package Symbol; public Class Symbol{ public String tostring(); public static Symbol symbol(string s); } public class Table{ public Table(); public void put(Symbol key,Object value); public Object get(Symbol Key); public void beginscope(); public void endscope(); public java.util.Enumeration keys(); }

. beginscope() –Onthoudt de huidige omgeving van de tabel. endscope() –Zet de tabel terug in de staat van de meest recente, niet geëindigde beginscope(). Dienen voor als een omgeving beëindigt wordt gedane veranderingen ongedaan maken.

CODE SLIDE AUB package Symbol; public Class Symbol{ public String tostring(); public static Symbol symbol(string s); } public class Table{ public Table(); public void put(Symbol key,Object value); public Object get(Symbol Key); public void beginscope(); public void endscope(); public java.util.Enumeration keys(); }

Symbool tables voor imperatieve tables X -> b toevoegen. X wordt gehashed tot index i. Er wordt een Binder Object X -> b aangemaakt. X -> b’ wordt niet overschreven maar is niet meer bereikbaar in huidige omgeving.

Nood aan een stack. Wat wordt er op stack gegooid ? –X indien X -> b wordt toegevoegd. –Speciaal Teken als beginscope() wordt uitgevoerd. Bij endscope() worden alles uit de stack tot aan het speciale teken verwijdert en uit de symbool table gehaald.

5.2 Type checking. Wat zetten we in de tables? Welke bindings gebruiken ? –Variabelen en formele parameters -> type –Methodes -> Parameters, resultaats type & lokale variabelen –Klassen -> Methodes en variabelen declaraties

2 fasen. De symbool Tabel opmaken. Type-check alle statements en expressies. –Tijdens fase 2 : voor elke identifier token wordt de tabel geraadpleegd. 2 fasen nodig omdat de oproep van een methode kan voorkomen voor de declaratie van een methode.

1e fase Dit kan geïmplementeerd worden via een visitor. De visitor bezoekt elke node in de abstract syntax tree en bouwt de symbool tabel op. –Voeg voor elke variabele naam en type toe. –Elke variabele maar 1 maal per omgeving gedeclareert.

. // VarDecl -> Type id ; // Type t // Identifier i public void visit(VarDecl n) { Type t = n.t.accept(this) Symbol id = Symbol.symbol(n.i.toString()); bool result; if (currMethod == null) /* in klasse */ result = currClass.addVar(id,t); else /* in methode */ result = currMethod.addVar(id,t); if (!result) error.complain(id.toString() + “ is already defined”);

2e fase Visitor checkt voor expressie en statement het type. Visitor returnt het type van de expressie. Visitor returnt een error message.

// Exp e1, e2; public Type visit(Plus n) { if (! (n.e1.accept(this) instanceof IntegerType) ) error.complain(“Left side of Plus must be integer”); if (! (n.e2.accept(this) instanceof IntegerType) ) error.complain(“Right side of Plus must be integer”); return new IntegerType(); } Beide operanden van n moeten integers zijn. Return type zal ook integer zijn.

Overloading. Som van 2 integers is een integer. Integer + Real ?? In meeste talen wordt impliciet de int omgezet naar een real. Dit moet later ook expliciet worden gemaakt door de compiler in de code die hij genereert.

Toekenningen. Left hand side moet het zelfde type hebben als de right hand side. Bij overerving of extensies moet het rechtse type een subtype zijn van het linkse type. –Person p = new Woman();

Method calls. Bv : C e = new C(); e.m( int i); -> e heeft type C. -> definitie van m opgezocht in classe C. -> parameter types gematcht met de formele argument types. -> result type = return type van de methode.

Error handling. Bij een error moet een error message geprint worden met aard en locatie van de fout. int i = new String(); Error Illegal …. Line 1…. i moet toch in tabel worden opgenomen voor verdere fouten na te gaan.

Error handling. Compiler mag geen foute output code geven bij een type check error. –Latere fases van compilatie moeten opgeschort worden. –Alle (niet-logische) fouten in code moeten voor of tijdens de semantische analyse gevonden worden. –Tot zover de analyse fase.

Einde Analyse Einde Les 3