Foros del Web » Programación para mayores de 30 ;) » Java »

Evaluar sintaxis de una operacion aritmetica

Estas en el tema de Evaluar sintaxis de una operacion aritmetica en el foro de Java en Foros del Web. Hola, soy nuevo en el foro, aqui planteo mi problema: Necesito hacer un programa que evalue la sintaxis de una operacion introducida por el usuario. ...
  #1 (permalink)  
Antiguo 27/10/2006, 16:48
 
Fecha de Ingreso: mayo-2006
Mensajes: 21
Antigüedad: 18 años
Puntos: 0
Evaluar sintaxis de una operacion aritmetica

Hola, soy nuevo en el foro, aqui planteo mi problema:

Necesito hacer un programa que evalue la sintaxis de una operacion introducida por el usuario. Por ejemplo: 2+2

No es necesario que me arroje el resultado, simplemente que evalue si esta correcto la forma en que el usuario introdujo la operacion, he realizado 3 funciones para evaluar cada caracter, si es Numero, Letra (por que el usuario puede introducir nombres de variables) y si es Operador, las funciones estan correctas (al menos a mi forma de entender), ahora lo que necesito es que me evalue si lo primero que se introdujo es numero o variable, luego el operador y por ultimo otro numero u otra variable ( num ope num ) que este en orden y si no que me indique el error o la posicion, estoy iniciando en el lenguaje, es por eso que pido ayuda, mi problema es que tengo la idea, pero no he podido plasmarla, aqui dejo el codigo que llevo hecho, si hay agluien me pueda ayudar o que me guie un poco se lo agradecere.

Código PHP:
import java.io.*;

public class 
Operacion
{
    public static 
boolean esNumero(char numero)
    {
        
int i 0;
        
boolean existe false;
        
char NUMERO[] = {'0','1','2','3','4','5','6','7','8','9'};
        
        for(
0NUMERO.lengthi++)
        {
            if (
numero==NUMERO[i])
            {
                
existe true;
                break;
            }
            else
            {
                
existe false;
            }
        }
        
        return 
existe;
    }
    
    public static 
boolean esOperador(char operador)
    {
        
int i 0;
        
boolean existe false;
        
char OPERADOR[] = {'+','-','*','/'};
        
        for(
0OPERADOR.lengthi++)
        {
            if (
operador==OPERADOR[i])
            {
                
existe true;
                break;
            }
            else
            {
                
existe false;
            }
        }
        
        return 
existe;
    }
    
    public static 
boolean esVariable(char letra)
    {
        
int i 0;
        
boolean existe false;
        
String LETRA "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
        
        for(
0LETRA.length(); i++)
        {
            if (
letra==LETRA.charAt(i))
            {
                
existe true;
                break;
            }
            else
            {
                
existe false;
            }
        }
        
        return 
existe;
    }

    public static 
void main(String []args)
    {
        
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        
        
String expresion "";
        
        
System.out.print("Ingresa una expresion: ");
        try
        {
            
expresion buffer.readLine();
        }
        catch(
IOException e)
        {
            
System.err.println("Error" e.getMessage());
        }
    }

De antemano, muchas GRACIAS...
  #2 (permalink)  
Antiguo 28/10/2006, 20:13
 
Fecha de Ingreso: octubre-2006
Mensajes: 51
Antigüedad: 17 años, 6 meses
Puntos: 1
Bueno soy nuevo en el foro y por no leer las politicas del grupo, mi mensaje anterior y por lo tanto la contestación a esta preguntano NO se envio debido a que inclui un enlace a otra pagina donde contenia información de lo que necesitas, por lo cual solo me limitare a darte esto:

groups.msn.com/worldbyte

Entra y en el foro de Java, busca el hilo que dice Como programar un automata. Cualquier duda la planteas.
  #3 (permalink)  
Antiguo 29/10/2006, 07:58
 
Fecha de Ingreso: mayo-2006
Mensajes: 21
Antigüedad: 18 años
Puntos: 0
Gracias estoy por checar el enlace, vere que sale y posteo...
  #4 (permalink)  
Antiguo 29/10/2006, 08:11
 
Fecha de Ingreso: mayo-2006
Mensajes: 21
Antigüedad: 18 años
Puntos: 0
Gracias WinDoctor, pero no he podido dar con la seccion de Java que dices, no se si me puedas mandar el link directo, de cualquier forma dejo mi e-mail para el que me quiera ayudar... [email protected]

GRACIAS...
  #5 (permalink)  
Antiguo 29/10/2006, 17:46
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
una forma muy sencilla de hacer eso que dices es usando la libreria de ANTLR, es realmente simple, pues unicamente tu tienes que declarar tus reglas y listo, ademas dices que no quieres evaluarlas asi que aun es mas sencillo pues unicamente tendrias que hacer el analizador lexico y el sintactico

si no que quieres meter con ANTLR, puedes usar expresiones regulares para la evaluacion, oh si es una tarea de Estrutura de datos, pues ahi tendrias que construir un arbol

hay mil y una maneras de hacer eso, algunas mas complejas que otras(Arboles, pilas ,listas), otras muy sencillas (ANTLR).

have funnnnn
  #6 (permalink)  
Antiguo 31/10/2006, 17:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 21
Antigüedad: 18 años
Puntos: 0
Bueno, antes que nada, muchas gracias a los que me respondieron, ya he resuelto mi problema!! xD me sirvio el regex de java.utill, para el manejo de expresiones regulares =D
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:19.