xml-programmierung mit xduce bearbeitet von: daniel beck taoufik romdhane logische aspekte von xml...
TRANSCRIPT
![Page 1: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/1.jpg)
XML-Programmierung mit XDuce
Bearbeitet von:
Daniel Beck
Taoufik Romdhane
Logische Aspekte von XML
Proseminar im Sommersemester 2003
Prof. Gert Smolka
![Page 2: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/2.jpg)
2
Inhalt
Was ist XDuce? Typaspekte Pattern Matching Restriktionen und Probleme Zusammenfassung
![Page 3: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/3.jpg)
3
Was ist XDuce?
Man spricht “Transduce” aus ;) Eine funktionale Programmiersprache Typen sehen der DTD ähnlich aus
(Document Type Definition) XML Dokumente sind Werte Statisch typisiert
![Page 4: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/4.jpg)
4
TypaspekteBeispiel
Typdefinition für ein Adressbuch :type Addrbook = addrbook[(Name, Addr, Tel?)*]type Name = name[String]type Addr = addr[String]type Tel = tel[String]
Entsprechendes DTD:<!ELEMENT addrbook (name, addr, tel?)*><!ELEMENT name #PCDATA><!ELEMENT addr #PCDATA><!ELEMENT tel #PCDATA>
![Page 5: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/5.jpg)
5
Typen
Mächtiges Typsystem: Typen werden als reguläre Ausdrücke angegeben (DTD)
Typsystem entspricht den regulären Baumautomaten
Strukturelles Subtyping Statisches Typechecking Typen als Menge von Werten
![Page 6: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/6.jpg)
6
Typdefinition
T ::= X VariableB Basistyp() leere Sequenzl[T] LabelT,T KonkatenationT|T Vereinigung
![Page 7: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/7.jpg)
7
Was ist mit *, + und ?
Kleenesche Stern wird rekursiv definiert:T* = T,T* | ()
+ und ? sind Abkürzungen für:T+ = T,T*T? = T|()
![Page 8: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/8.jpg)
8
Typen als Menge von Werten
Funktion [[.]]: nimmt einen Typ und eine Umgebung ρ, die Typvariablen auf
Mengen von Werten bildet gibt eine Menge von Werte zurück
![Page 9: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/9.jpg)
9
Subtyping-Relation
Es gibt Typen, die in andere „enthalten“ sind (Teilmenge-Relation):a <: a+a „ist Teilmenge von“ a+
Ein Typ ist ein Subtyp von einem anderen, wenn der erste eine Teilmenge vom letzten beschreibt
Die Werte die links enthalten sind, sind auch rechts enthalten
![Page 10: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/10.jpg)
10
Subtyping-RelationAddressbuch-Beispiel (1) Beispiel: Der Wert „mybook“
val mybook = addrbook[
name[“Peter”], addr[“Berlin”],name[“Hans”], addr[“Bonn”], tel[“123-34-2312”]]
Zur Erinnerung: Definition vom Typ Addressbuch:type Addrbook = addrbook[(Name, Addr, Tel?)*]type Name = name[String]type Addr = addr[String]type Tel = tel[String]
![Page 11: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/11.jpg)
11
Subtyping-RelationAddressbuch-Beispiel (3) Kann man dem Wert „mybook“ den Typ „Addrbook“
zuweisen?val mybook =
addrbook[name[“Peter”], addr[“Berlin”],name[“Hans”], addr[“Bonn”], tel[“123-34-2312”]]
„mybook“ hat den Typ:addrbook[Name,Addr,Name,Addr,Tel]
Und:addrbook[Name,Addr,Name,Addr,Tel]
<: addrbook[(Name,Addr,Tel?)*] := Addrbook
![Page 12: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/12.jpg)
12
Typrekursion
Bis jetzt wurde das Typsystem als kontextfreie Sprache definiert
Aber: Subtyping wäre dann nicht entscheidbar
Deswegen: Restriktion auf Rechts-Rekursion
Jetzt: gleich mächtig mit den regulären Baumautomaten
![Page 13: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/13.jpg)
13
Pattern Matching
Sehr ähnlich zu dem aus ML, aber durch reguläre Ausdrücke mächtiger
Beispiel: erstes Tripel findenfun firstTriple: (Name,Addr,Tel?)* -> (Name,Addr,Tel)? = ps:(Name,Addr)* , t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)* -> t | whole:(Name,Addr,Tel?)* -> ()
Pattern Matching besteht aus 2 Fälle: (Name ,Addr)* werden übersprungen, t wird das erste
Tripel zugewiesen Sonst gibt der zweite Fall () zurück.
![Page 14: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/14.jpg)
14
Pattern MatchingRegeln
1. „first matching policy“: Ambiguität:
ps:(Name,Addr)* -> ps| t: (Name,Addr) -> t
Mehrere Patterns "matchen" dieselbe Eingabe
Lösung: Nimm erstes passendes Pattern
![Page 15: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/15.jpg)
15
Pattern MatchingRegeln1. „longest match“:
Ambiguität:ps:(Name,Addr,Tel?)*,t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)*
Ein Pattern kann eine Eingabe unterschiedlich „matchen“ Welcher Tripel ist nun mit t gemeint?
Lösung: Das früher auftretende Pattern hat höhere Priorität Jedes Pattern darf so viel wie möglich „matchen“ Deswegen „matcht“ t das letzte Tripel in der Eingabe
![Page 16: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/16.jpg)
16
Pattern MatchingExhaustiveness Mit Subtyping wird geprüft, ob ein Pattern
erschöpfend („exhaustive”) ist Im Beispiel der Tripelsuche:
fun firstTriple: (Name,Addr,Tel?)* -> (Name,Addr,Tel)?
= ps:(Name,Addr)* , t:(Name,Addr,Tel), rest:(Name,Addr,Tel?)* -> t
| whole:(Name,Addr,Tel?)* -> ()
Muss folgendes gelten:(Name,Addr,Tel?)* <: ((Name,Addr)*,(Name,Addr,Tel),(Name,Addr,Tel?)*)
| (Name,Addr,Tel?)*
![Page 17: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/17.jpg)
17
Restriktionen der Sprache
XDuce wird weiter entwickelt. Zur Zeit fehlen wichtige Features:Funktionen höherer OrdnungPolymorphismus Parametrisierte Typen (Typkonstruktoren)…
![Page 18: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/18.jpg)
18
Probleme der Sprache
Pattern- und Typsystem gleich mächtig wie Baumautomaten
Operationen sind sehr teuer (Typechecking: EXPTIME)
![Page 19: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/19.jpg)
19
Zusammenfassung
Funktionale und typisierte Sprache mit XML-Dokumenten als primitive Werte
Schwerpunkte: Strukturelle Typen mit regulären Ausdrücken Pattern Matching mit regulären Ausdrücken
Was noch fehlt: (geplant) Funktionen hoeherer Ordnung (Parametrischer) Polymorphismus Object-Orientierte Features (wie in den XML
Spezifikationen vom W3C) Effizienz?
![Page 20: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/20.jpg)
20
Anwendungen
Beispiele von Progammen, die in XDuce geschrieben sind:
HTML2Latex : Ein Konverter (264 Zeilen)
Diff: zeigt an ob sich eine XML Datei verändert hat (300 Zeilen)
![Page 21: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/21.jpg)
21
Alternativen zu XDuce
CDuce Basiert auf XDuce First-class Funktionen Noch besseres Pattern Matching Subtyping-Algorithmus ohne Backtracking Man kann auch Typen unter Schnitt, und Komplement bilden
YAT vom Prinzip her XDuce sehr nah
XMLambda Funktionen höherer Ordnung Parametrisches Polymorphismus
![Page 22: XML-Programmierung mit XDuce Bearbeitet von: Daniel Beck Taoufik Romdhane Logische Aspekte von XML Proseminar im Sommersemester 2003 Prof. Gert Smolka](https://reader035.vdocuments.net/reader035/viewer/2022062417/55204d6149795902118b4bfd/html5/thumbnails/22.jpg)
22
Referenzen
Haruo Hosoya and Benjamin C. Pierce: Regular expression pattern matching for XML. A typed XML processing language (preliminary report). Unter : http://xduce.sourceforge.net/papers.html
Uwe Schöning, Theoretische Informatik – kurzgefasst.
Um mehr über XDuce zu wissen: xduce.sourceforge.net/
XMLambda www.cse.ogi.edu/~mbs/pub/xmlambda/