Opleiding INFORMATICA Programmeertaal Implementatie Taal ontwerp Vertalen.

Slides:



Advertisements
Verwante presentaties
Hoe werkt een rekenmachine?
Advertisements

Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.

Hoofdstuk 1 Programmeren.
Inzet van docenten: planning, overzicht en kwaliteit
Ronde (Sport & Spel) Quiz Night !
HOOFDSTUK 12 Media.
prNBN D addendum 1 Deel 2: PLT
Van Nul naar Drie Normaliseren.
Diagnosticeer uw schouder Dit is een interactieve gids om u te helpen vinden relevante patiënten informatie over uw schouderprobleem. Het is bedoeld als.
Datastructuren Analyse van Algoritmen en O
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
© GfK 2012 | Title of presentation | DD. Month
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 5.

MEDIALANDSCHAP We onderscheiden: Visuele media Auditieve media
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Frank Stalpers en Ad Baars
Inleidend probleem Data structuur (hiërarchie van classes)
Functies als Getallen Jan Martin Jansen.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Werken aan Intergenerationele Samenwerking en Expertise.
Breuken-Vereenvoudigen
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
Hoe werkt een rekenmachine?
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
6.1 Inleiding HOOFDSTUK 6 METHODEN
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
ZijActief Koningslust 10 jaar Truusje Trap
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
Fractale en Wavelet Beeldcompressie
Fractale en Wavelet Beeldcompressie
Kwaliteit in productie
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
POL (MO)-methode  Dit is de kapstok waar je de rest van de zin aan op kunt hangen.  Vervolgens kijk je of er eventueel een meewerkend voorwerp in.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
CONTROLESTRUCTUREN (DEEL 1)
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
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,
1 XSLT processing & control Datamodellering 2006.
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Welkom! maandag 16 November 2015 Les B-2.
Informatica Welkom! maandag 16 November Les B-1.
Gameprogrammeren: Expressies
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Transcript van de presentatie:

Opleiding INFORMATICA Programmeertaal Implementatie Taal ontwerp Vertalen

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 2 Componenten Programmeertaal naar eigen ontwerp Vertaler naar objectstructuur Codegenerator vanuit objectstructuur Java assembler “jasmin” Java Virtuele Machine Simulator “jvmsim” Java Virtuele Machine “java”

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 3 Taal ontwerpen Syntax en semantiek –Structuur in grammatica beschrijven –Betekenis ligt in semantiek Data(structuren), variabelen, typen –Namen –Geheugenplaats –Scope, name space –Waardenbereik –Structuur (arrays, records, class, object)

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 4 Taal ontwerpen Expressies –Te evalueren tot een waarde van een type –“berekening” –Functie Statements –Basis (o.a. assignment) –Iteratief –Conditioneel –Procedure –Block Abstractie Onderscheid Definitie en Gebruik (def versus use)

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 5 Type talen Imperatieve talen –Assignment is cruciaal (eigen geheigenbeheer) –Pascal, C, Fortran Functionele talen –Functie wordt als basiselement behandeld –Expressies, geen assignments –Functiedefinities –Haskel, Miranda, Lisp Object georienteerde talen –Class als definitie van object met bundeling van data en methoden in een structuur –Data hiding –Overerving –C++, Java, Python

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 6 Type talen Logisch etalen –Proposities en predicaten centraal –Prolog Concurrente talen –Proces centraal –Synchronisatie –Communicatie –CSP en verder vaak libraries

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 7 Vertalen versus vertolken Vertalen = Compileren : transformatie van programma naar semantisch equivalente code Vertolken = interpreteren: uitvoeren van programnma als uitvoerbare code

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 8 Fasen in opdracht Eigen programmeertaal ontwerpen –basistypen: integer, boolean, character –eendimensionale arrays van elk basistype –controlestructuren: opeenvolging keuze herhaling –expressies van elk basistype –procedures en functies met parameters

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 9 Taak compiler Scanner Parser Codegeneratie van objecten die programmatekst representeren Checks op –type van expressies en variabelen stemmen overeen met de context van het gebruik –arraygrenzen –aantal en type van parameters stemmen overeen in definitie en gebruik Codegeneratie vanuit gegenereerde objectstructuur voor de java-assembler “jasmin”

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 10 Hulpmiddelen Scannergenerator “Jlex” Parsergenerator “Cup” Object georiënteerde programmeertaal Java Assembler “jasmin” Visualisator van Java Virtuele Machine “jvmsim” Java Virtuele machine “java”

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 11 Fasen YLA tok C YLAtoktok objobj C/C++ PPP obj jasm C++ objjasmjasm bcbc Java PPP De groene transformators (I, II en III) worden in het practicum gebouwd III III

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 12 Bekende knelpunten Integratie van door Jlex en Cup gegenereerde Java-code met eigen code Generatie van de objectstructuur –ontwerpen van classes voor taalelementen –specificeren van objectcreatie binnen de grammaticaregels in de Cupfile –doorgeven van parameters in de creatie van objecten –Kortom: welke classes, wanneer creëren, welke parameters?

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 13 Genereren objectstructuur Voorbeeld expressie:: expressie PLUS term | term ; term:: term MAAL factor | factor ; factor:: NUMBER | MINUS factor | LHAAK expressie RHAAK ; Welke classes? Bijv. abstracte class Expr met subclasses Nullaire_expr, Unaire_expr en Binaire_expr

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 14 Classes Class Expr { } Class Nullaire_expr : public Expr { int number; public: Nullaire_expr(int num) {number = num;} } Class Unaire_expr : public Expr { int operator; Expr: expr; public: Unaire_expr(int op; Expr expr) {...} } Class Binaire_expr : public Expr { int operator; Expr: expr; public: Binaire_expr(Expr e1;int op; Expr e2) {...} }

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 15 Op welke punten objecten creëren? Voorbeeld expressie:: expressie PLUS term { creëer Binaire_expr } | term {doorgeven attribuut } ; term:: term MAAL factor {creëer Binaire_expr } | factor {doorgeven attribuut} ; factor:: NUMBER {creëer Nullaire-expr} | MINUS factor (creëer Unaire_expr } | LHAAK expressie RHAAK {geef attribuut door } ;

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 16 Creatie en doorgeven in pseudo Java Voorbeeld expressie::= expressie:e PLUS term:t { RESULT = new Binaire_expr (e, PLUS, t);} | term:t {RESULT = t;} ; term:: term:t MAAL factor:f {RESULT = new Binaire_expr (t, MAAL, f);} | factor:f {RESULT = f;} ; factor:: NUMBER:n {RESULT= new Nullaire_expr (n);} | MINUS factor:f {RESULT = new Unaire_expr (MINUS,f)}; }| LHAAK expressie:e RHAAK {RESULT = e; } ;

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 17 Type van attributen In de Cup specificatiefile geven we bij de nonterminalen en eventueel terminalen aan van welk type hun attribuut is. In het geval van het voorbeeld moet bekend zijn: expressieExpr termExpr factorExpr Zorg voor een goede overdracht van attributen voor terminalen vanuit de door Jlex gespecificeerde scanner naar de parser

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 18 Vraag Tot welke objectstructuur wordt de volgende expressie omgezet? (3 + ((3 * 7 + 4) * 2)) + 5

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 19 Java Virtuele Machine Kleine nul-adres machine Instructieset Stack voor datamanipulatie (32 bits) Heap met garbage collection Constant Pool Interne registers –program counter –stackpointer –framepointer –pointer naar variabelen op de stack Method area

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 20 Instructieset uitgebreid instructies voor berekeningen, het halen uit en opbergen in geheugen zijn getypeerd Bijv. optellen add is er als iadd, ladd, fadd etc. ondersteunt object orientatie door te werken met objecten in de heap en referenties naar objecten op de stack door new-instructie door instructies om bij instantie- en classvariabelen te komen

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 21 Stack FrameFrame Execution environment lvar-0 lvar-1 lvar-n opval-1 opval-2 optop frame vars

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 22 Instructie iadd Execution environment optop frame vars 7 3 Execution environment optop frame vars 10 voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 23 Instructie iload 2 Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 24 Instructie istore 1 Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 25 Instructie bipush 3 Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 26 Instructie dup Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 27 Instructie pop Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 28 Instructie swap Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 29 Instructie iaload Execution environment optop frame vars array-ref van rij Execution environment optop frame vars voorna ref-this waarde van rij[3]

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 30 Instructie iastore Execution environment optop frame vars array-ref van rij Execution environment optop frame vars voorna ref-this

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 31 Instructie newarray int Execution environment optop frame vars 7 Execution environment optop frame vars voorna ref-this Nieuwe arrayref

Opleiding INFORMATICA ©CII Saxion Hogeschool Enschede 32 Nog meer instructies Er zijn nog enkele categorieen instructies Control flow: Zie artikel “Under the Hood: Control flow” en teken zelf een aantal voorbeelden uit. Het effect is enerzijds zichtbaar op de stack: waarden worden gepopt. Het tweede effect zit in een eventuele wijziging sprongopdracht: wijziging van de waarde van de pc. Converteren van datatypes Aanroepen van methoden Zie hiervoor de uitgebreide opdrachtsomschrijving