Академический Документы
Профессиональный Документы
Культура Документы
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES
COMPILADOR INTERPRETE
Lee un programa en un lenguaje (lenguaje No produce programa destino, da la
fuente) y traducirlo a otro lenguaje (lenguaje apariencia de ejecutar directamente las
destino) operaciones especificadas en el programa
origen
Detecta cualquier error en el programa
mientras lo traduce
2.- ¿CUALES SON LAS VENTAJAS DE (A) UN COMPILADOR SOBRE UN INTERPRETE, Y (B) LAS DE UN
INTERPRETE SOBRE UN COMPILADOS?
Compilador interprete
El programa destino del compilador, es más El intérprete puede ofrecer mejores
rápido que un intérprete al momento de diagnósticos de error que un compilador, ya
asignar las entradas a las salidas que ejecuta el programa fuente instrucción
por instrucción
El lenguaje ensamblador es todavía más entendible ya que usa símbolos que representan dichas
operaciones pero este se acerca mucho al lenguaje de una máquina que es el binario.
4.- A UN COMPILADOR QUE TRADUCE UN LENGUAJE DE ALTO NIVEL A OTRO LENGUAJE DE ALTO
NIVLE SE LE LLAMA TRADUCTOR DE source-to-source. ¿Qué VENTAJAS HAY EN CUANTO AL USO DE
C COMO LEGUAJE DESTINO PARA UN COMPILADOR?
“C” es un lenguaje de medio nivel pero con muchas características de bajo nivel y dispone de las
estructuras típicas de los lenguajes de alto nivel pero también permite control a muy bajo nivel y
los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en
ensamblador con código C , entonces aquí C utilizaría un compilador de alto nivel o el source to
source.
SOLUCION:
1.- PARA EL CODIGO EN C ESTRUCTURADOS POR BLOQUES DE LA FIGURA 1.13(a), INDIQUE LOS
VALORES ASIGNADOS A w,x,y Y z
𝑤 = 13, 𝑥 = 9, 𝑦 = 13, 𝑧 = 9
𝑤 = 9, 𝑥 = 7, 𝑦 = 13, 𝑧 = 7
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES
DECLARACION ALCANCE
w del B1 B1;B2
x del B1 B1
y del B1 B1;B2;B3;B4
z del B1 B1;B4
x del B2 B2
z de B2 B2;B3
w de B3 B3
w de B4 B4;B5
x de B4 B4;B5
y de B5 B5
z de B5 B5
32
𝑆 → 𝑆𝑆 + | 𝑆𝑆 ∗| 𝑎
a) Muestre como puede generarse la cadena aa+a* mediante esta gramática.
S → SS ∗
S → (SS +)S ∗
S → (SS +)a ∗
S → (aa +)a ∗
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES
S → aa + a ∗
S S *
S a *
S S +
a a +
2.- ¿Qué LENGUAJE SE GENERA MEDIANTE LAS SIGUIENTE GRAMATICAS? EN CADA CASO
JUSTIFIQUE SU RESPUESTA.
a) 𝑆 → 0𝑆1 | 01
𝑆 → 0 (01)1
𝑆 → 0 011
Genera una secuencia de ceros seguida por una secuencia de unos.
b) 𝑆 → +𝑆𝑆|−𝑆𝑆| 𝑎
S −> −SS
S −> −S(+SS)
S −> −a + aa
Genera un conjunto de sumas o restas de a’s.
c) 𝑆 → 𝑆(𝑆)𝑆 |𝜖
Genera un conjunto vacío o conjunto de paréntesis
d) 𝑆 → 𝑎𝑆𝑏𝑆 | 𝑏𝑆𝑎𝑆| 𝜖
S → aSbS
S → aSbS
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES
S → a(bSaS)bS
S → abSaSbs
Genera un secuencia de a y b o vacío.
e) 𝑆 → 𝑎 | 𝑆 + 𝑆 | 𝑆𝑆 | 𝑆 ∗|(𝑆)
S → (S )
S → (S ∗)
S → (SS ∗)
S → (S + SS ∗)
S → (a + aa ∗)
Genera una secuencia de a's que pueden ser vacías o todo lo anterior entre
paréntesis.
2+5-9 2*5-9
259-+ 259-*
+-952 *-952
Expr -> expr - term {print(‘-’)} Expr -> expr - term {print(‘-’)}
Expr -> expr + term {print(‘+’)} Expr -> expr * term {print(‘*’)}
…… ……
Expr -> expr |term - {print(‘term’)} Expr -> expr| term * {print(‘term’)}
Expr -> term |term * {print(‘term’)} Expr -> expr |term - {print(‘term’)}
…… ……