02.09.2013 Aufrufe

Reguläre Sprachen, reguläre Ausdrücke - Links

Reguläre Sprachen, reguläre Ausdrücke - Links

Reguläre Sprachen, reguläre Ausdrücke - Links

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Situation<br />

Beurteilung des Textes<br />

bei Textende in dieser Situation<br />

Situation nach<br />

[’] ["] [\] [^’"\]<br />

U unmaskierter Text Text in Ordnung A Q B U<br />

A in Apostrophen schließender Apostroph fehlt U A A A<br />

B nach Backslash außen<br />

Q in Anführungszeichen<br />

R<br />

nach Backslash in<br />

Anführungszeichen<br />

Text endet mit Backslash als<br />

Maskierungszeichen<br />

schließendes Anführungszeichen<br />

fehlt<br />

schließendes Anführungszeichen<br />

fehlt<br />

U U U U<br />

Q U R Q<br />

Q Q Q Q<br />

Diese Tabelle liest sich so: anfangs befinden wir uns im unmaskierten Text, also an einer Stelle, an der<br />

alle Apostrophe und Anführungszeichen noch nicht geöffnet oder aber schon wieder wieder<br />

geschlossen sind; diesen Fall kürzen wir mit U ab. Kommt dann eines der drei Maskierungszeichen, so<br />

verändert sich auf jeden Fall die Situation;<br />

die drei neuen Situationen kürzen wir mit A (für Apostroph), B (für Backslash) und Q (für<br />

Anführungszeichen, engl. "quote") ab. Die folgenden drei Tabellenzeilen machen dann Aussagen über<br />

die jeweils dort entstandene Situation. Man mache sich die übrigen Tabellenzeilen ebenso klar.<br />

Wenn man eine solche Tabelle anlegt, stellt man auf jeden Fall sicher, dass man keine möglicherweise<br />

auftretende Situation vergisst. Im Zweifelsfall ist es besser, mehr verschiedene Situationen zu<br />

unterscheiden; man kann sie ja nachträglich noch zusammenfassen, wenn sich herausstellt, dass in<br />

ihnen jeweils dieselben nächsten Zeichen dieselben Reaktionen auslösen.<br />

Diese Tabelle können wir natürlich auch grafisch darstellen, und mit unserem mittlerweise erworbenen<br />

Wissen über endliche Automaten erkennen wir, dass eine Tabelle wie diese nur eine alternative<br />

Schreibweise für einen endlichen Automaten darstellt. Die Umwandlung eines endlichen Automaten in<br />

einen <strong>reguläre</strong>n Ausdruck ist für uns inzwischen eine leichte Standardaufgabe: in diesem einfachen<br />

Fall genügt sogar das vereinfachte Verfahren, das im Abschnitt [S.33] über diese Umwandlung zuerst<br />

dargestellt wurde. In wenigen Schritten sind wir bei einem <strong>reguläre</strong>n Ausdruck:<br />

36<br />

von Q einmal über R nach Q zurück: [\].<br />

von Q nach Q, alle Wege nicht über U: ([^"\]|[\].)*<br />

von U einmal über Q nach U zurück: ["]([^"\]|[\].)*["]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!