Translating Natural Semantics to Meta-Modelica Emil Carlsson.

Slides:



Advertisements
Liknande presentationer
Next previous Björn Eiderbäck NADA, KTH Innehåll Klassdiagram i mer detalj Visibility och modifierare (vilka.
Advertisements

SOA Governance with SOA Software For BUGS Martin Svensson.
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Master Data Management (MDM) for the enterprise using BizTalk 2006 R2
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
Nyinstallerad Webinfo •I Central parameters skapa parametern Statlogger och ge value 1 Logga endast vissa sidor genom att skapa parametern i PageId.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Prestandaanalys av JavaScript
1.Numerical differentiation and quadrature Discrete differentiation and integration Ordinary.
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
Algoritmer och data strukturer -Länkade listor
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Abstrakta datatyper Moduler nr 12
Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack
Microsoft Office SharePoint Server 2007 – del 1 Pontus Haglund Mid Market Solutions Specialist Microsoft AB.
Föreläsning 2 Datalogi för E1 2D1343
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
Streams and File I/O Kapitel 10. Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar.
i olika programmeringsspråk
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Erik Stenborg Swedish adaptation of ISO TC 211 Quality principles.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Repetition inför slutprovet
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Next previous Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe.
Metodik för problemlösning Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar.
Mathematics 1 /Matematik 1 Lesson 2 – Functions and their solutions Lektion2 – Funktioner och deras lösningar.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Patrik Löwendahl
1 Träd nr 11 Binära träd ordnade, traversering, sökning.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
1 Mer om Nr 7 Rekursion, listor, typer och funktioner.
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML XSLT nikos dimitrakas Rum 8522 Läsanvisningar.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Mixed-type assignments
Presentationens avskrift:

Translating Natural Semantics to Meta-Modelica Emil Carlsson

Sammanfattning/Introduktion Modelica RML (Naturlig Semantik) Meta-Modelica Översättare

Agenda Bakgrund –Modelica –Parsning och Kompilatorer Problemformulering Meta-programmering –Koncept –RML –Meta-Modelica

Agenda (forts.) Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Agenda status Bakgrund –Modelica –Parsning och Kompilatorer Problemformulering Meta-programmering Implementation Slutsats Frågor

Bakgrund - Modelica Programmeringspråket Modelica –Modelering och simulering –Objekt Orienterat –Stöd för komponentbaserad design –Starkt typat, inga sidoeffekter.

Bakgrund - Modelica (forts.) Utveckling av Modelica –Modelica Association –OpenModelica –Kommersiell Dymola och MathModelica

Bakgrund - Modelica (forts.) Utökning av Modelica –Meta-programmering –Meta-Modelica

Agenda status Bakgrund –Modelica –Parsning och Kompilatorer Problemformulering Meta-programmering Implementation Slutsats Frågor

Bakgrund - Parsning Kompilator Faser 3 faser kompilator används i detta exjobb

Bakgrund - Parsning (forts.) Lexikal analys (scanning) –Gruppering av nyckelord, identifierare etc. –Tokens –Reguljära utryck: {digit} [0-9]*

Bakgrund - Parsning (forts.) Syntaktisk analys (parsning) – a := a + 1;

Agenda status Bakgrund Problemformulering Meta-programmering Implementation Slutsats Frågor

Problem Formulering RML och meta-programmering RML-parser Utökning av Modelica Implementation –RML-unparser –RML till Meta-Modelica Translator (Översättare)

Agenda status Bakgrund Problemformulering Meta-programmering –Koncept –RML –Meta-Modelica Implementation Slutsats Frågor

Meta - programmering - Koncept Design och modifikation(!) av andra programmerings språk Tar ett annat program (object-program) Traverserar och modifierar interna strukturen Returnerar den modifierade strukturen Lagrar träd representation (ast) av program

Agenda status Bakgrund Problemformulering Meta-programmering –Koncept –RML –Meta-Modelica Implementation Slutsats Frågor

Meta-programmering - RML RML (Relational Meta Language) –Naturlig Semantik –Relationer –Regler med premisser och konklusioner –Datatyper

Meta-programmering - RML (forts.) Moduler –Interface del –Implementerings del –Datatyper, relationer, typdeklarationer, values (konstanter) Uniontypes –Nyckelord datatype följt av namn: datatype Exp =

Meta-programmering - RML (forts.) Uniontypes (forts) –Konstruktor namn följt av en lista med typer: INTPAIR of int * int Exempel: datatype Exp = INT of int | BINARY of Exp * BinOp * Exp | UNARY of UnOp * Exp | ASSIGN of Ident * Exp | IDENT of Ident datatype BinOp = ADD | SUB | MUL | DIV datatype UnOp = NEG

Meta-programmering - RML (forts.) Primitiva typer –char –string –int –real –bool Typdeclarationer: type ident = string

Meta-programmering - RML (forts.) Datastrukturer (parametriserade typer) –list ex: int list –vector, array ex: int vector –option ex: int option –Kombineras: int vector list option Listor: –[e1, e2] eller list(e1, e2) –[] eller nil –element::lst eller cons(element,lst)

Meta-programmering - RML (forts.) Relationer –Nyckelord relation –Signatur (int => Exp) Regler –Nyckelord rule –premiser –konklution

Meta-programmering - RML (forts.) Exempel: relation apply_unop: (UnOp,int) => int = rule int_neg(v) => v apply_unop(NEG,v) => v2 end

Meta-programmering - RML (forts.) relation eval: Exp => real = axiom eval( RCONST(ival) ) => ival (* eval of an integer node *) rule eval(e1) => v1 & eval(e2) => v2 & real_add(v1,v2) => v eval( ADDop(e1,e2) ) => v3 rule eval(e1) => v1 & eval(e2) => v2 & real_sub(v1,v2) => v eval( SUBop(e1,e2) ) => v3 rule eval(e1) => v1 & eval(e2) => v2 & real_mul(v1,v2) => v eval( MULop(e1,e2) ) => v3 rule eval(e1) => v1 & eval(e2) => v2 & real_div(v1,v2) => v eval( DIVop(e1,e2) ) => v3 rule eval(e) => v1 & real_neg(v1) => v2 (*aa*) eval( NEGop(e) ) => v2 (*ss*) end

Agenda status Bakgrund Problemformulering Meta-programmering –Koncept –RML –Meta-Modelica Implementation Slutsats Frågor

Meta-programmering - Meta-Modelica Paket –public eller protected Typer –Integer, String, Real, Boolean Parametriserade typer behöver typ deklareras, exempelvis: type IntegerList = list ; IntegerList int_list; /* int_list is a list of Integers */

Meta-programmering - Meta-Modelica Listor –{e1,e2} eller list(e1, e2) –{} eller nil –element::lst eller cons(element, lst) Unions typer –nyckelord uniontype –record

Meta-programmering - Meta-Modelica public uniontype Exp record INT Integer integer; end INT; record BINARY Exp exp1; BinOp binop2; Exp exp3; end BINARY; record UNARY UnOp unop; Exp exp; end UNARY; record ASSIGN Ident ident; Exp exp; end ASSIGN; record IDENT Ident ident; end IDENT; end Exp; public uniontype BinOp record ADD end ADD; record SUB end SUB; record MUL end MUL; record DIV end DIV; end BinOp; public uniontype UnOp record NEG; end NEG; end UnOp;

Meta-programmering - Meta-Modelica Funktioner –algoritm sektion –matchcontinue –case statement Case statement –nyckelord case följt av match utryck –equation statements –then resultat uttryck

Meta-programmering - Meta-Modelica protected function neg_int input Integer v1; output Integer v2; algorithm v2 := -v1; end neg_int; protected function neg_int input Integer in_v; output Integer out_v; algorithm out_v:= matchcontinue(in_v) local v1; case(v1) then -v1; end matchcontinue; end neg_int;

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - Översikt

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - RML parser Preliminär parser existerade Scanner skriven i C Parser yacc byttes till bison

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - RML unparser Traversa parse-träd Skriver ut innehållet i trädet

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - kommentarhantering Problem –Kommentarer tillåts över allt –Går ej skriva sådan parser-grammatik Egen lösning: –kommentarer lagras i struct med information: struct CommentInfo { int bound; /* is a bound? (used to mark next datastructure)*/ int firstline, firstcol; /* start position of this comment */ int lastline, lastcol; /* end position of this comment */ char buffer[LEXER_COMMENT_MAXLENGTH]; };

Implementation - kommentarhantering (forts.) Andra Problem –Scanner state kommit långt nog? –Till vilken datastruktur hör kommentaren?

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - Translator Skillnader mellan RML och Meta-Modelica –Variabler –Typdeklarationer –Namnkonflikter –Kommentarer Hänseende till läsbarhet och enkelhet –Bra och smarta identifierarnamn –Enkel kod och få genererade lines –Läsbar kod

Implementation - Translator (forts.) Moduler blir paket Datatype blir uniontype –Variabel namn för varje typ först x1, x2 etc baserade på typ baserade på kommentar

Implementation - Translator (forts.) (* The basic element type in Modelica *) datatype Element = ELEMENT of bool (* final *) * bool (* replaceable *) * InnerOuter (* inner/outer *) * Ident (* Element name *) * ElementSpec (* Actual element specification*) * string (* Source code file *) * int (* Line number *) * ConstrainClass option (* only valid for classdef and component*) uniontype Element " - Elements The basic element type in Modelica " record ELEMENT Boolean final "final "; Boolean replaceable "replaceable "; InnerOuter innerouter "inner/outer "; Ident ident "Element name "; ElementSpec elementspec "Actual element specification"; String string "Source code file "; Integer integer "Line number "; ConstrainClassOption constrainclassoption "only valid for classdef and component"; end ELEMENT; end Element;

Implementation - Translator (forts.) Relationer till funktioner –public eller protected –Signaturer till Input/Output variabler –rules till Meta-Modelica case statements Program databas (PDB) –Behövs för att bestämma typ på variabler –Position och typ för identifiers

Implementation - Translator (forts.) Identifiers –checka så inte Modelica nyckelord –konstruktor eller variabel Special genererade typer –Vilka har genererats?

Implementation - Translator (forts.) Lokala variabler –Samla in alla variabler i relationen –Lagra i TypeVarsElement datatype TypeVarsElement = VTELEMENT of Absyn.RMLType * Absyn.Ident list –Relation för att uppdatera –Variabler slås upp i program databasen –Samma namn olika typ

Implementation - Translator (forts.) Rules till case-statement –Uttryck och mönster –Fördefinierade relationer –Skippa sista tilldelningen z = z + 1; then z; –Istället then z + 1;

Implementation - Translator (forts.) Förenklad algoritm sektion används då –endast identifierare som input och utput –endast en regel

relation eval: Exp => real = axiom eval( RCONST(ival) ) => ival (* eval of an integer node *) rule eval(e1) => v1 & eval(e2) => v2 & real_add(v1,v2) => v eval( ADDop(e1,e2) ) => v3 rule eval(e1) => v1 & eval(e2) => v2 & real_sub(v1,v2) => v eval( SUBop(e1,e2) ) => v3... end Implementation - Translator (forts.)

public function eval " Abstract syntax of the language Exp1 Evaluation semantics of Exp1 " input Exp in_exp; output Integer out_integer; algorithm out_integer:= matchcontinue (in_exp) local Integer ival,v1,v2; Exp e1,e2,e; case (INTconst(ival)) then ival; " eval of an integer node is the integer itself " case (ADDop(e1,e2)) equation v1 = eval(e1); v2 = eval(e2); then v1 + v2; case (SUBop(e1,e2)) equation v1 = eval(e1); v2 = eval(e2); then v1 - v2;... end matchcontinue; end eval; Implementation - Translator (forts.)

Kommentarer –” escapas till \” –relation till function –* tas bort Options –Utbyggbart –Prefixing –Dummy variabler

Agenda status Bakgrund Problemformulering Meta-programmering Implementation –Översikt –RML-parser –RML-unparser –Kommentarhantering –Translator –Meta-Modelica unparser Slutsats Frågor

Implementation - Unparser Modelica unparser implementerad i Modelica kompilatorn Anpassad till Meta-Modelica

Agenda status Bakgrund Problemformulering Meta-programmering Implementation Slutsats Frågor

Slutsats Testing –RML exempel –Modelica kompilatorn Kvar att göra –Prestandaförbättring Alternativ till listor - träd, hashtabell eller dylikt cachning –Refactorings

Agenda status Bakgrund Problemformulering Meta-programmering Implementation Slutsats Frågor

Tack!

Frågor