Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Estructura de Datos - Facultad de Ingenieria - Universidad Nacional de Jujuy
- *
- * @Autor: Equipo 4.1
- */
- /* @integrantes: | @Carrera: | @LU:
- Flores ,Cesar Ismael | Lic. en Sistemas | 1782
- Llampa, Ariel Angel Gabriel | Ing. Informatica | 8445
- Machaca, Rodrigo Agustin | Ing. Informatica | 8512
- Perez, Emanuel Ismael | Ing. Informatica | 8393
- Quispe Rojas, Moises Esteban Nicolas | Ing. Informatica | 7286
- El código de un analizador de lenguaje de marcado es semejante al que se presenta en el caso ejemplo que
- controla la parentización simple o un ejercicio de parentización múltiple. El lenguaje de marcado más
- conocido es HTML - Hyper Text Markup Language; en ese lenguaje el principio de una marca se encuentra
- entre los símbolos “<” y “>” y el final de la marca también se encuentra entre esos símbolos sólo que
- después del símbolo “<” se encuentra el símbolo “/”; de este modo tenemos <H1>algún texto</H1> o
- <p>otro texto </p>, las “marcas” tienen significado para los programas que presentan o muestran en
- pantalla el texto HTML.
- Codifique lo que haga falta para obtener un analizador de lenguaje de marcado de hipertexto de manera
- que pueda procesar una cadena de caracteres en ese formato que esté incorporada en el programa y por
- supuesto se pueda cambiar por otra; el texto debe contener marcas anidadas.
- El código debe facilitar un mecanismo para incorporar nuevas marcas con facilidad.
- Se debe considerar el caso particular de ciertas marcas que no necesitan de la marca de cierre, como ser
- <br/>.
- */
- package List;
- import java.util.ArrayList;
- public class ED_E6 {
- public static void main(String[] args) {
- (new ED_E6()).open();
- }
- public void open() {
- System.out.println("Se analizara el siguiente HTML: ");
- System.out.println("------------------------------");
- System.out.println(html);
- System.out.println("------------------------------");
- if (validateFinalStartMark()) {
- System.out.println("html BIEN escrito");
- }else{
- System.out.println("html MAL escrito");
- }
- System.out.println("Se obtubieron los siguientes Tags: ");
- ArrayList<String> tags = getTangs();
- System.out.println(tags);
- // validateTags
- String salida;
- Stack<String> stack = new Stack<String>();
- for(int i=0;i<tags.size();i++){
- if(tags.get(i).charAt(1)=='/'){
- System.out.println(stack.peek()+" - "+tags.get(i));
- stack.pop();
- }else{
- if(!tags.get(i).contains("/")){
- stack.push(tags.get(i));
- }
- }
- }
- if(stack.empty()){
- System.out.println("Cierre correcto");
- }else{
- System.out.println("ERROR Cierre incorrecto");
- }
- }
- public void validateTags(){
- }
- public ArrayList<String> getTangs(){
- ArrayList<String> tagsObtained = new ArrayList<String>();
- char letter;
- int beginIndex=0, endIndex=0;
- boolean bandBegin=false,bandEnd=false;
- for(int i=0;i<html.length();i++){
- letter=html.charAt(i);
- if(letter=='<'){
- beginIndex=i;
- bandBegin=true;
- }else{
- if(letter=='>'){
- endIndex=i;
- bandEnd=true;
- }
- }
- if(bandBegin && bandEnd){
- tagsObtained.add(html.substring(beginIndex, endIndex+1));
- bandBegin=false;
- bandEnd=false;
- }
- }
- return tagsObtained;
- }
- public boolean validateFinalStartMark() {
- Stack<Character> stack = new Stack<Character>();
- char c;
- for (int i = 0; i < html.length(); i++) {
- c = html.charAt(i);
- if ((c == '<') && (html.charAt(i + 1) == '/')) {
- stack.push(c);
- } else {
- if (c == '<') {
- stack.push(c);
- }
- }
- if (c == '>') {
- if (!stack.empty()) {
- stack.pop();
- } else {
- return false;
- }
- }
- }
- return stack.size() == 0;
- }
- // texto en HTML a analizar
- // private String html
- // = "<html>\n"
- // + "<head>\n"
- // + "<title>Mi pagina de ejemplo</title>\n"
- // + "</head>\n"
- // + "<body>\n"
- // + "Aqui va otro contenido <br/>\n"
- // + "</body>\n"
- // + "</html>";
- private String html
- ="<html>\n"
- + "<head>\n"
- + "<title>Title of tje document</title>\n"
- + "</head>\n"
- + "<body>\n"
- + "<h1>This is a heading</h1>\n"
- + "<p>This if a <br/> paragraph.</p>\n"
- + "</body>\n"
- + "</html>";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement