Was ist Parsing?
In der Informatik ist Parsing der Prozess der Analyse von Text, um festzustellen, ob er zu einer bestimmten Sprache gehört oder nicht (d. h. ob er syntaktisch gültig für die Grammatik der betreffenden Sprache ). Es ist eine informelle Bezeichnung für die syntaktische Analyse Prozess.
Nehmen wir zum Beispiel an, die Sprache a^n b^n
(d.h. gleiche Anzahl von Zeichen A gefolgt von gleicher Anzahl von Zeichen B). Ein Parser für diese Sprache würde akzeptieren AABB
Eingabe und verwerfen die AAAB
Eingabe. Das ist die Aufgabe eines Parsers.
Außerdem könnte während dieses Prozesses eine Datenstruktur für die weitere Verarbeitung erstellt werden. In meinem vorangegangenen Beispiel könnte es zum Beispiel darum gehen, die AA
et BB
in zwei getrennten Stapeln.
Alles, was danach passiert, wie z. B. der Sinngebung von AA
ou BB
oder in etwas anderes umwandeln, ist kein Parsing. Das Verleihen von Bedeutung an Teile einer Eingabesequenz von Token wird als semantische Analyse .
Was wird nicht geparst?
- Parsing bedeutet nicht, eine Sache in eine andere umzuwandeln. Die Umwandlung von A in B ist im Wesentlichen das, was ein Compiler tut. Das Kompilieren umfasst mehrere Schritte, das Parsen ist nur einer davon.
- Parsing bedeutet nicht, einem Text eine Bedeutung zu entnehmen. Das heißt semantische Analyse ein Schritt des Kompilierungsprozesses.
Wie kann man es am einfachsten verstehen?
Ich denke, der beste Weg zum Verständnis des Parsing-Konzepts ist, mit den einfacheren Konzepten zu beginnen. Das einfachste Konzept im Bereich der Sprachverarbeitung ist der endliche Automat. Es handelt sich um einen Formalismus zum Parsen regulärer Sprachen, wie z. B. reguläre Ausdrücke.
Es ist sehr einfach: Sie haben eine Eingabe, eine Reihe von Zuständen und eine Reihe von Übergängen. Betrachten Sie die folgende Sprache, die aus dem Alphabet aufgebaut ist { A, B }
, L = { w | w starts with 'AA' or 'BB' as substring }
. Der nachstehende Automat stellt einen möglichen Parser für diese Sprache dar, bei dem alle gültigen Wörter mit "AA" oder "BB" beginnen.
A-->(q1)--A-->(qf)
/
(q0)
\
B-->(q2)--B-->(qf)
Es ist ein sehr einfacher Parser für diese Sprache. Sie beginnen bei (q0)
den Ausgangszustand, dann liest man ein Symbol von der Eingabe, wenn es A
dann gehen Sie zu (q1)
Zustand, ansonsten (es ist ein B
erinnern Sie sich daran, dass das Alphabet nur A
et B
) ziehen Sie um nach (q2)
Staat und so weiter. Wenn Sie erreichen (qf)
Zustand, dann wurde die Eingabe akzeptiert.
Da er visuell ist, brauchen Sie nur einen Stift und ein Blatt Papier, um jedem, auch einem Kind, zu erklären, was ein Parser ist. Ich denke, die Einfachheit ist es, die Automaten zum geeignetsten Mittel macht, um Sprachverarbeitungskonzepte wie Parsing zu lehren.
Als Informatikstudent schließlich werden Sie solche Konzepte in theoretischen Informatikkursen wie Formale Sprachen und Rechentheorie eingehend studieren.