Advertisement
Guest User

ALS.analisis.AnalisisLexico

a guest
Nov 13th, 2011
924
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.91 KB | None | 0 0
  1. /*
  2.  * Esta clase maneja el analisis lexico
  3.  */
  4.  
  5. package analisis;
  6.  
  7. import java.util.*;
  8.  
  9.  
  10. /**
  11.  * @autores Julio Chinchilla
  12.  */
  13.  
  14. public class AnalisisLexico extends lenguaje.GNX {
  15.    
  16.     final public Vector tValor = new Vector();
  17.     final public Vector tTipo = new Vector();
  18.     final public Vector tLinea = new Vector();
  19.     final public Vector tColumna = new Vector();
  20.     final public Vector allavesPorLinea = new Vector();
  21.     public int NumeroLineas = 0;
  22.     final public Vector tTokensEnLinea = new Vector();
  23.     public int ERRORLexico = 0;
  24.     public String errores = "";
  25.     public String imp = "";
  26.    
  27.     public AnalisisLexico (String rALexico) {
  28.         DivideTokens(rALexico);
  29.         int k = 0;        
  30.         while ( k != tValor.size() ) {
  31.             imp =  imp + "Elemento ";
  32.             imp =  imp + tValor.elementAt(k).toString() + " ";
  33.             imp =  imp + "Descripcion ";
  34.             imp =  imp + tTipo.elementAt(k).toString() + " ";
  35.             imp =  imp + "Linea ";
  36.             imp =  imp + tLinea.elementAt(k).toString() + " ";
  37.             imp =  imp + "Columna ";
  38.             imp =  imp + tColumna.elementAt(k).toString() + "\n";            
  39.             k++;
  40.         }
  41.     }        
  42.  
  43.     final private void DivideTokens(String recibe) {
  44.         String d = recibe;
  45.         int linea = 0;
  46.         int columna = 0;                
  47.         int j = 0;
  48.         String llaves = "";
  49.         StringTokenizer tokenlinea = new StringTokenizer(d,"\n");        
  50.         StringTokenizer tokenespacio;        
  51.         while(tokenlinea.hasMoreTokens()) {
  52.             linea++;
  53.             llaves = "";
  54.             tokenespacio = new StringTokenizer(tokenlinea.nextToken());
  55.             columna = 1;
  56.             j = 0;
  57.             while(tokenespacio.hasMoreTokens()) {                
  58.                 String tokens = tokenespacio.nextToken();                                
  59.                 if ( ComparaLenguaje(tokens) != null ) {
  60.                     tValor.add(tokens);
  61.                     tTipo.add(ComparaLenguaje(tokens));
  62.                     tLinea.add(linea);
  63.                     tColumna.add(columna);
  64.                     llaves = llaves + ComparaLenguaje(tokens).charAt(0);
  65.                 }
  66.                 else if ( ComparaAtributos(tokens) == true ) {
  67.                     tValor.add(tokens);
  68.                     tTipo.add("Atributo");
  69.                     tLinea.add(linea);
  70.                     tColumna.add(columna);
  71.                     llaves = llaves + "r";
  72.                 }
  73.                 else {
  74.                     ERRORLexico = ERRORLexico + 1;
  75.                     tValor.add(tokens);
  76.                     tTipo.add("ERROR!");
  77.                     tLinea.add(linea);
  78.                     tColumna.add(columna);
  79.                     errores = errores + "Error en linea "+linea+" Columna "+columna+"\n";
  80.                     llaves = llaves + "s";
  81.                 }                
  82.                 j++;
  83.                 columna = columna + (tokens.length() + 1);                                
  84.             }
  85.             allavesPorLinea.add(llaves);
  86.             tTokensEnLinea.add(j);
  87.         }
  88.         NumeroLineas = linea;
  89.     }
  90.    
  91.     final private boolean ComparaAtributos ( String ComparaCadena ) {
  92.         boolean atributo = false;        
  93.         int tamanoCadena = ComparaCadena.length() - 1;        
  94.         if ( ComparaCadena.charAt(0) == '"' && ComparaCadena.charAt(tamanoCadena) == '"' && tamanoCadena >= 2 ) {
  95.             atributo = true;
  96.         }        
  97.         return atributo;
  98.     }        
  99.    
  100.     final private String ComparaLenguaje ( String ComparaCadena ) {
  101.         String Descripcion = null;
  102.         if ( super.LENGUAJE.get(ComparaCadena) == null) {
  103.             Descripcion = null;
  104.         }
  105.         else  {
  106.             Descripcion = String.valueOf( super.LENGUAJE.get(ComparaCadena) ) ;
  107.         }
  108.         return Descripcion;
  109.     }
  110.    
  111.   }
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement