Informatico
Dado la siguiente gramática de numeros romanos
numero -> centena decena unidad
centena -> C | CC | CCC | CD | D | €
decena -> decenaMenor | XL | L decenaMenor | XC | €decenaMenor -> decenaMenor X | €
unidad -> unidadMenor | IV | V unidadMenor | IX | €
unidadMenor -> unidadMenor I | €
Se pide:
- Hallar una gramatica equivalente (hacer caso omiso de que lagramatica dada acepta cadenas invalidas del tipo "XXXX", "XXXXX") que permita un analisis predictivo descendente
- Definir las reglas o acciones semanticas que correspondan
- Realizar una traduccióndirigida por sintaxis en Java o seudoCodigo que permita, dado un numero romano, obtener su equivalente arabigo. Ej: Entrada: XXI, Salida = 21
GRAMATICA EQUIVALENTE REGLAS Y/O ACCIONESSEMANTICAS
numero -> centena decena unidad numero = centena.val() + decena.val() + unidad.val()
centena -> C cen | D | € centena = 100 + cen.val() | centena = 500 | centena = 0
cen -> CcentenaMenor | D | € cen = 100 + centenaMenor.val() | cen = 300 | cen = 0
centenaMenor -> C | € centenaMenor = 100 | centenaMenor = 0
decena -> X dec | L decenaMenor | € decena = 10 +dec.val | decena = 50 + decenaMenor.val() | decena = 0
dec -> decenaMenor | L | C dec = decenaMenor.val() | dec = 30 | dec = 80
decenaMenor -> X decenaMenor | € decenaMenor = 10 +decenaMenor.val() | decenaMenor = 0
unidad -> I uni | V unidadMenor | € unidad = 1 + uni.val() | unidad = 5 + unidadMenor.val() | unidad = 0
uni -> unidadMenor | V | X uni = unidadMenor.val() | uni= 3 | uni = 8
unidadMenor -> I unidadMenor | € unidadMenor = 1 + unidadMenor.val() | unidadMenor = 0
SeudoCodigo en Java
import java.io.InputStreamReader;
import java.io.BufferedReader;/**
*
* @author Jose Chavez
*/
public class TraductorNumerosRomanos{
static int readPos = 0;
public static void main(String [] args){
try{
InputStreamReader isr = new...
Regístrate para leer el documento completo.