Analizador Lexico
Analizador Lexico
Analizador Lexico
--------------
-- AnalizadorLexico.txt
-- Archivo de texto con el código fuente donde se construyó en analizador léxico
-- para el proyecto de la materia de compiladores de la Universidad Central
--
-- Autor: Edwin Alexander Silva López
-- Fecha: 27 de Junio de 2015.
-- Versión: 1.0
-- Universidad Central
-- Bogotá D.C.
-----------------------------------------------------------------------------------
--------------
-----------------------------------------------------------------------------------
--------------
Interfaz gráfica: paquete gui
-----------------------------------------------------------------------------------
--------------
package gui;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public IndexCompilador(){
iniciarComponentes();
asignarDimensiones();
adicionarObjetos(labelTextoEntrada);
adicionarObjetos(scrollEntrada);
adicionarObjetos(botonCargarArchivo);
adicionarObjetos(labelTextoAnalizar);
adicionarObjetos(scrollSalida);
adicionarObjetos(botonAnalizarArchivo);
adicionarObjetos(botonTablaSimbolos);
Manejador manejador = new Manejador(this);
botonCargarArchivo.addActionListener(manejador);
botonAnalizarArchivo.addActionListener(manejador);
}
package gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JTextArea;
import compilador.Compilador;
package gui;
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import compilador.simbolos.Simbolo;
import compilador.simbolos.TablaSimboloBase;
if (!listaInicial.isEmpty()) {
for (Simbolo simbolo : listaInicial) {
String row[] = { simbolo.getToken(), simbolo.getLexema(),
(simbolo.isPalabraReservada() ? "Yes" : "No" ) };
model.addRow(row);
}
}
}
}
-----------------------------------------------------------------------------------
--------------
Controlador del programa: paquete compilador
-----------------------------------------------------------------------------------
--------------
package compilador;
import gui.Manejador;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import analizador.lexico.Lexico;
-----------------------------------------------------------------------------------
--------------
Capa de entidades o modelo del programa: paquete compilador.simbolos
-----------------------------------------------------------------------------------
--------------
package compilador.simbolos;
package compilador.simbolos;
import java.util.ArrayList;
import java.util.Arrays;
public TablaSimboloBase() {
simbolosInicial = new ArrayList<Simbolo>(
Arrays.asList(new Simbolo("pro", "programa", true), new
Simbolo("int", "int", true),
new Simbolo("char", "char", true), new
Simbolo("float", "float", true),
new Simbolo("leer", "leer", true), new
Simbolo("imp", "imprimir", true),
new Simbolo("+", "+", true), new Simbolo("-",
"-", true), new Simbolo("*", "*", true),
new Simbolo("/", "/", true), new Simbolo("=",
"=", true), new Simbolo("ter", "terminar", true),
new Simbolo("min", "mientras", true), new
Simbolo("si", "si", true),
new Simbolo("sino", "sino", true), new
Simbolo("\"", "\"", true), new Simbolo(",", ",", true),
new Simbolo(";", ";", true), new Simbolo("(",
"(", true), new Simbolo(")", ")", true),
new Simbolo("{", "{", true), new Simbolo("}",
"}", true), new Simbolo("&", "&", true),
new Simbolo("&&", "&&", true), new Simbolo("|",
"|", true), new Simbolo("||", "||", true)));
}
-----------------------------------------------------------------------------------
--------------
Analizador Léxico: paquete analizador.lexico
-----------------------------------------------------------------------------------
--------------
package analizador.lexico;
package analizador.lexico;
import java.util.ArrayList;
import compilador.simbolos.Simbolo;
import compilador.simbolos.TablaSimboloBase;
if (!TablaSimboloBase.getInstance().existLexemaId(lexema)) {
TablaSimboloBase.getInstance().getSimbolosInicial().add(simbolo);
}
}
if (null != simbolo) {
this.logSalida += "\tToken: " + simbolo.getToken() + " Lexema: "
+ simbolo.getLexema() + "\n";
this.simbolos.add(simbolo);
} else {
this.logSalida += "\tERROR: " + lexema + "\n";
}
}
-----------------------------------------------------------------------------------
--------------
-----------------------------------------------------------------------------------
--------------