61
Capítulo VIII: El Lenguaje de Reglas Gramaticales 70 8. EL LENGUAJE DE REGLAS GRAMATICALES 8.0 Introducción al lenguaje de reglas. Un elemento de regla será aquello que se encuentre entre dos espacios en blanco. Una regla puede estar compuesta por un solo elemento o por varios elementos uno detrás de otro con espacios en blanco intermedios ; siempre que se encuentren en la misma línea y que no sobrepasemos los 256 caracteres todo formará una sola regla gramatical. Para nosotros una regla será cada una de las líneas válidas de los ficheros de reglas. En los ficheros de reglas puede haber también líneas de comentario y líneas en blanco. 8.1 Estudio de los distintos elementos del lenguaje de reglas. Palabra Palabra es un grupo de caracteres alfanuméricos, con la condición de que empiece por una letra. Una palabra, además de caracteres alfanuméricos puede contener cualquier símbolo que nos se clasifique como signo de

capitulo8 es

Embed Size (px)

DESCRIPTION

ocho

Citation preview

Capítulo VIII: El Lenguaje de Reglas Gramaticales

70

8. EL LENGUAJE DE REGLAS GRAMATICALES

8.0 Introducción al lenguaje de reglas.

Un elemento de regla será aquello que se encuentre entre dos espacios en

blanco.

Una regla puede estar compuesta por un solo elemento o por varios

elementos uno detrás de otro con espacios en blanco intermedios ; siempre que

se encuentren en la misma línea y que no sobrepasemos los 256 caracteres todo

formará una sola regla gramatical.

Para nosotros una regla será cada una de las líneas válidas de los

ficheros de reglas. En los ficheros de reglas puede haber también líneas de

comentario y líneas en blanco.

8.1 Estudio de los distintos elementos del lenguaje de reglas.

✦ Palabra

Palabra es un grupo de caracteres alfanuméricos, con la condición de

que empiece por una letra. Una palabra, además de caracteres alfanuméricos

puede contener cualquier símbolo que nos se clasifique como signo de

Capítulo VIII: El Lenguaje de Reglas Gramaticales

71

puntuación excepto : guiones ‘-‘ , subrayados ‘_’ y apóstrofes ‘\’’ (en inglés

para indicar genitivo sajón) .

En el proceso de comparación de la palabra leída del texto con la palabra

de nuestra regla nos es indiferente si los caracteres están en mayúsculas o

minúsculas. No somos “case sensitive” .

Ejemplo de regla :

Vamos comparando todas las palabras del texto con ésta y cuando sean

iguales, se cumple la regla. Sin importarnos si es una está en mayúscula y la

otra en minúscula.

En cambio si delante de la palabra leída del texto hubiera algún signo de

puntuación, la regla no se cumpliría. En este caso, si quisiéramos verificar la

igualdad, sería necesario completar la regla con algún otro elemento del

lenguaje de reglas.

✦ @

Este símbolo cuando aparece delante de una palabra supone la negación

de la palabra, buscamos palabras del texto que no coincidan con la palabra de

la regla. Teniendo en cuenta que dos palabras no serán iguales cuando difieran

en algún carácter, no siendo suficiente para la desigualdad que uno de los

caracteres esté en mayúscula y el otro en minúscula.

word

Capítulo VIII: El Lenguaje de Reglas Gramaticales

72

También hemos de tener en cuenta que si la comparación se realiza con

una palabra del texto que lleve un signo de puntuación delante, aunque la

palabra de la regla sea idéntica a la leída, el resultado de la comparación será

negativo.

Ejemplo de regla :

✦ ?

Delante de una palabra el signo cierre de interrogación busca que la

palabra de la regla sea igual a la del texto pero en este caso sí distinguimos

entre mayúsculas y minúsculas, sí somos “case sensitive”. Por supuesto, se

sigue cumpliendo que un signo de puntuación delante de la palabra leída del

texto destruye la posible igualdad.

Ejemplo de regla :

@word

?Word

Capítulo VIII: El Lenguaje de Reglas Gramaticales

73

✦ ¿

Ésta es la negación del elemento anterior, buscamos aquellos términos

del texto que sean diferentes a la palabra de la regla. Siendo diferentes desde el

momento en unos caracteres vayan en mayúscula y otros en minúscula. Y como

siempre, también en el caso de haber algún signo de puntuación delante de la

palabra extraída del texto.

Ejemplo de regla :

✦ -

El guión delante de una palabra indica que estamos buscando una

terminación, que la palabra de la regla, en realidad, es una terminación y como

tal iremos haciendo las comparaciones con las palabras del texto.

No vamos a distinguir entre mayúsculas y minúsculas. Pero un signo de

puntuación delante de la palabra del texto desharía la posible identidad.

Ejemplo de regla :

¿Word

-tion

Capítulo VIII: El Lenguaje de Reglas Gramaticales

74

El guión puede combinarse con otros elementos diferentes para formar

un único elemento de la regla como veremos más adelante.

✦ #

La almohadilla es la negación del elemento anterior. Buscamos aquellos

términos del texto cuya terminación no coincida con la especificada en la regla.

No es sensible a las mayúsculas y minúsculas, pero sí a la existencia de signos

de puntuación delante de la palabra del texto a comparar.

Ejemplo de regla :

La almohadilla paralelamente al caso del guión se puede combinar con

varios elementos diferentes para dar lugar a un único elemento de regla.

✦ +

Indica que lo que le sigue es una categoría sintáctica. Las categorías

sintácticas pueden ser de dos tipos : genéricas (en este caso lo que sigue al signo

‘+’ es una cadena alfabética) o concretas (en este caso lo que será un número de

categoría lo que seguirá al signo ‘+‘) . O sea, la palabra del texto es buscada en

el diccionario y se comprueba que pueda tener la categoría especificada en la

regla.

#tion

Capítulo VIII: El Lenguaje de Reglas Gramaticales

75

Los números de categoría concreta son las siguientes :

10 nombre singular.

11 nombre plural.

12 nombre cuyo singular y plural coinciden.

13 abreviaturas, acrónimos y siglas.

14 genitivos sajones.

20 adjetivo en grado positivo.

21 adjetivo en grado comparativo.

22 adjetivo en grado superlativo.

30 pronombre.

40 adverbio.

50 verbo en infinitivo.

51 verbo en tercera persona del singular.

52 verbo en pasado.

53 verbo en participio.

54 verbo en gerundio.

60 interjección.

70 conjunción.

80 preposición.

90 artículo indeterminado.

91 artículo determinado.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

76

Las categorías genéricas serán :

nombre, engloba las categorías concretas:

10, 11, 12 , 13 y 14.

adjetivo, engloba las categorías concretas:

20, 21 y 22.

pronombre, que engloba la categoría concreta:

30.

adverbio, engloba la categoría concreta:

40.

verbo, engloba las categorías concretas:

50, 51 y 52.

interjeccion, que engloba la categoría concreta:

60.

conjuncion, engloba la categoría concreta:

70.

preposicion, engloba la categoría concreta:

80.

pronombre, que engloba la categoría concreta:

30.

articulo, que engloba las categorías concretas:

90 y 91.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

77

Las categorías genéricas se escribirán en los ficheros de reglas sin tildes,

en el caso de que las llevaran.

Ejemplos de reglas :

El signo ‘+’ puede combinarse con otros elementos diferentes para

formar un único elemento de la regla, como posteriormente veremos. Es un

elemento sensible a la presencia de algún signo de puntuación delante del

termino leído de la entrada.

✦ !

Este elemento es la negación del anterior. Exigimos que la palabra del

texto tenga una categoría diferente de la especificada. O mejor dicho, que no

pueda tener dicha categoría. Al igual que en el caso anterior puede ir seguido

de categorías genéricas y concretas. Las categorías genéricas y concretas son las

mismas que en el caso anterior.

+nombre

+adjetivo

+52

+20

Capítulo VIII: El Lenguaje de Reglas Gramaticales

78

Ejemplos de reglas :

El signo ‘ !’ puede combinarse con otros elementos diferentes para

formar un único elemento de regla. Es un elemento sensible a la presencia de

signo de puntuación delante de la palabra sobre la cual aplicamos la regla.

✦ +categoría-genérica_categoria-concreta

Este es un elemento de regla formado a partir de los anteriores. Implica

que la palabra debe de tener la categoría genérica indicada, pero no la concreta.

Se deben de cumplir las dos condiciones a la vez sobre el mismo vocablo de

entrada.

Ejemplo de regla :

!nombre

!adjetivo

!52

!20

+nombre_11

La palabra tomada del flujo entrada tiene que cumplir ser

nombre y no ser la categoría concreta 11 , así, la palabra debe ser nombre

y no ser plural.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

79

Es sensible a la presencia de signos de puntuación delante del elemento

del texto a evaluar. Es un elemento de regla compuesto. Los elementos

compuestos se forman enlazando con el subrayado ‘_’ .

✦ &

Nos indica que hemos de encontrar un signo de puntuación, que sigue

a este símbolo, en el flujo de entrada .

El formato general sería :

✦ &signo

Siendo el caso del punto un caso especial. Pues no puede ir

solo, detrás ha de llevar un modificador : ‘+’ o ‘-‘ :

✦ &.+

Indica que el signo que buscamos es un terminador

de frase : un punto, un cierre de interrogación, o un cierre

de admiración : ‘.’, ‘ ?’ o ‘ !’.

✦ &.-

Aquí el signo buscado es exclusivamente el punto :

‘.’.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

80

Ejemplos de regla :

✦ $

Nos indica que hemos de encontrar un signo de puntuación, que ha de

ser diferente del que sigue al símbolo. Es la negación del ‘&’.

El formato general sería :

✦ $signo

Siendo el caso del punto un caso especial. Pues no puede ir

solo, detrás ha de llevar un modificador : ‘+’ o ‘-‘ :

✦ $.+

Indica que el signo que buscamos es cualquiera que

no sea un terminador de frase : un punto, un cierre de

interrogación, o un cierre de admiración : ‘.’, ‘ ?’ o ‘ !’.

&.+

&.-

&,

& ;

Capítulo VIII: El Lenguaje de Reglas Gramaticales

81

✦ $.-

Aquí el signo buscado ha de ser diferente al

punto : ‘.’.

Ejemplos de regla :

✦ [lista]

Buscamos la palabra leída del texto en la lista contenida en el fichero.

Esta lista está formada por reglas, pudiendo estas reglas ser simples, las

formadas por un solo elemento ; o complejas, formadas por el encadenamiento

de varios elementos. Estos elementos pueden ser de cualquier tipo, de los

vistos hasta ahora o de los que vamos a ir estudiando más adelante. Una lista,

por supuesto, puede contener en sus reglas más listas, que a su vez pueden

contener a otras. El límite de anidamientos posibles, teóricamente, no existe.

Una vez que encontramos la palabra del texto en la lista, se detiene la

búsqueda. Habrá una regla por línea del fichero.

$.+

$.-

$,

Capítulo VIII: El Lenguaje de Reglas Gramaticales

82

El nombre de la lista es el nombre del fichero que la contiene sin

extensión, el programa automáticamente le añadirá la extensión ‘.rgl’. Tenemos

que tener cuidado con esto, pues, al crear el fichero de la lista, es necesario

poner la extensión, aunque luego en las reglas los llamemos de forma

abreviada.

Dentro de una lista podemos tener reglas referentes a signos : ‘&’ y ‘$’.

Ejemplo de regla en la página siguiente:

[fichero1]

El contenido de fichero1 podría ser :

&, the

is -ed

+nombre_11 +51 [fichero2]

El resultado de aplicar esta regla sería positivo si la palabra del

texto que vamos a analizar, cumple alguna de las reglas contenidas en

el fichero1.

Evidentemente, las reglas como : +nombre_11 +51

[fichero2], implican un proceso de avance del puntero sobre el texto. Si

se cumpliera, habríamos avanzado al menos tres palabras de texto, en

función, claro está, del contenido de fichero2 y de posibles

anidamientos posteriores.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

83

✦ <lista>

Es la negación del elemento anterior.

Buscamos la palabra leída del texto en la lista contenida en el fichero.

Esta lista está formada por reglas, pudiendo estas reglas ser : simples (las

formadas por un solo elemento) o complejas (formadas por el encadenamiento

de varios elementos). Estos elementos pueden ser de cualquier tipo, de los

vistos hasta ahora o de los que vamos a ir estudiando más adelante. Una lista,

por supuesto, puede contener en sus reglas más listas, que a su vez pueden

contener a otras. El límite de anidamientos posibles, teóricamente, no existe. El

tipo de listas permitidas para los anidamientos son tanto las positivas como las

negativas. Habrá una regla por línea del fichero.

El nombre de la lista es el nombre del fichero que la contiene sin

extensión, el programa automáticamente le añadirá la extensión ‘.rgl’. Tenemos

que tener cuidado con esto, pues al crear el fichero de la lista es necesario poner

la extensión, aunque luego en las reglas los llamemos de forma abreviada.

Dentro de una lista podemos tener reglas referentes a signos : ‘&’ y ‘$’.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

84

Ejemplo0 de regla :

<fichero1>

El contenido de fichero1 podría ser :

&, that

are -ing

+verbo_51 the [fichero2]

El resultado de aplicar esta regla sería positivo, si la palabra del

texto que vamos a analizar no cumple ninguna de las reglas contenidas

en el fichero1.Evidentemente, las reglas como : +verbo_51 the [fichero2],

implican un proceso de avance del puntero sobre el texto. Si se

cumpliera, habríamos avanzado al menos tres palabras de texto, en

función, claro está, del contenido de fichero2 y de posibles anidamientos

posteriores. Pero aquí a diferencia del tipo de lista anterior ‘[ ]’, si se

cumple alguna de las reglas contenidas en el fichero1, el resultado de la

regla ‘<>’ será negativo. Quedando el puntero del texto en el punto de

partida inicial, por lo que tendremos que retroceder todo lo que hayamos

avanzado en el interior del fichero1 y anidamientos posteriores. Si no se

cumplieran ninguna de las reglas del interior de fichero1, entonces el

resultado de aplicar ‘<>’ positivo. Avanzaríamos una palabra en el flujo

de entrada o no en función de que termino haya sido el comparado con

‘<>’. Si la comparación ha sido realizada con una palabra simplemente,

sin que vaya delante ningún signo de puntuación, avanzaríamos una

palabra en el flujo de entrada. En cambio, si la comparación ha sido

realizada con una palabra que lleva delante un

Capítulo VIII: El Lenguaje de Reglas Gramaticales

85

Continuación del ejemplo0 :

Ejemplo1 de texto con regla aplicada :

signo de puntuación, aunque el resultado de aplicar la regla haya

sido positivo, no avanzamos en el flujo de entrada, dado que,

claramente, ninguna de las reglas anteriores podrían ser aplicadas a una

palabra que fuera precedida por un signo de puntuación.

Texto : “ cinema. The film”

Regla : +nombre <fichero1>

Contenido de fichero1 :

+verbo

+preposicion

En este caso, la regla se cumple sobre el texto pues después de la

palabra “cinema”, que sí que es un nombre, no aparece ninguna palabra

con la categoría nombre o con la categoría preposición. Después de la

palabra “cinema” lo que tenemos es un punto, por eso no avanzaremos

en el flujo de lectura y nos quedaremos en “. The “ para pasar aplicar la

siguiente regla.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

86

Ejemplo2 de texto con regla aplicada :

✦ *<lista>

Elemento que funciona de manera parecida al anterior con la diferencia

del modo de avance en el texto de entrada. Aquí, si la palabra objeto de la

comparación lleva un signo de puntuación delante, sí que avanzaremos. Es útil

cuando la lista negativa va al comienzo de una regla compuesta de varios

elementos.

Texto : “. The film”

Regla : <fichero2> +nombre

Contenido de fichero2 :

+adjetivo

-ing

Ahora, vemos que “. The “ cumplen el contenido de la lista

negativa, por lo tanto aunque haya un punto delante de la palabra “The

“, sería necesario avanzar en el texto y pasar a “film” para poder aplicar

sobre esta la siguiente parte de la regla : +nombre. Tal y como está la

regla escrita ahora el resultado sería negativo.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

87

Retomando el ejemplo2 del elemento anterior, en el que vimos la

necesidad de esta modificación .

✦ -terminación_[lista]

Este elemento de regla es un elemento compuesto. Formado a partir del

símbolo de terminación ‘-‘, enlazado con una lista positiva a través del

subrayado ‘_’. Su significado sería : que la palabra tenga la terminación

indicada y que, además, cumpla alguna de las condiciones contenidas en la

lista.

En este tipo de lista que forma parte de un elemento compuesto, no se

permiten reglas o condiciones que impliquen un avance en el flujo del texto de

Texto : “. The film”

Regla : *<fichero2> +nombre

Contenido de fichero2 :

+adjetivo

-ing

Ahora, la regla sí que se cumpliría pues después de aplicar

‘*<fichero2>’ a “. The”, avanzaríamos en el flujo de entrada y

aplicaríamos ‘+nombre’ a la palabra “film”.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

88

entrada, pues son condiciones que ha de cumplir la palabra que estamos

inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la

condición principal, que sería la terminación, sobre un mismo elemento del

texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación

pedida y cumple alguna de las condiciones de la lista ; una vez que se cumple

una condición de la lista, no seguimos inspeccionado el resto.

Por lo tanto, si se cumple la regla global, avanzamos una palabra en el

flujo de entrada.

Ejemplo de regla :

-ing_[fichero1]

El contenido de fichero1 :

+preposicion

[fichero2]

El contenido del fichero2 :

+verbo

+conjuncion

Estamos pidiendo que la palabra tenga la terminación ‘ing’ y que,

al mismo tiempo, pueda ser preposición o que cumpla alguna de las

reglas (condiciones) incluidas dentro de la lista : ‘[fichero2]’.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

89

✦ -terminación_<lista>

Este elemento de regla es un elemento compuesto, especular respecto al

anterior. Formado a partir del símbolo de terminación ‘-‘, enlazado con una

lista negativa a través del subrayado ‘_’. Su significado sería : que la palabra

tenga la terminación indicada y que, además, no cumpla ninguna de las

condiciones contenidas en la lista.

En este tipo de lista que forma parte de un elemento compuesto, no se

permiten reglas o condiciones que impliquen un avance en el flujo del texto de

entrada, pues son condiciones que ha de cumplir la palabra que estamos

inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la

condición principal, que sería la terminación, sobre un mismo elemento del

texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación

pedida y no cumple ninguna de las condiciones de la lista.

Por lo tanto, si se cumple la regla global, avanzaremos una palabra en el

flujo de entrada.

Ejemplo de regla :

Capítulo VIII: El Lenguaje de Reglas Gramaticales

90

✦ #terminación_[lista]

Este elemento de regla es un elemento compuesto. Formado a partir del

símbolo de negación de terminación ‘#‘, enlazado con una lista positiva a través

del subrayado ‘_’. Su significado sería : que la palabra no tenga la terminación

indicada y que además cumpla alguna de las condiciones contenidas en la lista.

En este tipo de lista que forma parte de un elemento compuesto, no se

permiten reglas o condiciones que impliquen un avance en el flujo del texto de

entrada, pues son condiciones que ha de cumplir la palabra que estamos

inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la

condición principal, que sería la terminación, sobre un mismo elemento del

texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación

pedida y cumple alguna de las condiciones de la lista, una vez que se cumple

una condición de la lista no seguimos inspeccionado el resto.

-ing_<fichero1>

El contenido de fichero1 :

+preposicion

[fichero2]

El contenido del fichero2 :

going

doing

making

reading

Estamos pidiendo que la palabra tenga la terminación ‘ing’ y que

al mismo tiempo no pueda ser preposición y que no esté en el fichero2.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

91

Por lo tanto, si se cumple la regla global, avanzamos una palabra en el

flujo de entrada.

Ejemplo de regla :

✦ #terminación_<lista>

#ing_[fichero1]

El contenido de fichero1 :

+preposicion

[fichero2]

El contenido del fichero2 :

+verbo

+conjuncion

+adverbio

besides

Estamos pidiendo que la palabra no tenga la terminación ‘ing’ y

que al mismo tiempo pueda ser preposición o que cumpla alguna de las

reglas (condiciones) incluidas dentro de la lista : ‘[fichero2]’.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

92

Este elemento de regla es un elemento compuesto, especular respecto al

anterior. Formado a partir del símbolo de negación de terminación ‘#‘,

enlazado con una lista negativa a través del subrayado ‘_’. Su significado

sería : que la palabra no tenga la terminación indicada y que además no cumpla

ninguna de las condiciones contenidas en la lista.

En este tipo de lista que forma parte de un elemento compuesto, no se

permiten reglas o condiciones que impliquen un avance en el flujo del texto de

entrada, pues son condiciones que ha de cumplir la palabra que estamos

inspeccionando. Condiciones que han de cumplirse al mismo tiempo que la

condición principal, que sería la terminación, sobre un mismo elemento del

texto. Así, esta regla se cumple si la palabra inspeccionada tiene la terminación

pedida y no cumple ninguna de las condiciones de la lista.

Por lo tanto, si se cumple la regla global, avanzaremos una palabra en el

flujo de entrada.

Ejemplo de regla :

#ing_<fichero1>

El contenido de fichero1 :

+preposicion

[fichero2]

Capítulo VIII: El Lenguaje de Reglas Gramaticales

93

✦ [lista1]_[lista2]

Elemento compuesto por dos listas positivas enlazadas por un

subrayado ‘_’. Su significado es: que la palabra cumpla alguna regla de la

primera lista y luego, a su vez, alguna otra de la segunda.

Dentro de estas lista2 no se permiten reglas que impliquen avances de

lectura sobre el texto. En cambio, en la lista1 sí que se permiten avances, pero

aunque el resultado sea positivo siempre se retrocede la última palabra leída

para que sea a esta palabra a la que se pasen a aplicar las reglas de la lista2 . Si

se cumplen las reglas de las dos listas a la vez, entonces avanzaremos esta

última palabra.

El contenido del fichero2 :

+conjuncion

about

Estamos pidiendo que la palabra no tenga la terminación ‘-ing’ y

que al mismo tiempo no pueda ser preposición y que no esté en el

fichero2 (que no cumpla ninguna de las reglas contenidas en el

fichero2).

Capítulo VIII: El Lenguaje de Reglas Gramaticales

94

Ejemplo de regla :

✦ [lista1]_<lista2>

[fichero1]_[fichero2]

Contenido fichero1 :

the [lista-terminaciones]

Contenido lista-terminaciones :

-ment

-ness

-tion

-ity

Contenido fichero2 :

+nombre

+adjetivo

La regla pide que haya un ‘the’ y que la palabra siguiente tenga

alguna de las terminaciones de la lista de terminaciones y además

pueda tener alguna de las categorías indicadas en el fichero2.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

95

Elemento compuesto por dos listas una positiva y otra negativa

enlazadas por un subrayado ‘_’. Su significado es: que la palabra cumpla

alguna regla de la primera lista y luego, a su vez, no cumpla ninguna de las de

la segunda.

Dentro de estas lista2 no se permiten reglas que impliquen avances de

lectura sobre el texto. En cambio, en la lista1 sí que se permiten avances pero,

aunque el resultado sea positivo, siempre se retrocede la última palabra leída

para que sea a esta palabra a la que se pasen a aplicar las reglas de la lista2 . Si

se cumplen alguna de las reglas de la primera lista y ninguna de la segunda

lista, entonces avanzaremos esta última palabra.

Ejemplo de regla :

[fichero1]_<fichero2>

Contenido fichero1 :

the [lista-terminaciones]

Contenido lista-terminaciones :

-ment

-ness

Capítulo VIII: El Lenguaje de Reglas Gramaticales

96

✦ <lista1>_[lista2]

Elemento compuesto por dos listas la primera negativa y la segunda

positiva enlazadas por un subrayado ‘_’. Su significado es: que la palabra no

cumpla ninguna de las reglas de la primera lista y luego a su vez si cumpla

alguna de la segunda.

Dentro de la lista2 no se permiten reglas que impliquen avances de lectura

sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.

-tion

-ity

Contenido fichero2 :

+nombre

+adjetivo

La regla pide que haya un ‘the’ y que la palabra siguiente tenga alguna

de las terminaciones de la lista de terminaciones y no tenga ninguna de las

categorías indicadas en la lista segunda.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

97

Ejemplo de regla :

✦ <lista1>_<lista2>

Elemento compuesto por dos listas negativas enlazadas por un

subrayado ‘_’. Su significado es: que la palabra no cumpla ninguna regla de la

primera lista y luego, a su vez, no cumpla ninguna de las de la segunda.

<fichero1>_[fichero2]

Contenido fichero1 :

-ment

-ness

-tion

-ity

Contenido fichero2 :

+nombre

+adjetivo

La regla pide que la palabra no tenga ninguna de las

terminaciones del fichero1 y además obliga a tener alguna de las

categorías indicadas en el fichero2.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

98

Dentro de la lista2 no se permiten reglas que impliquen avances de

lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.

Ejemplo de regla :

<fichero1>_<fichero2>

Contenido fichero1 :

+nombre

+adjetivo

Contenido fichero2 :

-ment

-ness

-tion

-ity

La regla pide que la palabra no tenga ninguna de las categorías

del fichero1 y que además no tenga ninguna de las terminaciones

indicadas en la lista segunda.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

99

✦ *<lista1>_[lista2]

Elemento compuesto por dos listas la primera es negativa y la segunda

es positiva, enlazadas por un subrayado ‘_’. Su significado es: que la palabra

no cumpla ninguna de las reglas de la primera lista y luego a su vez si cumpla

alguna de la segunda.

Funciona casi igual que su versión sin asterisco, sólo que aquí, sí

empezáramos a aplicar la regla en un signo seguido de palabra y, si la regla se

cumpliera (en función de lo que hubiera dentro de lista1), el signo desaparece

(saltamos el signo) y ya la siguiente regla se aplicaría desde la palabra que

había después del signo.

Dentro de la lista2 no se permiten reglas que impliquen avances de

lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.

Ejemplo de regla :

*<fichero1>_[fichero2]

Contenido fichero1 :

-ment

-ness

-tion

-ity

Contenido fichero2 :

+nombre

+adjetivo

Capítulo VIII: El Lenguaje de Reglas Gramaticales

100

✦ *<lista1>_<lista2>

Elemento compuesto por dos listas negativas enlazadas por un

subrayado ‘_’. Su significado es: que la palabra no cumpla ninguna regla de la

primera lista y luego a su vez no cumpla ninguna de las de la segunda.

Funciona casi igual que su versión sin asterisco, solo que aquí si

empezáramos a aplicar la regla en un signo seguido de palabra, si la regla se

cumpliera (en función de lo que hubiera dentro de lista1), el signo desaparece

(saltamos el signo) y ya la siguiente regla se aplicaría desde la palabra que

había después del signo.

Dentro de la lista2 no se permiten reglas que impliquen avances de

lectura sobre el texto. Si se cumplen las dos a la vez, entonces avanzaremos.

La regla pide que la palabra no tenga ninguna de las

terminaciones del fichero1 y además obliga a tener alguna de las

categorías indicadas en el fichero2. Si aplicáramos la regla sobre el

texto :

, the theatre

Claramente la secuencia de texto : ‘,the’ cumple la regla, pero al

aplicar esta regla la siguiente se empezaría a aplicar en el texto : ‘ the

theatre’ (como vemos el signo ha desaparecido).

Capítulo VIII: El Lenguaje de Reglas Gramaticales

101

Ejemplo de regla :

*<fichero1>_<fichero2>

Contenido fichero1 :

+nombre

+adjetivo

Contenido fichero2 :

-ment

-ness

-tion

-ity

La regla pide que la palabra no tenga ninguna de las categorías

del fichero1 y que además no tenga ninguna de las terminaciones

indicadas en la lista segunda. Si aplicáramos la regla sobre el texto :

, the theatre

Claramente la secuencia de texto : ‘,the’ cumple la regla pero al

aplicar esta regla la siguiente se empezaría a aplicar en el texto : ‘ the

theatre’, como vemos el signo ha desaparecido.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

102

✦ +categoría_[lista]

Elemento compuesto por una categoría, que puede ser tanto genérica

como concreta (numérica), unida mediante un subrayado ‘_’ con una lista

positiva ‘[ ]’.

El significado es: que la palabra a comparar tenga la categoría

especificada y además cumpla alguna de las reglas de la lista.

Como todas las listas de un elemento de regla compuesto, en este caso no

están permitidas las reglas que conlleven un avance de lectura en el texto.

Ejemplo de reglas :

+nombre_[fichero1]

+11_[fichero1]

Contenido fichero1 :

-ment

-ness

-tion

-ity

En este caso exigimos que la palabra tenga las categorías

exigidas y que además cumpla alguna de las reglas contenidas en

fichero1. En fichero1 podríamos tener terminaciones por ejemplo.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

103

✦ +categoría_<lista>

Elemento compuesto por una categoría, que puede ser tanto genérica

como concreta (numérica), unida mediante un subrayado ‘_’ con una lista

negativa ‘<>’.

El significado es: que la palabra a comparar tenga la categoría

especificada y además no cumpla ninguna de las reglas de la lista.

Como todas las listas de un elemento de regla compuesto, en este caso no

están permitidas las reglas que conlleven un avance de lectura en el texto.

Ejemplo de reglas :

+nombre_<fichero1>

+11_<fichero1>

Contenido fichero1 :

-ment

-ness

-tion

En este caso exigimos que la palabra tenga las categorías

exigidas y que además no cumpla ninguna de las reglas contenidas en

fichero1. En fichero1 podríamos tener terminaciones por ejemplo. 0 sea,

que la palabra tenga la categoría pero que no tenga ninguna de las

terminaciones especificadas en la lista.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

104

✦ !categoría_[lista]

Elemento compuesto por una negación de categoría, que puede ser tanto

genérica como concreta (numérica), unida mediante un subrayado ‘_’ con una

lista positiva ‘[]’.

El significado es: que la palabra a comparar no tenga la categoría

especificada y además cumpla alguna de las reglas de la lista.

Como todas las listas de un elemento de regla compuesto, en este caso no

están permitidas las reglas que conlleven un avance de lectura en el texto.

Ejemplo de reglas :

!nombre_[fichero1]

!11_[fichero1]

Contenido fichero1 :

-ment

-ness

-tion

-ity

En este caso exigimos que la palabra no tenga las categorías

exigidas y que además cumpla alguna de las reglas contenidas en

fichero1. En fichero1 podríamos tener terminaciones por ejemplo.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

105

✦ !categoría_<lista>

Elemento compuesto por una negación de categoría, que puede ser tanto

genérica como concreta (numérica), unida mediante un subrayado ‘_’ con una

lista negativa ‘<>’.

El significado es: que la palabra a comparar no tenga la categoría

especificada y además no cumpla ninguna de las reglas de la lista.

Como todas las listas de un elemento de regla compuesto, en este caso no

están permitidas las reglas que conlleven un avance de lectura en el texto.

Ejemplo de reglas :

!nombre_<fichero1>

!11_<fichero1>

Contenido fichero1 :

-ment

-ness

-tion

En este caso exigimos que la palabra no tenga las categorías

exigidas y que además no cumpla ninguna de las reglas contenidas en

fichero1. En fichero1 podríamos tener terminaciones por ejemplo. 0 sea,

que la palabra no tenga la categoría pero que no tenga ninguna de las

terminaciones especificadas en la lista.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

106

✦ :[lista1][lista2][lista3]

Elemento compuesto por los dos puntos ‘ :’ seguidos de tres lista

positivas todo ello sin espacios intermedios.

Su significado sería : Avanza en el texto de entrada hasta encontrar

alguno de los elementos o reglas de la lista1, que serían las condiciones de

parada del avance ; en este proceso de avance , a su vez, vamos comprobando

las condiciones o reglas de la lista2 y por cada ocurrencia se incrementará un

contador asociado a cada una de las condiciones. Al llegar a alguna condición

de parada de la lista1, comprobamos que el número de ocurrencias de las

condiciones de la lista2 se corresponden con las especificas en la lista3. En caso

afirmativo, el resultado de la regla sería positivo ; si no, aunque hayamos

encontrado alguna de las condiciones de parada, al no cumplirse los

requerimientos referentes a las condiciones de la lista2, el resultado sería

negativo.

Es un elemento o regla útil para distinguir diferentes tipos de oraciones,

pues podemos leer el texto de punto a punto, comprobado condiciones.

Vamos a analizar detenidamente las diferentes partes de este elemento :

[lista1]

Esta lista contiene la condición o condiciones que buscamos, son

las condiciones de parada. Se va avanzando en el texto hasta encontrar

una de ellas o, en su defecto, un terminador de frase : ‘.’, ‘ ?’ o ‘ !’. Así, no

podremos saltarnos los signos de puntuación que sean terminadores de

frase. No podremos aplicar ninguna regla que implique dos oraciones

diferentes. Si encontráramos un terminador de frase antes que las

Capítulo VIII: El Lenguaje de Reglas Gramaticales

107

condiciones de parada, detenemos el proceso de lectura y el resultado

del la regla sería negativo. Hay una condición por línea del fichero.

[lista2]

Esta lista contiene una serie de condiciones o reglas que se irán

comprobando durante el proceso de búsqueda de las condiciones de

parada. Existe un número máximo posible de condiciones a comprobar,

este número máximo es una constante definida en el programa, sujeta a

un posible cambio. En este momento la constante está fijada en 10. En

cualquier caso, no hay nada que impida aumentarla. Pero teniendo en

cuenta que las condiciones pueden ser a su vez listas : ‘[ ]’ o ‘< >’ ; no

tenemos muchas limitaciones para poder comprobar un gran numero de

elementos o condiciones. Por cada ocurrencia de cada una de estas

condiciones, se va incrementando un contador asociado. Al alcanzar

alguna de las condiciones de terminación se compararán estos

contadores con los modificadores de la lista3 y, si son compatibles, el

resultado sería positivo ; si no, sería negativo. Hay una condición por

línea del fichero. Todas las condiciones o reglas irán dadas en positivo,

será el modificador numérico quien se encargue de negarlas.

[lista3]

Esta lista contiene modificadores numéricos de las condiciones de

la lista2. Es una lista que va en paralelo con la lista2. Hay un

modificador numérico por cada condición de la lista2. Si el número de

modificadores fuese diferente al numero de condiciones (reglas) de la

lista2, se produciría un error sintáctico. Hay un modificador por línea

del fichero.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

108

Se ha implementado un sencillo lenguaje para estos modificadores

numéricos :

0

La condición de la lista2 correspondiente no puede ocurrir

ninguna vez. Así, las condiciones de la lista2 se dan siempre en positivo.

número

La condición de la lista2 correspondiente ha de ocurrir este

número concreto de veces.

#número

La condición de la lista2 correspondiente ha de ocurrir ‘al menos’

este número de veces.

?número

La condición de la lista2 correspondiente ha de ocurrir como

máximo este número de veces. Puede no ocurrir ninguna vez.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

109

¿número

La condición de la lista2 correspondiente ha de ocurrir como

máximo este número de veces, pero al menos una vez. Aquí no

incluimos el cero.

Ejemplo de regla :

:[fichero1][fichero2][fichero3]

Contenido fichero1 :

&.+

Contenido fichero2 :

[conjunciones]

Contenido fichero3 :

0

Contenido conjunciones :

Todas las conjunciones coordinantes.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

110

En esta regla nos encontramos con una situación curiosa : al dar la

posibilidad de ir avanzando de oración en oración, aunque el resultado sea

negativo, no debemos de retroceder en el flujo de lectura y empezar a aplicarla

de nuevo desde la palabra siguiente, pues si lo hiciéramos así, llegaría un

momento en el que la oración siempre cumpliría la regla aplicada.

Volviendo al ejemplo de regla anterior de las conjunciones coordinantes,

si aplicásemos la regla al texto :

“I wrote the paper and read the article.

Claramente, si vamos avanzando de palabra en palabra llegará un

momento en el que lleguemos al punto terminador de regla sin haber

encontrado una conjunción coordinante en medio, y así, con todas las frases.

Por lo tanto, esta regla será necesario que vaya sola en el fichero de

reglas. Ya que no permite la aplicación de otras reglas, que se apliquen a una

Esta regla va leyendo buscado terminadores de frase, o sea, de

punto a punto, luego leemos por oraciones. En este proceso de lectura

vamos a ir comprobando todas las palabras que vayamos leyendo y

comprobando si están en el fichero2. Este fichero2 contiene las

condiciones a comprobar (en este caso sólo una condición, una lista

[conjunciones],otro fichero, que contiene las conjunciones coordinantes).

Al final, para que el resultado de la regla sea positivo, tenemos que

comprobar que el número de ocurrencias de la condición coincide con

las indicadas por el modificador. En este caso, el modificador es ‘0’,

luego estamos pidiendo que no haya ninguna conjunción de punto a

punto.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

111

palabra, sobre el trozo de texto en el que ella ha avanzado. Si queremos

aplicarla junto a otras reglas que se apliquen a una palabra, o junto a otras

reglas del mismo tipo, tendríamos que poder retroceder en el flujo de lectura ;

esto se consigue mediante una modificación de la regla.

Otra peculiaridad de la regla es que no se permite el anidamiento dentro

de una regla del mismo tipo. No permitimos una instrucción

:[lista4][lista5][lista6] dentro de otra instrucción similar :[lista1][lista2][lista3].

✦ *[lista1][lista2][lista3]

Modificación de la regla anterior que en el caso de resultado negativo sí

que retrocedería en el flujo de entrada. El funcionamiento es idéntico excepto

en lo referente al retroceso en caso de resultado negativo de la regla.

Este retroceso nos permitirá juntar esta regla, en el mismo fichero, con

más reglas del mismo tipo ; por ejemplo, para buscar distintos modelos de un

mismo tipo de frase. También sería posible mezclar esta regla con otras reglas

de otro tipo, que implique una lectura palabra a palabra, pero esto no es

conveniente. No es conveniente porque todas las palabras leídas desde el

principio de la aplicación de *[lista1][lista2][lista3] hasta que se encuentran

alguno de los terminadores de ‘[lista1]’, quedan fuera del ámbito de las reglas

más simples. Si queremos aplicar alguna regla más simple en este proceso de

lectura de oración en oración, esta regla de palabra en palabra debe ser

introducida dentro de ‘[lista2]’, como parte de elemento a contabilizar dentro

de la regla compleja ‘*[lista1][lista2][lista3]’. Si no lo hacemos así estamos

expuestos a tener unos resultados erróneos.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

112

Ejemplo de fichero con reglas de este tipo :

Pero la configuración anterior entraría en un bucle. Supongamos que no

se cumple ninguna de las reglas, en este caso, al aplicar la última retrocedemos

y volveríamos a aplicar la primera desde el mismo lugar del texto y así

indefinidamente.

Por lo tanto una configuración correcta del fichero sería :

Aquí tampoco se permite el anidamiento dentro de una regla del mismo

tipo. No permitimos una *:[lista4][lista5][lista6] dentro de

otra *:[lista1][lista2][lista3] o de :[lista1][lista2][lista3].

*[lista1][lista2][lista3]

*[lista4][lista5][lista6]

*[lista7][lista8][lista9]

Así, cuando alguna de las reglas sea errónea se retrocede en el flujo de

entrada y volvemos a aplicar desde el mismo punto del texto las siguientes.

*[lista1][lista2][lista3]

*[lista4][lista5][lista6]

[lista7][lista8][lista9]

Así, en el caso en que la última fuera errónea no se retrocedería en

el flujo. Y se podría empezar a aplicar la primera regla desde un punto

diferente del texto.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

113

✦ .

El punto es en realidad, más que una regla un modificador de regla,

puede ir delante de otra regla alterando su funcionamiento. Su significado es :

avanza en el texto hasta encontrar la regla modificada, en caso de que sea una

regla positiva ; ó avanza hasta el siguiente signo de puntuación cumpliéndose

siempre una regla en el caso de que sea negativa (o avanza hasta el siguiente

signo de puntuación sin encontrar lo que indique la regla negativa) .

El supone una avance en el fichero de texto de entrada desde donde

empezamos a aplicarla hasta el siguiente signo de puntuación ,queda claro que

las reglas que empiecen por ‘.’ no van a saltarse los signos de puntuación. Y

son indiferentes al signo de puntuación que sea. Tal y como hemos dicho hay

dos casos :

REGLA POSTIVA

Encuentra la regla especificada antes de llegar al siguiente signo

de puntuación. Avanzamos leyendo hasta encontrar la regla pedida,

siendo en este caso el resultado positivo y quedándonos en la última

palabra que cumple la regla ; en cambio , si encontrásemos antes un

signo de puntuación, el resultado sería negativo y retrocederíamos hasta

donde hemos empezado a leer.

REGLA NEGATIVA

Avanza en leyendo en el fichero hasta el siguiente signo de

puntuación sin encontrar lo especificado en la regla negativa o

expresado de otro modo : avanza hasta el siguiente signo de puntuación

Capítulo VIII: El Lenguaje de Reglas Gramaticales

114

cumpliendo todas las palabras la regla negativa, si llegamos a una

palabra que no cumpliera la regla negativa retrocederíamos hasta donde

hemos empezado a leer y el resultado sería negativo. Si hemos llegado al

punto, nos quedamos en él y el resultado sería positivo.

Ejemplo1 :

Ejemplo2 :

Las combinaciones permitidas son :

.palabra

.@palabra

.-terminación

.-terminación-[lista]

.+adjetivo +nombre

Esta regla avanza en texto de entrada buscando un adjetivo y si

lo encontrase antes de un signo de puntuación comprueba que la

palabra siguiente sea un nombre.

. !adjetivo

Aquí avanzamos hasta el siguiente signo de puntuación y para

que el resultado sea positivo no debemos encontrar ninguna palabra

que pudiera ser adjetivo antes de llegar a él.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

115

.-terminacion-<lista>

.#terminación

.#terminación_[lista]

.#terminación_<lista>

. ?palabra

.¿palabra

.+categoría

.+categoría_[lista]

.+categoría_<lista>

.+categoría_nºcategoría

.+nºcategoría

.+nºcategoría_[lista]

.+nºcategoría-<lista>

.!categoría

.!categoría_[lista]

.!categoría_<lista>

.!nºcategoría

.!nºcategoría_[lista]

.!nºcategoría-<lista>

.[lista]

.[lista1]_[lista2]

.[lista1]_<lista2>

.<lista>

.*<lista>

.<lista1>_[lista2]

.<lista1>_<lista2>

.*<lista1>_[lista2]

.*<lista1>_<lista2>

.&.+

.&.-

.&signo (distinto del punto)

-$.+

.$.-

.$signo (distinto del punto)

Tan solo comentar el significado de :

.&signo

Avanza hasta el siguiente signo de puntuación y que éste sea

igual al especificado.

.$signo

Avanza hasta el siguiente signo de puntuación y que éste sea

diferente al especificado.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

116

En cualquier caso, un elemento de regla que vaya precedido de un

punto, puede ir seguido de cualquier otro elemento de regla, inclusive otro

elemento precedido de punto.

✦ =

Este al igual que en el caso anterior de ‘.’, más que un nuevo elemento

de regla ‘=’ es un modificador de los ya existentes. Su significado es : no

importa que al aplicar la regla delante de la palabra que tenemos del texto haya

algún signo de puntuación. O sea, en este caso con un ‘=’ delante del elemento

de regla venimos a decir que nos es indiferente que haya o que no haya algún

signo de puntuación delante de la palabra sobre la que empezamos a aplicar la

regla.

Ejemplo :

Las combinaciones permitidas son :

=palabra

=@palabra

=-terminación

=-terminación-[lista]

=-terminacion-<lista>

=#terminación

=the

En este ejemplo buscamos la palabra ‘the’ sin importarnos que

delante pueda haber un punto, una coma o cualquier otro signo de

puntuación.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

117

=#terminación_[lista]

=#terminación_<lista>

= ?palabra

=¿palabra

=+categoría

=+categoría_[lista]

=+categoría_<lista>

=+categoría_nºcategoría

=+nºcategoría

=+nºcategoría_[lista]

=+nºcategoría-<lista>

=!categoría

=!categoría_[lista]

=!categoría_<lista>

=!nºcategoría

=!nºcategoría_[lista]

=!nºcategoría-<lista>

=[lista]

=[lista1]_[lista2]

=[lista1]_<lista2>

=<lista>

=*<lista>

=<lista1>_[lista2]

=<lista1>_<lista2>

=*<lista1>_[lista2]

=*<lista1>_<lista2>

=&.+

=&.-

=&signo (distinto

del punto)

=$.+

=$.-

=$signo (distinto

del punto)

= :[lista1][lista2][lista3]

=*[lista1][lista2][lista3]

=.palabra

=.@palabra

=.-terminación

=.-terminación-[lista]

=.-terminacion-<lista>

=.#terminación

=.#terminación_[lista]

=.#terminación_<lista>

=. ?palabra

=.¿palabra

=.+categoría

=.+categoría_[lista]

=.+categoría_<lista>

=.+categoría_nºcategoría

=.+nºcategoría

=.+nºcategoría_[lista]

=.+nºcategoría-<lista>

=.!categoría

=.!categoría_[lista]

=.!categoría_<lista>

=.!nºcategoría

=.!nºcategoría_[lista]

=.!nºcategoría-<lista>

=.[lista]

=.[lista1]_[lista2]

=.[lista1]_<lista2>

=.<lista>

=.*<lista>

Capítulo VIII: El Lenguaje de Reglas Gramaticales

118

=.<lista1>_[lista2]

=.<lista1>_<lista2>

=.*<lista1>_[lista2]

=.*<lista1>_<lista2>

=.&.+

=.&.-

=.&signo (distinto

del punto)

=.$.+

=.$.-

=.$signo (distinto

del punto)

Si colocamos el ‘=’ delante de ‘.’, indica que da igual que haya un signo

delante de la palabra de comienzo de aplicación de la regla .elemento_regla :

nosotros vamos a avanzar hasta el siguiente.

✦ %

Éste al igual que en el caso anterior de ‘=’, más que un nuevo elemento

de regla ‘%’ es un modificador de los ya existentes. Su significado es : no

importa que al aplicar la regla delante de la palabra que tenemos del texto haya

algún signo de puntuación, siempre que este signo no sea un terminador de

frase : ‘.’,’ ?’, ‘!’.

O sea, en este caso con un ‘%’ delante del elemento de regla venimos a

decir que nos es indiferente que haya o que no haya algún signo de puntuación

delante de la palabra sobre la que empezamos a aplicar la regla, siempre que

ese signo no sea un terminador de frase.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

119

Ejemplo :

Las combinaciones permitidas son:

%palabra

%@palabra

%-terminación

%-terminación-[lista]

%-terminacion-<lista>

%#terminación

%#terminación_[lista]

%#terminación_<lista>

% ?palabra

%¿palabra

%+categoría

%+categoría_[lista]

%+categoría_<lista>

%+categoría_nºcategoría

%+nºcategoría

%+nºcategoría_[lista]

%+nºcategoría-<lista>

%!categoría

%!categoría_[lista]

%!categoría_<lista>

%!nºcategoría

%!nºcategoría_[lista]

%!nºcategoría-<lista>

%[lista]

%[lista1]_[lista2]

%[lista1]_<lista2>

%<lista>

%*<lista>

%<lista1>_[lista2]

%<lista1>_<lista2>

%the

En este ejemplo buscamos la palabra ‘the’ sin importarnos que

delante pueda haber cualquier signo de puntuación que no sea

terminador de frase.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

120

%*<lista1>_[lista2]

%*<lista1>_<lista2>

%&.+

%&.-

%&signo (distinto

del punto)

%$.+

%$.-

%$signo (distinto

del punto)

% :[lista1][lista2][lista3]

%*[lista1][lista2][lista3]

%.palabra

%.@palabra

%.-terminación

%.-terminación-[lista]

%.-terminacion-<lista>

%.#terminación

%.#terminación_[lista]

%.#terminación_<lista>

%. ?palabra

%.¿palabra

%.+categoría

%.+categoría_[lista]

%.+categoría_<lista>

%.+categoría_nºcategoría

%.+nºcategoría

%.+nºcategoría_[lista]

%.+nºcategoría-<lista>

%.!categoría

%.!categoría_[lista]

%.!categoría_<lista>

%.!nºcategoría

%.!nºcategoría_[lista]

%.!nºcategoría-<lista>

%.[lista]

%.[lista1]_[lista2]

%.[lista1]_<lista2>

%.<lista>

%.*<lista>

%.<lista1>_[lista2]

%.<lista1>_<lista2>

%.*<lista1>_[lista2]

%.*<lista1>_<lista2>

%.&.+

%.&.-

%.&signo (distinto

del punto)

%.$.+

%.$.-

%.$signo (distinto

del punto)

Si colocamos el ‘%’ delante de ‘.’ indica que da igual que haya un signo,

distinto del terminador de frase delante de la palabra de comienzo de

aplicación de la regla ‘.’elemento_regla : nosotros vamos a avanzar hasta el

siguiente.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

121

✦ |

Es un modificador de elementos de regla. Indica que la regla que viene

después se comprobará en el texto y, tanto si es cierta como si no, retrocedemos

en el flujo de lectura y la siguiente regla comienza en el mismo punto en el que

hemos comenzado a aplicar este elemento con modificador ‘|’elemento_regla.

Dicho de otro modo sería : “mira que lo que haya delante se corresponda con la

regla, pero solo quiero que mires no que se avance en la lectura del fichero”.

Ejemplo :

Las combinaciones permitidas serian :

|palabra

|@palabra

|-terminación

|-terminación-[lista]

[determinantes] +adjetivo +adjetivo +adjetivo |+nombre

En este ejemplo buscamos que la primera palabra este en una

lista de determinantes, que luego haya tres adjetivos en cadena y

miramos que después del último haya un nombre. Si el resultado de la

regla fuera positivo, la siguiente regla se empezaría a aplicar desde el

nombre mirado. Así después de esta regla podríamos tener otra que

fuera : ’ +nombre +verbo’ por ejemplo.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

122

|-terminacion-<lista>

|#terminación

|#terminación_[lista]

|#terminación_<lista>

| ?palabra

|¿palabra

|+categoría

|+categoría_[lista]

|+categoría_<lista>

|+categoría_nºcategoría

|+nºcategoría

|+nºcategoría_[lista]

|+nºcategoría-<lista>

|!categoría

|!categoría_[lista]

|!categoría_<lista>

|!nºcategoría

|!nºcategoría_[lista]

|!nºcategoría-<lista>

|[lista]

|[lista1]_[lista2]

|[lista1]_<lista2>

|<lista>

|*<lista>

|<lista1>_[lista2]

|<lista1>_<lista2>

|*<lista1>_[lista2]

|*<lista1>_<lista2>

|&.+

|&.-

|&signo (distinto

del punto)

|$.+

|$.-

|$signo (distinto

del punto)

| :[lista1][lista2][lista3]

|*[lista1][lista2][lista3]

|.palabra

|.@palabra

|.-terminación

|.-terminación-[lista]

|.-terminacion-<lista>

|.#terminación

|.#terminación_[lista]

|.#terminación_<lista>

|. ?palabra

|.¿palabra

|.+categoría

|.+categoría_[lista]

|.+categoría_<lista>

|.+categoría_nºcategoría

|.+nºcategoría

|.+nºcategoría_[lista]

|.+nºcategoría-<lista>

|.!categoría

|.!categoría_[lista]

|.!categoría_<lista>

|.!nºcategoría

|.!nºcategoría_[lista]

|.!nºcategoría-<lista>

|.[lista]

|.[lista1]_[lista2]

|.[lista1]_<lista2>

Capítulo VIII: El Lenguaje de Reglas Gramaticales

123

|.<lista>

|.*<lista>

|.<lista1>_[lista2]

|.<lista1>_<lista2>

|.*<lista1>_[lista2]

|.*<lista1>_<lista2>

|.&.+

|.&.-

|.&signo (distinto

del punto)

|.$.+

|.$.-

|.$signo (distinto

del punto)

|=palabra

|=@palabra

|=-terminación

|=-terminación-[lista]

|=-terminacion-<lista>

|=#terminación

|=#terminación_[lista]

|=#terminación_<lista>

|= ?palabra

|=¿palabra

|=+categoría

|=+categoría_[lista]

|=+categoría_<lista>

|=+categoría_nºcategoría

|=+nºcategoría

|=+nºcategoría_[lista]

|=+nºcategoría-<lista>

|=!categoría

|=!categoría_[lista]

|=!categoría_<lista>

|=!nºcategoría

|=!nºcategoría_[lista]

|=!nºcategoría-<lista>

|=[lista]

|=[lista1]_[lista2]

|=[lista1]_<lista2>

|=<lista>

|=*<lista>

|=<lista1>_[lista2]

|=<lista1>_<lista2>

|=*<lista1>_[lista2]

|=*<lista1>_<lista2>

|=&.+

|=&.-

|=&signo (distinto

del punto)

|=$.+

|=$.-

|=$signo (distinto

del punto)

|= :[lista1][lista2][lista3]

|=*[lista1][lista2][lista3]

|=.palabra

|=.@palabra

|=.-terminación

|=.-terminación-[lista]

|=.-terminacion-<lista>

|=.#terminación

|=.#terminación_[lista]

|=.#terminación_<lista>

Capítulo VIII: El Lenguaje de Reglas Gramaticales

124

|=. ?palabra

|=.¿palabra

|=.+categoría

|=.+categoría_[lista]

|=.+categoría_<lista>

|=.+categoría_nºcategoría

|=.+nºcategoría

|=.+nºcategoría_[lista]

|=.+nºcategoría-<lista>

|=.!categoría

|=.!categoría_[lista]

|=.!categoría_<lista>

|=.!nºcategoría

|=.!nºcategoría_[lista]

|=.!nºcategoría-<lista>

|=.[lista]

|=.[lista1]_[lista2]

|=.[lista1]_<lista2>

|=.<lista>

|=.*<lista>

|=.<lista1>_[lista2]

|=.<lista1>_<lista2>

|=.*<lista1>_[lista2]

|=.*<lista1>_<lista2>

|=.&.+

|=.&.-

|=.&signo (distinto

del punto)

|=.$.+

|=.$.-

|=.$signo (distinto

del punto

|%palabra

|%@palabra

|%-terminación

|%-terminación-[lista]

|%-terminacion-<lista>

|%#terminación

|%#terminación_[lista]

|%#terminación_<lista>

|% ?palabra

|%¿palabra

|%+categoría

|%+categoría_[lista]

|%+categoría_<lista>

|%+categoría_nºcategoría

|%+nºcategoría

|%+nºcategoría_[lista]

|%+nºcategoría-<lista>

|%!categoría

|%!categoría_[lista]

|%!categoría_<lista>

|%!nºcategoría

|%!nºcategoría_[lista]

|%!nºcategoría-<lista>

|%[lista]

|%[lista1]_[lista2]

|%[lista1]_<lista2>

|%<lista>

|%*<lista>

|%<lista1>_[lista2]

|%<lista1>_<lista2>

|%*<lista1>_[lista2]

|%*<lista1>_<lista2>

Capítulo VIII: El Lenguaje de Reglas Gramaticales

125

|%&.+

|%&.-

|%&signo (distinto

del punto)

|%$.+

|%$.-

|%$signo (distinto

del punto)

|% :[lista1][lista2][lista3]

|%*[lista1][lista2][lista3]

|%.palabra

|%.@palabra

|%.-terminación

|%.-terminación-[lista]

|%.-terminacion-<lista>

|%.#terminación

|%.#terminación_[lista]

|%.#terminación_<lista>

|%. ?palabra

|%.¿palabra

|%.+categoría

|%.+categoría_[lista]

|%.+categoría_<lista>

|%.+categoría_nºcategoría

|%.+nºcategoría

|%.+nºcategoría_[lista]

|%.+nºcategoría-<lista>

|%.!categoría

|%.!categoría_[lista]

|%.!categoría_<lista>

|%.!nºcategoría

|%.!nºcategoría_[lista]

|%.!nºcategoría-<lista>

|%.[lista]

|%.[lista1]_[lista2]

|%.[lista1]_<lista2>

|%.<lista>

|%.*<lista>

|%.<lista1>_[lista2]

|%.<lista1>_<lista2>

|%.*<lista1>_[lista2]

|%.*<lista1>_<lista2>

|%.&.+

|%.&.-

|%.&signo (distinto

del punto)

|%.$.+

|%.$.-

|%.$signo (distinto

del punto)

8.1.1 Comentarios sobre las reglas contenidas por las listas

que van precedidas de subrayado : ‘_[lista]’ y ‘_<lista>’

Como ya dijimos, en la explicación de las diferentes reglas, los

ficheros de listas precedidas de subrayado solo pueden contener reglas

Capítulo VIII: El Lenguaje de Reglas Gramaticales

126

que no impliquen avance de lectura en el texto, pues su función es

comprobar algo sobre una palabra que ya ha cumplido la primera parte

de la regla. Así, a parte de reglas que impliquen avances de lectura,

tampoco tienen sentido reglas relacionadas con signos de puntuación.

Y, en cualquier caso, las posibles listas que puedan contener en sus

sucesivos anidamientos tendrán que tener las mismas restricciones.

Las combinaciones permitidas van a ser :

palabra

@palabra

-terminación

-terminación-[lista]

-terminacion-<lista>

#terminación

#terminación_[lista]

#terminación_<lista>

?palabra

¿palabra

+categoría

+categoría_[lista]

+categoría_<lista>

+categoría_nºcategoría

+nºcategoría

+nºcategoría_[lista]

+nºcategoría-<lista>

!categoría

!categoría_[lista]

!categoría_<lista>

!nºcategoría

!nºcategoría_[lista]

!nºcategoría-<lista>

[lista]

[lista1]_[lista2]

[lista1]_<lista2>

<lista>

<lista1>_[lista2]

<lista1>_<lista2>

En el supuesto de que dentro de estas listas tuviéramos una regla como :

‘the +nombre +verbo’, donde, por sí solos, los elementos de la regla no

implican avance, pero juntos suponen un avance de tres palabras, sólo

procesaríamos el primer elemento de la regla. Por lo tanto, hay que tener

cuidado con lo que se escribe dentro de estas listas.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

127

8.2 Comentarios sobre el análisis de una palabra precedida

de signo de puntuación .

Al intentar aplicar cualquier regla a una palabra precedida de signo de

puntuación, en principio, el resultado será negativo. Excepto en aquellas reglas

que procesan signo.

Las combinaciones que procesan signo son :

[lista]

[lista1]_[lista2]

[lista1]_<lista2>

<lista>

*<lista>

<lista1>_[lista2]

<lista1>_<lista2>

*<lista1>_[lista2]

*<lista1>_<lista2>

&.+

&.-

&signo (distinto del punto)

$.+

$.-

$signo (distinto del punto)

:[lista1][lista2][lista3]

*:[lista1][lista2][lista3]

.[lista]

.[lista1]_[lista2]

.[lista1]_<lista2>

.<lista>

.*<lista>

.<lista1>_[lista2]

.<lista1>_<lista2>

.*<lista1>_[lista2]

.*<lista1>_<lista2>

.&.+

.&.-

.&signo(distintodel punto)

.$.+

.$.-

.$signo (distinto del punto)

=REGLA

%REGLA

| REGLA QUE PROCESE

SIGNOS

Capítulo VIII: El Lenguaje de Reglas Gramaticales

128

8.3 Resumen de las posibles combinaciones de los

modificadores de reglas : ‘.’, ’=’, ’%’, ’ *’ y ‘|’.

✦ .

Este símbolo puede llevar detrás cualquier cosa excepto :

‘=’,

’%’,

’|’,

’*’,

’ :’,

y a si mismo ‘.’.

✦ =

Este símbolo puede llevar detrás cualquier cosa excepto :

’%’,

’|’,

y a si mismo ‘=’.

✦ %

Este símbolo puede llevar detrás cualquier cosa excepto :

’=’,

’|’,

Capítulo VIII: El Lenguaje de Reglas Gramaticales

129

y a si mismo ‘%’.

✦ |

Este símbolo puede llevar detrás cualquier cosa excepto :

a si mismo ‘ |’.

✦ *

Este símbolo solo puede llevar detrás :

’<’,

’ : ’

✦ Cualquier símbolo.

En cualquier caso, ningún símbolo podrá llevar detrás a sí

mismo.

8.4 Conclusiones.

Como vemos los ficheros de reglas son totalmente flexibles y

configurables por el usuario, siendo fácil cambiarlos. Queda abierto todo un

campo de investigación en la mejora de las reglas gramaticales.

Capítulo VIII: El Lenguaje de Reglas Gramaticales

130

8.5 Ejemplo de fichero de reglas.

"VOZ PASIVA"

=@there [vbe] -ed |<v5-0>

=@there [vbe] +53 |<v5-0>

=@there [vbe] +52 |<v5-0>

=@there [vbe] [adverbio] -ed |<v5-0>

=@there [vbe] [adverbio] +53 |<v5-0>

=@there [vbe] [adverbio] +52 |<v5-0>

and -ed |<v5-0>

and +53 |<v5-0>

"vbe= verbo to be en todos sus tiempos, en activa y pasiva, en afirmativa"

"y negativa"

"v5-0 = elementos que no pueden ir detrás de un participio en pasiva"

"porque presentan ambigüedad: +nombre +verbo y [adj-cad] +nombre +verbo"

"adverbio = +adverbio y -ly"