Compiladores

Páginas: 7 (1570 palabras) Publicado: 5 de abril de 2014
COMPILADORES E INTERPRETES 2014

Desarrollo de un evaluador
expresiones algebraicas

de

Introducción
Tenemos la expresión “5+2*4 - 27/3” almacenada en una variable de tipo Cadena
(String). Necesitamos que un algoritmo resuelva esa expresión y retorne el valor
cuantitativo que en este caso que es 4.
Las expresiones pueden volverse bastante complejas, por ejemplo:“3.89-cos(7.12/3.56)+sen(0.02/(1.4-9.5))*1-(5.7/(0.4301+2.891)*.432)” Y retornar
el valor de tipo double 3.56223361 (donde las funciones trigonométricas se evalúan en
radianes).
¿Cómo hacer eso?

¿Cómo hacer un evaluador de expresiones algebraicas?
Yendo por partes. En primer lugar debemos ver que requiere nuestro evaluador de
expresiones; este sería un listado:
1. Evaluar los operadores como la suma (+), resta(-), multiplicación (*), división (/) y
el exponente (^)
2. Uso de números reales (por ejemplo, 3.74193)
3. Uso de paréntesis. Idealmente que sea ilimitado el número de paréntesis.
4. Uso de funciones como sin(seno), cos(coseno), tan(tangente)
5. Uso de variables que irían de la ‘a’ a la ‘z’
6. Seguir las estrictas normas algebraicas como la precedencia de los operadores.
Parte 0. Quitarlos espacios
Para poder hacer el análisis de la sintaxis de la expresión, primero hay que quitar todos
los espacios de la cadena.

“La imaginación es más importante que el conocimiento”

Albert Einstein.
1

COMPILADORES E INTERPRETES 2014

Parte 1. Chequear que la expresión algebraica no tiene errores de
sintaxis
Este paso es primordial, porque necesitamos asegurar que los algoritmosque evaluarán
la expresión no se bloqueen cuando no encuentren un paréntesis que debe cerrar y este
no existiera, o hacer frente a dos o más operadores seguidos. Cuando el usuario digita
una expresión algebraica, puede cometer varios errores de sintaxis, luego se deben
validar los posibles errores de ingreso.
El listado de posibles errores de sintaxis es el siguiente:
1.
2.
3.
4.
5.
6.7.
8.
9.

Cadena vacía
Dos o más operadores estén seguidos. Ejemplo: 2++4, 5-*3
Un operador seguido de un paréntesis que cierra. Ejemplo: 2-(4+)-7
Un paréntesis que abre seguido de un operador. Ejemplo: 2-(*3)
Que empiece con operador +, *, /. Ejemplo: /12-5*2 , *17-4
Que termine con operador. Ejemplo: 12-67* 2/3Que los paréntesis estén desbalanceados. Ejemplo: 3-(2*4))
Que hayaparéntesis vacío. Ejemplo: 2-()*3
Así estén balanceados los paréntesis no corresponde el que abre con el que cierra.
Ejemplo: 2+3)-2*(4
10. Un paréntesis que cierra seguido de un número. Ejemplo: (12-4)7-1
11. Un número seguido de un paréntesis que abre. Ejemplo: 7-2(5-6)
12. Doble punto en un número de tipo real. Ejemplo: 3-2..4+1 7-6.46.1+2
13. Un paréntesis que cierra seguido de una variable.Ejemplo: (12-4)y-1
14. Una variable seguida de un punto. Ejemplo: 4-z.1+3
15. Un punto seguido de una variable. Ejemplo: 7-2.p+1
16. Un número antes de una variable. Ejemplo: 3x+1 Nota: Algebraicamente es
aceptable 3x+1 pero entonces vuelve más complejo un evaluador porque debe
saber que 3x+1 es en realidad 3*x+1
17. Un número después de una variable. Ejemplo: x9+1

“La imaginación es másimportante que el conocimiento”

Albert Einstein.
2

COMPILADORES E INTERPRETES 2014
18. Hayan caracteres inválidos. Ejemplo: 4+@-1
19. Chequea si hay 4 o más variables seguidas
20. Función inexistente: Ejemplo: xyz(45)
21. Las variables solo son de una sola letra, no debe haber dos letras seguidas o 4 o
más letras seguidas. Ejemplo: 3-xy+2*ab
22. Una variable seguida de un paréntesis queabre. Ejemplo: 7-x(5-6)

1- Cadena Vacía
Una vez retirados los espacios y tabuladores, si la longitud de la cadena es cero entonces
tenemos el primer error: una cadena vacía. Los siguientes códigos hacen parte de un
método, se ponen aquí para mostrar cómo se valida la cadena vacía. En el punto
“Llamado a los métodos” se muestra donde se usan estos códigos:

2- Dos o más operadores...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS