Gramàtica indexada

Les gramàtiques indexades son una generalització de les gramàtiques lliures del context en les que els símbols no terminals estan equipats amb una llista d'etiquetats o índex de símbol. Un llenguatge produït per una gramàtica indexada s'anomena un llenguatge indexat.[1][2]

Definició formal

Una gramàtica indexada es defineix com una 5-tupla on:

  • és un conjunt de variables o de símbols no terminals
  • és un alfabet de símbols terminals
  • és un conjunt de símbols índexs o etiquetes
  • és el símbol d'inici
  • és un conjunt finit de regles de producció

A les regles de producció s'afegeix una cadena (stack) de símbols índex enganxat a cada símbol no terminal , denotat per . Els símbols terminals poden no dur stacks associats. Per un stack d'índex i una cadena de símbols no terminals, denota el resultat d'enganxar a cada símbol no terminal d'.

Per exemple, si és igual a amb símbols terminals i símbols no terminals, llavors denota . Seguint aquesta notació, cada regla de producció ha de ser de la forma:

  1. ,
  2. o

On son símbols no terminals, és un índex, és una cadena de símbols d'índex i és una cadena de símbols no terminals (alguns autors fan servir "..." enlloc de .

Les derivacions son similars a les de les gramàtiques lliures de context excepte per l'stack de símbols índex per cada símbol no terminal. Quan s'aplica una regla de producció com , l'stack d'A es copia a B i C. A més, una regla pot afegir un símbol d'índex a l'stack o treure el de més a l'esquerra.

Formalment, la relació ("derivació directa") es defineix en el conjunt com segueix:

  1. Si és una regla de producció de tipus 1, llavors . Això és, l'stack de la part esquerra de la regla de producció es copia a cada símbol no terminal de la part dreta.
  2. Si és una regla de producció de tipus 2, llavors . Això és, l'stack d'índex de la part dreta s'obté de l'stack de la part esquerra afegint .
  3. Si és una regla de producció de tipus 3, llavors , fent servir la definició de . Això és, el primer índex es treu de l'stack de la part esquerra i es distribueix a cada símbol no terminal de la part dreta.

Exemples

A la pràctica, stacks d'índexs poden comptar i recordar quines regles s'han aplicat i en quin ordre. Per exemple, les gramàtiques indexades poden descriure llenguatges sensibles al context de paraules triples :

S[σ] S[] T[] a T[σ]
S[σ] S[] T[] b T[σ]
S[σ] T[σ] T[σ] T[σ]   T[] ε

Una derivació de abbabbabb és:

S[]S[g]S[gg]S[fgg]T[fgg] T[fgg] T[fgg]a T[gg] T[fgg] T[fgg]ab T[g] T[fgg] T[fgg]abb T[] T[fgg] T[fgg]abb T[fgg] T[fgg]...abb abb T[fgg]...abb abb abb.

Vegeu també

Referències

  1. Aho, Alfred V. «Indexed Grammars—An Extension of Context-Free Grammars». J. ACM, 15, 4, 10-1968, pàg. 647–671. DOI: 10.1145/321479.321488. ISSN: 0004-5411.
  2. Hayashi, Takeshi «On Derivation Trees of Indexed Grammars – An Extension of the uvwxy-Theorem». Publications of the Research Institute for Mathematical Sciences, 9, 1, 30-04-1973, pàg. 61–92. DOI: 10.2977/prims/1195192738. ISSN: 0034-5318.