SlideShare une entreprise Scribd logo
1  sur  76
Télécharger pour lire hors ligne
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

  PRELIMINARES:
  ¿ Cómo podemos describir un lenguaje ?
    Definición por extensión: Listado de todas las palabras del lenguaje.
    Ejemplo: Σ = { a, b, c } L1 = { aa, ab, ac, ba, bb, bc, ca, cb, cc }
                             L2 = { aaa, aba, aca, bbb, bab, bcb, ccc, cac, cbc }
    Definición por comprensión: Especificación de atributos de las palabras.
    Ejemplo: Σ = { a, b, c } L3 = { w / w ∈ Σ* ∧ |w| = 50 }
                             L4 = { w / w ∈ Σ* ∧ w = w -1 }
    Definición por patrones: Expresión de palabras con parámetros.
    Ejemplo: Σ = { 0, 1 }    L5 = { 0.1 n.0 / n ≥ 1 }
                             L6 = { 0 n .1 k / n ≥ 0, k ≤ 5 }

                                                                ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

  Noción de Gramática:
  De las formas de descripción de un lenguaje que vimos anteriormente,
  ninguna resulta eficiente cuando se trata de un lenguaje complejo como podría
  ser un lenguaje natural o un lenguaje de programación.
  En estos caso resulta conveniente especificar un conjunto de reglas de
  generación de las palabras que pertenecen exclusivamente al lenguaje que se
  quiere describir. Este conjunto de reglas de formación junto con los símbolos
  que utiliza dan lugar al concepto de GRAMÁTICA.
  Ejemplo: Σ = { 0, 1 } Reglas: 1) Puede ser 0 o 1
                                   2) Puede ser cualquier combinación de
                                      símbolos que empiece con 1
               Como vemos se trata del conjunto de números binarios naturales.

                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

Ejemplo de gramática para un pequeño subconjunto del Español:
Una frase sencilla en español puede construirse con un sujeto seguido por
un predicado y terminada en un punto. El sujeto podría ser un artículo
seguido de un sustantivo o solo un sustantivo, mientras que el predicado
podría ser un verbo seguido de un objeto o solo un verbo. Por último, un
objeto podría ser una preposición seguida de un sujeto.
En este caso los componentes léxicos o símbolos del lenguaje serían los
valores que pueden tomar los verbos, sustantivos, adverbios y
preposiciones.
Por otro lado frase, sujeto, predicado y objeto son estructuras sintácticas
que se forman mediante combinación de los componentes léxicos.


                                                                  ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

De tal modo que una frase se puede describir con las siguientes Reglas:
         〈frase〉 → 〈sujeto〉 〈predicado〉 〈punto〉
               〉            〉          〉       〉
         〈sujeto〉 → 〈artículo〉 〈sustantivo〉
                 〉            〉            〉
         〈sustantivo〉 → María | Juan | nave | perro
                        〉
         〈artículo〉 → El | La | λ
                    〉
         〈predicado〉 → 〈verbo〉 〈objeto〉
                        〉        〉       〉
         〈verbo〉 → corre | quiere | vuela
                 〉
         〈objeto〉 → 〈preposición〉 〈sujeto〉 | 〈adverbio〉 | λ
                  〉                〉        〉         〉
         〈preposición〉 → a | con
                          〉
         〈adverbio〉 → rápidamente | ahora
                      〉
         〈punto〉 → •
                 〉
Donde encerramos entre paréntesis angulares a las estructuras sintácticas
para distinguirlas de los componentes léxicos, la barra vertical se usa
como disyunción y la flecha indica que la parte izquierda puede
reemplazarse por o generar a la parte derecha de la regla.
                                                               ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

Veamos algunas frases que se pueden generar con esta gramática:
  María quiere a Juan.
  Juan corre con el perro.
  La nave vuela ahora.
  El perro corre rápidamente.
También se puede generar estas otras frases de sentido dudoso:
  La casa corre con el perro.
  Juan vuela con María.
  El perro vuela rápidamente.

     Podemos concluir que esta gramática describe solamente la sintaxis de
     este subconjunto del español, pero no su semántica.

                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

       Definición formal de una GRAMÁTICA estructurada por frases
                                                          Σ N∪ΣT = Σ
                G = 〈 ΣN , ΣT , P , S 〉
                                                          Σ N∩ΣT = Φ
   ΣN    es el alfabeto de símbolos No-terminales o variables de la Gramática.

   ΣT    es el alfabeto de símbolos Terminales o símbolos del Lenguaje.
   P     es el conjunto finito no vacío de Reglas de Producción de la forma:
                                 α→ β
        donde: α = α1.N.α2 con α1, α2 ∈ Σ*
                        α                            N∈ ΣN β ∈ Σ*
   S     es el Símbolo Inicial o Axioma de la Gramática, que es el comienzo de
                                                                       ∈Σ
         cualquier proceso de generación o derivación de una palabra. S∈ΣN

                                                               ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

                       Esta definición fue enunciada en la década de 1950
                       por Noam Chomsky.

                         El lingüista, profesor e intelectual estadounidense Noam
                         Chomsky es fundador de la teoría generativo-
                         transformacional que ha revolucionado la lingüística.
                         Trata la gramática dentro de la teoría general del
                         lenguaje: esto es, Chomsky cree que junto a las reglas
                         gramaticales de cada lengua concreta, existen además
unas universales comunes a todas las lenguas, lo que indica que cualquier
persona posee la capacidad innata de producir y entender el lenguaje.
También se conoce a Chomsky por su actividad como analista crítico de la
política de su país y de los medios de comunicación. En las décadas de 1960 y
1970 se opuso a la intervención de E.E.U.U. en la guerra del Vietnam por lo que
escribió varias obras y pronunció numerosas conferencias.
                                                                ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

En el ejemplo del subconjunto del lenguaje español, la gramática tiene los
siguientes componentes:

ΣN = { 〈frase〉 , 〈sujeto〉 , 〈predicado〉 , 〈punto〉 , 〈artículo〉 ,
             〉          〉             〉         〉            〉
          〈sustantivo〉 , 〈verbo〉 , 〈objeto〉 , 〈preposición〉 , 〈 adverbio〉
                     〉         〉          〉               〉             〉   }

Σ = { María , Juan , nave , perro , El , La , corre , quiere , vuela ,
 T
      a , con , rápidamente , ahora , • }

S = 〈frase〉
          〉

P ={     conjunto de reglas de producción enunciadas en el ejemplo      }

                                                                   ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:


Veamos otros ejemplos abstractos de gramáticas que se ajustan a esta
definición:

1) G1 = 〈 { S, A, B } , { a, b } , { S → aSBA | abA , AB → BA ,
           bB → bb , bA → ba , aA → aa } , S 〉

2) G2 = 〈 { S, X, Y, Z } , { x, y, z } , { S → XSZ | Y , Y → yY | λ ,
          X→x, Z→z},S〉

3) G3 = 〈 { S } , { a } , { S → a | aS } , S 〉



                                                             ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

DERIVACIÓN DE PALABRAS A PARTIR DEL AXIOMA:
Para generar o derivar una palabra del lenguaje que describe una gramática se
comienza por alguna regla que tenga el axioma a la izquierda y luego se continúa
con el resto de las reglas que sean necesarias para llegar a dicha palabra.
Este proceso se llama derivación de una palabra y se representa así:
S ⇒ α1 ⇒ α2 ⇒ ....... ⇒ αx ⇒ w
que equivale a: S ⇒* w

donde los   αi   son secuencias de símbolos terminales y no terminales, w es una
secuencia de terminales, el operador ⇒ (DERIVACIÓN DIRECTA) significa la
aplicación de una sola regla y el operador ⇒* (DERIVACIÓN A LA LARGA)
significa la aplicación de una cantidad finita de reglas.
                                                                ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

FORMA SENTENCIAL:

Cualquier secuencia  γ que se obtenga a partir del axioma en un proceso de
derivación, se denomina Forma Sentencial:     S ⇒ ..... ⇒ γ ⇒ .....
SENTENCIA:
Una Forma Sentencial w que esta compuesta solo por símbolos terminales, se
denomina Sentencia y constituye el final del proceso de derivación: S ⇒* w

DERIVACIÓN MÁS A LA IZQUIERDA Y MÁS A LA DERECHA:
Cuando en un proceso de derivación se busca la subsecuencia a reemplazar en la
Forma Sentencial desde la izquierda, se dice que se trata de una Derivación Más
a la Izquierda; y en caso contrario se trata de una Derivación Más a la Derecha.
                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

EJEMPLOS:
Para la G del español tenemos la siguiente derivación más a la izquierda:
<frase> ⇒ <sujeto> <predicado> <punto> ⇒
      >           >            >        >
          <artículo> <sustantivo> <predicado> <punto> ⇒
                    >            >            >        >
          <sustantivo> <predicado> <punto> ⇒ María <predicado> <punto>
                      >            >        >                      >       >
          María <verbo> <objeto> <punto> ⇒ María corre <objeto> <punto>
                        >        >        >                       >       >
                              >
           María corre <punto> ⇒ María corre .
que equivale a: S ⇒* María corre .
Para la G2 tenemos la siguiente derivación más a la derecha:
S ⇒ XSZ ⇒ XSz ⇒ XYz ⇒ XyYz ⇒ Xyz ⇒ xyz
o sea que:   S ⇒* xyz
                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

LENGUAJE GENERADO POR UNA GRAMÁTICA:
El lenguaje generado por una gramática para estructuras de frases G,
que denotamos L(G), es el conjunto definido como:

                    L(G) = { w / w ∈ Σ* ∧ S ⇒* w }
                                      T


EQUIVALENCIA ENTRE GRAMÁTICAS:
Dos gramáticas G y G’ se dicen equivalentes si y solo si los lenguajes
generados por ambas son iguales, es decir:


                      L(G) = L(G’) ⇔ G ≡ G’
                                                                ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

Veamos algunas derivaciones de las gramáticas de los ejemplos abstractos
descriptos anteriormente y tratemos de inducir que lenguajes generan:

1) Recordemos las reglas del primer ejemplo:
         1.- S → aSBA      2.- S → abA     3.- AB → BA
         4.- bB → bb       5.- bA → ba     6.- aA → aa
  Derivemos algunas palabras:
  S ⇒ abA ⇒ aba
  S ⇒ aSBA ⇒ aabABA ⇒ aabBAA ⇒ aabbAA ⇒ aabbaA ⇒ aabbaa
  S ⇒ aSBA ⇒ aaSBABA ⇒ aaabABABA ⇒ aaabBAABA ⇒ aaabBABAA ⇒
      aaabBBAAA ⇒ aaabbBAAA ⇒ aaabbbAAA ⇒ aaabbbaAA ⇒
      aaabbbaaA ⇒ aaabbbaaa
Podemos inducir que: L(G1) = { an .bn .an / n ≥ 1 }
                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

2) Recordemos las reglas del segundo ejemplo:
          1.- S → XSZ        2.- S → Y     3.- Y → yY
          4.- Y → λ          5.- X → x     6.- Z → z
  Derivemos algunas palabras:
  S⇒Y⇒λ
  S ⇒ XSZ ⇒ XYZ ⇒ XyYZ ⇒ xyYZ ⇒ xyZ ⇒ xyz
  S ⇒ XSZ ⇒ XXSZZ ⇒ XXYZZ ⇒ XXyYZZ ⇒ XXyyYZZ ⇒ XXyyZZ ⇒
      XxyyZZ ⇒ XxyyzZ ⇒ xxyyzZ ⇒ xxyyzz
  S ⇒ XSZ ⇒ XYZ ⇒ XyYZ ⇒ XyyYZ ⇒ XyyyYZ ⇒ XyyyZ ⇒ xyyyZ ⇒
      xyyyz

Podemos inducir que: L(G2) = { x n .y k .z n / n ≥ 0 , k ≥ 0 }

                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

 3) Recordemos las reglas del tercer ejemplo:
          1.- S → a     2.- S → aS

   Derivemos algunas palabras:
   S⇒a
   S ⇒ aS ⇒ aa
   S ⇒ aS ⇒ aaS ⇒ aaa

 Podemos inducir que: L(G3) = { an / n ≥ 1 }




                                                ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

Consideremos las siguientes gramáticas:

G4 = 〈 { S, Q } , { a } , { S → a | Q , Q → aQ | a } , S 〉

G5 = 〈 { S, Q, T } , { a } , { S → a | T | aTa , T → a | Q , Q → a | aQ } , S 〉

Si analizamos los lenguajes que generan estas gramáticas son iguales al
lenguaje de nuestro tercer ejemplo abstracto.

Es decir que las tres gramáticas son equivalentes: G3 ≡ G4 ≡ G5

Observemos que estas gramáticas difieren fundamentalmente en sus
reglas de producción.
                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

Gramáticas estructuradas por frases:

Podemos afirmar que en general cada lenguaje tiene varias gramáticas
diferentes que lo generan.
Esto nos da lugar a pensar que existen distintos tipos o categorías de
gramáticas, según la forma que tengan sus producciones.
Basándose en el análisis de las formas de las reglas de producción de las
gramáticas, Noam Chomsky clasificó a las mismas en cuatro categorías que
se conocen como JERARQUÍA DE CHOMSKY y que será tema de estudio
de la siguiente Unidad Temática.
Por ahora trabajaremos con una de esas categorías, llamada Gramática
Libre de Contexto, que nos permitirá representar el nivel sintáctico de un
lenguaje de programación. Este tipo de gramática se caracteriza por tener
a la izquierda de sus reglas solamente un símbolo No-terminal.
                                                            ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.            LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:

1) Consideremos el lenguaje compuesto por el conjunto de todos los
   identificadores válidos:

    Σ N = { I, L, D, G, R}                P: I → LR | GR
    Σ T = { a, ... , z, 0, ... , 9, _ }      L → a | b | ... | z
                                             D → 0 | 1 | ... | 9
    S=I                                      R → LR | DR | GR | λ
                                             G→_

    Aplicando las reglas de esta gramática se puede generar:
    I ⇒ LR ⇒ aR ⇒ a
    I ⇒ GR ⇒ _R ⇒ _DR ⇒ _1R ⇒ _1LR ⇒ _1hR ⇒ _1h
    I ⇒ LR ⇒ zGR ⇒ z_R ⇒ z_DR ⇒ z_5R ⇒ z_5LR ⇒ z_5pR ⇒ z_5p

                                                                    ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.         LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:

2) Consideremos el lenguaje compuesto por el conjunto de todos los números
   enteros válidos:

   Σ N = { N, D, U, R}              P: N → 0 | UR
   Σ T = { 0, ... , 9 }                  R → DR | λ
                                         D→0|U
   S=N                                   U → 1 | ... | 9

   Aplicando las reglas de esta gramática se puede generar:
   N⇒0
   N ⇒ UR ⇒ 1R ⇒ 1
   N ⇒ UR ⇒ 2R ⇒ 2DR ⇒ 20R ⇒ 20
   N ⇒ UR ⇒ 4R ⇒ 4DR ⇒ 4UR ⇒ 47R ⇒ 47DR ⇒ 470R ⇒ 470DR ⇒ 470UR
       ⇒ 4703R ⇒ 4703
                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:
3) Consideremos un lenguaje de programación sencillo, con un mínimo de
   complejidad en su sintaxis.
  Supongamos los siguientes componentes léxicos, que en total constituyen el
  alfabeto del lenguaje o sea el alfabeto de símbolos terminales de la gramática:

             Palabras claves: if, while, break, else , then , do
             Identificadores estándar de tipo: int, float, boolean, char
             Identificador de variable: id
             Números: entero, real
             Caracteres: literal
             Booleanos: falso, cierto
             Delimitadores: { , } , ; , [ , ]
             Operadores: = , + , < , or


                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:

Por simplicidad se ha supuesto un solo valor de identificador {id}, solo dos
números válidos {entero, real} y un solo carácter {literal}.
Por otro lado supongamos el siguiente alfabeto de símbolos No_terminales:

Σ N = { P, D, T, A, E, N, B, S, W, I, R, F }   donde P es el axioma de la gramática.
Podemos interpretar estos símbolos como nemotécnicos que representan los
componentes sintácticos: Programa, Declaración, Tipo, Arreglo, Expresión,
valor Numérico, valor Booleano, Sentencia, estructura While, estructura If,
Resto de la estructura if, Fin de la estructura while.
Por último, el conjunto de Reglas de Producción que permitirá generar las
palabras de este lenguaje formal, es decir los “programas” escritos en este
lenguaje de programación hipotético, es:

                                                                   ING. JORGE BUABUD
U.T.N. – F.R.T.
 S. y S. de los L.           LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:

1)    P→ D ; { S }
2)    D → D ; D | T id A
3)    T → int | float | boolean | char
4)    A → [ entero ] | λ
5)    E → entero | real | falso | cierto | literal | id | id[E] | E + E | E < E | E or E
6)    S → S ; S | W | break | I | id = E | id[E] = E
7)    W → while E do { S F
8)    I → if E then { S } R
9)    R → else { S } | λ
10)   F→}
                                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
 S. y S. de los L.         LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:
Aplicando estas reglas podemos generar los siguientes “programas”:
P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ int id ; { S } ⇒ int id ; { id = E } ⇒
     int id ; { id = entero }
P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ float id A ; { S } ⇒ float id[entero] ; { S } ⇒
     float id[entero] ; { S } ⇒ float id[entero] ; { id[E] = E } ⇒
     float id[entero] ; { id[entero] = E } ⇒ float id[entero] ; { id[entero] = real }
     ⇒ float id[entero] ; { id[entero] = real }
También se puede generar los siguientes “programas” de dudosa coherencia:
P ⇒* boolean id ; { id = entero }
P ⇒* char id[entero] ; { id[real] = literal }

                                                                     ING. JORGE BUABUD
U.T.N. – F.R.T.
 S. y S. de los L.          LINGÜÍSTICA MATEMÁTICA
Ejemplos de gramáticas para lenguajes
de programación hipotéticos:
Otros ejemplos de secuencias obtenidas con esta gramática son:
   int id ; { id = entero ; id = entero + entero ; id = id + id }
   float id ; { id = real ; if id < entero + entero then { id = id + entero } }
   int id ; { id = entero ; while id < real do { id = id + entero } }
   char id ; { id = falso ; if id[literal] or entero then { id = literal } }
   boolean id[entero] ; { id = cierto }
   float id ; { if real then { id = literal } }


      Podemos concluir que esta gramática es capaz de representar
      la sintaxis del lenguaje de programación pero no su semántica.

                                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

Formas de Representación de la Sintaxis y la
Semántica de los Lenguajes de Programación:


                        Backus Naur Form (B.N.F.)
     SINTAXIS
                        DIAGRAMAS DE SINTAXIS



                        ESQUEMAS DE TRADUCCIÓN
     SEMÁNTICA
                        SISTEMAS CANÓNICOS

                                          ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

FORMATO B.N.F.:

La Forma Normal de Backus (BNF) es una notación para escribir
Gramáticas Independientes del Contexto (GIC), que se usa común-
mente para especificar la sintaxis de los lenguajes de programación.

    En esta notación los símbolos No-terminales se representan con
    nombres nemotécnicos encerrados entre paréntesis angulares 〈 〉
    El signo → se sustituye por ::= (que se lee “es reemplazado por”)
    Los modos de alternativa de reescribir un No-terminal se separan
    mediante barras verticales | (que se lee “o”)
    Las reglas recursivas de la forma: A → Aβ | λ se representa
                                                 β
    encerrando entre llaves la parte que se repite: A ::= { β }
                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

FORMATO B.N.F.:
Veamos como ejemplos la BNF de los lenguajes de Identificadores,
Números y Programas-sencillos, vistos anteriormente:
  〈Identificador〉 ::= 〈Letra〉 〈Resto〉 | 〈Guión〉 〈Resto〉
                 〉             〉      〉        〉      〉
  〈Letra〉 ::= a | b | ... | z
         〉
  〈Dígito〉 ::= 0 | 1 | ... | 9
          〉
  〈Resto〉 ::= { 〈Letra〉 | 〈Dígito〉 | 〈Guión〉 }
         〉                〉      〉         〉
  〈Guión〉 ::= _
          〉

  〈Número〉 ::= 0 | 〈Uno〉 〈Resto〉
            〉                 〉 〉
  〈Resto〉 ::= { 〈Dígito〉 }
         〉                  〉
  〈Dígito〉 ::= 0 | 〈Uno〉
          〉                 〉
  〈Uno〉 ::= 1 | 2 | ... | 9
       〉
                                                       ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.         LINGÜÍSTICA MATEMÁTICA

FORMATO B.N.F.:

〈Programa〉 ::= 〈Declara〉 ; { 〈Sentencia〉 }
                〉           〉                〉
            〉             〉
〈Declara〉 ::= 〈Declara〉 ; 〈 Declara〉 | 〈Tipo〉 id 〈Arreglo〉
                                       〉            〉            〉
       〉
〈Tipo〉 ::= int | float | boolean | char
〈Arreglo〉 ::= [ entero ] | 〈Vacía〉
            〉                        〉
〈Expresión〉 ::= entero | real | falso | cierto | literal | id | id [ 〈Expresión〉 ] |
               〉                                                                    〉
                  〈Expresión〉 + 〈Expresión〉 | 〈Expresión〉 < 〈Expresión〉 |
                               〉                〉              〉                    〉
                  〈Expresión〉 or 〈Expresión〉
                               〉                  〉
〈Sentencia〉 ::= 〈Sentencia〉 ; 〈Sentencia〉 | 〈While〉 | break | 〈If〉 |
              〉               〉               〉          〉                〉
                  id = 〈Expresión〉 | id [ 〈Expresión〉 ] = 〈Expresión〉
                                    〉                   〉                    〉
〈While〉 ::= while 〈Expresión〉 do { 〈Sentencia〉 〈FinWhile〉
         〉                       〉                    〉            〉
〈FinWhile〉 ::= }
              〉                                                  Nota: En este ejemplo
                        〉
〈If〉 ::= if 〈Expresión〉 then { 〈Sentencia〉 } 〈RestoIf〉
   〉                                        〉              〉     las { } pertenecen al
〈RestoIf〉 ::= else { 〈Sentencia〉 } | 〈Vacía〉
           〉                      〉           〉                  alfabeto de terminales.

                                                                    ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

DIAGRAMAS DE SINTAXIS:

El Diagrama de Sintaxis es una forma gráfica de representación del
nivel sintáctico de un lenguaje de programación .

Los siguientes son los símbolos que se utiliza en estos diagramas:
   Representa el valor de un componente léxico.              xxxxx

   Representa el valor de un símbolo especial.                xx

  Implica una estructura sintáctica que tiene su
                                                            XXXXX
  propio diagrama de sintaxis.

   Indica que componente sigue a continuación.

                                                               ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

DIAGRAMAS DE SINTAXIS:

Estos son algunos de los Diagramas de Sintaxis de los ejemplos anteriores:

                                                   Letra
       Identificador                                           a

                            -                                  z
           -
                          Dígito                   Dígito
                                                               0
        Letra
                          Letra
                                                               9

                                                            ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

DIAGRAMAS DE SINTAXIS:

                                       Uno
                                        1
   Número

                        Dígito
                                        9
          Uno
                                      Dígito

                                        0
                    0
                                       Uno


                                       ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

DIAGRAMAS DE SINTAXIS:
 Programa

        Declara              ;        {      Sentencia   }
                                                              Tipo
 Declara
                                                               int
             Tipo                id       Arreglo
                                                              float
                                 ;
                                                             boolean
 Arreglo
         [          entero            ]                       char

                                                         ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

ESQUEMAS DE TRADUCCIÓN:

Un Esquema de Traducción es una gramática independiente del contexto
en la que se agrega, a la derecha de algunas reglas de producción, un
fragmento de programa llamado acción semántica.

   Las acciones semánticas se colocan entre llaves.
   Al utilizar una regla de producción sintáctica se ejecuta el fragmento de
   programa correspondiente, que contribuye al análisis semántico.
   Vamos a utilizar un seudocódigo para representar las acciones semánticas.
   El Esquema de Traducción tendrá el siguiente formato:

                           Esquema de Traducción
               Regla de Sintaxis         Acción Semántica
                    N→ β              { fragmento programa }

                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

ESQUEMAS DE TRADUCCIÓN:

¿Cómo se usan estos esquemas de traducción, en un proceso de
  derivación o generación de una sentencia ?
  Cada vez que se aplica una regla de sintaxis se lleva a cabo una acción
  semántica.
  En este caso puede ser que las acciones semánticas se ejecuten en
  forma anticipada a la definición de algún identificador de variable
  incluido en la misma, entonces queda pendiente su terminación hasta
  el momento en que la ejecución de otra acción semántica asigna un
  valor a dicho componente.
  Se utilizan variables banderas cuyos valores finales nos permiten
  determinar si la sentencia es correcta o no desde el punto de vista
  semántico.
                                                         ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

ESQUEMAS DE TRADUCCIÓN:
 Dentro de las convenciones que incluye el nivel semántico de los lenguajes de
 programación, se requieren las siguientes comprobaciones:
 Comprobaciones de Tipos: Se debe tener en cuenta la compatibilidad entre
 los tipos de dato de los operandos y el operador correspondiente.
 Por ejemplo, si se suman una variable tipo arreglo con un número se produce
 un error. También, si la expresión de comprobación de una sentencia selectiva
 resulta no ser de tipo lógica, se produce un error.
 Comprobaciones del Flujo de Control: Las sentencias que producen una
 bifurcación en el flujo de control deben tener algún lugar a dónde transferir
 dicho flujo de control. Por ejemplo, una proposición break en el lenguaje C++
 hace que el control abandone la sentencia que lo engloba, ya sea un while, un
 for o un switch ; si dicha estructura englobadora no existe se produce un error.
 Otro ejemplo es el de la sentencia de bifurcación incondicional goto , que debe
 desviar el flujo de control hacia un rótulo específico; si dicho rótulo no figura
 en ninguna sentencia se produce un error.
                                                               ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

Veamos en nuestro lenguaje hipotético algunos ejemplos de
especificación semántica:
  Comprobaciones de Tipos:
    El índice de una variable arreglo debe ser una expresión de tipo int.
    En una asignación el tipo de la variable de la izquierda debe ser
    compatible con el tipo de la expresión de la derecha.
    En las expresiones los tipos de los operadores deben ser compatibles
    con la operación correspondiente.
    La expresión que acompaña a un while o if debe ser de tipo boolean.
  Comprobaciones del Flujo de Control:
    La sentencia de bifurcación incondicional break debe estar dentro
    de una estructura while.

                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


                         Esquema de Traducción
    Regla de Sintaxis                     Acción Semántica
   P→ D ; { S }         { CAW=0       inicialización contador apertura de while }

   D→D;D                { Nula }
   D → T id A           { Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO
                                   sino id.TIPO = arreglo(A.RANGO , T.TIPO) }
   T → int              { T.TIPO=1   suponemos un código 1 para tipo int   }
   T → float            { T.TIPO=2   suponemos un código 2 para tipo float     }
   T → boolean          { T.TIPO=3   suponemos un código 3 para tipo boolean}

   T → char             { T.TIPO=4   suponemos un código 4 para tipo char }


                                                                      ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


     A → [ entero ]    { A.RANGO=entero.VALOR }
     A→λ               { A.RANGO=vacío }
     E → entero        { E.TIPO=1 }
     E → real          { E.TIPO=2 }
     E → falso         { E.TIPO=3 }
     E → cierto        { E.TIPO=3 }
     E → literal       { E.TIPO=4 }
     E → id            { E.TIPO=id.TIPO }
     E → id[E1]        { Si (id.TIPO==arreglo(r,t)) ∧ (E1.TIPO==1)
                             entonces E.TIPO=t    sino E.TIPO=error.t }

                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


   E → E1 + E2      { Si (E1.TIPO==1 ∧ E2.TIPO==1) entonces
                         E.TIPO=1 sino Si (E1.TIPO==2 ∧ E2.TIPO==2) ∨
                    (E1.TIPO==1 ∧ E2.TIPO==2) ∨ (E1.TIPO==2 ∧
                    E2.TIPO==1) entonces E.TIPO=2 sino E.TIPO=error.t}
   E → E1 < E2      { Si (E1.TIPO==E2.TIPO) entonces E.TIPO=3
                          sino E.TIPO=error.t }
   E → E1 or E2     { Si (E1.TIPO==3 ∧ E2.TIPO==3) entonces
                          E.TIPO=3 sino E.TIPO=error.t }
   S → S1 ; S2      { Si (S1.TIPO==ok ∧ S2.TIPO==ok) entonces
                        S.TIPO=ok sino S.TIPO=error.t
                     Si (S1.BIFU==ok ∧ S2.BIFU==ok) entonces
                        S.BIFU=ok sino S .BIFU=error.b }

                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


   S→W               { S.TIPO=W.TIPO , S.BIFU=W.BIFU }
   S → break         { S.TIPO=ok
                       Si (CAW > 0) entonces S.BIFU=ok
                          sino S.BIFU=error.b }
   S→I               { S.TIPO=I.TIPO , S.BIFU=I.BIFU }
   S → id = E        { Si (id.TIPO==E.TIPO) entonces S.TIPO=ok
                           sino S.TIPO=error.t
                       S.BIFU=ok }
   S → id[E1] = E2   { Si (id.TIPO==arreglo(r,t)) ∧ (E1.TIPO==1)
                           ∧ (E2.TIPO==t) entonces S.TIPO=ok
                           sino S.TIPO=error.t
                       S.BIFU=ok}
                                                            ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


    →
   W→ while E do {SF { Si (E.TIPO==3) entonces W.TIPO=S.TIPO
                           sino W.TIPO=error.t
                       W.BIFU=S.BIFU , CAW=CAW+1 }
   I → if E then {S} R   { Si (E.TIPO==3) ∧ (S.TIPO==ok)
                               ∧ (R.TIPO==ok) entonces I.TIPO=ok
                             sino I.TIPO=error.t
                          Si (S.BIFU==ok) ∧ (R.BIFU==ok)
                             entonces I.BIFU=ok sino I.BIFU=error.b }
   R → else { S }        { R.TIPO=S.TIPO , R.BIFU=S.BIFU }
   R→λ                   { R.TIPO=ok , R.BIFU=ok }
   F→}                   { CAW=CAW-1 }

                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


Veamos a continuación algunos
                                          Aplicación de acciones semánticas
  casos particulares de uso de
  este esquema de traducción:      1) CAW=0

1) En primer lugar derivemos       2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO
   una sentencia con sintaxis y         sino id.TIPO = arreglo(A.RANGO , T.TIPO)
   semántica correctas:            3) T.TIPO=2

Aplicación de reglas de sintaxis   4) A.RANGO=vacío

P ⇒ D ; { S } ⇒ T id A ; { S } ⇒   5) Si (id.TIPO==E.TIPO) entonces S.TIPO=ok
    float id A ; { S } ⇒                sino S.TIPO=error.t
    float id ; { S } ⇒             6) S.BIFU=ok                     Valores Finales
    float id ; { id = E } ⇒
    float id ; { id = real }       7) E.TIPO=2                S.TIPO==ok     S.BIFU==ok

                                                                    ING. JORGE BUABUD
U.T.N. – F.R.T.
  S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

 EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


2) Ahora derivemos una sentencia
   con sintaxis correcta, pero con          Aplicación de acciones semánticas
   semántica incorrecta con un       1) CAW=0
   error de tipo:                    2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO
 Aplicación de reglas de sintaxis         sino id.TIPO = arreglo(A.RANGO , T.TIPO)
 P ⇒ D ; { S } ⇒ T id A ; { S } ⇒    3) T.TIPO=3
     boolean id A ; { S } ⇒
                                     4) A.RANGO=vacío
     boolean id ; { S } ⇒
     boolean id ; { id = E } ⇒       5) Si (id.TIPO==E.TIPO) entonces S.TIPO=ok
     boolean id ; { id = real }           sino S.TIPO=error.t
                                     6) S.BIFU=ok                  Valores Finales

                                     7) E.TIPO=2          S.TIPO==error.t      S.BIFU==ok

                                                                      ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

3) Este es otro caso de sentencia          Aplicación de acciones semánticas
   con sintaxis y semántica         1) CAW=0
   correctas:                       2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO
 Aplicación de reglas de sintaxis         sino id.TIPO = arreglo(A.RANGO , T.TIPO)
                                    3) T.TIPO=3
P ⇒ D ; { S } ⇒ T id A ; { S } ⇒    4) A.RANGO=vacío
    boolean id A ; { S } ⇒
                                    5) S.TIPO=W.TIPO , S.BIFU=W.BIFU
    boolean id ; { S } ⇒
    boolean id ; { W } ⇒            6) Si (E.TIPO==3) entonces W.TIPO=S.TIPO
    boolean id ; {while E do               sino W.TIPO=error.t
    { S F } ⇒ boolean id ; {           W.BIFU=S.BIFU , CAW=CAW+1
    while cierto do { S F } ⇒       7) E.TIPO=3                             Valores
    boolean id ; { while cierto     8) S.TIPO=ok                            Finales
    do { break F } ⇒ boolean          Si (CAW > 0) entonces S.BIFU=ok
                                                                         S.TIPO==ok
    id ; { while cierto do {              sino S.BIFU=error.b
    break } }                       9) CAW=CAW-1                         S.BIFU==ok
                                                                     ING. JORGE BUABUD
U.T.N. – F.R.T.
  S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

 EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:


                                           Aplicación de acciones semánticas
4) Por último veamos un ejemplo
   similar al anterior, pero con un 1) CAW=0
   error semántico de bifurcación: 2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO
                                           sino id.TIPO = arreglo(A.RANGO , T.TIPO)
  Aplicación de reglas de sintaxis
                                      3) T.TIPO=3
 P ⇒ D ; { S } ⇒ T id A ; { S } ⇒
     boolean id A ; { S } ⇒           4) A.RANGO=vacío
     boolean id ; { S } ⇒
                                      5) S.TIPO=ok
     boolean id ; { break }
                                        Si (CAW > 0) entonces S.BIFU=ok
                                           sino S.BIFU=error.b

                                                                    Valores Finales
                                                           S.TIPO==ok      S.BIFU==error.b

                                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

SISTEMAS CANÓNICOS:

PRELIMINARES:
Recordemos los siguientes conceptos de la Lógica de Proposiciones:
   Enunciado: Es cualquier afirmación que nos permita tomar alguna decisión.
  Un enunciado puede ser falso o cierto. Se puede combinar varios enunciados
  (p, q) con los operadores de conjunción, disyunción y negación ( p∧q , p∨q , ~p
  ) para formar un enunciado compuesto.
  Proposición: Es un enunciado variable o un enunciado compuesto donde los
  enunciados que lo conforman son variables. Por ejemplo, si p, q y r son
  enunciados entonces: p , ~q , q ∨ p , p ∧ q ∨ r ∧ ~q son proposiciones.
  Argumento: Es una relación entre un conjunto de proposiciones P1, P2, ... , PN ,
  llamadas premisas y otra proposición Q llamada conclusión.
  Denotamos un argumento por: P1, P2, ... , PN ├─ Q        SÍMBOLO DE ASEVERACIÓN ├─

  Un argumento es válido cuando se cumple que la conclusión Q es cierta cada
  vez que las premisas Pi son ciertas. En caso contrario es una falacia.
                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

SISTEMAS CANÓNICOS:

Un Sistema Canónico es un conjunto de argumentos válidos que permiten
definir lenguajes formales tanto en su nivel sintáctico como semántico.
  Cada argumento válido se conoce como CANON (regla, norma, precepto).
  Un canon que no tiene premisas se llama AXIOMA.
  Un TERMINAL es un componente léxico o símbolo del lenguaje.
  Una VARIABLE es un símbolo que se puede reemplazar por el valor de un
 TERMINAL o por un TÉRMINO.
  Un TÉRMINO es una serie de TERMINALES y VARIABLES concatenados.
  Un PREDICADO es el nombre que se le da a un conjunto de TÉRMINOS. Se
 llama GRADO del predicado a la cantidad de términos del conjunto. Cuando
 son varios términos se los encierra entre paréntesis angulares.
  Una REMARCA es un TÉRMINO seguido de un PREDICADO.
  Cada PREMISA o CONCLUSIÓN en un CANON es una REMARCA.
                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

Para aclarar estos conceptos vemos como ejemplo el lenguaje de códigos
binarios, es decir de todas las combinaciones de 0 y 1:
1) Los dígitos “0” y “1” son TERMINALES.
2) Los nombres “dígito” y “código”, que denotan un dígito binario y un
código binario cualquiera, son PREDICADOS de grado 1.
3) La letra “x”, que representa un valor de un dígito y la letra “y”, que
representa un valor de un código; son VARIABLES.
4) Las cadenas “y”, “1”, “yx”, “y0” y “1y0x”, es decir cualquier
secuencia de terminales y/o variables, es un TÉRMINO.
5) Las secuencias “1 dígito” y “yx código”, es decir un término seguido
de un predicado, son REMARCAS.


                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

SISTEMAS CANÓNICOS:

En base a estos elementos se puede definir el siguiente Sistema Canónico,
que describe el lenguaje de los códigos binarios:

             1)         ├─    0 dígito
             2)          ├─   1 dígito
             3) x dígito ├─ x código
             4) x dígito ; y código ├─ yx código

Como vemos los cánones 1) y 2) son AXIOMAS. Es decir que se parte
de la aseveración de que 0 y 1 son dígitos. Luego con el canon 3) se
afirma que un dígito es un código y con el canon 4) se define un código
como una secuencia de dígitos.
                                                         ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

Consideremos ahora el problema de comprobación del flujo de control
para una sentencia de bifurcación incondicional explícita, es decir la típica
proposición “goto”.
Normalmente la sintaxis de esta sentencia consiste en la escritura de la
palabra clave “goto” seguida de un “rótulo” que representa la posición de
otra sentencia del programa donde se debe dirigir el flujo de control.
Por simplicidad y con el objetivo de estudiar solo el problema que se
presenta con esta sentencia, vamos a suponer un lenguaje de programación
hipotético que consista exclusivamente de proposiciones “goto”.

También supondremos que los “rótulos” son secuencias de letras
mayúsculas.
                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.       LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

Teniendo en cuenta estas hipótesis, las siguientes secuencias serían programas con
“sentencias goto”, cada sentencia consta de un “rótulo de enunciado”, seguido de
la palabra clave “goto” y un “rótulo de referencia”:

                            En este programa todos los rótulos de referencia
     1)   B goto D
                            figuran como rótulos de enunciado. Por lo tanto
          C goto D          podemos decir que es correcto en su sintaxis y su
          D goto B          semántica.

                            En este otro caso hay un rótulo de referencia que no
     2)   X goto Y
                            figura como rótulo de enunciado. Por lo tanto
          D goto C          podemos decir que es correcto en su sintaxis pero no en
          Y goto D          su semántica.
                            Esta sentencia podría interpretarse como incorrecta
     3)   A goto A
                            desde el punto de vista pragmático.
                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

El objetivo de este ejemplo es definir un Sistema Canónico capaz de
describir el lenguaje hipotético de “sentencias goto”, teniendo en cuenta
en primer lugar el nivel de sintaxis y luego el nivel semántico.

Es decir que permita generar series de “sentencias goto”, donde la lista de
“rótulos de enunciado” contenga a la lista de “rótulos de referencia”.

Antes de presentar dicho Sistema Canónico, aclaremos una notación para
simplificar la escritura de cánones con idénticas premisas R1 ; ... ; RN y
diferentes conclusiones con igual predicado α1P, ... , αNP:

                    R1 ; ... ; RN ├─ α1+ α2+ .... + αNP

                                                          ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:


 Este es un Sistema Canónico que solo tiene en cuenta la sintaxis:

1)   ├─   A + B + ...... + Z letra
2) l letra ├─ l identificador
3) l letra ; y identificador   ├─    yl identificador
4) y identificador ├─ goto y enunciado_goto
5) e identificador ; x enunciado_goto ├─ ex programa
6) e identificador ; x enunciado_goto ; p programa ├─ exp programa


                                                         ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

Teniendo en cuenta este sistema canónico, los siguientes son programas
correctos en su sintaxis:
     1) Z goto DX           2) AB goto AB           3) HG goto Z
       DX goto Z                                         X goto Z


En cambio los siguientes son programas incorrectos desde el punto de vista
sintáctico:
     4) goto DX             5) AB goto              6)    goto Z
       DX goto Z                                          X goto


                                                          ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.           LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

En cambio este otro Sistema Canónico tiene en cuenta tanto la sintaxis
como la semántica:

1)   ├─   A + B + ...... + Z letra
2) l letra ├─ l identificador
3) l letra ; y identificador    ├─   yl identificador
4) y identificador ├─ 〈 goto y , y 〉 enunciado_goto_con_rótulo_de_referencia
5) e identificador ; 〈 x , r 〉 enunciado_goto_con_rótulo_de_referencia ├─
     〈 ex , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia



                                                                 ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.         LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

6)     i identificador ; 〈 x , l 〉 enunciado_goto_con_rótulo_de_referencia ;
     〈 p , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia
     ├─ 〈 ixp , ei , rl 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia

7)      〈 p , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia ;
      〈 r , e 〉 verifica_relación_pertenencia ├─ p programa_válido
8)     ├─   λ lista
9)     i identificador ├─ i lista
10) x lista ; y lista ├─ xy lista
11) x lista ; y lista ; z lista ├─ 〈 y , xyz 〉 verifica_relación_pertenencia
12) 〈 a , l 〉 verifica_relación_pertenencia ; 〈 b , l 〉 verifica_relación_pertenencia
    ├─ 〈 ab , l 〉 verifica_relación_pertenencia

                                                                   ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

EJEMPLOS DE SISTEMAS CANÓNICOS:

Veamos a continuación un ejemplo de uso de este sistema canónico:
  Aplicando el canon 1) tenemos que “A”, “B” y “F” son letras.
  Según cánones 2) y 3) tenemos que “BA”, “AF”, “B” y “F” son identificadores.
  De acuerdo al canon 4) podemos aseverar que “goto F”, “goto AF” y “goto B”
  son enunciados goto con rótulo de referencia.
  Aplicando el canon 5) se llega a que “BA goto F”, “B goto AF”, “F goto B” y
  “AF goto F” son programas con rótulos de enunciado y rótulo de referencia.
  El canon 6) nos permite aseverar que la secuencia “BA goto F B goto AF F
  goto B AF goto F” es un programa con rótulos de enunciado (BA, B, F, AF) y
  rótulos de referencia (F, AF, B).
  De cuerdo a los cánones del 8) al 12) podemos afirmar que las listas de rótulos
  (BA, B, F, AF) y (F, AF, B) cumplen con la relación de pertenencia. Por lo que
  según el canon 7) la secuencia “BA goto F B goto AF F goto B AF goto F”
  es un programa válido.
                                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

CONCEPTO DE TRADUCTOR: Un traductor se define como un
programa que traduce o convierte desde un texto o programa escrito
en un lenguaje fuente hasta un texto o programa equivalente escrito en
un lenguaje destino produciendo, si cabe, mensajes de error.




                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


                        Preprocesadores
                        Compiladores de L.A.N.
                        Interpretes de L.A.N.
  TIPOS DE
TRADUCTORES             Interpretes de comandos
                        Ensambladores
                        Conversores fuente-fuente
                        Traductores de idioma
                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

 COMPILADOR: Es aquel traductor que tiene como entrada
 sentencias en un lenguaje formal y como salida tiene un fichero
 en un lenguaje de bajo nivel, es decir, realiza una traducción de
 un de lenguaje alto nivel (LAN) a código máquina.
 Ejemplo: C++ , Delphi , VisualBasic, etc.

 INTERPRETE: Es un traductor/ejecutor que toma como
 entrada sentencias escritas en un lenguaje formal y como salida
 realiza la ejecución de dichas sentencias sin almacenarlas, es
 decir, que traduce sentencia por sentencia de un LAN y la va
 ejecutando sin crear un fichero donde se guarde el código de
 máquina correspondiente. Ejemplo: Lisp, Snobol, etc.
                                                    ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

PSEUDOINTERPRETE: Algunos lenguajes intentan aunar las ventajas
de los compiladores y de los intérpretes y evitar sus desventajas; son los
lenguajes pseudointerpretados. En estos, el programa fuente pasa por
un pseudocompilador que genera un pseudoejecutable. Para ejecutar
este pseudoejecutable se le hace pasar por un motor de ejecución que lo
interpreta de manera relativamente eficiente. Ejemplo: Java, Cobol, etc.




                                                         ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


 PREPROCESADORES: Permiten modificar el programa fuente antes
 de la verdadera compilación. Hacen uso de macroinstrucciones y
 directivas de compilación.
 Por ejemplo, en lenguaje C++, el preprocesador sustituye la directiva
 #include Uno.c por el código completo que contiene el fichero “Uno.c”,
 de manera que cuando el compilador comienza su ejecución se
 encuentra con el código ya insertado en el programa fuente. Algunas
 otras directivas de preprocesamiento permiten compilar trozos de
 códigos opcionales (lenguajes C++ y Clipper): #ifndef, #endif, #define.
 Los preprocesadores suelen actuar de manera transparente para el
 programador, pudiendo incluso considerarse que son una fase
 preliminar del compilador.
                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.




                                  ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.     LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


INTÉRPRETES DE COMANDOS: Un intérprete de comandos traduce
sentencias simples a invocaciones a programas de una biblioteca.
Se utilizan especialmente en los sistemas operativos (la shell de Unix es
un intérprete de comandos).
Los programas invocados pueden residir en el kernel (núcleo) del sistema
o estar almacenados en algún dispositivo externo como rutinas
ejecutables que se traen a memoria bajo demanda.
Por ejemplo, si bajo MS-DOS se teclea el comando copy se ejecutará la
función de copia de ficheros del sistema operativo, que se encuentra
residente en memoria.

                                                           ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


ENSAMBLADOR: Un ensamblador es un compilador sencillo, en el que
el lenguaje fuente tiene una estructura tan simple, que permite la
traducción de cada sentencia fuente a una única instrucción en código
máquina.
Al lenguaje que admite este compilador también se le llama lenguaje
ensamblador o simbólico. Este lenguaje fuente utiliza nemotécnicos para
hacer referencia a operaciones, registros, direcciones de memoria, etc.
En definitiva, existe una correspondencia uno a uno entre las
instrucciones ensamblador y las instrucciones máquina.
Ejemplo: Instrucción ensamblador INTEL 8088: MOV AH,09h
         Código máquina generado en Binario: 1011- 0100- 0000- 1001

                                                      ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

CONVERSORES FUENTE-FUENTE: Permiten traducir desde
un LAN (Lenguaje de Alto Nivel) a otro LAN, con lo que se
consigue una mayor portabilidad de estos lenguajes.
Por ejemplo un conversor de Java a C++, permitiría ejecutar
programas escritos en Java en computadores que solo tengan
compilador de C++.

TRADUCTORES DE IDIOMAS: Son traductores de lenguajes
naturales, es decir, tienen como entrada un texto escrito en un
idioma y dan como salida una texto equivalente escrito en otro
idioma. Por ejemplo: Systran (traductor Inglés-Español),
Traductor del Google (varios idiomas al español y viceversa), etc.
                                                    ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


FASES BÁSICAS PARA LA EJECUCIÓN DE UN PROGRAMA
      ESCRITO CON LENGUAJE DE ALTO NIVEL



                       COMPILACIÓN
  FASES
                       ENLACE
EJECUCIÓN

                       CARGA


                                     ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

COMPILADOR: Por regla general un compilador no produce un
fichero ejecutable, sino que el código generado se estructura en módulos
que se almacenan en un fichero objeto.
Los ficheros objeto poseen información relativa tanto al código máquina
como a una tabla de símbolos que almacena la estructura de las variables
y tipos utilizados por el programa fuente.



                    Fich.fue




                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

ENLAZADOR: Engloba en un único bloque los distintos módulos que
almacenan código máquina, estructura el bloque de memoria destinado a
almacenar las variables en tiempo de ejecución y genera el ejecutable
final incorporando algunas rutinas adicionales procedentes de librerías.




                                                        ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


CARGADOR: El fichero ejecutable consta de varios segmentos,
entre ellos el de código máquina, el de datos y el de pila. En estos
segmentos se hace referencia a direcciones de memoria principal
en forma relativa.
El cargador, que suele ser parte del S.O., coloca los diferentes
segmentos del fichero ejecutable en las direcciones de memoria
disponibles.
De tal modo que a las direcciones relativas del código se le suma la
dirección base del segmento correspondiente, para obtener la
dirección absoluta de memoria que tomará el microprocesador
para acceder a una variable o realizar una bifurcación.
                                                     ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.




                                  ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.    LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.

                    ETAPAS DE UN COMPILADOR




                                              ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.   LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.




                                  ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.      LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


EJEMPLO DE COMPILACIÓN: Supongamos que se está compilando
un programa en lenguaje C++, que contiene la siguiente expresión:
posición = inicial + velocidad * 60 , donde los identificadores posición,
inicial y velocidad se declararon de tipo float.


     Salida del analizador léxico:       Salida del analizador sintáctico:
        id1 = id2 + id3 * nument            = id1 + id2 * id3 nument


                      Salida del analizador semántico:
                      = id1 + id2 * id3 entareal(nument)

                                                             ING. JORGE BUABUD
U.T.N. – F.R.T.
S. y S. de los L.        LINGÜÍSTICA MATEMÁTICA

APLICACIÓN: Proceso de Compilación.


    Salida del generador de código
     intermedio de 3 direcciones:
           temp1 = entareal(60)        Salida del generador de código:

           temp2 = id3 * temp1                MOVF id3, R2

           temp3 = id2 +temp2                 MULF #60.0 , R2

           id1 = temp3                        MOVF id2, R1
                                              ADDF R2, R1
   Salida del optimizador de código:          MOVF R1, id1
           temp1 = id3 * 60.0
           id1 = id2 + temp1
                                                        ING. JORGE BUABUD

Contenu connexe

Tendances

Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literario
Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literarioNivel LéXico SemáNtico Y RetóRico, literatura, analisis literario
Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literariooscar muñiz
 
LINGÜÍSTICA TEXTUAL.pdf
LINGÜÍSTICA TEXTUAL.pdfLINGÜÍSTICA TEXTUAL.pdf
LINGÜÍSTICA TEXTUAL.pdfCESARGONZALES88
 
Didáctica de la Lengua y Literatura (Ruiz Bikandi)
Didáctica de la Lengua y Literatura (Ruiz Bikandi)Didáctica de la Lengua y Literatura (Ruiz Bikandi)
Didáctica de la Lengua y Literatura (Ruiz Bikandi)Álvaro Velasco
 
El comentario pragmatico en textos (Lenguaje y Literatura)
El comentario pragmatico en textos (Lenguaje y Literatura)El comentario pragmatico en textos (Lenguaje y Literatura)
El comentario pragmatico en textos (Lenguaje y Literatura)alfaroquijada
 
Buena ortografía sin esfuerzo para docentes
Buena ortografía sin esfuerzo para docentesBuena ortografía sin esfuerzo para docentes
Buena ortografía sin esfuerzo para docentesLuis Alonso Rubio Acosta
 
"La competencia literaria" Juan Cervera Borras
"La competencia literaria" Juan Cervera Borras"La competencia literaria" Juan Cervera Borras
"La competencia literaria" Juan Cervera Borrasciberliterarios
 
CONSEJOS PARA ESCRIBIR DANIEL CASSANY
CONSEJOS PARA ESCRIBIR DANIEL CASSANYCONSEJOS PARA ESCRIBIR DANIEL CASSANY
CONSEJOS PARA ESCRIBIR DANIEL CASSANYoscarbm7
 
Adquisición del lenguaje
Adquisición del lenguajeAdquisición del lenguaje
Adquisición del lenguajeAngiee Garcia
 
Competencia comunicativa
Competencia comunicativaCompetencia comunicativa
Competencia comunicativapuescas_rma
 
SemáNtica General
SemáNtica GeneralSemáNtica General
SemáNtica GeneralBDSG
 
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.Lingüística Uces
 
Reglas de signos de interrogación y exclamación,
Reglas de signos de interrogación y exclamación,Reglas de signos de interrogación y exclamación,
Reglas de signos de interrogación y exclamación,Izhaaksc27
 

Tendances (20)

Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literario
Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literarioNivel LéXico SemáNtico Y RetóRico, literatura, analisis literario
Nivel LéXico SemáNtico Y RetóRico, literatura, analisis literario
 
LINGÜÍSTICA TEXTUAL.pdf
LINGÜÍSTICA TEXTUAL.pdfLINGÜÍSTICA TEXTUAL.pdf
LINGÜÍSTICA TEXTUAL.pdf
 
Lh 7
Lh 7Lh 7
Lh 7
 
Los elementos de la lengua
Los elementos de la lenguaLos elementos de la lengua
Los elementos de la lengua
 
Didáctica de la Lengua y Literatura (Ruiz Bikandi)
Didáctica de la Lengua y Literatura (Ruiz Bikandi)Didáctica de la Lengua y Literatura (Ruiz Bikandi)
Didáctica de la Lengua y Literatura (Ruiz Bikandi)
 
El círculo lingüístico de Praga
El círculo lingüístico de PragaEl círculo lingüístico de Praga
El círculo lingüístico de Praga
 
El comentario pragmatico en textos (Lenguaje y Literatura)
El comentario pragmatico en textos (Lenguaje y Literatura)El comentario pragmatico en textos (Lenguaje y Literatura)
El comentario pragmatico en textos (Lenguaje y Literatura)
 
Buena ortografía sin esfuerzo para docentes
Buena ortografía sin esfuerzo para docentesBuena ortografía sin esfuerzo para docentes
Buena ortografía sin esfuerzo para docentes
 
"La competencia literaria" Juan Cervera Borras
"La competencia literaria" Juan Cervera Borras"La competencia literaria" Juan Cervera Borras
"La competencia literaria" Juan Cervera Borras
 
Forma y sustancia
Forma y sustanciaForma y sustancia
Forma y sustancia
 
CONSEJOS PARA ESCRIBIR DANIEL CASSANY
CONSEJOS PARA ESCRIBIR DANIEL CASSANYCONSEJOS PARA ESCRIBIR DANIEL CASSANY
CONSEJOS PARA ESCRIBIR DANIEL CASSANY
 
Adquisición del lenguaje
Adquisición del lenguajeAdquisición del lenguaje
Adquisición del lenguaje
 
Charles William Morris
Charles William MorrisCharles William Morris
Charles William Morris
 
Competencia comunicativa
Competencia comunicativaCompetencia comunicativa
Competencia comunicativa
 
SemáNtica General
SemáNtica GeneralSemáNtica General
SemáNtica General
 
Relaciones sintagmaticas y paradigmaticas
Relaciones sintagmaticas y paradigmaticasRelaciones sintagmaticas y paradigmaticas
Relaciones sintagmaticas y paradigmaticas
 
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.
Unidad temática IV: Comunicación: Roman Jakobson/Catherine Kerbrat-Orecchioni.
 
Competencias comunicativas
Competencias comunicativasCompetencias comunicativas
Competencias comunicativas
 
Poesía y Traducción
Poesía y TraducciónPoesía y Traducción
Poesía y Traducción
 
Reglas de signos de interrogación y exclamación,
Reglas de signos de interrogación y exclamación,Reglas de signos de interrogación y exclamación,
Reglas de signos de interrogación y exclamación,
 

En vedette

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 6UTN-FRT Tucumán Argentina
 
Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7UTN-FRT Tucumán Argentina
 
Etapas del Desarrollo Cognitivo según Piaget: Operaciones Formales
Etapas del Desarrollo Cognitivo según Piaget: Operaciones FormalesEtapas del Desarrollo Cognitivo según Piaget: Operaciones Formales
Etapas del Desarrollo Cognitivo según Piaget: Operaciones FormalesDanny Sayago
 

En vedette (7)

CAMPO ADITIVO
CAMPO ADITIVOCAMPO ADITIVO
CAMPO ADITIVO
 
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
 
Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7
 
Gramáticas y Modelos Matemáticos - Clase 5
Gramáticas y Modelos Matemáticos - Clase 5Gramáticas y Modelos Matemáticos - Clase 5
Gramáticas y Modelos Matemáticos - Clase 5
 
Gramáticas y Modelos Matemáticos - Clase 3
Gramáticas y Modelos Matemáticos - Clase 3Gramáticas y Modelos Matemáticos - Clase 3
Gramáticas y Modelos Matemáticos - Clase 3
 
Gramáticas y Modelos Matemáticos - Clase 4
Gramáticas y Modelos Matemáticos - Clase 4Gramáticas y Modelos Matemáticos - Clase 4
Gramáticas y Modelos Matemáticos - Clase 4
 
Etapas del Desarrollo Cognitivo según Piaget: Operaciones Formales
Etapas del Desarrollo Cognitivo según Piaget: Operaciones FormalesEtapas del Desarrollo Cognitivo según Piaget: Operaciones Formales
Etapas del Desarrollo Cognitivo según Piaget: Operaciones Formales
 

Similaire à Lingüística Matemática Clase 2

Unidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesUnidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesRaul Interian
 
Tema 08. lógica de enunciados
Tema 08. lógica de enunciadosTema 08. lógica de enunciados
Tema 08. lógica de enunciadosjlcisnerosmxl
 
Presentacion automata grupo 1 unibe 02-02-2018
Presentacion automata grupo 1   unibe 02-02-2018Presentacion automata grupo 1   unibe 02-02-2018
Presentacion automata grupo 1 unibe 02-02-2018Edward Caceres
 
Estructurapalabras 091026112958-phpapp01
Estructurapalabras 091026112958-phpapp01Estructurapalabras 091026112958-phpapp01
Estructurapalabras 091026112958-phpapp01ikutt
 
Traducción a la lógica de primer orden
Traducción a la lógica de primer ordenTraducción a la lógica de primer orden
Traducción a la lógica de primer ordenAlfonso Cabanzo
 
La gramatica
La gramaticaLa gramatica
La gramaticanone
 
La gramatica
La gramaticaLa gramatica
La gramaticanone
 
La gramatica
La gramaticaLa gramatica
La gramaticanone
 
La gramatica
La gramaticaLa gramatica
La gramaticad92gr
 
Psicolinguistica
PsicolinguisticaPsicolinguistica
Psicolinguisticamagosho
 
La oracion gramatical por wendy farias
La oracion gramatical por wendy fariasLa oracion gramatical por wendy farias
La oracion gramatical por wendy fariaswendysusana
 

Similaire à Lingüística Matemática Clase 2 (20)

Unidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesUnidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formales
 
Gramáticas formales
Gramáticas formales Gramáticas formales
Gramáticas formales
 
Presentación 2
Presentación 2Presentación 2
Presentación 2
 
Lógica
Lógica Lógica
Lógica
 
SimbolizacióN
SimbolizacióNSimbolizacióN
SimbolizacióN
 
Tema 08. lógica de enunciados
Tema 08. lógica de enunciadosTema 08. lógica de enunciados
Tema 08. lógica de enunciados
 
Tema 6 sintactico
Tema 6 sintacticoTema 6 sintactico
Tema 6 sintactico
 
Presentacion automata grupo 1 unibe 02-02-2018
Presentacion automata grupo 1   unibe 02-02-2018Presentacion automata grupo 1   unibe 02-02-2018
Presentacion automata grupo 1 unibe 02-02-2018
 
Niveles de lengua
Niveles de lenguaNiveles de lengua
Niveles de lengua
 
Estructurapalabras 091026112958-phpapp01
Estructurapalabras 091026112958-phpapp01Estructurapalabras 091026112958-phpapp01
Estructurapalabras 091026112958-phpapp01
 
La gramatica
La gramaticaLa gramatica
La gramatica
 
Traducción a la lógica de primer orden
Traducción a la lógica de primer ordenTraducción a la lógica de primer orden
Traducción a la lógica de primer orden
 
Guia 2 de español 6º
Guia 2 de español 6ºGuia 2 de español 6º
Guia 2 de español 6º
 
La gramatica
La gramaticaLa gramatica
La gramatica
 
La gramatica
La gramaticaLa gramatica
La gramatica
 
La gramatica
La gramaticaLa gramatica
La gramatica
 
La gramatica
La gramaticaLa gramatica
La gramatica
 
Ferdinand de saussure
Ferdinand de saussureFerdinand de saussure
Ferdinand de saussure
 
Psicolinguistica
PsicolinguisticaPsicolinguistica
Psicolinguistica
 
La oracion gramatical por wendy farias
La oracion gramatical por wendy fariasLa oracion gramatical por wendy farias
La oracion gramatical por wendy farias
 

Dernier

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 

Dernier (20)

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 

Lingüística Matemática Clase 2

  • 1. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: PRELIMINARES: ¿ Cómo podemos describir un lenguaje ? Definición por extensión: Listado de todas las palabras del lenguaje. Ejemplo: Σ = { a, b, c } L1 = { aa, ab, ac, ba, bb, bc, ca, cb, cc } L2 = { aaa, aba, aca, bbb, bab, bcb, ccc, cac, cbc } Definición por comprensión: Especificación de atributos de las palabras. Ejemplo: Σ = { a, b, c } L3 = { w / w ∈ Σ* ∧ |w| = 50 } L4 = { w / w ∈ Σ* ∧ w = w -1 } Definición por patrones: Expresión de palabras con parámetros. Ejemplo: Σ = { 0, 1 } L5 = { 0.1 n.0 / n ≥ 1 } L6 = { 0 n .1 k / n ≥ 0, k ≤ 5 } ING. JORGE BUABUD
  • 2. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Noción de Gramática: De las formas de descripción de un lenguaje que vimos anteriormente, ninguna resulta eficiente cuando se trata de un lenguaje complejo como podría ser un lenguaje natural o un lenguaje de programación. En estos caso resulta conveniente especificar un conjunto de reglas de generación de las palabras que pertenecen exclusivamente al lenguaje que se quiere describir. Este conjunto de reglas de formación junto con los símbolos que utiliza dan lugar al concepto de GRAMÁTICA. Ejemplo: Σ = { 0, 1 } Reglas: 1) Puede ser 0 o 1 2) Puede ser cualquier combinación de símbolos que empiece con 1 Como vemos se trata del conjunto de números binarios naturales. ING. JORGE BUABUD
  • 3. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Ejemplo de gramática para un pequeño subconjunto del Español: Una frase sencilla en español puede construirse con un sujeto seguido por un predicado y terminada en un punto. El sujeto podría ser un artículo seguido de un sustantivo o solo un sustantivo, mientras que el predicado podría ser un verbo seguido de un objeto o solo un verbo. Por último, un objeto podría ser una preposición seguida de un sujeto. En este caso los componentes léxicos o símbolos del lenguaje serían los valores que pueden tomar los verbos, sustantivos, adverbios y preposiciones. Por otro lado frase, sujeto, predicado y objeto son estructuras sintácticas que se forman mediante combinación de los componentes léxicos. ING. JORGE BUABUD
  • 4. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: De tal modo que una frase se puede describir con las siguientes Reglas: 〈frase〉 → 〈sujeto〉 〈predicado〉 〈punto〉 〉 〉 〉 〉 〈sujeto〉 → 〈artículo〉 〈sustantivo〉 〉 〉 〉 〈sustantivo〉 → María | Juan | nave | perro 〉 〈artículo〉 → El | La | λ 〉 〈predicado〉 → 〈verbo〉 〈objeto〉 〉 〉 〉 〈verbo〉 → corre | quiere | vuela 〉 〈objeto〉 → 〈preposición〉 〈sujeto〉 | 〈adverbio〉 | λ 〉 〉 〉 〉 〈preposición〉 → a | con 〉 〈adverbio〉 → rápidamente | ahora 〉 〈punto〉 → • 〉 Donde encerramos entre paréntesis angulares a las estructuras sintácticas para distinguirlas de los componentes léxicos, la barra vertical se usa como disyunción y la flecha indica que la parte izquierda puede reemplazarse por o generar a la parte derecha de la regla. ING. JORGE BUABUD
  • 5. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Veamos algunas frases que se pueden generar con esta gramática: María quiere a Juan. Juan corre con el perro. La nave vuela ahora. El perro corre rápidamente. También se puede generar estas otras frases de sentido dudoso: La casa corre con el perro. Juan vuela con María. El perro vuela rápidamente. Podemos concluir que esta gramática describe solamente la sintaxis de este subconjunto del español, pero no su semántica. ING. JORGE BUABUD
  • 6. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Definición formal de una GRAMÁTICA estructurada por frases Σ N∪ΣT = Σ G = 〈 ΣN , ΣT , P , S 〉 Σ N∩ΣT = Φ ΣN es el alfabeto de símbolos No-terminales o variables de la Gramática. ΣT es el alfabeto de símbolos Terminales o símbolos del Lenguaje. P es el conjunto finito no vacío de Reglas de Producción de la forma: α→ β donde: α = α1.N.α2 con α1, α2 ∈ Σ* α N∈ ΣN β ∈ Σ* S es el Símbolo Inicial o Axioma de la Gramática, que es el comienzo de ∈Σ cualquier proceso de generación o derivación de una palabra. S∈ΣN ING. JORGE BUABUD
  • 7. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Esta definición fue enunciada en la década de 1950 por Noam Chomsky. El lingüista, profesor e intelectual estadounidense Noam Chomsky es fundador de la teoría generativo- transformacional que ha revolucionado la lingüística. Trata la gramática dentro de la teoría general del lenguaje: esto es, Chomsky cree que junto a las reglas gramaticales de cada lengua concreta, existen además unas universales comunes a todas las lenguas, lo que indica que cualquier persona posee la capacidad innata de producir y entender el lenguaje. También se conoce a Chomsky por su actividad como analista crítico de la política de su país y de los medios de comunicación. En las décadas de 1960 y 1970 se opuso a la intervención de E.E.U.U. en la guerra del Vietnam por lo que escribió varias obras y pronunció numerosas conferencias. ING. JORGE BUABUD
  • 8. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: En el ejemplo del subconjunto del lenguaje español, la gramática tiene los siguientes componentes: ΣN = { 〈frase〉 , 〈sujeto〉 , 〈predicado〉 , 〈punto〉 , 〈artículo〉 , 〉 〉 〉 〉 〉 〈sustantivo〉 , 〈verbo〉 , 〈objeto〉 , 〈preposición〉 , 〈 adverbio〉 〉 〉 〉 〉 〉 } Σ = { María , Juan , nave , perro , El , La , corre , quiere , vuela , T a , con , rápidamente , ahora , • } S = 〈frase〉 〉 P ={ conjunto de reglas de producción enunciadas en el ejemplo } ING. JORGE BUABUD
  • 9. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Veamos otros ejemplos abstractos de gramáticas que se ajustan a esta definición: 1) G1 = 〈 { S, A, B } , { a, b } , { S → aSBA | abA , AB → BA , bB → bb , bA → ba , aA → aa } , S 〉 2) G2 = 〈 { S, X, Y, Z } , { x, y, z } , { S → XSZ | Y , Y → yY | λ , X→x, Z→z},S〉 3) G3 = 〈 { S } , { a } , { S → a | aS } , S 〉 ING. JORGE BUABUD
  • 10. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: DERIVACIÓN DE PALABRAS A PARTIR DEL AXIOMA: Para generar o derivar una palabra del lenguaje que describe una gramática se comienza por alguna regla que tenga el axioma a la izquierda y luego se continúa con el resto de las reglas que sean necesarias para llegar a dicha palabra. Este proceso se llama derivación de una palabra y se representa así: S ⇒ α1 ⇒ α2 ⇒ ....... ⇒ αx ⇒ w que equivale a: S ⇒* w donde los αi son secuencias de símbolos terminales y no terminales, w es una secuencia de terminales, el operador ⇒ (DERIVACIÓN DIRECTA) significa la aplicación de una sola regla y el operador ⇒* (DERIVACIÓN A LA LARGA) significa la aplicación de una cantidad finita de reglas. ING. JORGE BUABUD
  • 11. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: FORMA SENTENCIAL: Cualquier secuencia γ que se obtenga a partir del axioma en un proceso de derivación, se denomina Forma Sentencial: S ⇒ ..... ⇒ γ ⇒ ..... SENTENCIA: Una Forma Sentencial w que esta compuesta solo por símbolos terminales, se denomina Sentencia y constituye el final del proceso de derivación: S ⇒* w DERIVACIÓN MÁS A LA IZQUIERDA Y MÁS A LA DERECHA: Cuando en un proceso de derivación se busca la subsecuencia a reemplazar en la Forma Sentencial desde la izquierda, se dice que se trata de una Derivación Más a la Izquierda; y en caso contrario se trata de una Derivación Más a la Derecha. ING. JORGE BUABUD
  • 12. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: EJEMPLOS: Para la G del español tenemos la siguiente derivación más a la izquierda: <frase> ⇒ <sujeto> <predicado> <punto> ⇒ > > > > <artículo> <sustantivo> <predicado> <punto> ⇒ > > > > <sustantivo> <predicado> <punto> ⇒ María <predicado> <punto> > > > > > María <verbo> <objeto> <punto> ⇒ María corre <objeto> <punto> > > > > > > María corre <punto> ⇒ María corre . que equivale a: S ⇒* María corre . Para la G2 tenemos la siguiente derivación más a la derecha: S ⇒ XSZ ⇒ XSz ⇒ XYz ⇒ XyYz ⇒ Xyz ⇒ xyz o sea que: S ⇒* xyz ING. JORGE BUABUD
  • 13. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: LENGUAJE GENERADO POR UNA GRAMÁTICA: El lenguaje generado por una gramática para estructuras de frases G, que denotamos L(G), es el conjunto definido como: L(G) = { w / w ∈ Σ* ∧ S ⇒* w } T EQUIVALENCIA ENTRE GRAMÁTICAS: Dos gramáticas G y G’ se dicen equivalentes si y solo si los lenguajes generados por ambas son iguales, es decir: L(G) = L(G’) ⇔ G ≡ G’ ING. JORGE BUABUD
  • 14. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Veamos algunas derivaciones de las gramáticas de los ejemplos abstractos descriptos anteriormente y tratemos de inducir que lenguajes generan: 1) Recordemos las reglas del primer ejemplo: 1.- S → aSBA 2.- S → abA 3.- AB → BA 4.- bB → bb 5.- bA → ba 6.- aA → aa Derivemos algunas palabras: S ⇒ abA ⇒ aba S ⇒ aSBA ⇒ aabABA ⇒ aabBAA ⇒ aabbAA ⇒ aabbaA ⇒ aabbaa S ⇒ aSBA ⇒ aaSBABA ⇒ aaabABABA ⇒ aaabBAABA ⇒ aaabBABAA ⇒ aaabBBAAA ⇒ aaabbBAAA ⇒ aaabbbAAA ⇒ aaabbbaAA ⇒ aaabbbaaA ⇒ aaabbbaaa Podemos inducir que: L(G1) = { an .bn .an / n ≥ 1 } ING. JORGE BUABUD
  • 15. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: 2) Recordemos las reglas del segundo ejemplo: 1.- S → XSZ 2.- S → Y 3.- Y → yY 4.- Y → λ 5.- X → x 6.- Z → z Derivemos algunas palabras: S⇒Y⇒λ S ⇒ XSZ ⇒ XYZ ⇒ XyYZ ⇒ xyYZ ⇒ xyZ ⇒ xyz S ⇒ XSZ ⇒ XXSZZ ⇒ XXYZZ ⇒ XXyYZZ ⇒ XXyyYZZ ⇒ XXyyZZ ⇒ XxyyZZ ⇒ XxyyzZ ⇒ xxyyzZ ⇒ xxyyzz S ⇒ XSZ ⇒ XYZ ⇒ XyYZ ⇒ XyyYZ ⇒ XyyyYZ ⇒ XyyyZ ⇒ xyyyZ ⇒ xyyyz Podemos inducir que: L(G2) = { x n .y k .z n / n ≥ 0 , k ≥ 0 } ING. JORGE BUABUD
  • 16. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: 3) Recordemos las reglas del tercer ejemplo: 1.- S → a 2.- S → aS Derivemos algunas palabras: S⇒a S ⇒ aS ⇒ aa S ⇒ aS ⇒ aaS ⇒ aaa Podemos inducir que: L(G3) = { an / n ≥ 1 } ING. JORGE BUABUD
  • 17. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Consideremos las siguientes gramáticas: G4 = 〈 { S, Q } , { a } , { S → a | Q , Q → aQ | a } , S 〉 G5 = 〈 { S, Q, T } , { a } , { S → a | T | aTa , T → a | Q , Q → a | aQ } , S 〉 Si analizamos los lenguajes que generan estas gramáticas son iguales al lenguaje de nuestro tercer ejemplo abstracto. Es decir que las tres gramáticas son equivalentes: G3 ≡ G4 ≡ G5 Observemos que estas gramáticas difieren fundamentalmente en sus reglas de producción. ING. JORGE BUABUD
  • 18. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Gramáticas estructuradas por frases: Podemos afirmar que en general cada lenguaje tiene varias gramáticas diferentes que lo generan. Esto nos da lugar a pensar que existen distintos tipos o categorías de gramáticas, según la forma que tengan sus producciones. Basándose en el análisis de las formas de las reglas de producción de las gramáticas, Noam Chomsky clasificó a las mismas en cuatro categorías que se conocen como JERARQUÍA DE CHOMSKY y que será tema de estudio de la siguiente Unidad Temática. Por ahora trabajaremos con una de esas categorías, llamada Gramática Libre de Contexto, que nos permitirá representar el nivel sintáctico de un lenguaje de programación. Este tipo de gramática se caracteriza por tener a la izquierda de sus reglas solamente un símbolo No-terminal. ING. JORGE BUABUD
  • 19. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: 1) Consideremos el lenguaje compuesto por el conjunto de todos los identificadores válidos: Σ N = { I, L, D, G, R} P: I → LR | GR Σ T = { a, ... , z, 0, ... , 9, _ } L → a | b | ... | z D → 0 | 1 | ... | 9 S=I R → LR | DR | GR | λ G→_ Aplicando las reglas de esta gramática se puede generar: I ⇒ LR ⇒ aR ⇒ a I ⇒ GR ⇒ _R ⇒ _DR ⇒ _1R ⇒ _1LR ⇒ _1hR ⇒ _1h I ⇒ LR ⇒ zGR ⇒ z_R ⇒ z_DR ⇒ z_5R ⇒ z_5LR ⇒ z_5pR ⇒ z_5p ING. JORGE BUABUD
  • 20. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: 2) Consideremos el lenguaje compuesto por el conjunto de todos los números enteros válidos: Σ N = { N, D, U, R} P: N → 0 | UR Σ T = { 0, ... , 9 } R → DR | λ D→0|U S=N U → 1 | ... | 9 Aplicando las reglas de esta gramática se puede generar: N⇒0 N ⇒ UR ⇒ 1R ⇒ 1 N ⇒ UR ⇒ 2R ⇒ 2DR ⇒ 20R ⇒ 20 N ⇒ UR ⇒ 4R ⇒ 4DR ⇒ 4UR ⇒ 47R ⇒ 47DR ⇒ 470R ⇒ 470DR ⇒ 470UR ⇒ 4703R ⇒ 4703 ING. JORGE BUABUD
  • 21. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: 3) Consideremos un lenguaje de programación sencillo, con un mínimo de complejidad en su sintaxis. Supongamos los siguientes componentes léxicos, que en total constituyen el alfabeto del lenguaje o sea el alfabeto de símbolos terminales de la gramática: Palabras claves: if, while, break, else , then , do Identificadores estándar de tipo: int, float, boolean, char Identificador de variable: id Números: entero, real Caracteres: literal Booleanos: falso, cierto Delimitadores: { , } , ; , [ , ] Operadores: = , + , < , or ING. JORGE BUABUD
  • 22. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: Por simplicidad se ha supuesto un solo valor de identificador {id}, solo dos números válidos {entero, real} y un solo carácter {literal}. Por otro lado supongamos el siguiente alfabeto de símbolos No_terminales: Σ N = { P, D, T, A, E, N, B, S, W, I, R, F } donde P es el axioma de la gramática. Podemos interpretar estos símbolos como nemotécnicos que representan los componentes sintácticos: Programa, Declaración, Tipo, Arreglo, Expresión, valor Numérico, valor Booleano, Sentencia, estructura While, estructura If, Resto de la estructura if, Fin de la estructura while. Por último, el conjunto de Reglas de Producción que permitirá generar las palabras de este lenguaje formal, es decir los “programas” escritos en este lenguaje de programación hipotético, es: ING. JORGE BUABUD
  • 23. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: 1) P→ D ; { S } 2) D → D ; D | T id A 3) T → int | float | boolean | char 4) A → [ entero ] | λ 5) E → entero | real | falso | cierto | literal | id | id[E] | E + E | E < E | E or E 6) S → S ; S | W | break | I | id = E | id[E] = E 7) W → while E do { S F 8) I → if E then { S } R 9) R → else { S } | λ 10) F→} ING. JORGE BUABUD
  • 24. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: Aplicando estas reglas podemos generar los siguientes “programas”: P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ int id ; { S } ⇒ int id ; { id = E } ⇒ int id ; { id = entero } P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ float id A ; { S } ⇒ float id[entero] ; { S } ⇒ float id[entero] ; { S } ⇒ float id[entero] ; { id[E] = E } ⇒ float id[entero] ; { id[entero] = E } ⇒ float id[entero] ; { id[entero] = real } ⇒ float id[entero] ; { id[entero] = real } También se puede generar los siguientes “programas” de dudosa coherencia: P ⇒* boolean id ; { id = entero } P ⇒* char id[entero] ; { id[real] = literal } ING. JORGE BUABUD
  • 25. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Ejemplos de gramáticas para lenguajes de programación hipotéticos: Otros ejemplos de secuencias obtenidas con esta gramática son: int id ; { id = entero ; id = entero + entero ; id = id + id } float id ; { id = real ; if id < entero + entero then { id = id + entero } } int id ; { id = entero ; while id < real do { id = id + entero } } char id ; { id = falso ; if id[literal] or entero then { id = literal } } boolean id[entero] ; { id = cierto } float id ; { if real then { id = literal } } Podemos concluir que esta gramática es capaz de representar la sintaxis del lenguaje de programación pero no su semántica. ING. JORGE BUABUD
  • 26. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA Formas de Representación de la Sintaxis y la Semántica de los Lenguajes de Programación: Backus Naur Form (B.N.F.) SINTAXIS DIAGRAMAS DE SINTAXIS ESQUEMAS DE TRADUCCIÓN SEMÁNTICA SISTEMAS CANÓNICOS ING. JORGE BUABUD
  • 27. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA FORMATO B.N.F.: La Forma Normal de Backus (BNF) es una notación para escribir Gramáticas Independientes del Contexto (GIC), que se usa común- mente para especificar la sintaxis de los lenguajes de programación. En esta notación los símbolos No-terminales se representan con nombres nemotécnicos encerrados entre paréntesis angulares 〈 〉 El signo → se sustituye por ::= (que se lee “es reemplazado por”) Los modos de alternativa de reescribir un No-terminal se separan mediante barras verticales | (que se lee “o”) Las reglas recursivas de la forma: A → Aβ | λ se representa β encerrando entre llaves la parte que se repite: A ::= { β } ING. JORGE BUABUD
  • 28. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA FORMATO B.N.F.: Veamos como ejemplos la BNF de los lenguajes de Identificadores, Números y Programas-sencillos, vistos anteriormente: 〈Identificador〉 ::= 〈Letra〉 〈Resto〉 | 〈Guión〉 〈Resto〉 〉 〉 〉 〉 〉 〈Letra〉 ::= a | b | ... | z 〉 〈Dígito〉 ::= 0 | 1 | ... | 9 〉 〈Resto〉 ::= { 〈Letra〉 | 〈Dígito〉 | 〈Guión〉 } 〉 〉 〉 〉 〈Guión〉 ::= _ 〉 〈Número〉 ::= 0 | 〈Uno〉 〈Resto〉 〉 〉 〉 〈Resto〉 ::= { 〈Dígito〉 } 〉 〉 〈Dígito〉 ::= 0 | 〈Uno〉 〉 〉 〈Uno〉 ::= 1 | 2 | ... | 9 〉 ING. JORGE BUABUD
  • 29. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA FORMATO B.N.F.: 〈Programa〉 ::= 〈Declara〉 ; { 〈Sentencia〉 } 〉 〉 〉 〉 〉 〈Declara〉 ::= 〈Declara〉 ; 〈 Declara〉 | 〈Tipo〉 id 〈Arreglo〉 〉 〉 〉 〉 〈Tipo〉 ::= int | float | boolean | char 〈Arreglo〉 ::= [ entero ] | 〈Vacía〉 〉 〉 〈Expresión〉 ::= entero | real | falso | cierto | literal | id | id [ 〈Expresión〉 ] | 〉 〉 〈Expresión〉 + 〈Expresión〉 | 〈Expresión〉 < 〈Expresión〉 | 〉 〉 〉 〉 〈Expresión〉 or 〈Expresión〉 〉 〉 〈Sentencia〉 ::= 〈Sentencia〉 ; 〈Sentencia〉 | 〈While〉 | break | 〈If〉 | 〉 〉 〉 〉 〉 id = 〈Expresión〉 | id [ 〈Expresión〉 ] = 〈Expresión〉 〉 〉 〉 〈While〉 ::= while 〈Expresión〉 do { 〈Sentencia〉 〈FinWhile〉 〉 〉 〉 〉 〈FinWhile〉 ::= } 〉 Nota: En este ejemplo 〉 〈If〉 ::= if 〈Expresión〉 then { 〈Sentencia〉 } 〈RestoIf〉 〉 〉 〉 las { } pertenecen al 〈RestoIf〉 ::= else { 〈Sentencia〉 } | 〈Vacía〉 〉 〉 〉 alfabeto de terminales. ING. JORGE BUABUD
  • 30. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA DIAGRAMAS DE SINTAXIS: El Diagrama de Sintaxis es una forma gráfica de representación del nivel sintáctico de un lenguaje de programación . Los siguientes son los símbolos que se utiliza en estos diagramas: Representa el valor de un componente léxico. xxxxx Representa el valor de un símbolo especial. xx Implica una estructura sintáctica que tiene su XXXXX propio diagrama de sintaxis. Indica que componente sigue a continuación. ING. JORGE BUABUD
  • 31. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA DIAGRAMAS DE SINTAXIS: Estos son algunos de los Diagramas de Sintaxis de los ejemplos anteriores: Letra Identificador a - z - Dígito Dígito 0 Letra Letra 9 ING. JORGE BUABUD
  • 32. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA DIAGRAMAS DE SINTAXIS: Uno 1 Número Dígito 9 Uno Dígito 0 0 Uno ING. JORGE BUABUD
  • 33. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA DIAGRAMAS DE SINTAXIS: Programa Declara ; { Sentencia } Tipo Declara int Tipo id Arreglo float ; boolean Arreglo [ entero ] char ING. JORGE BUABUD
  • 34. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA ESQUEMAS DE TRADUCCIÓN: Un Esquema de Traducción es una gramática independiente del contexto en la que se agrega, a la derecha de algunas reglas de producción, un fragmento de programa llamado acción semántica. Las acciones semánticas se colocan entre llaves. Al utilizar una regla de producción sintáctica se ejecuta el fragmento de programa correspondiente, que contribuye al análisis semántico. Vamos a utilizar un seudocódigo para representar las acciones semánticas. El Esquema de Traducción tendrá el siguiente formato: Esquema de Traducción Regla de Sintaxis Acción Semántica N→ β { fragmento programa } ING. JORGE BUABUD
  • 35. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA ESQUEMAS DE TRADUCCIÓN: ¿Cómo se usan estos esquemas de traducción, en un proceso de derivación o generación de una sentencia ? Cada vez que se aplica una regla de sintaxis se lleva a cabo una acción semántica. En este caso puede ser que las acciones semánticas se ejecuten en forma anticipada a la definición de algún identificador de variable incluido en la misma, entonces queda pendiente su terminación hasta el momento en que la ejecución de otra acción semántica asigna un valor a dicho componente. Se utilizan variables banderas cuyos valores finales nos permiten determinar si la sentencia es correcta o no desde el punto de vista semántico. ING. JORGE BUABUD
  • 36. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA ESQUEMAS DE TRADUCCIÓN: Dentro de las convenciones que incluye el nivel semántico de los lenguajes de programación, se requieren las siguientes comprobaciones: Comprobaciones de Tipos: Se debe tener en cuenta la compatibilidad entre los tipos de dato de los operandos y el operador correspondiente. Por ejemplo, si se suman una variable tipo arreglo con un número se produce un error. También, si la expresión de comprobación de una sentencia selectiva resulta no ser de tipo lógica, se produce un error. Comprobaciones del Flujo de Control: Las sentencias que producen una bifurcación en el flujo de control deben tener algún lugar a dónde transferir dicho flujo de control. Por ejemplo, una proposición break en el lenguaje C++ hace que el control abandone la sentencia que lo engloba, ya sea un while, un for o un switch ; si dicha estructura englobadora no existe se produce un error. Otro ejemplo es el de la sentencia de bifurcación incondicional goto , que debe desviar el flujo de control hacia un rótulo específico; si dicho rótulo no figura en ninguna sentencia se produce un error. ING. JORGE BUABUD
  • 37. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: Veamos en nuestro lenguaje hipotético algunos ejemplos de especificación semántica: Comprobaciones de Tipos: El índice de una variable arreglo debe ser una expresión de tipo int. En una asignación el tipo de la variable de la izquierda debe ser compatible con el tipo de la expresión de la derecha. En las expresiones los tipos de los operadores deben ser compatibles con la operación correspondiente. La expresión que acompaña a un while o if debe ser de tipo boolean. Comprobaciones del Flujo de Control: La sentencia de bifurcación incondicional break debe estar dentro de una estructura while. ING. JORGE BUABUD
  • 38. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: Esquema de Traducción Regla de Sintaxis Acción Semántica P→ D ; { S } { CAW=0 inicialización contador apertura de while } D→D;D { Nula } D → T id A { Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO sino id.TIPO = arreglo(A.RANGO , T.TIPO) } T → int { T.TIPO=1 suponemos un código 1 para tipo int } T → float { T.TIPO=2 suponemos un código 2 para tipo float } T → boolean { T.TIPO=3 suponemos un código 3 para tipo boolean} T → char { T.TIPO=4 suponemos un código 4 para tipo char } ING. JORGE BUABUD
  • 39. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: A → [ entero ] { A.RANGO=entero.VALOR } A→λ { A.RANGO=vacío } E → entero { E.TIPO=1 } E → real { E.TIPO=2 } E → falso { E.TIPO=3 } E → cierto { E.TIPO=3 } E → literal { E.TIPO=4 } E → id { E.TIPO=id.TIPO } E → id[E1] { Si (id.TIPO==arreglo(r,t)) ∧ (E1.TIPO==1) entonces E.TIPO=t sino E.TIPO=error.t } ING. JORGE BUABUD
  • 40. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: E → E1 + E2 { Si (E1.TIPO==1 ∧ E2.TIPO==1) entonces E.TIPO=1 sino Si (E1.TIPO==2 ∧ E2.TIPO==2) ∨ (E1.TIPO==1 ∧ E2.TIPO==2) ∨ (E1.TIPO==2 ∧ E2.TIPO==1) entonces E.TIPO=2 sino E.TIPO=error.t} E → E1 < E2 { Si (E1.TIPO==E2.TIPO) entonces E.TIPO=3 sino E.TIPO=error.t } E → E1 or E2 { Si (E1.TIPO==3 ∧ E2.TIPO==3) entonces E.TIPO=3 sino E.TIPO=error.t } S → S1 ; S2 { Si (S1.TIPO==ok ∧ S2.TIPO==ok) entonces S.TIPO=ok sino S.TIPO=error.t Si (S1.BIFU==ok ∧ S2.BIFU==ok) entonces S.BIFU=ok sino S .BIFU=error.b } ING. JORGE BUABUD
  • 41. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: S→W { S.TIPO=W.TIPO , S.BIFU=W.BIFU } S → break { S.TIPO=ok Si (CAW > 0) entonces S.BIFU=ok sino S.BIFU=error.b } S→I { S.TIPO=I.TIPO , S.BIFU=I.BIFU } S → id = E { Si (id.TIPO==E.TIPO) entonces S.TIPO=ok sino S.TIPO=error.t S.BIFU=ok } S → id[E1] = E2 { Si (id.TIPO==arreglo(r,t)) ∧ (E1.TIPO==1) ∧ (E2.TIPO==t) entonces S.TIPO=ok sino S.TIPO=error.t S.BIFU=ok} ING. JORGE BUABUD
  • 42. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: → W→ while E do {SF { Si (E.TIPO==3) entonces W.TIPO=S.TIPO sino W.TIPO=error.t W.BIFU=S.BIFU , CAW=CAW+1 } I → if E then {S} R { Si (E.TIPO==3) ∧ (S.TIPO==ok) ∧ (R.TIPO==ok) entonces I.TIPO=ok sino I.TIPO=error.t Si (S.BIFU==ok) ∧ (R.BIFU==ok) entonces I.BIFU=ok sino I.BIFU=error.b } R → else { S } { R.TIPO=S.TIPO , R.BIFU=S.BIFU } R→λ { R.TIPO=ok , R.BIFU=ok } F→} { CAW=CAW-1 } ING. JORGE BUABUD
  • 43. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: Veamos a continuación algunos Aplicación de acciones semánticas casos particulares de uso de este esquema de traducción: 1) CAW=0 1) En primer lugar derivemos 2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO una sentencia con sintaxis y sino id.TIPO = arreglo(A.RANGO , T.TIPO) semántica correctas: 3) T.TIPO=2 Aplicación de reglas de sintaxis 4) A.RANGO=vacío P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ 5) Si (id.TIPO==E.TIPO) entonces S.TIPO=ok float id A ; { S } ⇒ sino S.TIPO=error.t float id ; { S } ⇒ 6) S.BIFU=ok Valores Finales float id ; { id = E } ⇒ float id ; { id = real } 7) E.TIPO=2 S.TIPO==ok S.BIFU==ok ING. JORGE BUABUD
  • 44. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: 2) Ahora derivemos una sentencia con sintaxis correcta, pero con Aplicación de acciones semánticas semántica incorrecta con un 1) CAW=0 error de tipo: 2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO Aplicación de reglas de sintaxis sino id.TIPO = arreglo(A.RANGO , T.TIPO) P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ 3) T.TIPO=3 boolean id A ; { S } ⇒ 4) A.RANGO=vacío boolean id ; { S } ⇒ boolean id ; { id = E } ⇒ 5) Si (id.TIPO==E.TIPO) entonces S.TIPO=ok boolean id ; { id = real } sino S.TIPO=error.t 6) S.BIFU=ok Valores Finales 7) E.TIPO=2 S.TIPO==error.t S.BIFU==ok ING. JORGE BUABUD
  • 45. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: 3) Este es otro caso de sentencia Aplicación de acciones semánticas con sintaxis y semántica 1) CAW=0 correctas: 2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO Aplicación de reglas de sintaxis sino id.TIPO = arreglo(A.RANGO , T.TIPO) 3) T.TIPO=3 P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ 4) A.RANGO=vacío boolean id A ; { S } ⇒ 5) S.TIPO=W.TIPO , S.BIFU=W.BIFU boolean id ; { S } ⇒ boolean id ; { W } ⇒ 6) Si (E.TIPO==3) entonces W.TIPO=S.TIPO boolean id ; {while E do sino W.TIPO=error.t { S F } ⇒ boolean id ; { W.BIFU=S.BIFU , CAW=CAW+1 while cierto do { S F } ⇒ 7) E.TIPO=3 Valores boolean id ; { while cierto 8) S.TIPO=ok Finales do { break F } ⇒ boolean Si (CAW > 0) entonces S.BIFU=ok S.TIPO==ok id ; { while cierto do { sino S.BIFU=error.b break } } 9) CAW=CAW-1 S.BIFU==ok ING. JORGE BUABUD
  • 46. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN: Aplicación de acciones semánticas 4) Por último veamos un ejemplo similar al anterior, pero con un 1) CAW=0 error semántico de bifurcación: 2) Si (A.RANGO == vacío) entonces id.TIPO = T.TIPO sino id.TIPO = arreglo(A.RANGO , T.TIPO) Aplicación de reglas de sintaxis 3) T.TIPO=3 P ⇒ D ; { S } ⇒ T id A ; { S } ⇒ boolean id A ; { S } ⇒ 4) A.RANGO=vacío boolean id ; { S } ⇒ 5) S.TIPO=ok boolean id ; { break } Si (CAW > 0) entonces S.BIFU=ok sino S.BIFU=error.b Valores Finales S.TIPO==ok S.BIFU==error.b ING. JORGE BUABUD
  • 47. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA SISTEMAS CANÓNICOS: PRELIMINARES: Recordemos los siguientes conceptos de la Lógica de Proposiciones: Enunciado: Es cualquier afirmación que nos permita tomar alguna decisión. Un enunciado puede ser falso o cierto. Se puede combinar varios enunciados (p, q) con los operadores de conjunción, disyunción y negación ( p∧q , p∨q , ~p ) para formar un enunciado compuesto. Proposición: Es un enunciado variable o un enunciado compuesto donde los enunciados que lo conforman son variables. Por ejemplo, si p, q y r son enunciados entonces: p , ~q , q ∨ p , p ∧ q ∨ r ∧ ~q son proposiciones. Argumento: Es una relación entre un conjunto de proposiciones P1, P2, ... , PN , llamadas premisas y otra proposición Q llamada conclusión. Denotamos un argumento por: P1, P2, ... , PN ├─ Q SÍMBOLO DE ASEVERACIÓN ├─ Un argumento es válido cuando se cumple que la conclusión Q es cierta cada vez que las premisas Pi son ciertas. En caso contrario es una falacia. ING. JORGE BUABUD
  • 48. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA SISTEMAS CANÓNICOS: Un Sistema Canónico es un conjunto de argumentos válidos que permiten definir lenguajes formales tanto en su nivel sintáctico como semántico. Cada argumento válido se conoce como CANON (regla, norma, precepto). Un canon que no tiene premisas se llama AXIOMA. Un TERMINAL es un componente léxico o símbolo del lenguaje. Una VARIABLE es un símbolo que se puede reemplazar por el valor de un TERMINAL o por un TÉRMINO. Un TÉRMINO es una serie de TERMINALES y VARIABLES concatenados. Un PREDICADO es el nombre que se le da a un conjunto de TÉRMINOS. Se llama GRADO del predicado a la cantidad de términos del conjunto. Cuando son varios términos se los encierra entre paréntesis angulares. Una REMARCA es un TÉRMINO seguido de un PREDICADO. Cada PREMISA o CONCLUSIÓN en un CANON es una REMARCA. ING. JORGE BUABUD
  • 49. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Para aclarar estos conceptos vemos como ejemplo el lenguaje de códigos binarios, es decir de todas las combinaciones de 0 y 1: 1) Los dígitos “0” y “1” son TERMINALES. 2) Los nombres “dígito” y “código”, que denotan un dígito binario y un código binario cualquiera, son PREDICADOS de grado 1. 3) La letra “x”, que representa un valor de un dígito y la letra “y”, que representa un valor de un código; son VARIABLES. 4) Las cadenas “y”, “1”, “yx”, “y0” y “1y0x”, es decir cualquier secuencia de terminales y/o variables, es un TÉRMINO. 5) Las secuencias “1 dígito” y “yx código”, es decir un término seguido de un predicado, son REMARCAS. ING. JORGE BUABUD
  • 50. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA SISTEMAS CANÓNICOS: En base a estos elementos se puede definir el siguiente Sistema Canónico, que describe el lenguaje de los códigos binarios: 1) ├─ 0 dígito 2) ├─ 1 dígito 3) x dígito ├─ x código 4) x dígito ; y código ├─ yx código Como vemos los cánones 1) y 2) son AXIOMAS. Es decir que se parte de la aseveración de que 0 y 1 son dígitos. Luego con el canon 3) se afirma que un dígito es un código y con el canon 4) se define un código como una secuencia de dígitos. ING. JORGE BUABUD
  • 51. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Consideremos ahora el problema de comprobación del flujo de control para una sentencia de bifurcación incondicional explícita, es decir la típica proposición “goto”. Normalmente la sintaxis de esta sentencia consiste en la escritura de la palabra clave “goto” seguida de un “rótulo” que representa la posición de otra sentencia del programa donde se debe dirigir el flujo de control. Por simplicidad y con el objetivo de estudiar solo el problema que se presenta con esta sentencia, vamos a suponer un lenguaje de programación hipotético que consista exclusivamente de proposiciones “goto”. También supondremos que los “rótulos” son secuencias de letras mayúsculas. ING. JORGE BUABUD
  • 52. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Teniendo en cuenta estas hipótesis, las siguientes secuencias serían programas con “sentencias goto”, cada sentencia consta de un “rótulo de enunciado”, seguido de la palabra clave “goto” y un “rótulo de referencia”: En este programa todos los rótulos de referencia 1) B goto D figuran como rótulos de enunciado. Por lo tanto C goto D podemos decir que es correcto en su sintaxis y su D goto B semántica. En este otro caso hay un rótulo de referencia que no 2) X goto Y figura como rótulo de enunciado. Por lo tanto D goto C podemos decir que es correcto en su sintaxis pero no en Y goto D su semántica. Esta sentencia podría interpretarse como incorrecta 3) A goto A desde el punto de vista pragmático. ING. JORGE BUABUD
  • 53. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: El objetivo de este ejemplo es definir un Sistema Canónico capaz de describir el lenguaje hipotético de “sentencias goto”, teniendo en cuenta en primer lugar el nivel de sintaxis y luego el nivel semántico. Es decir que permita generar series de “sentencias goto”, donde la lista de “rótulos de enunciado” contenga a la lista de “rótulos de referencia”. Antes de presentar dicho Sistema Canónico, aclaremos una notación para simplificar la escritura de cánones con idénticas premisas R1 ; ... ; RN y diferentes conclusiones con igual predicado α1P, ... , αNP: R1 ; ... ; RN ├─ α1+ α2+ .... + αNP ING. JORGE BUABUD
  • 54. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Este es un Sistema Canónico que solo tiene en cuenta la sintaxis: 1) ├─ A + B + ...... + Z letra 2) l letra ├─ l identificador 3) l letra ; y identificador ├─ yl identificador 4) y identificador ├─ goto y enunciado_goto 5) e identificador ; x enunciado_goto ├─ ex programa 6) e identificador ; x enunciado_goto ; p programa ├─ exp programa ING. JORGE BUABUD
  • 55. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Teniendo en cuenta este sistema canónico, los siguientes son programas correctos en su sintaxis: 1) Z goto DX 2) AB goto AB 3) HG goto Z DX goto Z X goto Z En cambio los siguientes son programas incorrectos desde el punto de vista sintáctico: 4) goto DX 5) AB goto 6) goto Z DX goto Z X goto ING. JORGE BUABUD
  • 56. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: En cambio este otro Sistema Canónico tiene en cuenta tanto la sintaxis como la semántica: 1) ├─ A + B + ...... + Z letra 2) l letra ├─ l identificador 3) l letra ; y identificador ├─ yl identificador 4) y identificador ├─ 〈 goto y , y 〉 enunciado_goto_con_rótulo_de_referencia 5) e identificador ; 〈 x , r 〉 enunciado_goto_con_rótulo_de_referencia ├─ 〈 ex , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia ING. JORGE BUABUD
  • 57. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: 6) i identificador ; 〈 x , l 〉 enunciado_goto_con_rótulo_de_referencia ; 〈 p , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia ├─ 〈 ixp , ei , rl 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia 7) 〈 p , e , r 〉 programa_con_rótulos_de_enunciado_y rótulos_de_referencia ; 〈 r , e 〉 verifica_relación_pertenencia ├─ p programa_válido 8) ├─ λ lista 9) i identificador ├─ i lista 10) x lista ; y lista ├─ xy lista 11) x lista ; y lista ; z lista ├─ 〈 y , xyz 〉 verifica_relación_pertenencia 12) 〈 a , l 〉 verifica_relación_pertenencia ; 〈 b , l 〉 verifica_relación_pertenencia ├─ 〈 ab , l 〉 verifica_relación_pertenencia ING. JORGE BUABUD
  • 58. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA EJEMPLOS DE SISTEMAS CANÓNICOS: Veamos a continuación un ejemplo de uso de este sistema canónico: Aplicando el canon 1) tenemos que “A”, “B” y “F” son letras. Según cánones 2) y 3) tenemos que “BA”, “AF”, “B” y “F” son identificadores. De acuerdo al canon 4) podemos aseverar que “goto F”, “goto AF” y “goto B” son enunciados goto con rótulo de referencia. Aplicando el canon 5) se llega a que “BA goto F”, “B goto AF”, “F goto B” y “AF goto F” son programas con rótulos de enunciado y rótulo de referencia. El canon 6) nos permite aseverar que la secuencia “BA goto F B goto AF F goto B AF goto F” es un programa con rótulos de enunciado (BA, B, F, AF) y rótulos de referencia (F, AF, B). De cuerdo a los cánones del 8) al 12) podemos afirmar que las listas de rótulos (BA, B, F, AF) y (F, AF, B) cumplen con la relación de pertenencia. Por lo que según el canon 7) la secuencia “BA goto F B goto AF F goto B AF goto F” es un programa válido. ING. JORGE BUABUD
  • 59. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. CONCEPTO DE TRADUCTOR: Un traductor se define como un programa que traduce o convierte desde un texto o programa escrito en un lenguaje fuente hasta un texto o programa equivalente escrito en un lenguaje destino produciendo, si cabe, mensajes de error. ING. JORGE BUABUD
  • 60. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. Preprocesadores Compiladores de L.A.N. Interpretes de L.A.N. TIPOS DE TRADUCTORES Interpretes de comandos Ensambladores Conversores fuente-fuente Traductores de idioma ING. JORGE BUABUD
  • 61. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. COMPILADOR: Es aquel traductor que tiene como entrada sentencias en un lenguaje formal y como salida tiene un fichero en un lenguaje de bajo nivel, es decir, realiza una traducción de un de lenguaje alto nivel (LAN) a código máquina. Ejemplo: C++ , Delphi , VisualBasic, etc. INTERPRETE: Es un traductor/ejecutor que toma como entrada sentencias escritas en un lenguaje formal y como salida realiza la ejecución de dichas sentencias sin almacenarlas, es decir, que traduce sentencia por sentencia de un LAN y la va ejecutando sin crear un fichero donde se guarde el código de máquina correspondiente. Ejemplo: Lisp, Snobol, etc. ING. JORGE BUABUD
  • 62. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. PSEUDOINTERPRETE: Algunos lenguajes intentan aunar las ventajas de los compiladores y de los intérpretes y evitar sus desventajas; son los lenguajes pseudointerpretados. En estos, el programa fuente pasa por un pseudocompilador que genera un pseudoejecutable. Para ejecutar este pseudoejecutable se le hace pasar por un motor de ejecución que lo interpreta de manera relativamente eficiente. Ejemplo: Java, Cobol, etc. ING. JORGE BUABUD
  • 63. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. PREPROCESADORES: Permiten modificar el programa fuente antes de la verdadera compilación. Hacen uso de macroinstrucciones y directivas de compilación. Por ejemplo, en lenguaje C++, el preprocesador sustituye la directiva #include Uno.c por el código completo que contiene el fichero “Uno.c”, de manera que cuando el compilador comienza su ejecución se encuentra con el código ya insertado en el programa fuente. Algunas otras directivas de preprocesamiento permiten compilar trozos de códigos opcionales (lenguajes C++ y Clipper): #ifndef, #endif, #define. Los preprocesadores suelen actuar de manera transparente para el programador, pudiendo incluso considerarse que son una fase preliminar del compilador. ING. JORGE BUABUD
  • 64. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ING. JORGE BUABUD
  • 65. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. INTÉRPRETES DE COMANDOS: Un intérprete de comandos traduce sentencias simples a invocaciones a programas de una biblioteca. Se utilizan especialmente en los sistemas operativos (la shell de Unix es un intérprete de comandos). Los programas invocados pueden residir en el kernel (núcleo) del sistema o estar almacenados en algún dispositivo externo como rutinas ejecutables que se traen a memoria bajo demanda. Por ejemplo, si bajo MS-DOS se teclea el comando copy se ejecutará la función de copia de ficheros del sistema operativo, que se encuentra residente en memoria. ING. JORGE BUABUD
  • 66. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ENSAMBLADOR: Un ensamblador es un compilador sencillo, en el que el lenguaje fuente tiene una estructura tan simple, que permite la traducción de cada sentencia fuente a una única instrucción en código máquina. Al lenguaje que admite este compilador también se le llama lenguaje ensamblador o simbólico. Este lenguaje fuente utiliza nemotécnicos para hacer referencia a operaciones, registros, direcciones de memoria, etc. En definitiva, existe una correspondencia uno a uno entre las instrucciones ensamblador y las instrucciones máquina. Ejemplo: Instrucción ensamblador INTEL 8088: MOV AH,09h Código máquina generado en Binario: 1011- 0100- 0000- 1001 ING. JORGE BUABUD
  • 67. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. CONVERSORES FUENTE-FUENTE: Permiten traducir desde un LAN (Lenguaje de Alto Nivel) a otro LAN, con lo que se consigue una mayor portabilidad de estos lenguajes. Por ejemplo un conversor de Java a C++, permitiría ejecutar programas escritos en Java en computadores que solo tengan compilador de C++. TRADUCTORES DE IDIOMAS: Son traductores de lenguajes naturales, es decir, tienen como entrada un texto escrito en un idioma y dan como salida una texto equivalente escrito en otro idioma. Por ejemplo: Systran (traductor Inglés-Español), Traductor del Google (varios idiomas al español y viceversa), etc. ING. JORGE BUABUD
  • 68. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. FASES BÁSICAS PARA LA EJECUCIÓN DE UN PROGRAMA ESCRITO CON LENGUAJE DE ALTO NIVEL COMPILACIÓN FASES ENLACE EJECUCIÓN CARGA ING. JORGE BUABUD
  • 69. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. COMPILADOR: Por regla general un compilador no produce un fichero ejecutable, sino que el código generado se estructura en módulos que se almacenan en un fichero objeto. Los ficheros objeto poseen información relativa tanto al código máquina como a una tabla de símbolos que almacena la estructura de las variables y tipos utilizados por el programa fuente. Fich.fue ING. JORGE BUABUD
  • 70. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ENLAZADOR: Engloba en un único bloque los distintos módulos que almacenan código máquina, estructura el bloque de memoria destinado a almacenar las variables en tiempo de ejecución y genera el ejecutable final incorporando algunas rutinas adicionales procedentes de librerías. ING. JORGE BUABUD
  • 71. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. CARGADOR: El fichero ejecutable consta de varios segmentos, entre ellos el de código máquina, el de datos y el de pila. En estos segmentos se hace referencia a direcciones de memoria principal en forma relativa. El cargador, que suele ser parte del S.O., coloca los diferentes segmentos del fichero ejecutable en las direcciones de memoria disponibles. De tal modo que a las direcciones relativas del código se le suma la dirección base del segmento correspondiente, para obtener la dirección absoluta de memoria que tomará el microprocesador para acceder a una variable o realizar una bifurcación. ING. JORGE BUABUD
  • 72. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ING. JORGE BUABUD
  • 73. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ETAPAS DE UN COMPILADOR ING. JORGE BUABUD
  • 74. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. ING. JORGE BUABUD
  • 75. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. EJEMPLO DE COMPILACIÓN: Supongamos que se está compilando un programa en lenguaje C++, que contiene la siguiente expresión: posición = inicial + velocidad * 60 , donde los identificadores posición, inicial y velocidad se declararon de tipo float. Salida del analizador léxico: Salida del analizador sintáctico: id1 = id2 + id3 * nument = id1 + id2 * id3 nument Salida del analizador semántico: = id1 + id2 * id3 entareal(nument) ING. JORGE BUABUD
  • 76. U.T.N. – F.R.T. S. y S. de los L. LINGÜÍSTICA MATEMÁTICA APLICACIÓN: Proceso de Compilación. Salida del generador de código intermedio de 3 direcciones: temp1 = entareal(60) Salida del generador de código: temp2 = id3 * temp1 MOVF id3, R2 temp3 = id2 +temp2 MULF #60.0 , R2 id1 = temp3 MOVF id2, R1 ADDF R2, R1 Salida del optimizador de código: MOVF R1, id1 temp1 = id3 * 60.0 id1 = id2 + temp1 ING. JORGE BUABUD