TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES (TALF) BLOQUE I: PRELIMINARES Tema 1: Introducción Jerarquía de Chomsky: resumen y ejemplos Grado en Ingeniería Informática URJC Ana Pradera Ingeniería Informática (URJC) TALF 1 / 12 Recordemos antes de nada la notación utilizada al tratar con una gramática G = (ΣN , ΣT , S, P): ΣN son los símbolos no terminales, denotados A, B, C, .... ΣT son los símbolos terminales, denotados a, b, c, .... S ∈ ΣN es el axioma de la gramática. La unión de ΣN y ΣT se denota mediante Σ, es decir, se tiene Σ = ΣN ∪ ΣT , y por lo tanto: Σ∗ , el cierre universal de Σ, es el conjunto de todas las cadenas formadas por símbolos tanto terminales como no terminales, incluyendo la cadena vacía λ. Ejemplos: λ, a, A, S, aBCc, ab, BAC, ... ∈ Σ∗ . Σ+ , el cierre universal positivo de Σ, es el conjunto de todas las cadenas formadas por símbolos tanto terminales como no terminales, excluyendo la cadena vacía λ. Ejemplos: λ ∈ / Σ+ , a, A, S, aBCc, ab, BAC, ... ∈ Σ+ . Ingeniería Informática (URJC) TALF 2 / 12 P es un conjunto finito de reglas de la forma xAy ::= v (o, equivalentemente, xAy → v ) donde A ∈ ΣN representa un símbolo no terminal cualquiera y x, y , v ∈ Σ∗ representan cadenas cualesquiera de símbolos terminales y/o no terminales. Por lo tanto, dada una regla de una gramática: Su parte izquierda tiene que tener al menos un símbolo no terminal, que puede estar rodeado, o no (ya que tanto x como y , o ambas a la vez, podrían ser vacías), de cadenas de símbolos terminales y/o no terminales. Su parte derecha puede ser la palabra vacía λ o cualquier cadena de símbolos terminales y/o no terminales (ya que v ∈ Σ∗ ). Chomsky, imponiendo restricciones adicionales a las reglas, estableció una jerarquía formada por cuatro tipos de gramáticas: Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 Ingeniería Informática (URJC) TALF 3 / 12 Gramáticas de tipo 0 Todas sus reglas tienen que ser de la forma xAy ::= v , x, y , v ∈ Σ∗ , A ∈ ΣN El esquema anterior coincide exactamente con la definición de regla de una gramática, sin imponer ninguna restricción. Por lo tanto, cualquier regla es de tipo 0, y cualquier gramática es una gramática de tipo 0. Ejemplos de reglas de tipo 0 S → λ, B → λ, A → aAb, S → BAbS, aA → λ, SaC → a, CCC → ab, Caa → ABbS Ejemplos de reglas que no son de tipo 0 (no son reglas) a → λ, ab → ABa, λ → AS (no tienen ningún símbolo no terminal a la izquierda). Ingeniería Informática (URJC) TALF 4 / 12 Gramáticas de tipo 1 Todas sus reglas tienen que ser de una de las dos siguientes formas: S ::= λ o bien xAy ::= xvy , x, y ∈ Σ∗ , A ∈ ΣN , v ∈ Σ+ Las reglas de tipo 1 se llaman dependientes del contexto porque en el esquema xAy ::= xvy la transformación de A, que representa un símbolo no terminal cualquiera (que podría ser también el axioma S), en la cadena de símbolos terminales y/o no terminales v , depende de lo que rodea a A (las cadenas x e y ), es decir, de su contexto, que se debe mantener. Ingeniería Informática (URJC) TALF 5 / 12 Ejemplos de reglas de tipo 1 S ::= λ es de tipo 1 (siendo S el axioma). Las siguientes reglas son de tipo 1, porque encajan con el esquema xAy ::= xvy como se indica en la parte derecha de la tabla: B ::= a S ::= aB B ::= aCb aSaC ::= abaC aSaC ::= aSabb aBC ::= aBB SS ::= SBc BC ::= Bcc BCc ::= cCCc Ingeniería Informática (URJC) x x x x x x x x x =λ =λ =λ =a = aSa = aB =S =B =λ TALF A=B A=S A=B A=S A=C A=C A=S A=C A=B y y y y y y y y y =λ =λ =λ = aC =λ =λ =λ =λ = Cc v v v v v v v v v =a = aB = aCb =b = bb =B = Bc = cc = cC 6 / 12 Ejemplos de reglas que no son de tipo 1 (1/3) (y por lo tanto tampoco de tipos 2 o 3, ya que Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1) Una regla con parte derecha vacía es de tipo 1 si y solo si su parte izquierda contiene exclusivamente el axioma S (ya que en el esquema xAy ::= xvy es v ∈ Σ+ , lo cual implica v 6= λ y por lo tanto xvy 6= λ). B ::= λ (con B 6= S), AB ::= λ, aAb ::= λ no son de tipo 1. Salvo en el caso S ::= λ, las reglas de tipo 1 nunca pueden tener menos símbolos a la derecha que a la izquierda (ya que x e y aparecen a ambos lados de la regla y el símbolo A de la izquierda se transforma a la derecha en una cadena no vacía v ). AB ::= A, ABC ::= Ab, Ab ::= b, BaBB ::= CaC no son de tipo 1. Ingeniería Informática (URJC) TALF 7 / 12 Ejemplos de reglas que no son de tipo 1 (2/3) La parte derecha de una regla de tipo 1 cuya parte izquierda empieza (termina) por símbolos terminales tiene que empezar (terminar) por esos mismos símbolos (ya que estarán necesariamente en las cadenas x o y , respectivamente). aA ::= bA o aBD ::= BSac no son de tipo 1 (sus partes derechas deberían empezar por “a”). DaAbb ::= aDaAb o Sbb ::= aSbSb no son de tipo 1 (sus partes derechas deberían terminar por “bb”). abAc ::= abSABb , abSDc ::= bSAScc o abSc ::= bbASD no son de tipo 1 (sus partes derechas deberían empezar por “ab” y terminar por “c”). Ingeniería Informática (URJC) TALF 8 / 12 Ejemplos de reglas que no son de tipo 1 (3/3) La parte derecha de una regla de tipo 1 cuya parte izquierda tiene al menos dos símbolos, debe o bien empezar o bien terminar con el mismo símbolo con el que empieza/termina la parte izquierda (ya que al menos uno de los dos pertenecerá a x o a y ). BC ::= aBbc no es de tipo 1, ya que su parte derecha debería bien empezar por B (si se toma x = B, A = C, y = λ), o bien terminar por C (si se toma x = λ, A = B, y = C). SaBbC ::= SBbSC no es de tipo 1, ya que no encaja con el esquema xAy ::= xvy . En efecto: Tomando A = S, la parte derecha debería acabar en y = aBbC. Tomando A = B, la parte derecha debería empezar por x = Sa (y acabar por y = bC). Tomando A = C, la parte derecha debería empezar por x = SaBb. Ingeniería Informática (URJC) TALF 9 / 12 Gramáticas de tipo 2 Todas sus reglas tienen que ser de una de las dos siguientes formas: S ::= λ A ::= v , o bien A ∈ ΣN , v ∈ Σ+ Una regla con parte derecha vacía es de tipo 2 si y solo si su parte izquierda contiene exclusivamente el axioma S (ya que en el segundo esquema es v ∈ Σ+ , lo cual implica v 6= λ). S ::= λ es de tipo 2 (siendo S el axioma). B ::= λ (con B 6= S) no es de tipo 2 (y por lo tanto tampoco de tipo 3, ya que Tipo 3 ⊂ Tipo 2). Ni siquiera es de tipo 1. Una regla con parte derecha no vacía es de tipo 2 si y solo si tiene a la izquierda un único símbolo no terminal (cualquiera, el axioma incluido). C ::= B, S ::= baC, D ::= a, D ::= BDSb son de tipo 2. AS ::= B, Sa ::= b, DdA ::= DdSb no son de tipo 2 (ni por lo tanto de tipo 3). Las dos primeras ni siquiera son de tipo 1. Ingeniería Informática (URJC) TALF 10 / 12 Gramáticas de tipo 3 Hay dos clases de gramáticas de tipo 3: gramáticas lineales por la izquierda (GLIs), en las que todas las reglas tienen que ser de una de las tres siguientes formas: S ::= λ o bien A ::= Ba, A, B ∈ ΣN , a ∈ ΣT A ::= a, A ∈ ΣN , a ∈ ΣT o bien gramáticas lineales por la derecha (GLDs), en las que todas las reglas tienen que ser de una de las tres siguientes formas: S ::= λ o bien A ::= aB, A, B ∈ ΣN , a ∈ ΣT A ::= a, A ∈ ΣN , a ∈ ΣT Ingeniería Informática (URJC) TALF o bien 11 / 12 Una regla con parte derecha vacía es de tipo 3 si y solo si su parte izquierda contiene exclusivamente el axioma S (ya que los otros esquemas tienen parte derecha distinta de λ). S ::= λ es de tipo 3 (siendo S el axioma). B ::= λ (con B 6= S) no es de tipo 3 (ni siquiera es de tipo 2). Una regla con parte derecha no vacía es de tipo 3 si y solo si tiene a la izquierda un único símbolo no terminal (cualquiera, el axioma incluido) y tiene a la derecha o bien un único símbolo terminal, o bien dos símbolos, uno no terminal seguido de uno terminal (caso GLI) o al revés (caso GLD). C ::= a, S ::= b, C ::= Ca, B ::= Sb son de tipo 3 (GLI). C ::= a, S ::= b, C ::= aB, S ::= bS son de tipo 3 (GLD). AS ::= aB, Aa ::= a, S ::= B, D ::= abD, D ::= DBab, D ::= SB, B ::= ab no son de tipo 3 (las dos primeras ni siquiera son de tipo 2). Ingeniería Informática (URJC) TALF 12 / 12