Está en la página 1de 7

INSTITUTO POLITECNICO NACIONAL

UPIICSA

Compiladores

09/09/22

ROSA LEON RODRIGO

4nm51
Reto de programación:
Para desarrollar el programa primeramente analice el
contendido de el archivo txt así mismo descifre un patrón el
cual es que todos los lenguajes en su definición contaban el
nombre seguido de un espacio y un guion , así mismo
comenzaban con un número o carácter o letra mayúscula,
entonces el propósito era hallar e imprimir ese nombre , otro
patrón que encontré fue que a partir de la línea 282
podemos encontrar las definiciones, entonces estos nos da
un plus para no leer esas 282 líneas.

Así mismo ya teniendo el patrón y un diagrama de flujo el


cual se nos proporciono al inicio de este trabajo comencé a implementar el Código.

El lenguaje el cual yo utilice para resolver este


diagrama fue java con el ide de NetBeans ,
seguido comencé a ver varias librerías las cuales
me permitieran analizar textos y archivos y
fueron las siguientes. donde La primera
(BufferedReader) nos permitirá leer una
sentencia de texto de entrada, la segunda
(FileReader) es para poder leer nuestro archivo
txt , la tercera (IOException) podremos usar las excepciones que son los errores que nosotros como
programadores no podemos evitar.

Las ultimas dos que pertenecen a (java.util.regex) (Pattern y Matcher) son las que nos permitirán
utilizar patrones personalizados mediante expresiones regulares para hacer coincidir cadenas
entonces podemos definir que “es una secuencia de caracteres que conforma un patrón de
búsqueda”.
Función de java :{ w+?,,s?,d?,d?,-?,.?,w?(?= -)}

\W: Nos muestra que va discriminar cualquier palabra alfanumérica

\s?: Este reconocerá cualquier espacio.

\d? Este nos reconoce cualquier digito individual por eso se usa dos veces por si la palabra cuenta
con dos dígitos.

\- Este reconoce cualquier guion .

\. Esta función nos reconoce cada punto.

(?= -) Esta función es la mas importante y es la que nos dará la búsqueda muy especifica ya que va
al final entonces todo lo que esta antes será buscado con las anteriores funciones pero añadiendo
un espacio seguido de un guion y al final no se incluye en la impresión.

Codrigo:

package com.readerto.readerlec;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.regex.Matcher;

import java.util.regex.Pattern;
public class ReaderLec {

public static void main(String[] args) {

long lineasTotales=0;

int listado=0;

try{ //se usa para la excepciones de el programa

BufferedReader leer = new BufferedReader(new


FileReader("C:/Users/oscar/Downloads/langlist.txt")); //ubicacion de el txt

String linea = leer.readLine(); //Va a leer linea

Pattern p = Pattern.compile("\\w+?\\s?\\d?\\d?\\-?\\.?\\w+?(?= -)");// buca coincidencia en


una cadena de

//texto patrones

//el signo ? nos dice que puede o no tener ese

while (linea!= null){ // para que no este al fin de el txt

if(lineasTotales >= 282){//nos llevara a la linea 282 donde comienzan los lenguajes

Matcher m = p.matcher(linea);//Macher busca coincidencias al patron

if(m.find()){// condicion por si encuentra el patron

System.out.println(listado+" "+m.group()); //El método group() de Matcher Class se


utiliza para

//obtener la subsecuencia de entrada que coincide con

//el resultado de la coincidencia anterior.

listado++;

linea=leer.readLine();//lee la siguiente linea

} else {//lee otra linea

linea=leer.readLine();

} else {//sigue leyendo hasta llegar a la linea deseada

linea=leer.readLine();
lineasTotales++;

leer.close();//Usar el método close() para cerrar el Scanner en Java después de leer el contenido
de un archivo

} catch(IOException e){

e.printStackTrace();

//El método

//printStackTrace() de la clase Java.lang.Throwable usado para imprimir este Throwable

//junto con otros detalles como el nombre de la clase y el número de línea donde ocurrió

//la excepción significa su backtrace.

}
Referencias: regexr.com

También podría gustarte