Die Sprachtheorie ist mit der Berechnungstheorie verwandt. Welches ist die philosophischere Seite der Informatik, über die Entscheidung, welche Programme möglich sind oder welche jemals geschrieben werden können, und welche Art von Problemen ist es unmöglich, einen Algorithmus zu schreiben, um sie zu lösen.
Ein regulärer Ausdruck beschreibt eine reguläre Sprache. Eine reguläre Sprache ist eine Sprache, die von einem deterministischen endlichen Automaten bestimmt werden kann.
Sie sollten den Artikel über Finite State Machines lesen: http://en.wikipedia.org/wiki/Finite_state_machine
Und reguläre Sprachen:
http://en.wikipedia.org/wiki/Regular_language
Alle regulären Sprachen sind kontextfreie Sprachen, aber es gibt kontextfreie Sprachen, die nicht regulär sind. Eine kontextfreie Sprache ist die Menge aller Zeichenfolgen, die von einem kontextfreien Grammer oder Pushdown-Automaten akzeptiert werden, bei denen es sich um eine Finite-State-Maschine mit einem einzelnen Stapel handelt: http://en.wikipedia.org/wiki/Pushdown_automaton#PDA_and_Context-free_Languages
Es gibt kompliziertere Sprachen, für die eine Turing-Maschine (jedes mögliche Programm, das Sie auf Ihrem Computer schreiben können) erforderlich ist, um zu entscheiden, ob eine Zeichenfolge in der Sprache vorliegt oder nicht.
Die Sprachtheorie ist auch sehr verwandt mit dem P vs. NP-Problem und einigen anderen interessanten Dingen.
Meine Einführung in die Informatik im dritten Lehrjahr war ziemlich gut darin, dieses Zeug zu erklären: Einführung in die Theorie der Berechnung. Von Michael Sipser. Aber es hat mich 160 Dollar gekostet, es neu zu kaufen, und es ist nicht sehr groß. Vielleicht finden Sie eine gebrauchte Kopie oder eine Kopie in einer Bibliothek oder etwas, das Ihnen helfen könnte.
BEARBEITEN:
Die Einschränkungen von regulären Ausdrücken und höheren Sprachklassen wurden in den letzten 50 Jahren tonnenweise untersucht. Vielleicht interessiert Sie das Pumping Lemma für reguläre Sprachen. Es ist ein Mittel, um zu beweisen, dass eine bestimmte Sprache nicht regelmäßig ist:
http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages
Wenn eine Sprache nicht regulär ist, kann sie kontextfrei sein, was bedeutet, dass sie von einem kontextfreien Grammatiker beschrieben werden kann, oder sogar in einer höheren Sprachklasse. Sie können durch das Pump-Lemma für kontextfrei beweisen, dass sie nicht kontextfrei ist Sprachen, die denen für reguläre Ausdrücke ähnlich sind.
Eine Sprache kann sogar unentscheidbar sein, was bedeutet, dass selbst eine Turing-Maschine (möglicherweise kann Ihr Computer programmiert werden) nicht programmiert werden kann, um zu entscheiden, ob eine Zeichenfolge wie in der Sprache akzeptiert oder abgelehnt werden soll.
Ich denke, der Teil, an dem Sie am meisten interessiert sind, sind die Finite-State-Maschinen (sowohl deterministisch als auch deterministisch), um zu sehen, welche Sprachen ein regulärer Ausdruck entscheiden kann, und das Pump-Lemma, um zu beweisen, welche Sprachen nicht regulär sind.
Grundsätzlich ist eine Sprache nicht regulär, wenn sie eine Art Gedächtnis oder Zählfähigkeit benötigt. Die Sprache der übereinstimmenden Klammern ist beispielsweise nicht regulär, da sich die Maschine merken muss, ob sie eine Klammer geöffnet hat, um zu wissen, ob sie eine schließen muss.
Die Sprache aller Zeichenfolgen mit den Buchstaben a und b, die mindestens drei b enthalten, ist eine reguläre Sprache: a ba ba ba
Die Sprache aller Zeichenfolgen mit den Buchstaben a und b, die mehr b als a enthalten, ist nicht regulär.
Sie sollten auch nicht wissen, dass alle endlichen Sprachen regulär sind, zum Beispiel:
Die Sprache aller Zeichenfolgen mit einer Länge von weniger als 50 Zeichen unter Verwendung der Buchstaben a und b, die mehr b als a enthalten, ist regulär, da wir wissen, dass sie endlich als (b | abb | bab | bba | aabbb | ababb | beschrieben werden kann. ..) ect bis alle möglichen Kombinationen aufgelistet sind.
Automata Theorem