Está en la página 1de 8

UNIVERSIDAD MARIANO GALVEZ GUASTATOYA EL PROGRESO

CATEDRATICO:

 

RENE ALVARADO

CATEDRA:

 

COMPILADORES

TAREAS VARIAS

ROBERTO MIGUEL MERIDA S.

CARNE: 1890-06-16724

5TO. SEMESTRE

EJERCICIO: 1.1.1

1. Cuál es la diferencia entre un compilador y un intérprete:

Es un programa fuente que puede leer un programa en un lenguaje y traducirlo en un programa equivalente a un lenguaje, mientras que un intérprete nos da la apariencia de ejecutar correctamente las especificaciones en un programa de origen.

2. Cuáles son las ventajas de

a) ¿ventajas de un compilador sobre un intérprete? Un compilador es más rápido que un intérprete al momento de asignar las entradas a las salidas.

b)¿ventajas de un intérprete sobre un compilador? Puede ofrecer mejores diagnósticos de error que un compilador, ya que ejecuta el programa fuente instrucciones por instrucciones.

3. Que ventajas hay para un sistema de procesamiento de lenguajes en el cual el compilador produce lenguaje ensamblador en vez de lenguaje máquina.

El programa puede producir un programa destino en ensamblador como salida, ya que es más fácil producir el lenguaje ensamblador como salida y es más fácil su depuración. Es mucho más rápido. Requiere menos tiempo.

4. A un compilador que traduce un lenguaje de alto nivel a otro lenguaje de alto nivel es el llama traductor de source- source. ¿Qué ventajas hay en el uso de C como lenguaje destino para un compilador.

¿??????????????

5. Describa alguna de la tareas que necesita realizar un ensamblador

raducir un programa en lenguaje de ensamblador al código correspondiente en el lenguaje de maquina en esencia, Convertir los códigos a su código equivalente en lenguaje máquina. Convertir los operando simbólicos en las direcciones correspondientes de los operando Construir las instrucciones en lenguajes de maquina en el formato apropiado. Procesar las directrices al ensamblador.

3.1.1 DIVIDE EL SIGUIENTE PROGRAMA EN C++:

Float cuadroLimitado(x) float x { /* devuelve x al cuadro, pero nuna más de 100 */ Return (x<=-10.0 ||x>=10.0)?100:x*x;

}

TOKEN

DESCRIPCION

Float

Palabra reservada

X

Id

()

Llamada funcion

<>

Op. comparacion

||

Op. OR

10.0

Numeral

{}

Id

*

Operador

¿?

Operador nulo

EJERCICIO: NO. 3.2

3.1.2 Lenguajes indecidibles como HTML con muchas etiquetas. Sugiera como dividir el siguiente documento en HTML en los lexemas apropiados.

He aquí una foto de <B>mi casa <B/>:

<P><IMG SCR =”casa.gif” ><BR> Vea <A HREF =”masimgs.html”>Mas imagines </A> si Le gusto esa. <P>

TOKEN

DESCRIPCION

He aquí una foto de

Cadena de caracteres

<B>

Inicializacion etiqueta negrilla

<B/>

Finalizacion etiqueta en negrilla

<P>

Etiqueta parrafo

IMG SCR

Identificador

=

Operador de

comparacion

”casa.gif”

Literal

<BR>

Etiqueta salto de linea

Vea

Cadena de caracteres

”masimgs.html”

literal

Mas imagines

Cadena de caracteres

<P>

Etiqueta parrafo

EJERCICIO 3.3.2

3.3.2 Describa los lenguajes denotados para las siguientes expresiones denotadas

a(a|b)*a. a ε a…a , a ε b…a

((ε|a)b*)*.

ε b… …,

(a|b)*a(a|b)(a|b). a… ε aaa, b…abb,

(aa|bb)*((ab|ba)(aa|bb)* (ab|ba)(aa|bb)*)*

ε aa…abaa…abaa… …, bb… babb… babb… …

EJERCICIO 3.3.3

3.3 En una cadena de longitud n, ¿Cuántos de los siguientes hay?

a) Prefijos

b) Sufijos

c) Prefijos propios

d) Subcadenas

e) Subsecuenticas

Prefijo de n: una cadena que se obtiene eliminando cero o más símbolos desde derecha de la cadena n.

Sufijo: de n: una cadena que se forma suprimiendo cero o más símbolos desde la izquierda de una cadena n por ejemplo era es un sufijo de bandera.

Prefijos propios: cualquier cadena no vacía x que sea respectivamente, un prefijo, sufijo o subcadena de n tal que n = x

Subcadenas de n: una cadena que se obtiene suprimiendo un prefijo y un sufijo de n, por ejemplo ande es una subcadena de bandera.

EJERCICIO: 3.3.4

La mayoría de los lenguajes son sensible a mayúsculas y minúsculas por lo que la palabra clave solo pueden escribirse de una forma y las expresiones regulares que describen su lexema son muy simples. No obstante, algunos lenguajes como SQL son insensibles a mayúsculas y minúsculas, por lo que una palabra clave puede escribirse en minúsculas o en mayúsculas, o en cualquier mescla de ambas. Por lo que una palabra clave puede escribirse en minúsculas o en mayúsculas, o en cualquier mescla de ambas. Por ende, la palabra clave SELECT de SQL también puede escribirse como select, Select, o sELEct o sELEcT. Muestre como escribir una expresión regular para una palabra Clave en un lenguaje insensible a mayúsculas y minúsculas. Ilustre la idea escribiendo la expresión “select”

((S)(s)(E)(e)(L)(l)(E)(e)(C)(c)(T)(t))

S[eleCt]* = SeleCt

s[ElecT]* = sElecT

EJERCICIO 3.3.5

Escriba definiciones regulares para los siguientes lenguajes:

a) Todas las cadenas de letras en minúsculas que contengan las cinco vocales en orden. (a,e,i,o,u)* = {aeiou, aeeiou, aeiiiou ,aeiooou, aeiouuu}

b) Todas las cadenas de letras en minúsculas, en las que las letras se encuentren en orden lexicográfico ascendente. (a*b*)* = {aa,aaa,ab,abb,bb}

c) Comentarios, que consistan de una cadena rodeada por /* y */, sin un */ entre ellos, a menos que se encierre entre dobles comillas (“).

L*=(anita,lava,la,tina) ={anita,anita,anitalava,anitala,anitatina…}

d) Todas las cadenas de dígitos sin dígitos repetidos. Sugerencia: Pruebe este problema primero con unos cuantos dígitos, como {0,1,2}. [0|1,5] [6|7,9]

e) Todas las cadenas de dígitos que tengan por lo menos un digito repetido 2(3|4*) (5|6*)7

f) Todas las cadenas de as y bs con un número par de as y un número impar de bs.

(2|3)*={2,3,23,223,2223,…}

g) El conjunto de movimientos de Ajedrez, en la notación informal, como p-ka o kbp x qn.

Inciso G

a,h = Torre

b,g = caballo

c,f = arfil

d = rey

e = Dama

Posición 7= piones

 

a b

c

d

e

f

g

h

8

8

7

7

6

6

5

5

4

4

3

3

2

2

1

1

 

a b

c

d

e

f

g

h

1.e4 e5 2.f4 exf4 3.Bc4 Qh4+ 4.Kf1 b5 5.Bxb5 Nf6 6.Nf3 Qh6 7.d3 Nh5 8.Nh4

Qg5

9.Nf5 c6 10.g4 Nf6 11.Rg1 cxb5 12.h4 Qg6 13.h5 Qg5 14.Qf3 Ng8 15.Bxf4 Qf6 16.Nc3 Bc5 17.Nd5 Qxb2 18.Bd6 Bxg1 19.e5 Qxa1+ 20.Ke2 Na6 21.Nxg7+ Kd8 22.Qf6+ Nxf6 23.Be7# 1-0

h) Todas las cadenas de as y bs que no contengan la subcadena abb. (a*b) (b|a*)

i) Todas las cadenas de as y bs que no contengan las subsecuencia abb. a|a*b

EJERCICIO: 3.3.6

 

a)

Las primeras diez letras (hasta j), ya sea en mayúsculas o en minúsculas

|(a

A),

(a

b),(a C),(A D),(a e),(A f),(a G),(A H),(a i),(A j)|

b)

Las consonantes en minúsculas

(b|c|d|f|g|h|j|k|l|m|n|ñ|p|q|r|s|t|v|w|x|y|z)

c) Los dígitos en un numero hexadecimal ( elija mayúsculas o minúsculas para los dígitos mayor a 9.

(1|2|3|4|5|6|7|8|9|A|B|C|D|E|F)

d) Los caracteres que pueden aparecer al final de una oración legitima en inglés (por ejemplo, el signo de admiración)

(…|.|?|!|$|*)