Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Esta clase maneja el analisis lexico
- */
- package analisis;
- import java.util.*;
- /**
- * @autores Julio Chinchilla
- */
- public class AnalisisLexico extends lenguaje.GNX {
- final public Vector tValor = new Vector();
- final public Vector tTipo = new Vector();
- final public Vector tLinea = new Vector();
- final public Vector tColumna = new Vector();
- final public Vector allavesPorLinea = new Vector();
- public int NumeroLineas = 0;
- final public Vector tTokensEnLinea = new Vector();
- public int ERRORLexico = 0;
- public String errores = "";
- public String imp = "";
- public AnalisisLexico (String rALexico) {
- DivideTokens(rALexico);
- int k = 0;
- while ( k != tValor.size() ) {
- imp = imp + "Elemento ";
- imp = imp + tValor.elementAt(k).toString() + " ";
- imp = imp + "Descripcion ";
- imp = imp + tTipo.elementAt(k).toString() + " ";
- imp = imp + "Linea ";
- imp = imp + tLinea.elementAt(k).toString() + " ";
- imp = imp + "Columna ";
- imp = imp + tColumna.elementAt(k).toString() + "\n";
- k++;
- }
- }
- final private void DivideTokens(String recibe) {
- String d = recibe;
- int linea = 0;
- int columna = 0;
- int j = 0;
- String llaves = "";
- StringTokenizer tokenlinea = new StringTokenizer(d,"\n");
- StringTokenizer tokenespacio;
- while(tokenlinea.hasMoreTokens()) {
- linea++;
- llaves = "";
- tokenespacio = new StringTokenizer(tokenlinea.nextToken());
- columna = 1;
- j = 0;
- while(tokenespacio.hasMoreTokens()) {
- String tokens = tokenespacio.nextToken();
- if ( ComparaLenguaje(tokens) != null ) {
- tValor.add(tokens);
- tTipo.add(ComparaLenguaje(tokens));
- tLinea.add(linea);
- tColumna.add(columna);
- llaves = llaves + ComparaLenguaje(tokens).charAt(0);
- }
- else if ( ComparaAtributos(tokens) == true ) {
- tValor.add(tokens);
- tTipo.add("Atributo");
- tLinea.add(linea);
- tColumna.add(columna);
- llaves = llaves + "r";
- }
- else {
- ERRORLexico = ERRORLexico + 1;
- tValor.add(tokens);
- tTipo.add("ERROR!");
- tLinea.add(linea);
- tColumna.add(columna);
- errores = errores + "Error en linea "+linea+" Columna "+columna+"\n";
- llaves = llaves + "s";
- }
- j++;
- columna = columna + (tokens.length() + 1);
- }
- allavesPorLinea.add(llaves);
- tTokensEnLinea.add(j);
- }
- NumeroLineas = linea;
- }
- final private boolean ComparaAtributos ( String ComparaCadena ) {
- boolean atributo = false;
- int tamanoCadena = ComparaCadena.length() - 1;
- if ( ComparaCadena.charAt(0) == '"' && ComparaCadena.charAt(tamanoCadena) == '"' && tamanoCadena >= 2 ) {
- atributo = true;
- }
- return atributo;
- }
- final private String ComparaLenguaje ( String ComparaCadena ) {
- String Descripcion = null;
- if ( super.LENGUAJE.get(ComparaCadena) == null) {
- Descripcion = null;
- }
- else {
- Descripcion = String.valueOf( super.LENGUAJE.get(ComparaCadena) ) ;
- }
- return Descripcion;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement