Analizador Lexico
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Lexico;
import java.util.*;
/**
*
* @author Jorge Valverde Rebaza
*/
/** Analizador supervisa que la sintaxis de la expresión ingresada por el usuario
* sea la correcta
*/
public class Analizador {
private String entrada;
private int estado;public Analizador(String instruccion)
{
entrada = separador(instruccion); //preparamos la cadena
estado = 0;
}
public StringgetInstrucccion()
{
return entrada;
}
//analiza la cadena y devuelve true si es aceptada por el automata
//y false en caso contrario
public int getAnalisis(){
StringTokenizer linea = new StringTokenizer(entrada," ");;
String token;
estado = 0; //verificador de estados del automata
int cont = 0; //contador de parentesisboolean band=false,band2=false,flag=false;
while(linea.hasMoreTokens() && flag==false)
{
token= linea.nextToken();//automata
if(estado==0 && token.equalsIgnoreCase("("))
{ estado = 1; cont++; }
else if(estado==1 && Nfuncion(token)){ estado = 2; }
else if(estado==2 && (valor(token) || identificador(token)))
estado = 3;
else if(estado==3 && (valor(token) ||identificador(token)))
estado = 3;
else if(estado==4 && (valor(token) || identificador(token)))
estado = 3;
else if(estado==4 &&token.equalsIgnoreCase(")"))
{ estado = 4; cont--; }
else if(estado==4 && token.equalsIgnoreCase("("))
{ estado = 5; cont++; }
else...
Regístrate para leer el documento completo.