100 likes | 238 Views
Internet-Technologien. Sommersemester 2012. XML-basierte Techniken. Teil „Metasprache der XML-Spezifikation“. Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik. Teil 2. Metasprache der XML-Spezifikation 1.Sprachbegriff / 2. Grammatikbegriff.
E N D
Internet-Technologien Sommersemester 2012 XML-basierte Techniken Teil „Metasprache der XML-Spezifikation“ Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Teil 2
Metasprache der XML-Spezifikation1.Sprachbegriff / 2. Grammatikbegriff 1. Sprachbegriff (N.CHOMSKY 1959)Gegeben ist ein endliches Alphabet A von Symbolen (Terminalen). Über der Trägermenge A wird eine assoziative Verkettungsoperation ¤ definiert, die das hintereinander Schreiben von Terminalen ( Wortbildung !) realisiert. Die Menge aller Wörter (Hülle) wird mit A* bezeichnet. Jede Teilmenge L von A* heißt Sprache. Für praktische Anwendungen muss eine Sprache aber einen gewissen Aufbau besitzen, d.h. die Wortbildung unterliegt “grammatikalischen” Regeln. 2. Grammatikbegriff Eine Grammatik G ist ein 4-Tupel G=(A,V,w,P) mit A nichtleeres endliches Alphabet von Symbolen (Terminalen) V nichtleere Menge von sogenannten Nichtterminalen (syntaktische Kategorien zur Strukturierung) mit A ∩ V = Ø w є V Startsymbol (in XML z.B. document ) P Teilmenge von (A U V) * × (A U V) * , d.h. eine binäre Relation, eine Menge von Ableitungsregeln oder Produktionen.
Metasprache der XML-Spezifikation2. Grammatikbegriff / CHOMSKY Typ 2 Eine Produktion ist also ein Paar (x,y) є P mit der Bedeutung x ist aus y ableitbar, d.h. für ein y kann ein x substituiert werden. CHOMSKY definierte eine Hierarchie von Sprachen (Typ 0 bis Typ 3) entsprechend von Einschränkungen der Form der Produktionsregeln. CHOMSKY Typ 2 – Sprachen stellen die sogen. kontextfreien Sprachen dar. Fast alle praktisch in Anwendung befindlichen formalen Sprachen haben eine kontextfreie Grammatik. Für diese Grammatiken gilt die Einschränkung: P ist Teilmenge von V × (A U V) * . Die linke Seite einer Regel ist immer ein Nichtterminal. Zur Notation der Produktionsregeln haben BACKUS und NAUR 1960 eine Metasprache vorgeschlagen, die seither in erweiterter Form zur Definition von Grammatiken für formale Sprachen benutzt wird.
Metasprache der XML-Spezifikation3. EBNF / Terminale / Nichtterminale 3. Extended Backus Naur Form (EBNF) Es werden hier die Spezifika und Erweiterungen erläutert, die in der Notation der XML-Spezifikation verwendet werden. Symbole (Terminale) des Alphabetes A: Symbole müssen in Apostrophe (entweder in ‘ oder in “)eingeschlossen werden. Bsp.: ‘<‘ , ‘%’ , ‘<!DOCTYPE’ Symbole, die nur aus einem einzelnen Zeichen bestehen, können in Hexadezimaldarstellung (Ein- oder Mehrbyte) angegeben werden: #xN , N ist eine Hexadezimalzahl Bsp.: #x20 , #x9, #xDA Nichtterminale von V:- Nichtterminale sind normale Bezeichnungen (Groß- und Kleinschreibung ist signifikant ). Bestimmte Bezeichnungen sollen nicht verwendet werden, wie z.B. mit XML anfangende. Bsp.: S , document, ExternalID , PEReference
Metasprache der XML-SpezifikationProduktionsregeln / Alternative Produktionsregeln von P: eine Produktionsregel (x,y) є P mit x єV und y є(A U V) * wird in der Form x ::= y geschrieben. x stellt ein Nichtterminal und y einen Ausdruck dar. Bsp.: NDataDecl ::= S 'NDATA' S Name Ein Ausdruck stellt gemäß (A U V) *eine Verkettung von Terminalen und Nichtterminalen dar. Die EBNF definiert einige Metaoperationen, die in Ausdruck vorkommen dürfen. Alternative:- Sind A und B Ausdrücke, so ist auch A | B ein Ausdruck. C ::= A|B ersetzt die beiden Regeln C ::= A und C ::= B . Bsp.: Misc ::= Comment | PI | S , ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral
Metasprache der XML-SpezifikationSequenz Sequenz: Sind A und B Ausdrücke, so ist auch A , B ein Ausdruck. C ::= A,B bedeutet die Angabe einer strikten Reihenfolge, d.h. C ist definiert durch die Abfolge der Elemente A und B . Bsp.: Dokument ::= Head , Body Bem.: in der ursprünglichen Backus-Naur-Form waren die Nichtterminale in <> eingeschlossen, womit ein Trennsymbol für die Hintereinander-Schreibung nicht notwendig war!
Metasprache der XML-SpezifikationOption / Zusammenfassung / Wiederholung Option:- Ist A ein Ausdruck, so ist auch A ? ein Ausdruck. C ::= A? ersetzt die beiden Regeln C ::= A und C ::= , d.h. A kann stehen oder nicht. Bsp.: Eq ::= S? '=' S? Zusammenfassung:- Ist A ein Ausdruck, so ist auch (A ) ein Ausdruck. Wegen der Metaoperationen mit unterschiedlichen Prioritäten und der Anwendung von Operatoren auf mehrere Elemente sind Klammerungen unerläßlich. Bsp.:VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') Wiederholung:- Ist A ein Ausdruck, so ist auch A + ein Ausdruck. C ::= A+ ersetzt die Folge von Regeln C ::= A und C ::= A A und C ::= A A A, usw. d.h. A kann einmal oder beliebig oft stehen Bsp.: S ::= (#x20 | #x9 | #xD | #xA)+
Metasprache der XML-SpezifikationWiederholungs-Option / Differenz / Aufzählung von Einzelzeichen Wiederholungs-Option:- Ist A ein Ausdruck, so ist auch A * ein Ausdruck. C ::= A* ersetzt die Regel C ::= A + | . D.h. A kann keinmal, einmal oder beliebig oft stehen . Bsp.: Names ::= Name (#x20 Name)* Differenz:- Sind A und B Ausdrücke, so ist auch A - B ein Ausdruck. Es sind alle Muster zugelassen, die dem Ausdruck A entsprechen, aber keine Muster, die dem Ausdruck B entsprechen. Bsp.: PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l')) Aufzählung von Einzelzeichen:- Sind o.B.d.A. p & / drei Einzelzeichen , so ist auch [p&/] ein Ausdruck. C ::= [p&/] ersetzt die Regel C ::= p | & | / . Für ein aufgezähltes Einzelzeichen kann auch sein Hexadezimalkode in der Form #xN stehen . Bsp.: PubidChar ::= [-'()+,./:=?;!*#@$_%]
Metasprache der XML-SpezifikationAufzählung Bereiche/Aufzählung nichtzugelassener Einzelzeichen Aufzählung von Bereichen von Einzelzeichen:- Sind o.B.d.A. 0-9 und A-Z zwei Bereiche von Einzelzeichen der Ziffern 0 bis 9 und der Großbuchstaben A bis Z, so ist auch [0-9A-Z] ein Ausdruck. C ::= [0-9A-Z] ersetzt die Regel C ::= 0 | 1 | 2 |…| 9 | A | B |…| Z . Für ein aufgezähltes Einzelzeichen kann auch sein Hexadezimalkode in der Form #xN stehen . Bsp.: CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'Char ::= [#x20-#xD7FF] Aufzählung von nicht zugelassenen Einzelzeichen:- Sind o.B.d.A. p & / drei Einzelzeichen , so ist auch [^p&/] ein Ausdruck. Das in einer Aufzählung [...] vorangestellte Zeichen ^ bedeutet, dass die aufgezählte Folgezeichen nicht stehen dürfen. Für ein aufgezähltes Einzelzeichen kann auch sein Hexadezimalkode in der Form #xN stehen . Bsp.: AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
Metasprache der XML-Spezifikation4.XML-Parser 4. XML Parser Bei der Benutzung von Parsern ist zu beachten, dass diese in jedem Fall von einem unterliegenden deterministischen Parsing-Modell ausgehen. Die Regeln müssen in jedem Fall linksfaktorisiert angegeben werden, d.h. statt der Regel C::=A B | A C muss C::= A ( B | C ) angegeben werden. Die Parser arbeiten in der Regel ohne Look-ahead-Technik und natürlich ohne Backtracking. Die Grammatik muss also eine LF(1)- bzw. eine LR(1)-Grammatik sein. Diese wird in eine CHOMSKY Typ 3 – Form transformiert, die mit einem endlichen Automaten analysierbar ist.