Gramàtica indexada

De testwiki
Salta a la navegació Salta a la cerca

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 G=(N,T,F,P,S)on:

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

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

Per exemple, si αés igual a aBCdE amb a,dTsímbols terminals i B,C,ENsímbols no terminals, llavors α[σ]denota aB[σ]C[σ]dE[σ]. Seguint aquesta notació, cada regla de producció Pha de ser de la forma:

  1. A[σ]α[σ],
  2. A[σ]B[fσ]o
  3. A[fσ]α[σ]

On A,BNson símbols no terminals, fFés un índex, σF*és una cadena de símbols d'índex i α(NT)*é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 A[σ]B[σ]C[σ], 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 (N[F*]T)*com segueix:

  1. Si A[σ]α[σ]és una regla de producció de tipus 1, llavors βA[ϕ]γβα[ϕ]γ. 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 A[σ]B[fσ]és una regla de producció de tipus 2, llavors βA[ϕ]γβB[fϕ]γ. Això és, l'stack d'índex de la part dreta s'obté de l'stack ϕ de la part esquerra afegint f.
  3. Si A[fσ]α[σ]és una regla de producció de tipus 3, llavors βA[fϕ]γβα[ϕ]γ, fent servir la definició de α[σ]. Això és, el primer índex fes 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 {www:w{a,b}*}:

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

Una derivació de abbabbabb és:

Plantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:MathPlantilla:Math.

Vegeu també

Referències

Plantilla:Referències

Plantilla:Autoritat Plantilla:Llenguatges formals i gramàtiques