Zur Haupt­na­vi­ga­ti­on sprin­gen [Alt]+[0] Zum Sei­ten­in­halt sprin­gen [Alt]+[1]

Sprach­ty­pen und zu­ge­hö­ri­ge Gram­ma­ti­ken (BP: 2, 6, 9-14)

Auf Seite 3 wurde schon eine Über­sicht über ver­schie­de­ne Typen von Spra­chen und Au­to­ma­ten ge­ge­ben. Beim Stu­di­um der Au­to­ma­ten stand bis­her die Er­ken­nung (ins­be­son­de­re die ma­schi­nel­le Er­ken­nung) einer Spra­che im Mit­tel­punkt, also die au­to­ma­ti­sche Lö­sung ihrer Wort­pro­ble­me: Ge­hört eine ge­ge­be­ne Zei­chen­fol­ge zu einer ge­ge­be­nen Spra­che?

Gram­ma­ti­ken und re­gu­lä­re Aus­drü­cke hin­ge­gen die­nen der Be­schrei­bung von Spra­chen: Damit legen wir fest, aus wel­chen Wör­tern eine Spra­che be­steht. Diese Be­schrei­bungs­mit­tel sind mit den ent­spre­chen­den Au­to­ma­ten­ty­pen so eng ver­bun­den, dass aus einer Gram­ma­tik (die eine Spra­che be­schreibt) ein pas­sen­der Au­to­mat (der sie er­kennt) sogar au­to­ma­tisch er­zeugt wer­den kann. Im Un­ter­richt emp­fiehlt es sich, Be­schrei­bung und Er­ken­nung fach­sprach­lich deut­lich zu tren­nen, weil das den Schü­lern eine ge­dank­li­che Vor­sor­tie­rung der vie­len Konzep­te er­mög­licht.

Wie für DEAs gibt es auch für Gram­ma­ti­ken eine for­ma­le Dar­stel­lung, die die Schü­ler an­ge­ben kön­nen müs­sen. Als Bei­spiel soll hier die Spra­che der arith­me­ti­schen Aus­drü­cke die­nen, die also Wör­ter wie „6“ oder „4+1“ oder „(5+2)*7-((5+2)*3)“ ent­hält; auf Seite 10 wurde schon be­spro­chen, dass diese Spra­che wegen der ge­schach­tel­ten Klam­mern nicht re­gu­lär ist.

Ta­bel­le 2 zeigt die Be­stand­tei­le einer Gram­ma­tik am Bei­spiel die­ser Spra­che:

Ta­bel­le 2: Be­stand­tei­le einer Gram­ma­tik, Bei­spiel­gram­ma­tik für arith­me­ti­sche Aus­drü­cke

Be­griff Er­läu­te­rung for­mal Bei­spiel für Re­chen­aus­drü­cke, Be­mer­kun­gen
Menge der Ter­mi­na­le (syn­onym zu Al­pha­bet) Menge der Zei­chen, die in der Ein­ga­be zu­läs­sig sind Menge ∑ ∑ = {+, -,*,/, (, ), 0, 1 \}
Menge der Va­ria­blen (auch „Nicht­terminale“) Menge von Platz­hal­tern, die nach und nach durch Ter­mi­na­le er­setzt wer­den müs­sen Menge V V = {A, S}
Va­ria­blen wer­den üb­li­cher­wei­se mit Groß­buch­sta­ben be­zeich­net, hier für „Aus­druck“ und „Sum­mand“
Pro­duk­tio­nen Er­set­zungs­vor­schrif­ten, die es er­lau­ben, Va­ria­blen durch an­de­re Va­ria­blen sowie Ter­mi­na­le zu er­set­zen P ⊂ V x (V ∪ ∑) *
siehe Fuß­no­te 21
Menge der Pro­duk­tio­nen: P= {
(1) A → S + S,
(2) A → S – S,
(3) S → ( A ),
(4) S → A,
(5) S → 0,
(6) S → 1,
… und wei­te­re Zif­fern
}
Start­sym­bol Va­ria­ble, mit der die Er­set­zung star­tet Start­sym­bol in V Start­sym­bol: A

Jede Pro­duk­ti­on ist als Er­set­zungs­re­gel zu lesen. Die Pro­duk­ti­on A→S+S be­deu­tet bei­spiels­wei­se „die Va­ria­ble A darf durch S+S er­setzt wer­den“. In den meis­ten Gram­ma­ti­ken dür­fen Va­ria­blen und Ter­mi­na­le auf der rech­ten Seite der Pro­duk­ti­on bunt ge­mischt ste­hen; im Bei­spiel ist S wie­der eine Va­ria­ble, das + je­doch ein Ter­mi­nal der Gram­ma­tik. Man­che Er­set­zun­gen er­zeu­gen also neue Va­ria­blen, die dann wei­ter er­setzt wer­den müs­sen. Die Er­set­zung muss immer mit dem Start­sym­bol der Gram­ma­tik be­gin­nen. So­bald keine Va­ria­blen mehr vor­kom­men, son­dern nur noch Ter­mi­na­le da­ste­hen und ein Wort bil­den, sagt man „das Wort wurde aus der Gram­ma­tik her­ge­lei­tet“. Die Her­lei­tung be­steht dabei aus der Folge von Er­set­zun­gen.

Mit der obi­gen Gram­ma­tik kann man etwa das Wort „1+(0-(1+1))“ aus dem Start­sym­bol A in 9 Schrit­ten her­lei­ten. Den ers­ten Schritt liest man als „A wird mit Hilfe von Pro­duk­ti­on (1) durch S+S er­setzt“:

(1) (6) (3) (2)
A S+S 1+S 1+(A) 1+(S-S)
(5) (3) (1) (6)
1+(0-S) 1+(0-(A)) 1+(0-(S+S)) 1+(0-(1+S))
(6)
1+(0-(1+1))

Da sich mit einer Gram­ma­tik man­che Wör­ter her­lei­ten las­sen und an­de­re nicht, legt auch jede Gram­ma­tik eine Spra­che fest (eben die Wör­ter, die sich damit her­lei­ten las­sen). So­bald für ein Wort eine sol­che Her­lei­tung exis­tiert, weiß man also, dass das Wort der Gram­ma­tik ge­nügt. Dabei kann es durch­aus meh­re­re Her­lei­tun­gen für das glei­che Wort geben: Oben könn­te vor Pro­duk­ti­on 5 auch zu­nächst Pro­duk­ti­on 3 zum Zuge kom­men und den zwei­ten Sum­man­den er­set­zen. Die Her­lei­tung von Wör­tern mit Hilfe einer Gram­ma­tik ist eine Stan­dard­auf­ga­be im schrift­li­chen Ab­itur.

Eben­so müs­sen Schü­le­rin­nen für ge­eig­ne­te Gram­ma­ti­ken be­grün­den kön­nen, warum sich be­stimm­te Wör­ter damit nicht ab­lei­ten las­sen. So kann man das Wort (((1+1) hier nicht her­lei­ten: Da Klam­mern nur in Pro­duk­ti­on 3 und immer paar­wei­se ent­ste­hen, kön­nen un­paa­ri­ge Klam­mern mit die­ser Gram­ma­tik also nicht her­ge­lei­tet wer­den. An­ders ge­sagt: Das Wort ge­horcht der Gram­ma­tik nicht und ge­hört nicht zur be­schrie­be­nen Spra­che.

Wie immer emp­fiehlt es sich, zwi­schen Be­schrei­bung und Er­ken­nung von Spra­chen zu unter­scheiden; Gram­ma­ti­ken sind zu­nächst ein Be­schrei­bungs­werk­zeug. Für die Ein­ord­nung des Un­ter­richts­stoffs in einen grö­ße­ren Zu­sam­men­hang kann man noch auf­zei­gen, dass für die Er­ken­nung der beschrie­benen Spra­che ein Au­to­mat so ge­zielt ge­steu­ert wer­den müss­te, dass er die Her­lei­tung selb­stän­dig durch­führt.

Nun ist die oben an­ge­ge­be­ne Gram­ma­tik zwar ein­fach zu ver­ste­hen. Sie un­ter­stützt die automa­tische Her­lei­tung aber nicht, weil sie einen Über­blick über die ge­sam­te Ein­ga­be ver­langt: Man muss schon zu Be­ginn das ganze Wort ken­nen, auf das die Her­lei­tung letzt­lich zielt, und die Pro­duk­tio­nen von An­fang an in einer „ge­schick­ten“ Rei­hen­fol­ge an­wen­den, bei­spiels­wei­se für die Zu­ord­nung von Klam­mern oder die kor­rek­te Be­rück­sich­ti­gung von „Punkt vor Strich“. Kann ein Au­to­mat da­ge­gen die Ein­gabe nur „ein Zei­chen nach dem an­de­ren“ an­schau­en, muss er aus einer an­de­ren Gram­ma­tik er­zeugt wer­den (die aber die glei­che Spra­che be­schreibt).22

Re­gu­lä­re Gram­ma­ti­ken, re­gu­lä­re Spra­chen (BP: Item 10)

Man kann die er­laub­te Ge­stalt der Pro­duk­tio­nen ein­schrän­ken. Lässt man bei­spiels­wei­se nur Pro­duk­tio­nen zu, die nach fol­gen­den be­son­ders ein­fa­chen Mus­tern auf­ge­baut sind…:

N → xA (rechts ein Ter­mi­nal, dann ein Nicht­ter­mi­nal) oder
S → y (rechts nur ein Ter­mi­nal) oder
T → ε (leere Pro­duk­ti­on, meist mit ε für „empty“ ge­schrie­ben)
… dann heißt die re­sul­tie­ren­de Gram­ma­tik eine re­gu­lä­re Gram­ma­tik. Die Spra­chen, die man mit re­gu­lä­ren Gram­ma­ti­ken be­schrei­ben kann, sind wie­der die schon er­wähn­ten re­gu­lä­ren Spra­chen. Und re­gu­lä­re Spra­chen sind genau die Spra­chen, die von DEAs er­kannt wer­den kön­nen. Das be­deu­tet: Zu jeder re­gu­lä­ren Gram­ma­tik gibt es einen DEAs, der genau die Wör­ter er­kennt, die man mit der Gram­ma­tik her­lei­ten kann, und um­ge­kehrt. Regulä­re Spra­chen las­sen sich also mit DEAs ver­ar­bei­ten und er­ken­nen.

Die Um­wand­lung zwi­schen einem DEA und einer zu ihm äqui­va­len­ten re­gu­lä­ren Gram­ma­tik ist nicht schwer: Man er­stellt zu jeder Va­ria­ble einen Zu­stand und zu jeder Pro­duk­ti­on einen Über­gang. Die Pro­duk­ti­on N→xA be­deu­tet ja „wenn du ein N er­war­test, ver­brau­che ein x und er­war­te dann ein A“, ent­spricht also einem Über­gang von Zu­stand N mit Ein­ga­be­zei­chen x nach Zu­stand A. Die ε-Pro­duk­tio­nen ent­spre­chen End­zu­stän­den.

Re­gu­lä­re Aus­drü­cke (BP: Item 10)

Be­son­ders prak­tisch ist eine an­de­re Me­tho­de, re­gu­lä­re Spra­chen zu be­schrei­ben: Die so­ge­nann­ten re­gu­lä­ren Aus­drü­cke, die man mit Hilfe re­gu­lä­rer Ope­ra­to­ren for­mu­liert. Die wich­tigs­ten re­gu­lä­ren Ope­ra­to­ren sind...

x        Er­wäh­nung eines Al­pha­bet­zei­chens: Hier muss genau ein „x“ ste­hen.

R*      „R-stern“: der re­gu­lä­re Aus­druck R darf mehr­fach (auch 0 mal) hin­ter­ein­an­der ste­hen

RS      Ver­ket­tung: erst muss etwas ste­hen, das zum re­gu­lä­ren Aus­druck R passt; dann etwas, das zu S passt

R|S     Oder: ent­we­der ein R, oder ein S

Mit die­ser „Mi­ni­mal­aus­stat­tung“ von drei Ope­ra­to­ren las­sen sich im Prin­zip schon alle re­gu­lä­ren Aus­drü­cke schrei­ben. Be­que­mer, kür­zer und über­sicht­li­cher geht es, wenn man wei­te­re Operato­ren hin­zu­nimmt. Es gibt un­ter­schied­li­che „Dia­lek­te“ sol­cher Er­wei­te­run­gen; in Li­bre­Of­fice sind unter an­de­rem die fol­gen­den ver­füg­bar:

R+      „R plus“: min­des­tens ein mal R (Ab­kür­zung für RR*)

[a-f]    Ab­kür­zung für a|b|c|d|e|f

.        „Punkt“: genau ein be­lie­bi­ges Zei­chen

R?      R op­tio­nal (darf hier ste­hen, muss aber nicht)

\.      Nach Back­slash wer­den re­gu­lä­re Ope­ra­to­ren als „nor­ma­le“ Zei­chen an­ge­se­hen

()      Mit Klam­mern kann man Teil­aus­drü­cke grup­pie­ren

Bei­spie­le:
Re­gu­lä­rer Aus­druck Wort­bei­spie­le Be­schrei­bung
M(a|e)(i|y)er Maier, Mayer, ... alle vier Schreib­wei­sen von Meier, Mayer usw.
(0|1)+ 0, 1, 00, 11, 10, 1001000, 000111 be­lie­big lange, nicht­lee­re Fol­gen von 0 und 1
0|(1(0|1)*) 0, 1, 111, 1010, 10000 Bi­n­är­zah­len ohne „über­flüs­si­ge“ füh­ren­de Nul­len (ein­zel­ne 0 aber er­laubt)
b+@(b+\.)+\.bb+ b@​b.​bb bbb@​b.​b.​b.​bbbb bb@​bbb.​b.​bbb.​bb „Mail­adres­sen“, die nur b ent­hal­ten und deren Top­le­vel­do­main min­des­tens zwei Buch­sta­ben hat
[1-9]+[0-9]*[13579] 17, 84841, 509, 8765 un­ge­ra­de, min­des­tens zwei­stel­li­ge De­zi­mal­zah­len
Sch..e Schu­le, Scha­le, Scha­de, Schrie, Sche­re, Sch7=e, Schö­ne, Scho­te

Die Hand­ha­bung von re­gu­lä­ren Aus­drü­cken ver­langt etwas Übung, ist aber in vie­len Si­tua­tio­nen ein äu­ßerst prak­ti­sches Hilfs­mit­tel. Auch Li­bre­Of­fice er­laubt die Suche nach re­gu­lä­ren Aus­drü­cken, wenn man im „Su­chen und Er­set­zen“-Dia­log „wei­te­re Op­tio­nen“ öff­net und dort re­gu­lä­re Aus­drü­cke ak­ti­viert. Die On­line-Hilfe23 ent­hält eine Liste der ver­füg­ba­ren re­gu­lä­ren Ope­ra­to­ren.

Kon­text­freie Gram­ma­ti­ken – kon­text­freie Spra­chen (BP: Items 12, 13, 14)

Wie wir auf Seite 10 ge­se­hen haben, kön­nen DEA keine be­lie­big tief ge­klam­mer­ten Aus­drü­cke er­ken­nen. Da DEA genau die re­gu­lä­ren Spra­chen er­ken­nen und damit gleich mäch­tig sind wie re­gu­lä­re Aus­drü­cke, kön­nen re­gu­lä­re Aus­drü­cke also auch keine kor­rek­ten Klam­me­run­gen be­schrei­ben.

Un­mög­li­cher Ar­beits­auf­trag: Be­auf­tra­gen Sie (nach ei­ni­gen er­folg­reich er­le­dig­ten Auf­ga­ben) Ihre Lern­grup­pe, kor­rek­te Klam­me­rung aus­schließ­lich mit Hilfe re­gu­lä­rer Ope­ra­to­ren zu be­schrei­ben – die so ge­won­ne­ne In­tui­ti­on für die Un­mög­lich­keit bleibt oft nach­hal­ti­ger hän­gen, als eine for­ma­le Be­grün­dung.

Wie zu den DEA, gibt es auch zu Kel­ler­au­to­ma­ten (siehe Seite 11) Gram­ma­ti­ken, die genau deren Spra­chen be­schrei­ben: Die kon­text­frei­en Gram­ma­ti­ken. Eine kon­text­freie Gram­ma­tik darf keine Pro­duk­tio­nen mit Kon­text ent­hal­ten. Ein Ge­gen­bei­spiel einer kon­text­sen­si­ti­ven (oder „kon­text­be­haf­te­ten“) Pro­duk­ti­on wäre etwa

    xAy → xabcy

Die Ter­mi­na­le neben A auf der lin­ken(!) Seite der Pro­duk­ti­on be­deu­ten, dass A nur „im Kon­text von“ x und y durch abc er­setzt wer­den darf, sonst aber nicht. Kon­text­freie Gram­ma­ti­ken hin­ge­gen er­lau­ben nur kon­text­freie Pro­duk­tio­nen.

Bei­spie­le kon­text­sen­si­ti­ver Spra­chen wur­den auf Seite 13 er­läu­tert.

Ex­ten­ded Ba­ckus-Naur-Form (BP: Item 5)

Die EBNF dient als men­schen- und ma­schi­nen­les­ba­re Schreib­wei­se für kon­text­freie Pro­duk­tio­nen. Zu­guns­ten des Kom­forts und einer kom­pak­ten Dar­stel­lung er­laubt EBNF auch Ope­ra­to­ren ähn­lich re­gu­lä­ren Aus­drü­cken, näm­lich den Stern * für „das davor be­lie­big oft“, das Plus für „min­des­tens ein­mal“, den senk­rech­ten Strich | für „oder“ sowie Klam­me­run­gen.

Die Gram­ma­tik für Re­chen­aus­drü­cke von Seite 16 könn­te man etwa so in EBNF über­set­zen

Va­ri­an­te 1:
  Aus­druck ::= Sum­mand '+' Sum­mand
  Aus­druck ::= Sum­mand '-' Sum­mand
  Sum­mand ::= '(' Aus­druck ')'
  Sum­mand ::= Aus­druck
  Sum­mand ::= '0'
  Sum­mand ::= '1'
… aber diese Be­schrei­bung ko­piert ja nur die Pro­duk­tio­nen. Mit EBNF geht es über­sicht­li­cher:

Va­ri­an­te 2:
  Aus­druck ::= Sum­mand ( ‚+‘ | ‚-‘ ) Sum­mand
  Sum­mand ::= '(' Aus­druck ')'
  Sum­mand ::= Aus­druck
  Sum­mand ::= '0' | '1'

Die Pro­duk­ti­on Sum­mand ::= Aus­druck wurde in die Gram­ma­tik ei­gent­lich nur ein­ge­fügt, damit be­lie­big lange Sum­men („2+3+4+5“) zu­läs­sig sind. Aber auch das geht noch ein­fa­cher:

Va­ri­an­te 3:
  Aus­druck ::= Sum­mand ( ( ‚+‘ | ‚-‘ ) Sum­mand ) +
  Sum­mand ::= '(' Aus­druck ')'
  Sum­mand ::= '0' | '1'

Wie schon bei Gram­ma­ti­ken und re­gu­lä­ren Aus­drü­cken gibt es auch bei EBNF immer meh­re­re äquivalen­te Be­schrei­bun­gen der glei­chen Spra­che (wie es auch immer meh­re­re äqui­va­len­te Au­to­ma­ten für eine Spra­che gibt).

Va­ri­an­te 3 wird noch ein­fa­cher, wenn man auch eine ein­zel­ne Zahl als Aus­druck an­sieht: Dafür muss man nur das Plus durch einen Stern („min­des­tens null mal“) er­set­zen und kann dann auch auf die zwei­te Va­ria­ble ver­zich­ten.

Va­ri­an­te 4:
  Aus­druck ::= Aus­druck ( ( '+' | '-' ) Aus­druck ) *
  Aus­druck ::= '(' Aus­druck ')'
  Aus­druck ::= '0' | '1'

Weil jetzt auch ein­zel­ne Zah­len er­laubt sind (statt ech­ter Sum­men­ter­me), han­delt es sich al­ler­dings nicht mehr um die glei­che Spra­che. Die Va­ri­an­ten 3 und 4 sind also nicht äqui­va­lent.

Syn­tax­dia­gram­me (BP: Item 4)

Die meis­ten Men­schen kön­nen vi­su­el­le Dar­stel­lun­gen leich­ter auf­fas­sen als tex­tu­el­le. Weil Syn­tax­dia­gram­me genau die glei­chen Beschreibungs­möglich­keiten bie­ten wie kon­text­freie Gram­mati­ken, eig­nen sie sich gut für den Auf­bau der nö­ti­gen in­tui­ti­ven Vor­stel­lun­gen; die eng­li­sche Be­zeich­nung „rail­road dia­gram“ sug­ge­riert zudem die In­ter­pre­ta­ti­on als „Modelleisen­bahn“, durch die man mit dem Fin­ger hin­durch fährt und dabei nach und nach die Aus­ga­be er­zeugt (bzw. ver­braucht); diese en­ak­ti­ve Ver­wen­dung ist auch in der Kurs­stu­fe oft noch hilf­reich.

Der Um­gang mit Syntax­diagrammen wird im Bil­dungs­plan aus­drück­lich ver­langt. Für eine Ein­füh­rung mit Übun­gen bie­tet sich die (auch sonst emp­feh­lens­wer­te) Seite www.​inf-​schu­le.​de24 an; für ei­ge­ne Syntaxdia­gramme ste­hen im Web Ge­ne­ra­to­ren zur Ver­fü­gung25 .

Die Ab­bil­dun­gen 7 und 8 zei­gen die Syn­tax­dia­gram­me zu zwei der oben er­wähn­ten EBNF-Be­schrei­bun­gen arith­me­ti­scher Aus­drü­cke.

Weil im Dia­gramm die Kur­ven­rich­tung der „Wei­chen“ Be­deu­tung trägt, soll­ten Schü­le­rin­nen bei der hän­di­schen Er­stel­lung von Syn­tax­dia­gram­men sehr sau­ber zeich­nen, damit zwei­fels­frei er­sicht­lich ist, in wel­che Rich­tung „das Gleis ab­biegt“.

 

Syntaxdiagramm für Rechen­ausdrücke (zu EBNF Variante 1)

Ab­bil­dung 7: Syn­tax­dia­gramm für Rechen­ausdrücke (zu EBNF Va­ri­an­te 1) ZPG In­for­ma­tik [CC BY-SA 4.0 DE], aus zpg_­spra­chen­au­to­ma­ten_hin­ter­grund.odt

Syntaxdiagramm für Rechenausdrücke (zu EBNF Variante 4)

Ab­bil­dung 8: Syn­tax­dia­gramm für Re­chen­aus­drü­cke (zu EBNF Va­ri­an­te 4) ZPG In­for­ma­tik [CC BY-SA 4.0 DE], aus zpg_­spra­chen­au­to­ma­ten_hin­ter­grund.odt

Es ist leicht zu be­grün­den, dass Syn­tax­dia­gram­me und kon­text­freie Gram­ma­ti­ken ein­an­der ent­sprechen und genau gleich mäch­tig sind, was im Un­ter­richt den Über­gang zu einer for­ma­le­ren Dar­stel­lung (EBNF oder Gram­ma­ti­ken) er­leich­tert:

  • Es muss ein „Start­gleis“ geben, auf dem „die Lok am An­fang los­fährt“ (so wie Grammati­ken eine Start­va­ria­ble haben);
  • Recht­ecke ste­hen für Va­ria­blen;
  • Ovale ste­hen für Ter­mi­na­le;
  • Pro­duk­tio­nen mit glei­cher lin­ker Seite wer­den mit „Wei­chen“ zusam­men­gefasst, so wie in EBNF mit dem ODER-Ope­ra­tor | (dem senk­rech­ten Strich).
  • die rech­te Seite eines Syn­tax­dia­gramms darf leer sein („der Zug fährt ein­fach durch“), so wie es auch leere Pro­duk­tio­nen geben kann;
  • die Über­schrift eines Syn­tax­dia­gramms ent­hält (wie die linke Seite einer kon­text­frei­en Pro­duk­ti­on) keine „Be­din­gung“, also kei­nen Kon­text;
  • auch der Hin­weis auf die Re­kur­si­on ist je­weils bei Gram­ma­ti­ken und Syn­tax­dia­gram­men sinn­voll, um die­ses wich­ti­ge Kon­zept in un­ter­schied­li­chen Zu­sam­men­hän­gen immer wie­der zu ver­an­kern: Syn­tax­dia­gram­me kön­nen di­rekt (ein Gleis ent­hält sich sel­ber) oder wie im Bei­spiel in­di­rekt re­kur­siv sein, genau wie Pro­duk­tio­nen einer Gram­ma­tik.
  • Nur die ver­schie­de­nen Mög­lich­kei­ten, „Wei­chen“ ein­zu­bau­en und damit Aus­weich- und Wieder­holungs­möglichkeiten zu mo­del­lie­ren, gehen über das hin­aus, was in Gram­mati­ken im en­ge­ren Sinne er­laubt ist. Trotz­dem las­sen sich alle Syn­tax­dia­gram­me in kontext­freie Pro­duk­tio­nen um­wan­deln und um­ge­kehrt.

 

21 Diese Form der Pro­duk­tio­nen ist nicht die all­ge­mei­ne, son­dern die für kon­text­freie Gram­ma­ti­ken. Weil kon­text­sen­si­ti­ve Gram­ma­ti­ken aber nicht be­han­delt wer­den, hal­ten wir das für aus­rei­chend.

22 Für die au­to­ma­ti­sche Her­lei­tung muss man die kon­text­freie Gram­ma­tik in einen gleich­wer­ti­gen Keller­auto­maten um­wan­deln, von dem wir zwar wis­sen (siehe Ta­bel­le auf Seite 3), dass er tat­säch­lich exis­tiert; es gibt aber zu jeder Spra­che viele Gram­ma­ti­ken, und die meis­ten davon waren frü­her nur schwie­rig um­zu­wan­deln: Man muss­te die Pro­duk­tio­nen zu­nächst recht müh­sam in eine spe­zi­el­le Form brin­gen, die die Um­wand­lung er­laub­te. Erst nach 2010 gab es noch­mals Fort­schrit­te bei den so ge­nann­ten „Parsergene­ra­toren“: Heute kann man aus fast jeder Gram­ma­tik vollautoma­tisch einen Kel­ler­au­to­ma­ten er­zeu­gen las­sen, der die Spra­che zu die­ser Gram­ma­tik er­kennt. Der Ge­ne­ra­tor ANTLR etwa er­zeugt sehr leis­tungs­fä­hi­ge Par­ser mit „ad­ap­ti­vem Loo­kahead“.

23 On­line ver­füg­bar etwa hier: https://​help.​li­bre­of­fice.​org/​3.​4/​Com­mon/​List_​of_​Re­gu­lar_​Ex­pres­si­ons/​de

24 https://​www.​inf-​schu­le.​de/​spra­chen/​spr​ache​nund​auto​mate​n/​spr​achb​esch​reib​ung (Abruf 6.1.2021)

25 Etwa der hier ver­wen­de­te https://​www.​bott­le­caps.​de/​rr/​ui (Abruf 6.1.2021)

 

Hin­ter­grund­in­for­ma­tio­nen: Her­un­ter­la­den [odt][669 KB]

 

Wei­ter zu An­wen­dun­gen und Bei­spie­le