SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
                 SEDE IBARRA




               Ing. Carpio Pineda
               docente
CONTENIDO
•   GRAMÁTICA
•   TIPOS DE DERIVACIONES: Derivación Derecha ,Izquierda
•   REPRESENTACIONES GRÁFICAS: ÁRBOLES SINTÁCTICOS
•   VACUIDAD
•   RECURSIVIDAD
•   GRAMÁTICA REDUCIDA
    SUPRESIÓN DE SÍMBOLOS INÚTILES
•   GRAMÁTICA PROPIA
•   REGLA LAMBDA
•   REGLAS UNITARIAS
•   FORMAS NORMALES
•   FORMA NORMAL DE CHOMSKY
•   FORMA NORMAL DE GREIBACH
GRAMÁTICA
En la figura siguiente se describe la sintaxis o estructura de la sentencia descomponiéndola en
  sus partes constitutivas. Así vemos que la <sentencia> se compone de un <sujeto> seguido
  de un <predicado>; que el <sujeto> a su vez se compone de un <artículo> seguido de un
  <adjetivo> seguido de un <nombre>, etc. Esta descomposición descendente llega a un nivel
  de detalle donde se describen los símbolos literales que aparecen en la frase en español.


                             <sentencia>
             ┌──────────────┴────────────────────┐
         <sujeto>                                    <predicado>
    ┌──────┴───┬─────────────┐               ┌────────┴────┐
    │                │                    │  │              < objeto>
    │                │                    │  │          ┌───┴────┐
 <artículo>       <adjetivo> <nombre>       <verbo>  <artículo> <nombre>
    │                │                │      │           │              │
    el             gran          elefante   salta        la           banca
<sentencia> --> <sujeto><predicado>
       <sujeto> --> <artículo><adjetivo><nombre>
       <artículo> --> el | la
       <adjetivo> --> gran
       <predicado> --> <verbo> <objeto>
       <verbo> --> salta
       <objeto> --> <artículo> <nombre>
       <nombre> --> banca
       <nombre> --> elefante
Cada una de las líneas de la figura se llama regla de reescritura
consiste en una parte izquierda y una derecha, conectadas por una
flecha. La parte derecha de estas reglas representa una descripción más
detallada de la parte izquierda. Así, podemos decir que la figura
anterior describe de manera jerárquica la estructura de una sentencia
(frase), comenzando con el símbolo de inicio <sentencia>.
Esta colección de símbolos y palabras básicas, junto con el símbolo de
inicio y un conjunto finito de reglas de reescritura, se denomina
gramática.
DEFINICIÓN.-
Una gramática está formada por el cuarteto
                 G = <X, N, P, S> siendo cada uno de sus elementos:
                 X:       es el alfabeto terminal. Todas las sentencias del
  lenguaje definido por esta gramática están formados con los símbolos o
  caracteres de X.
                 N:       es el alfabeto o vocabulario no terminal, tal que
  N_X=φ. Son símbolos auxiliares para la definición de la gramática y
  que no figuran en las sentencias del lenguaje. También a los elementos
  de N se les denomina así: metanociones, variables o no-terminales.
                 P:       es un conjunto finito de reglas de "producción o
  derivación" de las tiras, que tiene la forma:
                                    tira1 ───> tira2
                                    (S,m)εP, SεN, mε(N^X)*
                 S:       es la metanoción más importante del conjunto
  N, se le llama "símbolo distinguido, símbolo inicial o axioma".
EJEMPLO:         La gramática G, que define todas las tiras formadas por
  varias a seguidas de igual número de b .
        G = <X, N, P, S>
                 X = {a,b}
                 N = {S}
                 P :
                      S --> aSb
                       S --> ab
DEFINICIÓN.- El lenguaje definido por una gramática G que se
 indica L(G,S), es el conjunto de tiras de símbolos terminales
 generadas partiendo del axioma S empleando las reglas del
 conjunto P. Para realizar esta generación o transformación desde el
 axioma a la sentencia o tira de símbolos terminales, tendremos que
 examinar los operadores ==> y ==>* empleados para derivar
 sentencias de una gramática.

EJEMPLO:        De la gramática G1 encontrar la derivación asociada de
  la cadena de entrada aaaabbbb.
        S ==> aSb ==> aaSbb ==> aaaSbbb ==> aaaabbbb
TIPOS DE DERIVACIONES



DEFINICIÓN.-        "Derivación Izquierda“

Se llama así a la derivación realizada sustituyendo, en la
  forma sentencial dada, la metanoción de "más hacia la
  izquierda" por alguna de sus partes derechas que la
  definen (naturalmente de las reglas de P), es decir:
              v ==>* f es izquierda si se escribe
              go= v1g1g2....gn = f con gi ==> gi+1
       donde
              gi= mivimi' con miεX* y gi+1= mihimi'
EJEMPLO:
G= <X, N, P, S>
       X = {+, -, 0..9}
       N = {<lista>, <dígito>}
       S = {<lista>}
 P: ┌
       │ <lista> --> <lista> + <dígito>
       │ <lista> --> <lista> - <dígito>
       │ <lista> --> <dígito>
       │ <dígito> --> 0 | 1 | ... | 9
       └
       Encontrar: <lista> ==>⁺ 1+2
       <lista> ==> <lista> + <dígito> ==> <dígito> + <dígito> ==>
 1 + <dígito> ==> 1 + 2
DEFINICIÓN.-        "Derivación Derecha"
      De forma análoga se define "derivación derecha" si las
 sustituciones que se van realizando en la forma sentencial
 son siempre en la metanoción de "más hacia la derecha", es
 decir:

                    mi'εX*
EJEMPLO:         G= <X, N, P, S>
        X = {a, .. ,z, =}
        N = {<derecha>, <letra>}
        S = {<derecha>}
  P: ┌
        │ <derecha> --> <letra> = <derecha>
        │ <derecha> --> <letra>
        │ <letra> --> a | b | ... | z
        └
        Encontrar: <derecha> ==>⁺ a = b = c
  <derecha> ==> <letra> = <derecha> ==> <letra> = <letra> =
  <derecha> ==> <letra> = <letra> = <letra> ==> <letra> = <letra>
  = c ==> <letra> = b = c ==> a = b = c
EJERCICIO:        Sea la gramática siguiente, construir las derivaciones
  izquierdas y derechas para
                  A ==>⁺ abc
        G= <X, N, P, S>
        X = {a, b, c}
        N = {A, B, C, E, F}
        S = {A}
  P: ┌
        │ A --> BF
        │ B --> EC
        │ E --> a
        │ C --> b
        │ F --> c
        └
        Desarrollo:
        (1) A ==>i BF ==>i ECF ==>i aCF ==>i abF ==>i abc
        (2) A ==>d BF ==>d Bc ==>d ECc ==>d Ebc ==>d abc
REPRESENTACIONES GRÁFICAS: ÁRBOLES SINTÁCTICOS


 Los árboles sintácticos son una ayuda para comprender la sintáxis
   de las sentencias.
 DEFINICIÓN.-              Sea G= <X, N, P, S>, α es una árbol de
   derivación correspondiente a la derivación:
                        m1 =====> m2 =====> .... =====> mpk
                             (i1,p1) (i2,p2) (ik-1, pk-1)
                 ((ij, pj) significa la aplicación de pj sobre el
                                    no-terminal ij de mj)
                 si:       .        p1 es su raiz
                           .        por todo nodo pi, sus sucesores son
   de izquierda a derecha las reglas utilizadas para derivar los no
   terminales en su miembro derecho.
EJEMPLOS:
  1)  G= <X, N, P, S>
      X = {a}
      N = {S}
      P:

           P1: S --> SS
           P2: S --> a

       a) S ==>i SS ==>i SSS ==>i aSS ==>i aaS ==>i aaa
                  P1
              P1      P2
           P1 P2
       b) S ==>d SS ==>d SSS ==>d SSa ==>d Saa ==>d aaa
                 P1
             P2      P1
                  P2     P2
2) G= <X, N, P, S>
        X = {+, *, (, ), a}
        N = {E}
        S = {E}
        P :
        │ P1: E --> E + E
        │ P2: E --> E * E
        │ P3: E --> (E)
        │ P4: E --> a

         a) E ==>i E * E ==>i E + E * E ==>i a + a * a
                   P2
                P1     P4
             P4     P4
         b) E ==>d E + E ==>d E + E * E ==>d a + a * a
                   P1
                P4      P2
                   P4      P4
AMBIGÜEDAD

 Al construir el árbol sintáctico de una sentencia no nos ha
  preocupado el orden en que se aplicaban las derivaciones o
  reglas. Lo que si es esencial es que cada sentencia de un lenguaje
  tenga un único árbol sintáctico. En caso contrario, una sentencia
  escrita por el programador se podría "entender" de varias formas
  por el compilador, con funestos resultados.
 DEFINICIÓN.-           G= <X, N, P, S> es "ambigua" si existe una
  palabra del lenguaje engendrado por dos árboles de derivación de
  estructura diferente.
 NOTA:         Si G es ambigua no implica que L(G,S) sea
  ambiguo.
EJEMPLO:        Probar que la gramática de las expresiones
  aritméticas, Ges ambigua.
  Desarrollo:
        Para la palabra: "a+a*a" se pueden tener dos árboles
  sintácticos de estructura diferente.
             E                         E
             │                         │
           E │ E                  E │ E
           │ │ │                  │    │ │
           │ │ E │ E          E │ E│ │
           │ │ │ │ │          │ │ │ │ │
           a + a * a           a + a * a
NOTA: Cambiando una gramática ambigua, por supuesto sin
  cambiar sus sentencias, se puede a veces obtener una gramática
  no ambigua para el mismo conjunto de sentencias. Sin embargo,
  hay lenguajes que no tienen una gramática no ambigua; tales
  lenguajes se llaman "ambiguos intrínsecos".
RECURSIVIDAD
DEFINICIÓN.- En general, si A ==>+ ...A..., decimos que la gramática es
 recursiva en A.
                 Si se cumple A ==>+ A..., se llama "recursiva por la
 izquierda" y si A ==>+ ...A se llama "recursiva por la derecha". Una regla
 se llama recursiva por la "izquierda-derecha", si tiene la forma:
                 A --> A... (o bién A --> ...A).
NOTA: Si un lenguaje es infinito, una gramática que lo defina debe ser
 recursiva, con número limitado de reglas de producción.
 Hay muchas metanociones (la mayoría) de un lenguaje de
 programación que tienen una estructura recursiva; algunos casos son:
 .     parte izquierda de la sentencia de asignación múltiple;
 .     lista de parámetros de un procedimiento;
 .     estructura de bloque o sentencia compuesta;
 .     sentencia condicional y de bucle;
 .     dimensionado de una array;
 .     en las expresiones aritméticas: término, factor, primario.
EJEMPLO:Se desea escribir la definición de <tren> que estará formado por una
  <locomotora> solamente, o bién por una locomotora seguida (concatenada
  diremos aquí) por uno o más vagones. Entonces según la notación ya sabida de
  las reglas BNF, se puede escribir las reglas de producción P como:
  P:
        │ <tren> --> <locomotora>
        │ <tren> --> <locomotora><vagón>
        │ <tren> --> <locomotora><vagón><vagón>
        │ <tren> --> <locomotora><vagón><vagón><vagón>
        └
          si nos conformamos con escribir las 4 reglas anteriores, entonces según
  ellas, un tren estará formado por una locomotora sólo, o bién por una
  locomotora seguida por uno, dos, tres vagones.
          Pero introduciendo la "recursividad" se reduce el número de reglas BNF
  necesarias para definir la variable o metanoción. Entonces se puede escribir las
  dos reglas siguientes:
         ┌
         │ <tren> --> <locomotora>
         │ <tren> --> <tren><vagón>
        └
GRAMÁTICA REDUCIDA



DEFINICIÓN.-            Una gramática G= <X, N, P, S> se dice
  reducida con respecto a un no-terminal S, si las dos condiciones
  siguientes son satisfechas:
  1)    Para todo SεN, LG(S) = φ (Ningún nodo terminal engendra
  el lenguaje vacio o nulo).
  2) Para todo SεN, m1,m2 ε (X ^ N)* * So ==>* m1Sm2 (Todos
  los no-terminales son accesibles y terminables).
  Una gramática se dice "reducida" si es reducida con respecto al
  axioma.
PROPOSICIÓN.-           Por toda gramática algebraica, existe una
  gramática reducida equivalente que se puede construir.
VACUIDAD DEL LENGUAJE


Algoritmo:
  Nviejo = φ = {}
  Nuevo = {A * (A --> t)εP y se cumple (tεX*)}
  WHILE Nuevo <> Nviejo DO
         Nviejo = Nuevo
         Nuevo = Nviejo ^ {B * (B --> α)εP y αε(X ^ Nviejo)*}
  END
  IF S ε Nuevo THEN vacio = "no" ELSE vacio = "si" END
SUPRESIÓN DE SÍMBOLOS INÚTILES
  Sea G= <X, N, P, S>. Diremos que un símbolo T es "útil", si tenemos las
  dos cadenas de derivaciones S ==>* αTβ ==>* t, sino T es "inútil". Se
  tienen pues dos aspectos para la utilidad de un símbolo:
  1)     Se debe poder derivar alguna tira terminal del símbolo T, si es así
  se dice que T es "terminable".
  2)     T debe aparecer en alguna tira o forma sentencial derivable del
  axioma S: le llamamos entonces "accesible".
SUPRESIÓN DE SÍMBOLOS INÚTILES

Sea G= <X, N, P, S>. Diremos que un símbolo T es "útil", si tenemos las dos cadenas de
   derivaciones S ==>* αTβ ==>* t, sino T es "inútil". Se tienen pues dos aspectos para
   la utilidad de un símbolo:
   1)      Se debe poder derivar alguna tira terminal del símbolo T, si es así se dice que
   T es "terminable".
   2)      T debe aparecer en alguna tira o forma sentencial derivable del axioma S: le
   llamamos entonces "accesible".
Pasos:
   a)      El primer paso es seguir el algoritmo de vacuidad, en el que dada la gramática
   G= <X, N, P, S> que sea L(G)<>φ, se halle una gramática equivalente G'= <X, N', P',
   S> tal que para cualquier A de N' se tiene tεX* para la que
           A ==>* t.
           Es decir, que sólo conservamos los símbolos "terminables".
           Algoritmo:
                      IF LG(S) <> φ THEN
                                G'= <X, N', P', S>
                                N'= Nuevo
                                P'= N'^ X (Conjunto de todas las reglas cuyos símbolos
   están en N'^ X).
                      END
b) El segundo paso es el de quedarnos sólo con los símbolos "accesibles".
          Dada la gramática G= <X, N, P, S> (la resultante del paso anterior),
  hallar otra G'= <X', N', P', S>, tal que cualquier símbolo T de (N'^X') existe
  α,βε(X'^N')* tal que S ==>* αTβ.
          En resumen, un símbolo (terminal o no) es inaccesible sino aparece
  en ninguna forma sentencial del conjunto D(G).
          Algoritmo:
                    Nviejo = {S}
                    Nuevo = {T * (S --> αTβ)εP}
                    WHILE Nviejo <> Nuevo DO
                             Nviejo = Nuevo
                             Nuevo = Nviejo ^ {Y * (A --> αYβ)εP y AεNviejo}
                    END
                    N' = Nuevo _ N
                    X' = Nuevo _ X
          (* P' es el nuevo conjunto de reglas cuyos símbolos están todos en N'
  y X' *)
EJEMPLO:           Sea la gramática:
  G13= <X, N, P, S>
  X= {a, b, c}
  N= {S, A, B, C, D}

 P S --> aAAA
     A --> aAb
     A --> aC
     B --> BD
     B --> Ac
     C --> b

  Desarrollo:
        1)         Aplicaremos el algoritmo de vacuidad del lenguaje.
                                      Nviejo        Nuevo
                            1.- {}        {C}
                            2.- {C}         {C,A}
                            3.- {C,A}        {C,A,B,S}
                            4.- {C,A,B,S}     {C,A,B,S}
                   entonces SεNUEVO y LG(S) <> φ
2)   Aplicamos el algoritmo de selección de metanociones terminables.
                        Como LG(S) <> φ entonces
                                   G'= <X, N', P', S>
                                   N'= Nuevo = {S, A, B, C}
                                   Como la metanoción D no es terminable entonces

            P‘ S --> aAAA
               A --> aAb
               A --> aC
               B --> Ac
               C --> b

            3)         Eliminar los símbolos inaccesibles.
                                              Nviejo         Nuevo
                                  1.- {S}          {S,A,a}
                                  2.- {S,A,a}        {S,A,C,a,b}
                                  3.- {S,A,C,a,b}      {S,A,C,a,b}
                       la gramática resultante tiene pues:
                                  G'= <X', N', P', S> siendo:
                                  X'= {a, b}
                                  N'= {S, A, C}

           P': S --> aAAA
               A --> aAb
               A --> aC
               C --> b
GRAMÁTICAS PROPIAS




DEFINICIÓN.-       Sea G= <X, N, P, S> se dice propia si
 no hay reglas de la forma:
     1)     A --> λ       (regla vacia o regla Lambda)
     2)     A --> A' A,A'εN (regla unitaria)
REGLAS LAMBDA


Se llama Lambda a una regla del tipo A --> λ. Si resulta que λ
  forma parte de LG(S), entonces no se podrá eliminar todas las
  reglas λ de la gramática, pero si no es así si podemos hacerlo. La
  forma de hacerlo es hallando para cada variable A si se tiene que
  A ==>* λ, en cuyo caso se dice que A es "anulable".
  Se dice que una gramática es "sin_λ", si cumple una de las dos
  condiciones siguientes:
  1)    no hay ninguna regla λ de P;
  2) hay sólo una regla λ asociada al axioma S --> λ y además S
  no aparece en la parte derecha de ninguna regla de P.
Algoritmo:

  Nviejo = {} = φ
  Nuevo = {A * (A --> λ)εP}
  WHILE Nviejo <> Nuevo DO
       Nviejo = Nuevo
       Nuevo = Nviejo ^ {B * (B --> α), y todos los símbolos de α son
  anulables}
  END
Ahora se forma el conjunto de reglas P' como sigue:

  a)     Si A --> αoB1α1B2α2...Bkαk ε P, k>0, y cada Bi es anulable,
  mientras que en las αi no hay ninguna anulable, entonces añadamos
  a P' todas las reglas de la forma
         A --> αoX1α1X2α2...Xkαk, siendo Xi bien Bi o λ, sin añadir la
  regla A --> λ a P', lo que ocurriría si todas las α fueran λ.
  b) Si el axioma S es anulable, entonces λ pertenece al lenguaje y
  para aislarla añadimos a P' la regla
                  S' --> λ | S
         en cuyo caso se amplia N con S'.
         La gramática tendrá P' como conjunto de reglas de la misma. Y
  el vocabulario N es el mismo, salvo el caso b) en que aparece un
  nuevo axioma y queda λ separada.
EJEMPLO:
  1)        Sea G= <X, N, P, S> siendo:
            X= {a, b, c}
            N= {S, U, T}
          ┌
       P: │ S --> aSbScT
          │ S --> UU
          │ U --> λ
          └
                                  Nviejo         Nuevo
                      1.- {}          {U}
                      2.- {U}           {U,S}
                      3.- {U,S}          {U,S}
                      N'= {S', S, T, U}
             ┌
             │ S' --> λ * S
         P': │ S --> aSbScT
             │ S --> abScT
             │ S --> aSbcT
             │ S --> abcT
             │ S --> UU
             │ S --> U
             └
REGLAS UNITARIAS

Se llama regla unitaria a la que tiene el formato A --> B. Demos un
  algoritmo que partiendo de una gramática sin_λ, la transforme
  en otra equivalente sin reglas unitarias. A continuación se
  determinan los conjuntos NA para cada AεN con las
  metanociones B tales que A ==>* B
Algoritmo:
  Nviejo = {} = φ
  Nuevo = {A * (A --> B)εP, A,BεN} (* regla unitaria *)
  WHILE Nviejo <> Nuevo DO
       Nviejo = Nuevo
       Nuevo = Nviejo ^ {C * (B --> C)εP, y B está en Nviejo}
  END
  NA = Nuevo
Una vez determinado el conjunto NA para cada metanoción, se
  construye P' como sigue: Si B --> α está en P y no es una regla
  unitaria, poner A --> α en P' para todas las A para las que B esté
  en NA.
EJEMPLO:
1)        Suprimir de la gramática siguiente las reglas unitarias:
          G12= <X, N, P, S>
          X= {a, +, *, (, )}
          N= {E, T, F}
          S= {E}
   ┌
P: │ E --> E+T
   │ E --> T
   │ T --> T*F
   │ T --> F
   │ F --> (E)
   │ F --> a
   └
                        Nviejo        Nuevo           Nviejo    Nuevo
          1.- {}      {E}       1.- {}        {T}
          2.- {E}      {E,T}       2.- {T}        {T,F}
          3.- {E,T}     {E,T,F} 3.- {T,F}           {T,F}
          4.- {E,T,F}    {E,T,F}
          NE= {E,T,F}                 NT= {T,F}       NF= {F}
          Luego la gramática resultante es:
                        G'12= <X', N', P', S>
                        X'= X = {a, +, *, (, )}
                        N'= N = {E, T, F}
                        S = {E}
         ┌
     P': │ E --> E+T * T*F * (E) * a
         │ T --> T*F * (E) * a
         │ F --> (E) * a
         └
FORMAS NORMALES



  Sucede con frecuencia en lingüistica matemática que
  se hace casi imprescindible que las gramáticas se
  hallen dispuestas de alguna forma especial, que aún
  sin cambiar el lenguaje generado (o sea que es una
  gramática equivalente a la dada), haga más fácil su
  proceso ulterior.
  A continuación vemos las dos formas normalizadas
  más frecuentes que se emplean en lenguajes formales y
  en sus aplicaciones.
FORMA NORMAL DE CHOMSKY (FNC)


Una gramática se dice que está en la "Forma Normal de
  Chomsky o Cuadrática" si sus reglas tienen una de
  estas dos formas:
       A --> BC
       A --> a
siendo A,B,CεN y aεX.
  Una gramática se puede poner siempre en formato
  FNC. El algoritmo siguiente ilustra la conversión, para
  la que se supone que la gramática de entrada es propia
  y sin reglas unitarias.
Algoritmo:
  P' = {} = φ
  añadir a P' todas las reglas de la forma A --> BC;
  añadir a P' todas las reglas de la forma A --> a;
  (* transformación *)
  IF [A --> T1T2..Tk]εP and k>2 THEN
          añadir a P' las reglas:
                               A       --> T'1<T2..Tk>
                               <T2..Tk> --> T'2<T3..TK>
                               .......
                               <Tk - 1Tk> --> T'k - 1T'k
          (* en las que T'i coincide con Ti si ésta es metanoción *)
  END
  IF [A --> T1T2]εP and T1εX or T2εX THEN
          añadir a P' la regla: A --> T'1T'2
  END
  (* lo anterior se realiza para todas las reglas de P para todas las nuevas
  metanociones a' se añade a P' una regla
  a' --> a *)
  De esta forma se tienen las nuevas reglas de P'. El conjunto N' es el N al que se
  la añaden las nuevas metanociones creadas. Podemos decir que las dos
  gramáticas (la de entrada y la convertida) son equivalentes o generan el mismo
  lenguaje.
EJEMPLO:         La gramática siguiente poner en formato FNC:
  G1ç= <X, N, P, S>
  X= {0, 1}
  N= {S, A, B}
    ┌
 P: │ S --> BA
    │ A --> 01AB0
    │ A --> 0
    │ B --> 1
    └
  Aplicando el algoritmo anterior, se tiene que las reglas
  S --> BA, A --> 0 y la B --> 1 ya están en FNC. Para la restante regla:
     regla           transformada           se añade a P'
  A --> 01AB0           A --> A1A2           A1 --> 0
  A2 --> 1AB0           A2 --> A3A4           A3 --> 1
  A4 --> AB0            A4 --> AA5
  A5 --> B0           A5 --> BA6            A6 --> 0
  luego:
N'= {S, A, B, A1, A2, A3, A4, A5, A6} y las reglas de
         ┌
     P': │ S --> BA
         │ A --> A1A2
         │ A2 --> A3A4
         │ A4 --> AA5
         │ A5 --> BA6
         │ A --> 0
         │ B --> 1
         │ A1 --> 0
         │ A3 --> 1
         │ A6 --> 0
         └
    como se observa las tres parejas de metanociones (B,A3), (A,A1) y (A,A6) coinciden en su
    definición, entonces finalmente nos quedaría:
            G'= <X, N', P', S>
            X = {0, 1}
            N'= {S, A, B, A2, A4, A5}
         ┌
     P': │ S --> BA
         │ A --> AA2 * 0
         │ A2 --> BA4
         │ A4 --> AA5
         │ A5 --> BA
         │ B --> 1
FORMA NORMAL DE GREIBACH (FNG)



Ahora desarrollamos una notación muy interesante para
 determinados tipos de reconocimientos sintácticos y es
 la que tiene todas las reglas cuyas partes derechas
 comienzan con un terminal, seguido opcionalmente de
 variables, es decir, A --> aα, siendo AεN, aεX y α una
 tira, posiblemente nula, formada por variables
 solamente.
PROPOSICION.- Por toda gramática G= <X, N, P, S>
 propia, existe una gramática en la "Forma Normal de
 Greibach" equivalente que se puede construir.
 Para conseguir esta transformación damos los
 siguientes pasos:
EJEMPLO:   Sea G= <X, N, P, S> poner en FNG, siendo:
           X= {a, b}
           N= {A1, A2, A3}
           S= {A1}
       ┌
    P:│ A1 --> A2A3
       │ A2 --> A3A1 * a
       │ A3 --> A1A2 * b
       └
   Desarrollo:
            Paso a).   Las partes derechas de A1 y A2 ya cumplen lo de comenzar con un terminal o una
   variable de mayor numeración. Ataquemos la regla
                                   A3 --> A1A2 y sustituyamos A1 por su valor que es la única alternativa
   A2A3. Las reglas ahora son:
            ┌
            │ A1 --> A2A3
            │ A2 --> A3A1 * a
            │ A3 --> A2A3A2 * b
            └
                                   como la primera alternativa de A3 sigue comenzando con una
   variable de numeración inferior (A2), sustituimos ahora A2 por sus reglas que son A3A1 * a; las reglas
   quedan así:
            ┌
            │ A1 --> A2A3
            │ A2 --> A3A1 * a
            │ A3 --> A3A1A3A2 * aA3A2 * b
            └
Paso b). Se trata de eliminar la recursividad por la izquierda de la regla
                                       A3 --> A3A1A3A2 * aA3A2 * b
                            Introducimos la variable B3 y se cambian las reglas de
  A3 a las:
                                       A3 --> aA3A2B3 * bB3 * aA3A2 * b
                                       B3 --> A1A3A2 * A1A3A2B3
                            el resto de las reglas de A1 y A2 no se alteran. Como
  vemos que todas las partes derechas de A3 comienzan por un terminal, y se
  emplean en sustituir a A3 en la regla
                            A2 --> A3A1 y luego se sustituyen las reglas-A2 en la
  regla A1. Las reglas quedan así:
            ┌
            │ A1 --> aA3A2A1A3 * bA1A3 * aA3A2B3A1A3 *
            │      bB3A1A3 * aA3
            │ A2 --> aA3A2A1 * bA1 *aA3A2B3A1 * bB3A1 * a
            │ A3 --> aA3A2 * b * aA3A2B3 * bB3
            │ B3 --> A1A3A2 * A1A3A2B3
            └
Paso c).En el que se convierten las reglas de B3. Para ello se sustituyen las
  5 alternativas de A1 en las dos alternativas de B3, dando 10 alternativas
  para B3. La gramática queda con la nueva metanoción B3 en N' y las
  reglas de P' son las siguientes:
         La gramática resultante queda:
                 G'= <X, N', P', S>
                 N'= {A1, A2, A3, B3}
             ┌
         P': │ A1 --> aA3A2A1A3 * bA1A3 * aA3A2B3A1A3 *
             │     bB3A1A3 * aA3
             │ A2 --> aA3A2A1 * bA1 * aA3A2B3A1 * bB3A1 *
             │     a
             │ A3 --> aA3A2 * b * aA3A2B3 * bB3
             │ B3 --> aA3A2A1A3A3A2 * bA1A3A3A2 *
             │     aA3A2B3A1A3A3A2 * bB3A1A3A3A2 *
             │     aA3A3A2 *
             │     aA3A2A1A3A3A2B3 * bA1A3A3A2B3 *
             │     aA3A2B3A1A3A3A2B3 * bB3A1A3A3A2B3 *
             │     aA3A3A2B3
             └

Más contenido relacionado

La actualidad más candente

Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y Problemas
Raul
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
Luis Couoh
 

La actualidad más candente (20)

Autómata de Pila
Autómata de Pila Autómata de Pila
Autómata de Pila
 
Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y Problemas
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Examen final compiladores
Examen final compiladoresExamen final compiladores
Examen final compiladores
 
Código Huffman
Código HuffmanCódigo Huffman
Código Huffman
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.
 
Teoria de automatas
Teoria de automatasTeoria de automatas
Teoria de automatas
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.3. Representación del conocimiento y razonamiento.
3. Representación del conocimiento y razonamiento.
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
 
Típos de grámatica y más, exposición de compiladores e intérpretes
Típos de grámatica y más, exposición de compiladores e intérpretesTípos de grámatica y más, exposición de compiladores e intérpretes
Típos de grámatica y más, exposición de compiladores e intérpretes
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
Razonamiento monotono
Razonamiento monotonoRazonamiento monotono
Razonamiento monotono
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
 
Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6Lenguajes Regulares y Autómatas Finitos - Clase 6
Lenguajes Regulares y Autómatas Finitos - Clase 6
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
3.3 Reglas de producción.pptx
3.3 Reglas de producción.pptx3.3 Reglas de producción.pptx
3.3 Reglas de producción.pptx
 
Teoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formalesTeoria de automatas y lenguajes formales
Teoria de automatas y lenguajes formales
 

Similar a Gramaticas

Clase1 teoria de lenguajes
Clase1   teoria de lenguajesClase1   teoria de lenguajes
Clase1 teoria de lenguajes
heber_1978
 

Similar a Gramaticas (20)

Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Expresiones regulares2.pdf
Expresiones regulares2.pdfExpresiones regulares2.pdf
Expresiones regulares2.pdf
 
lenguajes y_gramaticas
lenguajes y_gramaticaslenguajes y_gramaticas
lenguajes y_gramaticas
 
Aritmetica integral
Aritmetica integralAritmetica integral
Aritmetica integral
 
Clase1 teoria de lenguajes
Clase1   teoria de lenguajesClase1   teoria de lenguajes
Clase1 teoria de lenguajes
 
Clase1 teoria
Clase1 teoriaClase1 teoria
Clase1 teoria
 
Conjunto, Relaciones, Funciones y Notacion Z
Conjunto, Relaciones, Funciones y Notacion ZConjunto, Relaciones, Funciones y Notacion Z
Conjunto, Relaciones, Funciones y Notacion Z
 
Autómata finito no determinista e investigacion
Autómata finito no determinista e investigacionAutómata finito no determinista e investigacion
Autómata finito no determinista e investigacion
 
Gramáticas libres de contexto en su habitát
Gramáticas libres de contexto en su habitátGramáticas libres de contexto en su habitát
Gramáticas libres de contexto en su habitát
 
Simbolos matematicos
Simbolos matematicosSimbolos matematicos
Simbolos matematicos
 
Gramáticas libres de contexto en su habitát
Gramáticas libres de contexto en su habitátGramáticas libres de contexto en su habitát
Gramáticas libres de contexto en su habitát
 
1.7 signos de polinomios factorizables
1.7 signos de polinomios factorizables1.7 signos de polinomios factorizables
1.7 signos de polinomios factorizables
 
Relaciones
RelacionesRelaciones
Relaciones
 
m discretas
m discretasm discretas
m discretas
 
Símbolos matemáticos
Símbolos matemáticosSímbolos matemáticos
Símbolos matemáticos
 
Terminos Semejantes
Terminos SemejantesTerminos Semejantes
Terminos Semejantes
 
Matematicas
MatematicasMatematicas
Matematicas
 
Terminos Semejantes
Terminos SemejantesTerminos Semejantes
Terminos Semejantes
 
Estructuras algebraicas
Estructuras algebraicasEstructuras algebraicas
Estructuras algebraicas
 
Algebra(2) 5° 1 b
Algebra(2) 5° 1 bAlgebra(2) 5° 1 b
Algebra(2) 5° 1 b
 

Más de PUCE SEDE IBARRA

Iglesia de san francisco actual
Iglesia de san francisco  actualIglesia de san francisco  actual
Iglesia de san francisco actual
PUCE SEDE IBARRA
 
Iglesia de la compañía de jesus actual
Iglesia de la compañía de jesus  actualIglesia de la compañía de jesus  actual
Iglesia de la compañía de jesus actual
PUCE SEDE IBARRA
 
1.sensibilizaci n ambiental-parte1
1.sensibilizaci n ambiental-parte11.sensibilizaci n ambiental-parte1
1.sensibilizaci n ambiental-parte1
PUCE SEDE IBARRA
 
Capacitaciones ambientales
Capacitaciones ambientalesCapacitaciones ambientales
Capacitaciones ambientales
PUCE SEDE IBARRA
 
Educación y comunicación
Educación y comunicaciónEducación y comunicación
Educación y comunicación
PUCE SEDE IBARRA
 
Origen y desarrollo de la educomunicación
Origen y desarrollo de la educomunicaciónOrigen y desarrollo de la educomunicación
Origen y desarrollo de la educomunicación
PUCE SEDE IBARRA
 
La nueva geografía de internet
La nueva geografía de internetLa nueva geografía de internet
La nueva geografía de internet
PUCE SEDE IBARRA
 
T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1
PUCE SEDE IBARRA
 
T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1
PUCE SEDE IBARRA
 
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfectTipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
PUCE SEDE IBARRA
 
Valor nutritivo de_las_plantas_forrajeras
Valor nutritivo de_las_plantas_forrajerasValor nutritivo de_las_plantas_forrajeras
Valor nutritivo de_las_plantas_forrajeras
PUCE SEDE IBARRA
 
Relacion planta microorganismo_recuperado
Relacion planta microorganismo_recuperadoRelacion planta microorganismo_recuperado
Relacion planta microorganismo_recuperado
PUCE SEDE IBARRA
 

Más de PUCE SEDE IBARRA (20)

Hist. del arte
Hist. del arteHist. del arte
Hist. del arte
 
Hist. del arte
Hist. del arteHist. del arte
Hist. del arte
 
Santo domingo
Santo domingoSanto domingo
Santo domingo
 
La catedral mejorado
La catedral  mejoradoLa catedral  mejorado
La catedral mejorado
 
Iglesia de san francisco actual
Iglesia de san francisco  actualIglesia de san francisco  actual
Iglesia de san francisco actual
 
Iglesia de la compañía de jesus actual
Iglesia de la compañía de jesus  actualIglesia de la compañía de jesus  actual
Iglesia de la compañía de jesus actual
 
1.sensibilizaci n ambiental-parte1
1.sensibilizaci n ambiental-parte11.sensibilizaci n ambiental-parte1
1.sensibilizaci n ambiental-parte1
 
Capacitaciones ambientales
Capacitaciones ambientalesCapacitaciones ambientales
Capacitaciones ambientales
 
Crecimiento celular
Crecimiento celularCrecimiento celular
Crecimiento celular
 
Educación y comunicación
Educación y comunicaciónEducación y comunicación
Educación y comunicación
 
Origen y desarrollo de la educomunicación
Origen y desarrollo de la educomunicaciónOrigen y desarrollo de la educomunicación
Origen y desarrollo de la educomunicación
 
La nueva geografía de internet
La nueva geografía de internetLa nueva geografía de internet
La nueva geografía de internet
 
T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1
 
Clases de tipografias
Clases de tipografiasClases de tipografias
Clases de tipografias
 
T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1T.p. caligraf a_cancilleresca_estilos_1
T.p. caligraf a_cancilleresca_estilos_1
 
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfectTipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
Tipografi clasificaci n_de_los_tipos_seg_n_cristopher_perfect
 
Valor nutritivo de_las_plantas_forrajeras
Valor nutritivo de_las_plantas_forrajerasValor nutritivo de_las_plantas_forrajeras
Valor nutritivo de_las_plantas_forrajeras
 
Npk
NpkNpk
Npk
 
Molibdeno
MolibdenoMolibdeno
Molibdeno
 
Relacion planta microorganismo_recuperado
Relacion planta microorganismo_recuperadoRelacion planta microorganismo_recuperado
Relacion planta microorganismo_recuperado
 

Último

Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
Gonella
 
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptxPERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
zevalloslunaedgar
 
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Lineamientos de la Escuela de la Confianza  SJA  Ccesa.pptxLineamientos de la Escuela de la Confianza  SJA  Ccesa.pptx
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Demetrio Ccesa Rayme
 
HISTORIA DE ARQUITECTURA PERUANA HORIZONTE
HISTORIA DE ARQUITECTURA PERUANA HORIZONTEHISTORIA DE ARQUITECTURA PERUANA HORIZONTE
HISTORIA DE ARQUITECTURA PERUANA HORIZONTE
alidkbeast
 

Último (20)

Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
 
10-08 Avances tecnológicos del siglo XXI.pdf
10-08 Avances tecnológicos del siglo XXI.pdf10-08 Avances tecnológicos del siglo XXI.pdf
10-08 Avances tecnológicos del siglo XXI.pdf
 
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptxPERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
PERSECUCIONES A CRISTIANOS SIGLO I IGLESIA PRIMITIVA.pptx
 
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Lineamientos de la Escuela de la Confianza  SJA  Ccesa.pptxLineamientos de la Escuela de la Confianza  SJA  Ccesa.pptx
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
 
Biografía de Charles Darwin presentación.pptx
Biografía de Charles Darwin presentación.pptxBiografía de Charles Darwin presentación.pptx
Biografía de Charles Darwin presentación.pptx
 
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
Planeacion para 1er Grado - (2023-2024)-1.docx
Planeacion para 1er Grado - (2023-2024)-1.docxPlaneacion para 1er Grado - (2023-2024)-1.docx
Planeacion para 1er Grado - (2023-2024)-1.docx
 
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptxTAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
TAREA_1_GRUPO7_ADMINISTRACIÓN_DE_EMPRESA.pptx
 
Salud mental y bullying en adolescentes.
Salud mental y bullying en adolescentes.Salud mental y bullying en adolescentes.
Salud mental y bullying en adolescentes.
 
HISTORIA DE ARQUITECTURA PERUANA HORIZONTE
HISTORIA DE ARQUITECTURA PERUANA HORIZONTEHISTORIA DE ARQUITECTURA PERUANA HORIZONTE
HISTORIA DE ARQUITECTURA PERUANA HORIZONTE
 
Presentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfPresentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdf
 
flujo de materia y energía ecosistemas.
flujo de materia y  energía ecosistemas.flujo de materia y  energía ecosistemas.
flujo de materia y energía ecosistemas.
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdfDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
 
sesion de aprendizaje 1 SEC. 13- 17 MAYO 2024 comunicación.pdf
sesion de aprendizaje 1 SEC. 13- 17  MAYO  2024 comunicación.pdfsesion de aprendizaje 1 SEC. 13- 17  MAYO  2024 comunicación.pdf
sesion de aprendizaje 1 SEC. 13- 17 MAYO 2024 comunicación.pdf
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdfREGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Presentación NORMA TECNICA 2024. minedu peru
Presentación NORMA  TECNICA 2024. minedu peruPresentación NORMA  TECNICA 2024. minedu peru
Presentación NORMA TECNICA 2024. minedu peru
 
animalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfanimalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdf
 

Gramaticas

  • 1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA Ing. Carpio Pineda docente
  • 2. CONTENIDO • GRAMÁTICA • TIPOS DE DERIVACIONES: Derivación Derecha ,Izquierda • REPRESENTACIONES GRÁFICAS: ÁRBOLES SINTÁCTICOS • VACUIDAD • RECURSIVIDAD • GRAMÁTICA REDUCIDA SUPRESIÓN DE SÍMBOLOS INÚTILES • GRAMÁTICA PROPIA • REGLA LAMBDA • REGLAS UNITARIAS • FORMAS NORMALES • FORMA NORMAL DE CHOMSKY • FORMA NORMAL DE GREIBACH
  • 3. GRAMÁTICA En la figura siguiente se describe la sintaxis o estructura de la sentencia descomponiéndola en sus partes constitutivas. Así vemos que la <sentencia> se compone de un <sujeto> seguido de un <predicado>; que el <sujeto> a su vez se compone de un <artículo> seguido de un <adjetivo> seguido de un <nombre>, etc. Esta descomposición descendente llega a un nivel de detalle donde se describen los símbolos literales que aparecen en la frase en español. <sentencia> ┌──────────────┴────────────────────┐ <sujeto> <predicado> ┌──────┴───┬─────────────┐ ┌────────┴────┐ │ │ │ │ < objeto> │ │ │ │ ┌───┴────┐ <artículo> <adjetivo> <nombre> <verbo> <artículo> <nombre> │ │ │ │ │ │ el gran elefante salta la banca
  • 4. <sentencia> --> <sujeto><predicado> <sujeto> --> <artículo><adjetivo><nombre> <artículo> --> el | la <adjetivo> --> gran <predicado> --> <verbo> <objeto> <verbo> --> salta <objeto> --> <artículo> <nombre> <nombre> --> banca <nombre> --> elefante Cada una de las líneas de la figura se llama regla de reescritura consiste en una parte izquierda y una derecha, conectadas por una flecha. La parte derecha de estas reglas representa una descripción más detallada de la parte izquierda. Así, podemos decir que la figura anterior describe de manera jerárquica la estructura de una sentencia (frase), comenzando con el símbolo de inicio <sentencia>. Esta colección de símbolos y palabras básicas, junto con el símbolo de inicio y un conjunto finito de reglas de reescritura, se denomina gramática.
  • 5. DEFINICIÓN.- Una gramática está formada por el cuarteto G = <X, N, P, S> siendo cada uno de sus elementos: X: es el alfabeto terminal. Todas las sentencias del lenguaje definido por esta gramática están formados con los símbolos o caracteres de X. N: es el alfabeto o vocabulario no terminal, tal que N_X=φ. Son símbolos auxiliares para la definición de la gramática y que no figuran en las sentencias del lenguaje. También a los elementos de N se les denomina así: metanociones, variables o no-terminales. P: es un conjunto finito de reglas de "producción o derivación" de las tiras, que tiene la forma: tira1 ───> tira2 (S,m)εP, SεN, mε(N^X)* S: es la metanoción más importante del conjunto N, se le llama "símbolo distinguido, símbolo inicial o axioma".
  • 6. EJEMPLO: La gramática G, que define todas las tiras formadas por varias a seguidas de igual número de b . G = <X, N, P, S> X = {a,b} N = {S} P : S --> aSb S --> ab
  • 7. DEFINICIÓN.- El lenguaje definido por una gramática G que se indica L(G,S), es el conjunto de tiras de símbolos terminales generadas partiendo del axioma S empleando las reglas del conjunto P. Para realizar esta generación o transformación desde el axioma a la sentencia o tira de símbolos terminales, tendremos que examinar los operadores ==> y ==>* empleados para derivar sentencias de una gramática. EJEMPLO: De la gramática G1 encontrar la derivación asociada de la cadena de entrada aaaabbbb. S ==> aSb ==> aaSbb ==> aaaSbbb ==> aaaabbbb
  • 8. TIPOS DE DERIVACIONES DEFINICIÓN.- "Derivación Izquierda“ Se llama así a la derivación realizada sustituyendo, en la forma sentencial dada, la metanoción de "más hacia la izquierda" por alguna de sus partes derechas que la definen (naturalmente de las reglas de P), es decir: v ==>* f es izquierda si se escribe go= v1g1g2....gn = f con gi ==> gi+1 donde gi= mivimi' con miεX* y gi+1= mihimi'
  • 9. EJEMPLO: G= <X, N, P, S> X = {+, -, 0..9} N = {<lista>, <dígito>} S = {<lista>} P: ┌ │ <lista> --> <lista> + <dígito> │ <lista> --> <lista> - <dígito> │ <lista> --> <dígito> │ <dígito> --> 0 | 1 | ... | 9 └ Encontrar: <lista> ==>⁺ 1+2 <lista> ==> <lista> + <dígito> ==> <dígito> + <dígito> ==> 1 + <dígito> ==> 1 + 2
  • 10. DEFINICIÓN.- "Derivación Derecha" De forma análoga se define "derivación derecha" si las sustituciones que se van realizando en la forma sentencial son siempre en la metanoción de "más hacia la derecha", es decir: mi'εX*
  • 11. EJEMPLO: G= <X, N, P, S> X = {a, .. ,z, =} N = {<derecha>, <letra>} S = {<derecha>} P: ┌ │ <derecha> --> <letra> = <derecha> │ <derecha> --> <letra> │ <letra> --> a | b | ... | z └ Encontrar: <derecha> ==>⁺ a = b = c <derecha> ==> <letra> = <derecha> ==> <letra> = <letra> = <derecha> ==> <letra> = <letra> = <letra> ==> <letra> = <letra> = c ==> <letra> = b = c ==> a = b = c
  • 12. EJERCICIO: Sea la gramática siguiente, construir las derivaciones izquierdas y derechas para A ==>⁺ abc G= <X, N, P, S> X = {a, b, c} N = {A, B, C, E, F} S = {A} P: ┌ │ A --> BF │ B --> EC │ E --> a │ C --> b │ F --> c └ Desarrollo: (1) A ==>i BF ==>i ECF ==>i aCF ==>i abF ==>i abc (2) A ==>d BF ==>d Bc ==>d ECc ==>d Ebc ==>d abc
  • 13. REPRESENTACIONES GRÁFICAS: ÁRBOLES SINTÁCTICOS Los árboles sintácticos son una ayuda para comprender la sintáxis de las sentencias. DEFINICIÓN.- Sea G= <X, N, P, S>, α es una árbol de derivación correspondiente a la derivación: m1 =====> m2 =====> .... =====> mpk (i1,p1) (i2,p2) (ik-1, pk-1) ((ij, pj) significa la aplicación de pj sobre el no-terminal ij de mj) si: . p1 es su raiz . por todo nodo pi, sus sucesores son de izquierda a derecha las reglas utilizadas para derivar los no terminales en su miembro derecho.
  • 14. EJEMPLOS: 1) G= <X, N, P, S> X = {a} N = {S} P: P1: S --> SS P2: S --> a a) S ==>i SS ==>i SSS ==>i aSS ==>i aaS ==>i aaa P1 P1 P2 P1 P2 b) S ==>d SS ==>d SSS ==>d SSa ==>d Saa ==>d aaa P1 P2 P1 P2 P2
  • 15. 2) G= <X, N, P, S> X = {+, *, (, ), a} N = {E} S = {E} P : │ P1: E --> E + E │ P2: E --> E * E │ P3: E --> (E) │ P4: E --> a a) E ==>i E * E ==>i E + E * E ==>i a + a * a P2 P1 P4 P4 P4 b) E ==>d E + E ==>d E + E * E ==>d a + a * a P1 P4 P2 P4 P4
  • 16. AMBIGÜEDAD  Al construir el árbol sintáctico de una sentencia no nos ha preocupado el orden en que se aplicaban las derivaciones o reglas. Lo que si es esencial es que cada sentencia de un lenguaje tenga un único árbol sintáctico. En caso contrario, una sentencia escrita por el programador se podría "entender" de varias formas por el compilador, con funestos resultados.  DEFINICIÓN.- G= <X, N, P, S> es "ambigua" si existe una palabra del lenguaje engendrado por dos árboles de derivación de estructura diferente.  NOTA: Si G es ambigua no implica que L(G,S) sea ambiguo.
  • 17. EJEMPLO: Probar que la gramática de las expresiones aritméticas, Ges ambigua. Desarrollo: Para la palabra: "a+a*a" se pueden tener dos árboles sintácticos de estructura diferente. E E │ │ E │ E E │ E │ │ │ │ │ │ │ │ E │ E E │ E│ │ │ │ │ │ │ │ │ │ │ │ a + a * a a + a * a NOTA: Cambiando una gramática ambigua, por supuesto sin cambiar sus sentencias, se puede a veces obtener una gramática no ambigua para el mismo conjunto de sentencias. Sin embargo, hay lenguajes que no tienen una gramática no ambigua; tales lenguajes se llaman "ambiguos intrínsecos".
  • 18. RECURSIVIDAD DEFINICIÓN.- En general, si A ==>+ ...A..., decimos que la gramática es recursiva en A. Si se cumple A ==>+ A..., se llama "recursiva por la izquierda" y si A ==>+ ...A se llama "recursiva por la derecha". Una regla se llama recursiva por la "izquierda-derecha", si tiene la forma: A --> A... (o bién A --> ...A). NOTA: Si un lenguaje es infinito, una gramática que lo defina debe ser recursiva, con número limitado de reglas de producción. Hay muchas metanociones (la mayoría) de un lenguaje de programación que tienen una estructura recursiva; algunos casos son: . parte izquierda de la sentencia de asignación múltiple; . lista de parámetros de un procedimiento; . estructura de bloque o sentencia compuesta; . sentencia condicional y de bucle; . dimensionado de una array; . en las expresiones aritméticas: término, factor, primario.
  • 19. EJEMPLO:Se desea escribir la definición de <tren> que estará formado por una <locomotora> solamente, o bién por una locomotora seguida (concatenada diremos aquí) por uno o más vagones. Entonces según la notación ya sabida de las reglas BNF, se puede escribir las reglas de producción P como: P: │ <tren> --> <locomotora> │ <tren> --> <locomotora><vagón> │ <tren> --> <locomotora><vagón><vagón> │ <tren> --> <locomotora><vagón><vagón><vagón> └ si nos conformamos con escribir las 4 reglas anteriores, entonces según ellas, un tren estará formado por una locomotora sólo, o bién por una locomotora seguida por uno, dos, tres vagones. Pero introduciendo la "recursividad" se reduce el número de reglas BNF necesarias para definir la variable o metanoción. Entonces se puede escribir las dos reglas siguientes: ┌ │ <tren> --> <locomotora> │ <tren> --> <tren><vagón> └
  • 20. GRAMÁTICA REDUCIDA DEFINICIÓN.- Una gramática G= <X, N, P, S> se dice reducida con respecto a un no-terminal S, si las dos condiciones siguientes son satisfechas: 1) Para todo SεN, LG(S) = φ (Ningún nodo terminal engendra el lenguaje vacio o nulo). 2) Para todo SεN, m1,m2 ε (X ^ N)* * So ==>* m1Sm2 (Todos los no-terminales son accesibles y terminables). Una gramática se dice "reducida" si es reducida con respecto al axioma. PROPOSICIÓN.- Por toda gramática algebraica, existe una gramática reducida equivalente que se puede construir.
  • 21. VACUIDAD DEL LENGUAJE Algoritmo: Nviejo = φ = {} Nuevo = {A * (A --> t)εP y se cumple (tεX*)} WHILE Nuevo <> Nviejo DO Nviejo = Nuevo Nuevo = Nviejo ^ {B * (B --> α)εP y αε(X ^ Nviejo)*} END IF S ε Nuevo THEN vacio = "no" ELSE vacio = "si" END SUPRESIÓN DE SÍMBOLOS INÚTILES Sea G= <X, N, P, S>. Diremos que un símbolo T es "útil", si tenemos las dos cadenas de derivaciones S ==>* αTβ ==>* t, sino T es "inútil". Se tienen pues dos aspectos para la utilidad de un símbolo: 1) Se debe poder derivar alguna tira terminal del símbolo T, si es así se dice que T es "terminable". 2) T debe aparecer en alguna tira o forma sentencial derivable del axioma S: le llamamos entonces "accesible".
  • 22. SUPRESIÓN DE SÍMBOLOS INÚTILES Sea G= <X, N, P, S>. Diremos que un símbolo T es "útil", si tenemos las dos cadenas de derivaciones S ==>* αTβ ==>* t, sino T es "inútil". Se tienen pues dos aspectos para la utilidad de un símbolo: 1) Se debe poder derivar alguna tira terminal del símbolo T, si es así se dice que T es "terminable". 2) T debe aparecer en alguna tira o forma sentencial derivable del axioma S: le llamamos entonces "accesible". Pasos: a) El primer paso es seguir el algoritmo de vacuidad, en el que dada la gramática G= <X, N, P, S> que sea L(G)<>φ, se halle una gramática equivalente G'= <X, N', P', S> tal que para cualquier A de N' se tiene tεX* para la que A ==>* t. Es decir, que sólo conservamos los símbolos "terminables". Algoritmo: IF LG(S) <> φ THEN G'= <X, N', P', S> N'= Nuevo P'= N'^ X (Conjunto de todas las reglas cuyos símbolos están en N'^ X). END
  • 23. b) El segundo paso es el de quedarnos sólo con los símbolos "accesibles". Dada la gramática G= <X, N, P, S> (la resultante del paso anterior), hallar otra G'= <X', N', P', S>, tal que cualquier símbolo T de (N'^X') existe α,βε(X'^N')* tal que S ==>* αTβ. En resumen, un símbolo (terminal o no) es inaccesible sino aparece en ninguna forma sentencial del conjunto D(G). Algoritmo: Nviejo = {S} Nuevo = {T * (S --> αTβ)εP} WHILE Nviejo <> Nuevo DO Nviejo = Nuevo Nuevo = Nviejo ^ {Y * (A --> αYβ)εP y AεNviejo} END N' = Nuevo _ N X' = Nuevo _ X (* P' es el nuevo conjunto de reglas cuyos símbolos están todos en N' y X' *)
  • 24. EJEMPLO: Sea la gramática: G13= <X, N, P, S> X= {a, b, c} N= {S, A, B, C, D} P S --> aAAA A --> aAb A --> aC B --> BD B --> Ac C --> b Desarrollo: 1) Aplicaremos el algoritmo de vacuidad del lenguaje. Nviejo Nuevo 1.- {} {C} 2.- {C} {C,A} 3.- {C,A} {C,A,B,S} 4.- {C,A,B,S} {C,A,B,S} entonces SεNUEVO y LG(S) <> φ
  • 25. 2) Aplicamos el algoritmo de selección de metanociones terminables. Como LG(S) <> φ entonces G'= <X, N', P', S> N'= Nuevo = {S, A, B, C} Como la metanoción D no es terminable entonces P‘ S --> aAAA A --> aAb A --> aC B --> Ac C --> b 3) Eliminar los símbolos inaccesibles. Nviejo Nuevo 1.- {S} {S,A,a} 2.- {S,A,a} {S,A,C,a,b} 3.- {S,A,C,a,b} {S,A,C,a,b} la gramática resultante tiene pues: G'= <X', N', P', S> siendo: X'= {a, b} N'= {S, A, C} P': S --> aAAA A --> aAb A --> aC C --> b
  • 26. GRAMÁTICAS PROPIAS DEFINICIÓN.- Sea G= <X, N, P, S> se dice propia si no hay reglas de la forma: 1) A --> λ (regla vacia o regla Lambda) 2) A --> A' A,A'εN (regla unitaria)
  • 27. REGLAS LAMBDA Se llama Lambda a una regla del tipo A --> λ. Si resulta que λ forma parte de LG(S), entonces no se podrá eliminar todas las reglas λ de la gramática, pero si no es así si podemos hacerlo. La forma de hacerlo es hallando para cada variable A si se tiene que A ==>* λ, en cuyo caso se dice que A es "anulable". Se dice que una gramática es "sin_λ", si cumple una de las dos condiciones siguientes: 1) no hay ninguna regla λ de P; 2) hay sólo una regla λ asociada al axioma S --> λ y además S no aparece en la parte derecha de ninguna regla de P.
  • 28. Algoritmo: Nviejo = {} = φ Nuevo = {A * (A --> λ)εP} WHILE Nviejo <> Nuevo DO Nviejo = Nuevo Nuevo = Nviejo ^ {B * (B --> α), y todos los símbolos de α son anulables} END
  • 29. Ahora se forma el conjunto de reglas P' como sigue: a) Si A --> αoB1α1B2α2...Bkαk ε P, k>0, y cada Bi es anulable, mientras que en las αi no hay ninguna anulable, entonces añadamos a P' todas las reglas de la forma A --> αoX1α1X2α2...Xkαk, siendo Xi bien Bi o λ, sin añadir la regla A --> λ a P', lo que ocurriría si todas las α fueran λ. b) Si el axioma S es anulable, entonces λ pertenece al lenguaje y para aislarla añadimos a P' la regla S' --> λ | S en cuyo caso se amplia N con S'. La gramática tendrá P' como conjunto de reglas de la misma. Y el vocabulario N es el mismo, salvo el caso b) en que aparece un nuevo axioma y queda λ separada.
  • 30. EJEMPLO: 1) Sea G= <X, N, P, S> siendo: X= {a, b, c} N= {S, U, T} ┌ P: │ S --> aSbScT │ S --> UU │ U --> λ └ Nviejo Nuevo 1.- {} {U} 2.- {U} {U,S} 3.- {U,S} {U,S} N'= {S', S, T, U} ┌ │ S' --> λ * S P': │ S --> aSbScT │ S --> abScT │ S --> aSbcT │ S --> abcT │ S --> UU │ S --> U └
  • 31. REGLAS UNITARIAS Se llama regla unitaria a la que tiene el formato A --> B. Demos un algoritmo que partiendo de una gramática sin_λ, la transforme en otra equivalente sin reglas unitarias. A continuación se determinan los conjuntos NA para cada AεN con las metanociones B tales que A ==>* B Algoritmo: Nviejo = {} = φ Nuevo = {A * (A --> B)εP, A,BεN} (* regla unitaria *) WHILE Nviejo <> Nuevo DO Nviejo = Nuevo Nuevo = Nviejo ^ {C * (B --> C)εP, y B está en Nviejo} END NA = Nuevo Una vez determinado el conjunto NA para cada metanoción, se construye P' como sigue: Si B --> α está en P y no es una regla unitaria, poner A --> α en P' para todas las A para las que B esté en NA.
  • 32. EJEMPLO: 1) Suprimir de la gramática siguiente las reglas unitarias: G12= <X, N, P, S> X= {a, +, *, (, )} N= {E, T, F} S= {E} ┌ P: │ E --> E+T │ E --> T │ T --> T*F │ T --> F │ F --> (E) │ F --> a └ Nviejo Nuevo Nviejo Nuevo 1.- {} {E} 1.- {} {T} 2.- {E} {E,T} 2.- {T} {T,F} 3.- {E,T} {E,T,F} 3.- {T,F} {T,F} 4.- {E,T,F} {E,T,F} NE= {E,T,F} NT= {T,F} NF= {F} Luego la gramática resultante es: G'12= <X', N', P', S> X'= X = {a, +, *, (, )} N'= N = {E, T, F} S = {E} ┌ P': │ E --> E+T * T*F * (E) * a │ T --> T*F * (E) * a │ F --> (E) * a └
  • 33. FORMAS NORMALES Sucede con frecuencia en lingüistica matemática que se hace casi imprescindible que las gramáticas se hallen dispuestas de alguna forma especial, que aún sin cambiar el lenguaje generado (o sea que es una gramática equivalente a la dada), haga más fácil su proceso ulterior. A continuación vemos las dos formas normalizadas más frecuentes que se emplean en lenguajes formales y en sus aplicaciones.
  • 34. FORMA NORMAL DE CHOMSKY (FNC) Una gramática se dice que está en la "Forma Normal de Chomsky o Cuadrática" si sus reglas tienen una de estas dos formas: A --> BC A --> a siendo A,B,CεN y aεX. Una gramática se puede poner siempre en formato FNC. El algoritmo siguiente ilustra la conversión, para la que se supone que la gramática de entrada es propia y sin reglas unitarias.
  • 35. Algoritmo: P' = {} = φ añadir a P' todas las reglas de la forma A --> BC; añadir a P' todas las reglas de la forma A --> a; (* transformación *) IF [A --> T1T2..Tk]εP and k>2 THEN añadir a P' las reglas: A --> T'1<T2..Tk> <T2..Tk> --> T'2<T3..TK> ....... <Tk - 1Tk> --> T'k - 1T'k (* en las que T'i coincide con Ti si ésta es metanoción *) END IF [A --> T1T2]εP and T1εX or T2εX THEN añadir a P' la regla: A --> T'1T'2 END (* lo anterior se realiza para todas las reglas de P para todas las nuevas metanociones a' se añade a P' una regla a' --> a *) De esta forma se tienen las nuevas reglas de P'. El conjunto N' es el N al que se la añaden las nuevas metanociones creadas. Podemos decir que las dos gramáticas (la de entrada y la convertida) son equivalentes o generan el mismo lenguaje.
  • 36. EJEMPLO: La gramática siguiente poner en formato FNC: G1ç= <X, N, P, S> X= {0, 1} N= {S, A, B} ┌ P: │ S --> BA │ A --> 01AB0 │ A --> 0 │ B --> 1 └ Aplicando el algoritmo anterior, se tiene que las reglas S --> BA, A --> 0 y la B --> 1 ya están en FNC. Para la restante regla: regla transformada se añade a P' A --> 01AB0 A --> A1A2 A1 --> 0 A2 --> 1AB0 A2 --> A3A4 A3 --> 1 A4 --> AB0 A4 --> AA5 A5 --> B0 A5 --> BA6 A6 --> 0 luego:
  • 37. N'= {S, A, B, A1, A2, A3, A4, A5, A6} y las reglas de ┌ P': │ S --> BA │ A --> A1A2 │ A2 --> A3A4 │ A4 --> AA5 │ A5 --> BA6 │ A --> 0 │ B --> 1 │ A1 --> 0 │ A3 --> 1 │ A6 --> 0 └ como se observa las tres parejas de metanociones (B,A3), (A,A1) y (A,A6) coinciden en su definición, entonces finalmente nos quedaría: G'= <X, N', P', S> X = {0, 1} N'= {S, A, B, A2, A4, A5} ┌ P': │ S --> BA │ A --> AA2 * 0 │ A2 --> BA4 │ A4 --> AA5 │ A5 --> BA │ B --> 1
  • 38. FORMA NORMAL DE GREIBACH (FNG) Ahora desarrollamos una notación muy interesante para determinados tipos de reconocimientos sintácticos y es la que tiene todas las reglas cuyas partes derechas comienzan con un terminal, seguido opcionalmente de variables, es decir, A --> aα, siendo AεN, aεX y α una tira, posiblemente nula, formada por variables solamente. PROPOSICION.- Por toda gramática G= <X, N, P, S> propia, existe una gramática en la "Forma Normal de Greibach" equivalente que se puede construir. Para conseguir esta transformación damos los siguientes pasos:
  • 39. EJEMPLO: Sea G= <X, N, P, S> poner en FNG, siendo: X= {a, b} N= {A1, A2, A3} S= {A1} ┌ P:│ A1 --> A2A3 │ A2 --> A3A1 * a │ A3 --> A1A2 * b └ Desarrollo: Paso a). Las partes derechas de A1 y A2 ya cumplen lo de comenzar con un terminal o una variable de mayor numeración. Ataquemos la regla A3 --> A1A2 y sustituyamos A1 por su valor que es la única alternativa A2A3. Las reglas ahora son: ┌ │ A1 --> A2A3 │ A2 --> A3A1 * a │ A3 --> A2A3A2 * b └ como la primera alternativa de A3 sigue comenzando con una variable de numeración inferior (A2), sustituimos ahora A2 por sus reglas que son A3A1 * a; las reglas quedan así: ┌ │ A1 --> A2A3 │ A2 --> A3A1 * a │ A3 --> A3A1A3A2 * aA3A2 * b └
  • 40. Paso b). Se trata de eliminar la recursividad por la izquierda de la regla A3 --> A3A1A3A2 * aA3A2 * b Introducimos la variable B3 y se cambian las reglas de A3 a las: A3 --> aA3A2B3 * bB3 * aA3A2 * b B3 --> A1A3A2 * A1A3A2B3 el resto de las reglas de A1 y A2 no se alteran. Como vemos que todas las partes derechas de A3 comienzan por un terminal, y se emplean en sustituir a A3 en la regla A2 --> A3A1 y luego se sustituyen las reglas-A2 en la regla A1. Las reglas quedan así: ┌ │ A1 --> aA3A2A1A3 * bA1A3 * aA3A2B3A1A3 * │ bB3A1A3 * aA3 │ A2 --> aA3A2A1 * bA1 *aA3A2B3A1 * bB3A1 * a │ A3 --> aA3A2 * b * aA3A2B3 * bB3 │ B3 --> A1A3A2 * A1A3A2B3 └
  • 41. Paso c).En el que se convierten las reglas de B3. Para ello se sustituyen las 5 alternativas de A1 en las dos alternativas de B3, dando 10 alternativas para B3. La gramática queda con la nueva metanoción B3 en N' y las reglas de P' son las siguientes: La gramática resultante queda: G'= <X, N', P', S> N'= {A1, A2, A3, B3} ┌ P': │ A1 --> aA3A2A1A3 * bA1A3 * aA3A2B3A1A3 * │ bB3A1A3 * aA3 │ A2 --> aA3A2A1 * bA1 * aA3A2B3A1 * bB3A1 * │ a │ A3 --> aA3A2 * b * aA3A2B3 * bB3 │ B3 --> aA3A2A1A3A3A2 * bA1A3A3A2 * │ aA3A2B3A1A3A3A2 * bB3A1A3A3A2 * │ aA3A3A2 * │ aA3A2A1A3A3A2B3 * bA1A3A3A2B3 * │ aA3A2B3A1A3A3A2B3 * bB3A1A3A3A2B3 * │ aA3A3A2B3 └