Equipo 5. Automatas 1. Lex y Sint

Embed Size (px)

DESCRIPTION

sist.

Citation preview

ANALIZADOR LEXICO Y SEMANTICO

import java.io.*;import java.util.StringTokenizer;

/IMRIME EL TIPO DE EXPRESION/

final class tipos{ private String texto;

public void instrucciones(){System.out.println("--------------------------------------------------------------------");System.out.print("| ANALIZADOR LEXICO y SINTACTICO - EQUIPO # 5 |\n"); System.out.print("| PERMITE EVALUAR OPERACIONES NUMERICAS |\n"); System.out.println("--------------------------------------------------------------------"); System.out.print("| INSTRUCCIONES: |\n"); System.out.println("--------------------------------------------------------------------");System.out.print("| INTRODUCIR LAS OPERACIONES QUE DESEES REALIZAR (+),(-),(*) |\n");System.out.print("| AL TERMINAR PULSAR BARRA -ESPARCIADORA- y -ENTER- |\n");System.out.println("--------------------------------------------------------------------");System.out.println();}

public void leer(){String res="";BufferedReader in=new BufferedReader(new InputStreamReader(System.in));try{System.out.print("INTRODUCIR LA EXPRESION: ");do{res+=in.readLine();}while(!res.endsWith(" "));}catch(IOException ioe){System.out.println("OCURRIO LA SIGUIENTE EXCEPCION " +ioe);} texto=res;}

public String getTexto() { return texto; } }

class analizador{public static void main(String carls[]){Character in[];tipos prueba= new tipos();prueba.instrucciones(); prueba.leer(); sintactico sintac=new sintactico(prueba.getTexto()); sintac.generarClasificar();}}

class sintactico{ private String texto; private String ldigit=""; private String ltokens=""; private String lidenti="";

public sintactico(String texto) { System.out.println(texto); this.texto = texto; }

/RECONOCE LOS TOKENS/

private StringTokenizer getTokens(){ StringTokenizer st = new StringTokenizer(texto); return st; }

public void generarClasificar(){ StringTokenizer tokenslist=getTokens(); while(tokenslist.hasMoreTokens()){ String token=tokenslist.nextToken(); boolean istoken = isToken(token); boolean isdigit = isDigit(token); boolean istext = isText(token); if(istoken){ ltokens+="\""+token+"\" "; }

if(isdigit){ ldigit+="\""+token+"\" "; }

if(istext){ lidenti+="\""+token+"\" "; }

} boolean operacion = operacion(getTokens()); System.out.println("TOKENS: "+ltokens); System.out.println("DIGITOS: "+ldigit); System.out.println("IDENTIFICADOR(ES): "+lidenti); if(operacion){ System.out.println("Operacion Correcta"); }else{ System.out.println("Operacion mal"); }

} private boolean isDigit(String token){ try{ Integer.parseInt(token); return true; }catch(Exception er){ return false; } } private boolean isText(String token){ try{ Integer.parseInt(token); return false; }catch(Exception er){ if(isToken(token)){ return false; } return true; } }

private boolean isToken(String token){ String tokenslist[]={"=","(",")","+","-","*","/",";",""}; for(int i=0;i