Page 68 - LENGUAJES FORMALES AUTOMATAS Y COMPILADOS
P. 68

68


                                                         ENTREGA V

                                                EXPRESIONES REGULARES

                  La mayoría de los programas modernos, poseen las librerías pattern y matcher, que se utilizan
                  para detectar o aceptar cadenas en atención a un patrón dado. Tanto JAVA como Visual Basic,
                  PHP y demás tiene la capacidad de realizar esto con la teoría dada. Existen otros softwares para
                  crear y verificar la correcta construcción de expresiones regulares.

                               Programa que reconoce palabras reservadas, variables, etc. en JAVA.

                  PACKAGE ALGODEMI;
                  IMPORT JAVA.UTIL.REGEX.MATCHER;
                  IMPORT JAVA.UTIL.REGEX.PATTERN;
                  /**
                   *
                   * @AUTHOR LENOVO
                   */
                  PUBLIC CLASS ALGODEMI {
                      /**
                       * @PARAM ARGS THE COMMAND LINE ARGUMENTS
                       */
                      PUBLIC STATIC VOID MAIN(STRING[] ARGS)
                      { STRING PATRON = ( "(WHILE) | ( ([A-ZA-Z])) | ([>|<|=]+) | ([0-9]+)| ([(|)]+) |([{|}]+) |(;)");
                        STRING TEXTOEX = "WHILE (X=0) < (Y=0)";
                        PATTERN  P = PATTERN.COMPILE(PATRON);
                        MATCHER ESTO = P.MATCHER(TEXTOEX);
                        WHILE ( ESTO.FIND())
                          { STRING TK1 = ESTO.GROUP(1);
                            IF (TK1 != NULL)
                               { SYSTEM.OUT.PRINTLN("PALABARA RESERVADA " + TK1);
                               }
                            STRING TK2 = ESTO.GROUP(2);
                            IF (TK2 != NULL)
                               { SYSTEM.OUT.PRINTLN("VARIABLE  " + TK2);
                               }
                            STRING TK3 = ESTO.GROUP(3);
                            IF (TK3 != NULL)
                               { SYSTEM.OUT.PRINTLN("OPERADOR  " + TK3);
                               }
                            STRING TK4 = ESTO.GROUP(4);
                            IF (TK4 != NULL)
                               { SYSTEM.OUT.PRINTLN("NUMERO " + TK4);
                               }
                            STRING TK5 = ESTO.GROUP(5);
                            IF (TK5 != NULL)
                               { SYSTEM.OUT.PRINTLN("OPERADOR RELACIONAL  " + TK5);
                               }
                            STRING TK6 = ESTO.GROUP(6);
                            IF (TK6 != NULL)
                               { SYSTEM.OUT.PRINTLN("VARIABLE:" + TK6);
                               }
                            STRING TK7 = ESTO.GROUP(7);
                            IF (TK7 != NULL)
                               { SYSTEM.OUT.PRINTLN("OPERADOR IGUAL  " + TK7);
                               }
                           /* STRING TK8 = ESTO.GROUP(8);
                            IF (TK8 != NULL)
                               { SYSTEM.OUT.PRINTLN("NÚMERO:  " + TK8);
                               }*/
                          }
                      }
                          // TODO CODE APPLICATION LOGIC HERE
                      }
   63   64   65   66   67   68   69   70   71   72   73