EJERCICIO 4 Traductor Simple

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

UNIVERSIDAD NACIONAL DEL ALTIPLANO – PUNO

ESCUELA PROFESIONAL INGENIERIA DE SISTEMAS

TRABAJO ENCARGADO:
TAREA 04: TRADUCTOR SIMPLE ORIENTADO A LA
SINTAXIS
CURSO:
COMPILADORES
PRESENTADO POR:
YNETH ARPI ROQUE
DOCENTE:
FERNANDEZ CHAMBI MAYENKA
SEMESTRE:
SEXTO

AÑO
2020
PUNO
Ejercicio 2.3.1: Construya un esquema de traducción orientado a la sintaxis, que traduzca
expresiones aritméticas de la notación infija a la notación prefija, en la cual un operador
apare- ce antes de sus operandos; por ejemplo, –xy es la notación prefija para x – y.
Proporcione los árboles de análisis sintáctico anotados para las entradas 9−5+2 y 9−5*2.
Notacion Infija 2+5-9 2*5-9
259-+ 259-*
Notacion Prefija +-952 *-952
Expr → expr−term{print(‘−‘)} expr→expr – term{(‘−‘)
Esquema de
notación Expr → expr +term{print(‘+‘)} expr→ expr − term{(‘*’)}

Expr → term expr → term

term → 0 print{(‘0’)} term → 0 print{(‘0’)}


term → 1 print{(‘1’)} term → 1 print{(‘1’)}
term → 2 print{(‘2’)} term → 2 print{(‘2’)}
term → 3 print{(‘3’)} term → 3 print{(‘3’)}
. .
. .
. .
term → 9 print{(‘9’)} term → 9 print{(‘9’)}

Ejercicio 2.3.2: Construya un esquema de traducción orientado a la sintaxis, que traduzca


expresiones aritméticas de la notación postfija a la notación infija. Proporcione los árboles
de análisis sintáctico anotados para las entradas 95−2* y 952*−.
Notacion 95 −2* 952*−
postfija
Notacion Infija
Expr → expr|term−{print(‘term‘)} Expr → expr|term* {print(‘term‘)}

Esquema de Expr → expr|term* {print(‘term‘)} Expr → expr|term − {print(‘term‘)}


Notacion
expr→ term expr→ term

term → 0 print{(‘0’)} term → 0 print{(‘0’)}


term → 1 print{(‘1’)} term → 1 print{(‘1’)}
term → 2 print{(‘2’)} term → 2 print{(‘2’)}
term → 3 print{(‘3’)} term → 3 print{(‘3’)}
. .
. .
. .
term → 9 print{(‘9’)} term → 9 print{(‘9’)}
Ejercicio 2.3.3: Construya un esquema de traducción orientado a la sintaxis, que traduzca
enteros a números romanos.
Ejercicio 2.3.4: Construya un esquema de traducción orientado a la sintaxis, que traduzca
números romanos a enteros.
Numero de 2 cifras, para esto, sabemos que los números de 2 cifras están compuestos por
una unidad y una decena por lo que podemos desir:
num → decena unidad
la composición de estos números es similar en números romanos excepto en el 4 y en el
9 ya que estos son iv y ix, esto se repite con el 40 y con el 90 por lo que podemos decir.
.decenas → menores ‫ ׀‬4‫ ׀‬mayores I9
unidades→menores I 4I mayores I9
menores →0 I1I2I3
mayores→5 I6I8
con esto definido, podemos proceder ala parte de traduccion
num → decena unidad {num. Roman =dec. roman ‫׀׀‬uni. roman; print(”num. roman “)}
decenas → menores {dec. roman = repetir (“x”,menores. V)}‫׀‬
4{dec. roman = (XL)}‫׀‬mayores {dec. roman = “L”}‫׀‬
Repetir( “x”), mayores. V - 5}‫׀‬9{dec. roman =”XC”}
unidades → menores {uni. Roman = repetir (“I”,menores. V )}‫׀‬
4{uni. Roman — (IV)}ІMayores{uni. Roman = v }Ι
Rep(‘I’), mayores.v −5 } | 9 {uni.roman = ‘ IX’ }
Term → 1 print{(‘I’)}
Term → 2 print{(‘II’)}
Term → 3 print{(‘III’)}
Term → 5 print{(‘V’)}
…….
…..

Term → 99 print{(‘XCIX’)}

También podría gustarte