Pregunta

Estoy creando un programa que sigue ciertas reglas para dar lugar a un recuento de las palabras, sílabas y frases en un archivo de texto dado.

Una oración es una colección de palabras separadas por espacios en blanco que termina en una. o! o? Sin embargo, esto también es una frase:

Greetings, earthlings..

La forma en que he acercado a este programa es para escanear a través del archivo de texto un carácter a la vez utilizando getchar (). Me prohíbe trabajar con la totalidad del archivo de texto en la memoria, que debe ser un carácter o palabra a la vez.

Aquí está mi dilema: el uso de getchar () i puede averiguar lo que el carácter actual. No dejo de usar getchar () en un bucle hasta que encuentra el carácter EOF. Pero, si la frase tiene varios puntos al final, sigue siendo una sola frase. Lo que significa que necesito saber lo que el último carácter era antes el que estoy analizando, y el que después de ella. A través de mi pensamiento, esto significaría otra llamada getchar (), pero eso crearía problemas cuando vaya a escanear en el siguiente carácter (su ahora dio un carácter).

¿Alguien tiene una sugerencia en cuanto a cómo podría determinar que la frase anterior, es de hecho una oración?

Gracias, y si necesita alguna aclaración o cualquier otra cosa, que me haga saber.

¿Fue útil?

Solución

Sólo tiene que implementar un máquina de estados . Una vez que ha encontrado el final de una frase que permanezca en ese estado hasta que encuentre el comienzo de una nueva frase (normalmente esto sería un carácter de espacio no blancos que no sea un terminador como.! O?).

Otros consejos

Es necesario una gramática extensible. Mira, por ejemplo, en expresiones regulares y tratar de construir uno.

En general, el lenguaje humano es diverso y no analizable fácilmente especialmente si usted tiene el lenguaje coloquial de analizar o diferentes idiomas. En algunos idiomas puede incluso no estar claro cuál es la diferencia entre una palabra y una frase es .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top