Die Lexikalische Analysator muss zu scan und identifizieren nur eine endliche Menge gültiger String / Token / Lexem, die auf die Sprache in der Hand gehören. Es sucht nach dem von den Sprachregeln definierten Muster.
Reguläre Ausdrücke haben die Möglichkeit,ausdrücken endlich Sprachen durch definieren ein Muster für endliche Symbolketten , zum Ausdruck bringen. Die durch reguläre Ausdrücke definiert Grammatik wird als reguläre Grammatik bekannt. Die durch regelmäßige Grammatik definierten Sprache ist bekannt als reguläre Sprache.
Regulärer Ausdruck ist ein wichtiger Notation zur Angabe von Mustern. Jedes Muster entspricht einer Menge von Zeichenketten, so dass reguläre Ausdrücke dienen als Namen für einen Satz von Zeichenketten. Programmiersprache Token können durch reguläre Sprachen beschrieben werden. Die Spezifikation von regulären Ausdrücken ist ein Beispiel für eine rekursive Definition. Reguläre Sprachen sind einfach zu verstehen und effiziente Umsetzung.
Es gibt eine Reihe von algebraischen Gesetze, die von regulären Ausdrücken eingehalten werden, die benutzt werden können, um reguläre Ausdrücke in äquivalente Formen manipulieren.
Die verschiedenen operationen auf Sprachen werden:
Union der zwei Sprachen L und M geschrieben wie
L U M = {s | s ist in L oder s ist in M}
Die Verkettung zweier Sprachen L und M geschrieben wie
LM = {st | s ist in L und t ist in M}
Die Kleene Schließung einer Sprache L wird geschrieben als
L * = Null oder mehr Auftreten von Sprache L.
Wenn r und s regulären Ausdrücken bezeichnet die Sprachen L (r) und L (s), dann
Union : (r) | (s) ist ein regulärer Ausdruck, der L (r) UL (s)
Verkettung : (r) (s) ist ein regulärer Ausdruck, der L (r) L (s)
Kleene-Hülle : (r) * ist ein regulärer Ausdruck, bezeichnen (L (r)) *
(r) ist ein regulärer Ausdruck, bezeichnen L (r)
Vertretung gültigen Zeichen einer Sprache in regulären Ausdruck
x * bedeutet null oder mehr Vorkommen von x.
dh sie erzeugen kann. { e, x, xx, xxx, xxxx, … }
x+bedeutet ein oder mehrere Vorkommen von x..
dh sie erzeugen kann { x, xx, xxx, xxxx … } oder x.x*
x? bedeutet höchstens ein Auftreten x
d.h., sie erzeugen kann entweder {x} oder {e}.
[a-z] ist alle Klein Alphabet der englischen Sprache.
[A-Z] ist alle Großbuchstaben Alphabet der englischen Sprache.
[0-9] ist alle natürlichen Zahlen in der Mathematik verwendet.
Brief = [a – z] oder [A – Z]
Stelle = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 oder [0-9]
Zeichen = [ + | - ]
dezimal = (Zeichen)?(Stelle)+
Bezeichner = (Brief)(Brief | Stelle)*
Das einzige Problem, links mit dem Lexer ist, wie man die Gültigkeit eines regulären Ausdrucks in Festlegung der Muster der Schlüsselwörter einer Sprache verwendet, zu überprüfen. Eine allgemein anerkannte Lösung ist, endliche Automaten zur Prüfung zu verwenden.