Reguläre Sprachen, reguläre Ausdrücke - Links
Reguläre Sprachen, reguläre Ausdrücke - Links
Reguläre Sprachen, reguläre Ausdrücke - Links
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: ["]([^"\]|[\].)*["]