Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
DI Christian Donner cd (at) donners.com
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Zusammenfassung des Kapitels 8
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Listen Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
ATHOS Benutzertreffen 2007
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Björn Schmidt, Hoang Truong Nguyen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
Frank Fischer Manager Evangelism and Marketing Microsoft Deutschland GmbH.
Anwendungen der nächsten Generation
Automated Software Testing
Die .NET Common Language Runtime
ActionScript 3 (AS3) Workshop für Einsteiger. AS3 WorkshopGregor Sklorz Me Gregor Sklorz o Dipl. Ing. der Medieninformatik o Geb: o Stepstones:
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Dominick Baier Security Consultant thinktecture. 2 Wir unterstützen Software-Entwickler und Architekten bei der Realisierung von.NET- und Web Services-Projekten.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Seminar aus Softwareentwicklung
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Natürliches Programmieren
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Vererbung.
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Mit Java die Turtle steuern
 Präsentation transkript:

Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen

Inhalt Skriptsprachen Motivation Codegenerierung mit CodeDom Codemodifizierung mit Reflections Codekompilierung Eigene C# Scriptsprache Demos

Skriptsprachen Clientseitig JavaScript VBScript Serverseitig PHP Perl Python Anwendungen Lua – Wird in Spiel-Entwicklung eingesetzt REXX – Skriptsprache von IBM

Motivation Code Generierung aus dem Code heraus?!?!? in verschiedene.NET Sprachen. using System.CodeDom; Wie kann ich Bibliothekencode Dekompilieren und Modifizieren? using System.Reflection; using Microsoft.CSharp; using System.CodeDom; Wie kann ich mit.NET Kompilieren? using Microsoft.CSharp; Wie erzeuge ich eigene Scriptsprache? using Microsoft.CSharp;

Codegenerierung namespace XYZ { public class YZX { public static void Main() { string data=xyz; System.Console.WriteLine(data); }

Codegenerierung System.CodeDom.NET Typengleichheit CodeVariableDeclarationStatement strDecl = new CodeVariableDeclarationStatement( new CodeTypeReference(typeof(string)), msg"); mainMethod.Statements.Add(strDecl); CodeAssignStatement ptxAssign = new CodeAssignStatement(new CodeVariableReferenceExpression(msg"), new CodeSnippetExpression("\"hello world\"")); mainMethod.Statements.Add(ptxAssign); CodeMethodInvokeExpression invokeConsoleWriteLine = new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(typeof(Console)), "WriteLine", new CodeExpression[] { new CodeArgumentReferenceExpression(msg"), }); mainMethod.Statements.Add(invokeConsoleWriteLine); string msg; msg = "hello world"; System.Console.WriteLine(message);

Disassemblierung Modifizierung System.Reflection (read) System.Reflection.FieldInfo[] fia = (object)o.GetType().GetFields(); System.CodeDom (write) Codegenerierung

Codekompilieren im Speicher public void Start(string code) { CSharpCodeProvider c = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add("System.Data.dll"); cp.ReferencedAssemblies.Add("System.Windows.Forms.dll"); cp.GenerateExecutable = true; cp.GenerateInMemory = true; CompilerResults r = c.CompileAssemblyFromSource(cp, code); System.String[] scriptArgs = new System.String[1]; r.CompiledAssembly.EntryPoint.Invoke(null, scriptArgs); }

C# als Skriptsprache Interface public interface IScript { int main(out object output, params object[] input); } Script using xyz; namespace Compilerbau { public class FILENAME : IScript { MAIN_CODE }

Beispiel für MAIN_CODE window.script public int main(out object output, params object[] input) { output =(object)"Windows Beispiel"; Win w = new Win(); w.Text="Compilerbau"; w.Show(); return 0; } public class Win : Form{}

Was am Ende steht using xyz; namespace Compilerbau { public class FILENAME : IScript { //MAIN_CODE_BEGIN public int main(out object output, params object[] input) { output =(object)"Windows Beispiel"; Win w = new Win(); w.Text="Compilerbau"; w.Show(); return 0; } public class Win : Form{} //MAIN_CODE_END }

DEMO CodeCompiler CodeGenerierung CodeDekomilierung SkriptLive C# als Skriptsprache

Inhaltsverzeichnis Microsoft MSDN msdn.microsoft.com Code Generation in multiple languages blogs.msdn.com/abhinaba/archive/2006/02/27/ aspx C#: Writing extendable applications using on-the-fly compilation blogs.msdn.com/abhinaba/archive/2006/02/09/ aspx