Lingüistica Matemática Clase 2

76
LINGÜÍSTICA MATEMÁTICA U.T.N. – F.R.T. S. y S. de los L. Gramáticas estructuradas por frases: PRELIMINARES: ¿ Cómo podemos describir un lenguaje ? Definición por extensión: Listado de todas las palabras del lenguaje. ING. JORGE BUABUD 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 } Definición por patrones : Expresión de palabras con parámetros. Ejemplo: Σ = { 0, 1 } L5 = { 0.1 .0 / n 1 } L6 = { 0 .1 / n 0, k 5 } -1 n n k

description

Gramáticas para estructuras de frases. Diagramas de Sintaxis y Formato BNF. Sistemas Canónicos y Esquemas de Traducción. Proceso de Compilación.

Transcript of Lingüistica Matemática Clase 2

Page 1: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

PRELIMINARES:

¿ Cómo podemos describir un lenguaje ?Definición por extensión: Listado de todas las palabras del lenguaje.

ING. JORGE BUABUD

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 }Definición por patrones: Expresión de palabras con parámetros.Ejemplo: Σ = { 0, 1 } L5 = { 0.1 .0 / n ≥≥≥≥ 1 }

L6 = { 0 .1 / n ≥≥≥≥ 0, k ≤ ≤ ≤ ≤ 5 }

-1

nn k

Page 2: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 3: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 4: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

⟨⟨⟨⟨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 poro generar ala parte derecha de la regla.

Page 5: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

� 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.

Page 6: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

Definición formal de una GRAMÁTICA estructurada por frases

G = ⟨⟨⟨⟨ Σ , Σ , P , S ⟩⟩⟩⟩TNT

TNΣ ∪∪∪∪Σ = ΣΣ ∩∩∩∩Σ = ΦΦΦΦN

ING. JORGE BUABUD

� Σ es el alfabeto de símbolos No-terminales o variables de la Gramática.

� Σ 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∈∈∈∈ Σ ββββ ∈∈∈∈ Σ*

� 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

N

T

N

TΣ ∩∩∩∩Σ = ΦΦΦΦN

Page 7: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 8: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

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

Σ = { ⟨⟨⟨⟨frase⟩⟩⟩⟩ , ⟨⟨⟨⟨sujeto⟩⟩⟩⟩ , ⟨⟨⟨⟨predicado⟩⟩⟩⟩ , ⟨⟨⟨⟨punto⟩⟩⟩⟩ , ⟨⟨⟨⟨artículo⟩⟩⟩⟩ , N

ING. JORGE BUABUD

Σ = { ⟨⟨⟨⟨frase⟩⟩⟩⟩ , ⟨⟨⟨⟨sujeto⟩⟩⟩⟩ , ⟨⟨⟨⟨predicado⟩⟩⟩⟩ , ⟨⟨⟨⟨punto⟩⟩⟩⟩ , ⟨⟨⟨⟨artículo⟩⟩⟩⟩ ,

⟨⟨⟨⟨sustantivo⟩⟩⟩⟩ , ⟨⟨⟨⟨verbo⟩⟩⟩⟩ , ⟨⟨⟨⟨objeto⟩⟩⟩⟩ , ⟨⟨⟨⟨preposición⟩⟩⟩⟩ , ⟨⟨⟨⟨ adverbio⟩⟩⟩⟩ }

Σ = { María , Juan , nave , perro , El , La , corre , quiere , vuela ,

a , con , rápidamente , ahora ,•••• }

S = ⟨⟨⟨⟨frase⟩⟩⟩⟩

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

N

T

Page 9: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

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

ING. JORGE BUABUD

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 ⟩⟩⟩⟩

Page 10: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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.

Page 11: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

FORMA SENTENCIAL :

Cualquier secuencia γγγγ que se obtenga a partir del axioma en un proceso de

ING. JORGE BUABUD

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.

Page 12: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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>>>> ⇒⇒⇒⇒

ING. JORGE BUABUD

<<<<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

Page 13: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

que denotamos L(G), es el conjunto definido como:

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

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’

EQUIVALENCIA ENTRE GRAMÁTICAS :

Page 14: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

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) = { a .b .a / n ≥ ≥ ≥ ≥ 1 }n n n

Page 15: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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 .y .z / n ≥ ≥ ≥ ≥ 0 , k ≥≥≥≥ 0 }n k n

Page 16: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

3) Recordemos las reglas del tercer ejemplo:

1.- S →→→→ a 2.- S →→→→ aS

Derivemos algunas palabras:

ING. JORGE BUABUD

Derivemos algunas palabras:

S ⇒⇒⇒⇒ a

S ⇒⇒⇒⇒ aS ⇒⇒⇒⇒ aa

S ⇒⇒⇒⇒ aS ⇒⇒⇒⇒ aaS ⇒⇒⇒⇒ aaa

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

Page 17: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

Gramáticas estructuradas por frases:

Consideremos las siguientes gramáticas:

G4 = ⟨⟨⟨⟨ { S, Q } , { a } , { S →→→→ a | Q , Q →→→→ aQ | a } , S ⟩⟩⟩⟩

ING. JORGE BUABUD

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.

Page 18: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 19: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

Σ = { I, L, D, G, R} P:

ING. JORGE BUABUD

Σ = { I, L, D, G, R}

Σ = { a, ... , z, 0, ... , 9,_ }

S = I

Aplicando las reglas de esta gramática se puede generar:

I ⇒⇒⇒⇒ LR ⇒⇒⇒⇒ aR ⇒⇒⇒⇒ a I ⇒⇒⇒⇒ GR ⇒⇒⇒⇒ _R ⇒⇒⇒⇒ _DR ⇒⇒⇒⇒ _1R ⇒⇒⇒⇒ _1LR ⇒⇒⇒⇒ _1hR ⇒⇒⇒⇒ _1hI ⇒⇒⇒⇒ LR ⇒⇒⇒⇒ zGR ⇒⇒⇒⇒ z_R ⇒⇒⇒⇒ z_DR ⇒⇒⇒⇒ z_5R ⇒⇒⇒⇒ z_5LR ⇒⇒⇒⇒ z_5pR ⇒⇒⇒⇒ z_5p

N

T

P: I →→→→ LR | GRL →→→→ a | b | ... | zD →→→→ 0 | 1 | ... | 9R →→→→ LR | DR | GR | λG →→→→ _

Page 20: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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, D, U, R} P:

ING. JORGE BUABUD

Σ = { N, D, U, R}

Σ = { 0, ... , 9 }

S = N

Aplicando las reglas de esta gramática se puede generar:

N ⇒⇒⇒⇒ 0 N ⇒⇒⇒⇒ UR ⇒⇒⇒⇒ 1R ⇒⇒⇒⇒ 1N ⇒⇒⇒⇒ UR ⇒⇒⇒⇒ 2R ⇒⇒⇒⇒ 2DR ⇒⇒⇒⇒ 20R ⇒⇒⇒⇒ 20N ⇒⇒⇒⇒ UR ⇒⇒⇒⇒ 4R ⇒⇒⇒⇒ 4DR ⇒⇒⇒⇒ 4UR ⇒⇒⇒⇒ 47R ⇒⇒⇒⇒ 47DR ⇒⇒⇒⇒ 470R ⇒⇒⇒⇒ 470DR ⇒⇒⇒⇒ 470UR

⇒⇒⇒⇒ 4703R ⇒⇒⇒⇒ 4703

N

T

P: N →→→→ 0 | URR →→→→ DR | λD →→→→ 0 | UU →→→→ 1 | ... | 9

Page 21: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

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

Page 22: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

Σ = { 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:

N

Page 23: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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 →→→→ }

Page 24: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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 }

ING. JORGE BUABUD

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 }

Page 25: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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 } }

ING. JORGE BUABUD

� 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.

Page 26: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

� Backus Naur Form (B.N.F.)� SINTAXIS

ING. JORGE BUABUD

� DIAGRAMAS DE SINTAXIS� SINTAXIS

� SEMÁNTICA� ESQUEMAS DE TRADUCCIÓN

� SISTEMAS CANÓNICOS

Page 27: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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 ::= { ββββ }

Page 28: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

⟨⟨⟨⟨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

Page 29: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

FORMATO B.N.F.:

⟨⟨⟨⟨Programa⟩⟩⟩⟩ ::= ⟨⟨⟨⟨Declara⟩⟩⟩⟩ ; { ⟨⟨⟨⟨Sentencia⟩⟩⟩⟩ }⟨⟨⟨⟨Declara⟩⟩⟩⟩ ::= ⟨⟨⟨⟨Declara⟩⟩⟩⟩ ; ⟨⟨⟨⟨ Declara⟩⟩⟩⟩ | ⟨⟨⟨⟨Tipo⟩⟩⟩⟩ id ⟨⟨⟨⟨Arreglo ⟩⟩⟩⟩⟨⟨⟨⟨Tipo⟩⟩⟩⟩ ::= int | float | boolean | char ⟨⟨⟨⟨Arreglo ⟩⟩⟩⟩ ::= [ entero ] | ⟨⟨⟨⟨Vacía⟩⟩⟩⟩

ING. JORGE BUABUD

⟨⟨⟨⟨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 ⟩⟩⟩⟩ ::= }⟨⟨⟨⟨If ⟩⟩⟩⟩ ::= if ⟨⟨⟨⟨Expresión⟩⟩⟩⟩ then { ⟨⟨⟨⟨Sentencia⟩⟩⟩⟩ } ⟨⟨⟨⟨RestoIf⟩⟩⟩⟩⟨⟨⟨⟨RestoIf⟩⟩⟩⟩ ::= else { ⟨⟨⟨⟨Sentencia⟩⟩⟩⟩ } | ⟨⟨⟨⟨Vacía⟩⟩⟩⟩

Nota: En este ejemplo las { } pertenecen al alfabeto de terminales.

Page 30: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

Los siguientes son los símbolos que se utiliza en estos diagramas:

Representa el valor de un componente léxico.

Representa el valor de un símbolo especial.

Implica una estructura sintáctica que tiene supropio diagrama de sintaxis.

Indica que componente sigue a continuación.

xxxxx

XXXXX

xx

Page 31: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

DIAGRAMAS DE SINTAXIS:

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

Identificador aLetra

ING. JORGE BUABUD

Identificador

Letra

--

Letra

Dígito

a

z

0

9

Dígito

Page 32: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

DIAGRAMAS DE SINTAXIS:

Número1

Uno

ING. JORGE BUABUD

Dígito

00

DígitoUno

9

Uno

Page 33: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

DIAGRAMAS DE SINTAXIS:

;

Programa

{ }SentenciaDeclara

Tipo

ING. JORGE BUABUD

Declara

Tipo id Arreglo

;

entero ][

Arreglo

float

boolean

char

int

Tipo

Page 34: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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:

{ fragmento programa }N →→→→ β β β βAcción SemánticaRegla de Sintaxis

Esquema de Traducción

Page 35: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

� 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.

Page 36: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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 breaken 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.

Page 37: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

Veamos en nuestro lenguaje hipotético algunos ejemplos de especificación semántica:

� Comprobaciones de Tipos:

ING. JORGE BUABUD

� 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 whileo if debe ser de tipo boolean.

� Comprobaciones del Flujo de Control:� La sentencia de bifurcación incondicional breakdebe estar dentro

de una estructura while.

Page 38: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

{ CAW=0 inicialización contador apertura de while }P →→→→ D ; { S }

Acción SemánticaRegla de Sintaxis

Esquema de Traducción

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

ING. JORGE BUABUD

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

{ T.TIPO=3 suponemos un código 3 para tipo boolean}T →→→→ boolean

{ T.TIPO=2 suponemos un código 2 para tipo float}T →→→→ float

{ T.TIPO=1 suponemos un código 1 para tipo int}T →→→→ int

{ Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

sino id.TIPO = arreglo(A.RANGO , T.TIPO) }D →→→→ T id A

{ Nula }D →→→→ D ; D

{ CAW=0 inicialización contador apertura de while }P →→→→ D ; { S }

Page 39: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

{ E.TIPO=1 }E →→→→ entero

{ A.RANGO=vacío }A →→→→ λ

{ A.RANGO=entero.VALOR }A →→→→ [ entero ]

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

ING. JORGE BUABUD

{ Si (id.TIPO==arreglo(r,t)) ∧ ∧ ∧ ∧ (E1.TIPO==1) entoncesE.TIPO=t sinoE.TIPO=error.t }

E →→→→ id[E1]

{ E.TIPO=id.TIPO }E →→→→ id

{ E.TIPO=4 }E →→→→ literal

{ E.TIPO=3 }E →→→→ cierto

{ E.TIPO=3 }E →→→→ falso

{ E.TIPO=2 }E →→→→ real

{ E.TIPO=1 }E →→→→ entero

Page 40: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

{ Si (E1.TIPO==1 ∧∧∧∧ E2.TIPO==1) entoncesE.TIPO=1 sinoSi (E1.TIPO==2 ∧∧∧∧ E2.TIPO==2) ∨∨∨∨

(E1.TIPO==1 ∧∧∧∧ E2.TIPO==2) ∨∨∨∨ (E1.TIPO==2 ∧∧∧∧E . ==1) entoncesE. =2 sino E. =error.t }

E →→→→ E1 + E2

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

ING. JORGE BUABUD

{ Si (S1.TIPO==ok ∧∧∧∧ S2.TIPO==ok) entoncesS.TIPO=ok sino S.TIPO=error.t

Si (S1.BIFU==ok ∧∧∧∧ S2.BIFU==ok) entoncesS.BIFU=ok sino S .BIFU=error.b }

S →→→→ S1 ; S2

{ Si (E1.TIPO==3 ∧∧∧∧ E2.TIPO==3) entoncesE.TIPO=3 sino E.TIPO=error.t }

E →→→→ E1 or E2

{ Si (E1.TIPO==E2.TIPO) entoncesE.TIPO=3 sino E.TIPO=error.t }

E →→→→ E1 <<<< E2

1 2

E2.TIPO==1) entoncesE.TIPO=2 sino E.TIPO=error.t }

Page 41: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

{ S.TIPO=okSi (CAW >>>> 0) entoncesS.BIFU=ok

S →→→→ break

{ S.TIPO=W.TIPO , S.BIFU=W.BIFU }S →→→→ W

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

ING. JORGE BUABUD

{ Si (id.TIPO==arreglo(r,t)) ∧ ∧ ∧ ∧ (E1.TIPO==1) ∧∧∧∧ (E2.TIPO==t) entoncesS.TIPO=ok sino S.TIPO=error.t

S.BIFU=ok}

S →→→→ id[E1] = E2

{ Si (id.TIPO==E.TIPO) entoncesS.TIPO=ok sino S.TIPO=error.t

S.BIFU=ok }

S →→→→ id = E

{ S.TIPO=I.TIPO , S.BIFU=I.BIFU }S →→→→ I

Si (CAW >>>> 0) entoncesS.BIFU=ok sino S.BIFU=error.b }

Page 42: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

{ Si (E.TIPO==3) entoncesW.TIPO=S.TIPO

sino W.TIPO=error.t W.BIFU=S.BIFU , CAW=CAW+1 }

W→→→→ while E do {SF

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

ING. JORGE BUABUD

{ CAW=CAW -1 }F →→→→ }

{ R.TIPO=ok , R.BIFU=ok }R →→→→ λ

{ R.TIPO=S.TIPO , R.BIFU=S.BIFU }R →→→→ else { S }

{ Si (E.TIPO==3) ∧ ∧ ∧ ∧ (S.TIPO==ok) ∧∧∧∧ (R.TIPO==ok) entoncesI .TIPO=ok sino I.TIPO=error.t

Si (S.BIFU==ok) ∧∧∧∧ (R.BIFU==ok) entoncesI .BIFU=ok sino I.BIFU=error.b }

I →→→→ if E then {S} R

W. =S. , CAW=CAW+1 }

Page 43: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

Veamos a continuación algunos casos particulares de uso de este esquema de traducción:

Aplicación de acciones semánticas

1) CAW=0

ING. JORGE BUABUD

1) En primer lugar derivemos una sentencia con sintaxis y semántica correctas:

Aplicación de reglas de sintaxis

P ⇒⇒⇒⇒ D ; { S } ⇒⇒⇒⇒ T id A ; { S } ⇒⇒⇒⇒float id A ; { S } ⇒⇒⇒⇒float id ; { S } ⇒⇒⇒⇒float id ; { id = E } ⇒⇒⇒⇒float id ; { id = real }

2) Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

sino id.TIPO = arreglo(A.RANGO , T.TIPO)

3) T.TIPO=2

4) A.RANGO=vacío

5) Si (id.TIPO==E.TIPO) entoncesS.TIPO=ok

sino S.TIPO=error.t

6) S.BIFU=ok

7) E.TIPO=2

Valores Finales

S.TIPO==ok S.BIFU==ok

Page 44: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

2) Ahora derivemos una sentencia con sintaxis correcta, pero con semántica incorrecta con un

Aplicación de acciones semánticas

1) CAW=0

ING. JORGE BUABUD

semántica incorrecta con un error de tipo:

Aplicación de reglas de sintaxis

P ⇒⇒⇒⇒ D ; { S } ⇒⇒⇒⇒ T id A ; { S } ⇒⇒⇒⇒boolean id A ; { S } ⇒⇒⇒⇒boolean id ; { S } ⇒⇒⇒⇒boolean id ; { id = E } ⇒⇒⇒⇒boolean id ; { id = real }

2) Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

sino id.TIPO = arreglo(A.RANGO , T.TIPO)

3) T.TIPO=3

4) A.RANGO=vacío

5) Si (id.TIPO==E.TIPO) entoncesS.TIPO=ok

sino S.TIPO=error.t

6) S.BIFU=ok

7) E.TIPO=2

Valores Finales

S.TIPO==error.t S.BIFU==ok

Page 45: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

3) Este es otro caso de sentencia con sintaxis y semántica correctas:

Aplicación de reglas de sintaxis

Aplicación de acciones semánticas

1) CAW=0 2) Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

sino id.TIPO = arreglo(A.RANGO , T.TIPO)3) T. =3

ING. JORGE BUABUD

Aplicación de reglas de sintaxis

P ⇒⇒⇒⇒ D ; { S } ⇒⇒⇒⇒ T id A ; { S } ⇒⇒⇒⇒boolean id A ; { S } ⇒⇒⇒⇒boolean id ; { S } ⇒⇒⇒⇒boolean id ; { W } ⇒⇒⇒⇒boolean id ; {while E do { S F } ⇒⇒⇒⇒ boolean id ; { while cierto do { S F } ⇒⇒⇒⇒boolean id ; { while ciertodo { break F } ⇒⇒⇒⇒ boolean id ; { while cierto do { break } }

TIPO RANGO TIPO3) T.TIPO=34) A.RANGO=vacío

5) S.TIPO=W.TIPO , S.BIFU=W.BIFU

6) Si (E.TIPO==3) entoncesW.TIPO=S.TIPO

sino W.TIPO=error.tW.BIFU=S.BIFU , CAW=CAW+1

7) E.TIPO=38) S.TIPO=ok

Si (CAW >>>> 0) entoncesS.BIFU=ok sino S.BIFU=error.b

9) CAW=CAW -1

Valores Finales

S.TIPO==ok

S.BIFU==ok

Page 46: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE ESQUEMAS DE TRADUCCIÓN:

4) Por último veamos un ejemplo similar al anterior, pero con un error semántico de bifurcación:

Aplicación de acciones semánticas

1) CAW=0

2) Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

ING. JORGE BUABUD

error semántico de bifurcación:

Aplicación de reglas de sintaxis

P ⇒⇒⇒⇒ D ; { S } ⇒⇒⇒⇒ T id A ; { S } ⇒⇒⇒⇒boolean id A ; { S } ⇒⇒⇒⇒boolean id ; { S } ⇒⇒⇒⇒boolean id ; { break }

2) Si (A.RANGO == vacío) entoncesid.TIPO = T.TIPO

sino id.TIPO = arreglo(A.RANGO , T.TIPO)

3) T.TIPO=3

4) A.RANGO=vacío

5) S.TIPO=okSi (CAW >>>> 0) entoncesS.BIFU=ok

sino S.BIFU=error.b

Valores Finales

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

Page 47: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

� 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, qy 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 ├─ QUn 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.

SÍMBOLO DE ASEVERACIÓN ├─

Page 48: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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).

ING. JORGE BUABUD

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.

Page 49: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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.

Page 50: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 51: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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”.

EJEMPLOS DE SISTEMAS CANÓNICOS:

ING. JORGE BUABUD

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.

Page 52: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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”:

EJEMPLOS DE SISTEMAS CANÓNICOS:

ING. JORGE BUABUD

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

En este otro caso hay un rótulo de referencia que no figura como rótulo de enunciado. Por lo tanto podemos decir que es correcto en su sintaxis pero no en su semántica.

Esta sentencia podría interpretarse como incorrecta desde el punto de vista pragmático.

1) B goto DC goto DD goto B

2) X goto YD goto CY goto D

3) A goto A

Page 53: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

EJEMPLOS DE SISTEMAS CANÓNICOS:

ING. JORGE BUABUD

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

Page 54: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE SISTEMAS CANÓNICOS:

A + B + ...... + Z letra

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

ING. JORGE BUABUD

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

Page 55: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE SISTEMAS CANÓNICOS:

1) Z goto DX

Teniendo en cuenta este sistema canónico, los siguientes son programas correctos en su sintaxis:

2) AB goto AB 3) HG goto Z

ING. JORGE BUABUD

1) Z goto DX

DX goto Z

2) AB goto AB 3) HG goto Z

X goto Z

4) goto DX

DX goto Z

En cambio los siguientes son programas incorrectos desde el punto de vista sintáctico:

5) AB goto 6) goto Z

X goto

Page 56: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

EJEMPLOS DE SISTEMAS CANÓNICOS:

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

ING. JORGE BUABUD

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

Page 57: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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

Page 58: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

� 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.

Page 59: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

en un lenguaje fuente hasta un texto o programa equivalente escrito en un lenguaje destino produciendo, si cabe, mensajes de error.

Page 60: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

� Preprocesadores

� Compiladores de L.A.N.

ING. JORGE BUABUD

TIPOS DE TRADUCTORES

� Compiladores de L.A.N.

� Interpretes de L.A.N.

� Interpretes de comandos

� Ensambladores

� Conversores fuente-fuente

� Traductores de idioma

Page 61: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 62: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 63: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

ING. JORGE BUABUD

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.

Page 64: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

ING. JORGE BUABUD

Page 65: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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 copyse ejecutará la función de copia de ficheros del sistema operativo, que se encuentra residente en memoria.

Page 66: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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,09hCódigo máquina generado en Binario: 1011- 0100- 0000- 1001

Page 67: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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.

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.

ING. JORGE BUABUD

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.

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.

Page 68: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

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

ING. JORGE BUABUD

FASES EJECUCIÓN

� COMPILACIÓN

� ENLACE

� CARGA

Page 69: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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

Page 70: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

final incorporando algunas rutinas adicionales procedentes de librerías.

Page 71: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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

ING. JORGE BUABUD

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.

Page 72: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

ING. JORGE BUABUD

Page 73: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

ETAPAS DE UN COMPILADOR

ING. JORGE BUABUD

Page 74: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

APLICACIÓN : Proceso de Compilación.

ING. JORGE BUABUD

Page 75: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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,

ING. JORGE BUABUD

posición = inicial + velocidad * 60 , donde los identificadores posición, inicial y velocidadse declararon de tipo float.

Salida del analizador léxico:

id1 = id2 + id3 * nument

Salida del analizador sintáctico:

= id1 + id2 * id3 nument

Salida del analizador semántico:

= id1 + id2 * id3 entareal(nument)

Page 76: Lingüistica Matemática Clase 2

LINGÜÍSTICA MATEMÁTICAU.T.N. – F.R.T. S. y S. de los L.

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:

ING. JORGE BUABUD

temp1 = entareal(60)

temp2 = id3 * temp1

temp3 = id2 +temp2

id1 = temp3

Salida del optimizador de código:

temp1 = id3 * 60.0

id1 = id2 + temp1

Salida del generador de código:

MOVF id3, R2

MULF #60.0 , R2

MOVF id2, R1

ADDF R2, R1

MOVF R1, id1