summaryrefslogtreecommitdiffstats
path: root/JLanguageTool/src/rules/es
diff options
context:
space:
mode:
Diffstat (limited to 'JLanguageTool/src/rules/es')
-rw-r--r--JLanguageTool/src/rules/es/el.txt99
-rw-r--r--JLanguageTool/src/rules/es/grammar.xml1331
2 files changed, 1430 insertions, 0 deletions
diff --git a/JLanguageTool/src/rules/es/el.txt b/JLanguageTool/src/rules/es/el.txt
new file mode 100644
index 0000000..dfbdc52
--- /dev/null
+++ b/JLanguageTool/src/rules/es/el.txt
@@ -0,0 +1,99 @@
+# words that require 'el' instead of 'al' as a determiner
+antia
+aura
+ábsida
+ácana
+ácigos
+ácula
+áfaca
+ágata
+ágora
+águila
+álaga
+álgebra
+álica
+álsine
+áncora
+ánfora
+ánima
+ápoca
+áqueta
+árdea
+área
+árgana
+árgema
+árgoma
+árnica
+árula
+áster
+aca
+acta
+adra
+afta
+agua
+aguasal
+aguatinta
+aguatocha
+aguaturma
+aguaverde
+aguavilla
+aguaviva
+ala
+alba
+alca
+ale
+alga
+algia
+alma
+alna
+alta
+alza
+ama
+amia
+*ana
+anca
+ancla
+anda
+angla
+angra
+ansa
+ansia
+anta
+ara
+arca
+archa
+arda
+aria
+arma
+arna
+arpa
+arria
+arta
+arte
+asa
+asca
+ascua
+asma
+aspa
+asta
+auca
+aula
+ave
+aya
+azua
+haba
+habla
+haca
+hacha
+hada
+halda
+hambre
+hampa
+hansa
+harca
+harma
+harpa
+harria
+harta
+haya
+haza
diff --git a/JLanguageTool/src/rules/es/grammar.xml b/JLanguageTool/src/rules/es/grammar.xml
new file mode 100644
index 0000000..9093a5f
--- /dev/null
+++ b/JLanguageTool/src/rules/es/grammar.xml
@@ -0,0 +1,1331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="../print.xsl"
+title="Pretty print" ?>
+<?xml-stylesheet type="text/css" href="../rules.css"
+title="Easy editing stylesheet" ?>
+<!--
+Spanish Grammar and Typo Rules for LanguageTool
+Copyright (C) 2006 Marcin Miłkowski
+Copyright (C) 2010 Juan Martorell
+$Id$
+-->
+<rules lang="es" xsi:noNamespaceSchemaLocation="../rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <category name="Miscelánea">
+ <!-- from Spanish Wikipedia -->
+
+ <rule id="DE_GRATIS" name="«de gratis» (gratis)">
+ <!--DE_GRATIS-->
+
+ <pattern case_sensitive="no" mark_from="0">
+ <token>de</token>
+
+ <token>gratis</token>
+ </pattern>
+
+ <message>La forma correcta es decir <suggestion>gratis</suggestion>.</message>
+
+ <short>Expresión incorrecta</short>
+
+ <example type="correct">El agua es gratis.</example>
+
+ <example correction="gratis" type="incorrect">El agua es <marker>de gratis</marker>.</example>
+ </rule>
+
+ <rule id="EN_BASE_A" name="en base a">
+ <!-- EN_BASE_A En base a -> con base en (o basado en) (o sobre la base de)-->
+
+ <pattern>
+ <token>en</token>
+
+ <token>base</token>
+
+ <token>a</token>
+ </pattern>
+
+ <message>En español, la expresión «en base a» no existe.</message>
+
+ <short>Expresión incorrecta</short>
+
+ <example correction="" type="incorrect">Se puede regresar a la zona <marker>en base a</marker> lo expuesto por las autoridades</example>
+
+ <example type="correct">Se ha reducido la cadencia de los trenes basándose en la estadistica elaborada.</example>
+ </rule>
+ </category>
+
+ <category name="Palabras de difícil ortografía">
+ <rule id="AH_INF" name="ah + infinitivo (a)">
+ <!--AH_INF ah acabar-->
+
+ <pattern case_sensitive="no">
+ <token>ah</token>
+
+ <token postag="V[ASM]N0000" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La preposición se escribe sin h: <suggestion>a \2</suggestion>.</message>
+
+ <short>Error ortográfico</short>
+
+ <example correction="a hablar" type="incorrect">Voy <marker>ah hablar</marker> con ella.</example>
+
+ <example type="correct">Voy <marker>a hablar</marker> con ella.</example>
+ </rule>
+
+ <rule id="VOY_HA_INF" name="ir ha + infinitivo (a)">
+ <!--VOY_HA_INF ir + ha + INF-->
+
+ <pattern>
+ <token inflected="yes">ir</token>
+
+ <token>ha</token>
+
+ <token postag="V[ASM]N0000" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>Esta palabra se escribe sin h: <suggestion>\1 a \3</suggestion>.</message>
+
+ <short>Error ortográfico</short>
+
+ <example correction="Voy a hablar" type="incorrect"><marker>Voy ha hablar</marker> con ella.</example>
+
+ <example type="correct"><marker>Voy a hablar</marker> con ella.</example>
+ </rule>
+
+ <rule id="VOY_INF" name="ir + infinitivo (a)">
+ <!--VOY_INF ir + infinitivo (a)-->
+
+ <pattern>
+ <token inflected="yes">ir<exception inflected="yes" regexp="yes">ver|ser</exception></token>
+
+ <token postag="V[ASM]N0000" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La construcción "ir" más infinitivo exige la presencia de la preposición "a": <suggestion>\1 a \2</suggestion>.</message>
+
+ <example correction="Voy a hablar" type="incorrect"><marker>Voy hablar</marker> con ella.</example>
+
+ <example type="correct"><marker>Voy a hablar</marker> con ella.</example>
+ </rule>
+ </category>
+
+ <category name="Ortografía">
+ <rulegroup id="AE_COMIDO" name="Tiempos compuestos 'a' o 'e' + participio">
+ <rule id="A_PARTICIPIO" name="a + participio">
+ <!--A_PARTICIPIO a comido-->
+
+ <pattern mark_from="1" mark_to="-1">
+ <token postag=".*" postag_regexp="yes"><exception inflected="yes" regexp="yes">oler|saber|gustar</exception></token>
+
+ <token>a</token>
+
+ <token postag="V[ASM]P00SM" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>El verbo 'haber' lleva hache: <suggestion>ha</suggestion></message>
+
+ <short>Error ortográfico.</short>
+
+ <example correction="ha" type="incorrect">El atleta <marker>a</marker> corrido de forma espectacular.</example>
+
+ <example type="correct">El atleta <marker>ha</marker> corrido de forma espectacular.</example>
+ </rule>
+
+ <rule id="E_PARTICIPIO" name="e+ participio">
+ <!--E_PARTICIPIO e comido-->
+
+ <pattern mark_to="-1">
+ <token>e</token>
+
+ <token postag="V[ASM]P00SM" postag_regexp="yes"><exception regexp="yes">^h?[ií].* </exception></token>
+ </pattern>
+
+ <message>El verbo 'haber' lleva hache: <suggestion>he</suggestion></message>
+
+ <short>Error ortográfico.</short>
+
+ <example correction="he" type="incorrect">Siempre <marker>e</marker> comido bien.</example>
+
+ <example type="correct">Nos llevamos como anfitrión <marker>e</marker> invitado.</example>
+ </rule>
+
+ <rule id="PRON_E_PARTICIPIO" name="e+ participio">
+ <!--PRON_E_PARTICIPIO e comido-->
+
+ <pattern mark_from="1" mark_to="-1">
+ <token postag="PP.*" postag_regexp="yes"></token>
+
+ <token>e</token>
+
+ <token postag="V[ASM]P00SM" postag_regexp="yes" regexp="yes">^h?[ií].*</token>
+ </pattern>
+
+ <message>El verbo 'haber' lleva hache: <suggestion>he</suggestion></message>
+
+ <short>Error ortográfico.</short>
+
+ <example correction="he" type="incorrect">Nos <marker>e</marker> incluido en la lista.</example>
+
+ <example type="correct">Les <marker>he</marker> invitado.</example>
+ </rule>
+ </rulegroup>
+
+ <!--HABER_AVER Uso incorrecto de «haber» por «a ver»-->
+
+ <rulegroup id="HABER_AVER" name="Uso incorrecto de «haber» por «a ver»">
+ <rule>
+ <!--HABER_QUE-->
+
+ <pattern>
+ <token>haber</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>Verifique que no quiso decir <suggestion>a ver qué</suggestion>.</message>
+
+ <example correction="a ver qué" type="incorrect">Mirad esto, <marker>haber que</marker> opináis.</example>
+
+ <example type="correct">Tiene en su haber el Campeonato del Mundo.</example>
+ </rule>
+
+ <rule>
+ <!--HABER_SI-->
+
+ <pattern mark_from="1">
+ <token postag="SENT_START" postag_regexp="yes"></token>
+
+ <token>haber</token>
+
+ <token>si</token>
+ </pattern>
+
+ <message>Verifique que no quiso decir <suggestion>a ver si</suggestion>.</message>
+
+ <example correction="A ver si" type="incorrect"><marker>Haber si</marker> puedes arreglar esto.</example>
+
+ <example type="correct">No va a haber si se ha acabado.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup id="Y_E_O_U" name="y Italia, o Honduras">
+ <rule id="Y_E" name="e ante palabras empezando por i">
+ <!--Y_E Cambio e por y-->
+
+ <pattern>
+ <token>y<exception scope="previous">¿</exception></token>
+
+ <token regexp="yes">^h?[ií].* <exception regexp="yes">^h?ih?[aeouáéóú].*</exception><!--Números romanos--><exception
+ regexp="yes">[ivxlcdm]+</exception></token>
+ </pattern>
+
+ <message>Cuando precede a palabras que comienzan por i- (o hi-), la conjunción "y" se transforma en "e": <suggestion>e <match
+ no="2"></match></suggestion></message>
+
+ <short>Error ortográfico.</short>
+
+ <example correction="e Italia" type="incorrect">Alemania <marker>y Italia</marker> disputarán el torneo.</example>
+
+ <example type="correct">Alemania <marker>e Italia</marker> disputarán el torneo.</example>
+
+ <example type="correct">¿<marker>Y Irene</marker>?</example>
+ </rule>
+
+ <rule id="O_U" name="cambio de o ante palabras empezando por o">
+ <!--O_U Cambio u por o-->
+
+ <pattern>
+ <token>o</token>
+
+ <token regexp="yes">^h?[oó].*</token>
+ </pattern>
+
+ <message>Cuando precede a palabras que comienzan por o- (u ho-), la conjunción "o" se transforma en "u": <suggestion>u <match
+ no="2"></match></suggestion></message>
+
+ <short>Error ortográfico.</short>
+
+ <example correction="u Honduras" type="incorrect">El torneo lo disputarán Alemania <marker>o Honduras</marker>.</example>
+
+ <example type="correct">El torneo lo disputarán Alemania <marker>u Honduras</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <!--AFRENTAR_DIFICULTADES http://cvc.cervantes.es/alhabla/museo_horrores/museo_050.htm-->
+
+ <rule id="AFRENTAR_DIFICULTADES" name="afrentar dificultades o problemas (afrontar)">
+ <pattern>
+ <token inflected="yes" skip="1">afrentar</token>
+
+ <token inflected="yes" regexp="yes">dificultad|problema|vicisitud</token>
+ </pattern>
+
+ <message>La forma correcta es usando el verbo "afrontar: <suggestion><match include_skipped="none" no="1" postag="(.*)"
+ postag_replace="$1">afrontar</match> <match include_skipped="following" no="1"></match> <match no="2"></match></suggestion>"</message>
+
+ <example correction="afrontar muchos problemas" type="incorrect">Tuvo que <marker>afrentar muchos problemas</marker> con la mudanza.</example>
+
+ <example type="correct">Afrontaron muchas dificultades en la travesía.</example>
+ </rule>
+
+ <rule id="DESTORNILLAR_RISA" name="destornillarse de risa (desternillarse)">
+ <!--DESTORNILLAR_RISA http://cvc.cervantes.es/alhabla/museo_horrores/museo_015.htm-->
+
+ <!---->
+
+ <pattern>
+ <token inflected="yes" skip="1">destornillar</token>
+
+ <token>de</token>
+
+ <token>risa</token>
+ </pattern>
+
+ <message>La forma correcta es usando el verbo «desternillar»: <suggestion><match include_skipped="none" no="1" postag="(.*)"
+ postag_replace="$1">desternillar</match> <match include_skipped="all" no="2"></match> <match no="3"></match></suggestion>"</message>
+
+ <example correction="desternilló de risa" type="incorrect">Con ese chiste, se <marker>destornilló de risa</marker>.</example>
+
+ <example type="correct">Casi te desternillas de risa el otro día.</example>
+ </rule>
+
+ <rule id="CONTRA_MAS" name="Contra más (cuanto más)">
+ <!--CONTRA_MAS http://cvc.cervantes.es/alhabla/museo_horrores/museo_034.htm-->
+
+ <pattern>
+ <token>contra</token>
+
+ <token>más</token>
+ </pattern>
+
+ <message>La forma correcta es <suggestion>cuanto más</suggestion> excepto en el contexto de litigar o luchar y no en el contexto de sumar.</message>
+
+ <short>Posible expresión incorrecta</short>
+
+ <example correction="cuanto más" type="incorrect">Seguro que <marker>contra más</marker> estudias, más aprendes</example>
+
+ <example type="correct">Cuanto más insistas, menos caso te haré.</example>
+ </rule>
+
+ <rule id="SIN_ECUANIME" name="sin ecuánime (sine quae non)">
+ <!--SIN_ECUANIME-->
+
+ <pattern>
+ <token>condición</token>
+
+ <token>sin</token>
+
+ <token>ecuánime</token>
+ </pattern>
+
+ <message>La forma correcta es <suggestion>condición sine quae non</suggestion>.</message>
+
+ <short>Expresión incorrecta</short>
+
+ <example correction="condición sine quae non" type="incorrect">Para aprobar, la <marker>condición sin ecuánime</marker> es obtener un 5.</example>
+
+ <example type="correct">Es condición sine quae non tener permiso para entrar en el local.</example>
+ </rule>
+
+ <!--Pronombres personales cuyo tilde se olvida o se pone impropiamente
+Atención: estas reglas pueden generar muchos falsos positivos.-->
+
+ <rulegroup id="PRONOM_TILDE" name="Pronombres personales con o sin tilde">
+ <!--TU_VERBO_P2 tu + verbo en 2a persona-->
+
+ <rule id="TU_VERBO_P2" name="Tu + verbo en 2a">
+ <pattern mark_to="-1">
+ <token>tu</token>
+
+ <token postag="V.{3}2.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.{3}2.*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message>
+
+ <example correction="tú" type="incorrect">Cuando <marker>tu</marker> vuelves, yo voy.</example>
+
+ <example type="correct">Me alegra tu vuelta al trabajo.</example>
+ </rule>
+
+ <rule id="TU_PARTICULA_VERBO_P2" name="Tu + verbo en 2a">
+ <!--TU_PARTICULA_VERBO_P2 tu no te lo pierdas
+Anulamos si entremedias hay al menos un nombre-->
+
+ <pattern mark_to="-2">
+ <token>tu</token>
+
+ <token postag="[RPC].*|UNKNOWN" postag_regexp="yes" skip="3"><exception postag="A..*|DI0.S0" postag_regexp="yes"></exception></token>
+
+ <token postag="V.{3}2.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.{3}2.*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message>
+
+ <example correction="tú" type="incorrect">Cuando <marker>tu</marker> no vuelves, yo voy.</example>
+
+ <example type="correct">Me alegra tu feliz vuelta al trabajo.</example>
+ </rule>
+
+ <rule id="EL_VERBO_P3" name="el + verbo en 3a">
+ <!--EL_VERBO_P3 El + verbo 3a persona lleva tilde-->
+
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token regexp="yes">[E|e]l</token>
+
+ <token postag="V.{3}3.*" postag_regexp="yes"><exception postag="N.*|P.*|AQ.*" postag_regexp="yes"></exception><exception
+ regexp="yes">\p{Lu}.*</exception></token>
+ </pattern>
+
+ <message>El pronombre personal <suggestion>él</suggestion> lleva tilde.</message>
+
+ <example correction="él" type="incorrect">Cuando <marker>el</marker> llegó, yo me fui.</example>
+
+ <example type="correct">Me alegra tu vuelta al trabajo.</example>
+ </rule>
+
+ <rule id="TU_FINAL" name="Pronombre tú al final de la oración.">
+ <!--TU_FINAL Tu al final de la oración. Siempre será nominativo.-->
+
+ <pattern mark_to="-1">
+ <token>tu</token>
+
+ <token postag="SENT_END" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message>
+
+ <example correction="tú" type="incorrect">Tu hermnana es como <marker>tu</marker>.</example>
+
+ <example type="correct">¿Te puedes ocupar tú?</example>
+ </rule>
+
+ <rule id="EL_FINAL" name="Pronombre sin tilde al final de la oración">
+ <!--EL_FINAL Él al final de la oración-->
+
+ <pattern mark_to="-1">
+ <token>el</token>
+
+ <token postag="SENT_END" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>El pronombre personal <suggestion>él</suggestion> lleva tilde.</message>
+
+ <example correction="él" type="incorrect">Se encargará <marker>el</marker>.</example>
+
+ <example type="correct">Esa caja es para él.</example>
+ </rule>
+ </rulegroup>
+
+ <rule id="LO_SE" name="lo se (sé)">
+ <!--LO_SE lo sé-->
+
+ <pattern mark_from="1">
+ <token regexp="yes">l[oae]</token>
+
+ <token>se</token>
+ </pattern>
+
+ <message>El presente de indicativo primera persona del verbo saber es <suggestion>sé</suggestion>.</message>
+
+ <example correction="sé" type="incorrect">Yo lo <marker>se</marker> desde hace tiempo</example>
+
+ <example type="correct">Si lo sé, no vengo.</example>
+ </rule>
+
+ <rule id="SE_FINAL" name="se al final de la oración. (sé)">
+ <!--SE_FINAL se al final de la oración simepre es verbo.
+-->
+
+ <pattern mark_to="-1">
+ <token><!--Included «lo» to avoid overlap with LO_SE rule--><exception regexp="yes" scope="previous">per|lo</exception>se</token>
+
+ <token postag="SENT_END" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>El presente de indicativo primera persona del verbo saber es <suggestion>sé</suggestion>.</message>
+
+ <example correction="sé" type="incorrect">Hay quien programa, pero yo no <marker>se</marker>.</example>
+
+ <example type="correct">Hay que saber tocar y yo sé.</example>
+ </rule>
+ </category>
+
+ <category name="Gramática">
+ <rulegroup id="DEQUEISMO_QUEISMO" name="Queísmos y dequeismos">
+ <!-- Dequeísmo y queísmo: utilización incorrecta de DE + QUE
+Fuentes: http://cvc.cervantes.es/ALHABLA/MUSEO_HORRORES/museo_010.htm -->
+
+ <rule id="INF_PP_QUE" name="Infinitivo tipo convencer + pron.pers + que">
+ <!--INF_PP_QUE Queísmo: convenceros que -> convenceros de que -->
+
+ <pattern>
+ <token regexp="yes">(alegrar|enterar|informar|dudar|convencer|hartar)(me|te|se|nos|os)</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 de \2</suggestion></message>
+
+ <short>Posible dequeísmo</short>
+
+ <example correction="alegrarse de que" type="incorrect">Está bien <marker>alegrarse que</marker> haya dinero para todos.</example>
+
+ <example type="correct">No pareces <marker>enterarte de que</marker> todo está resuelto.</example>
+ </rule>
+
+ <rule id="ESTAR_SEGURO_QUE" name="Estar + seguro + que">
+ <!-- ESTAR_SEGURO_QUE Queísmo: Estoy seguro que -> Estoy seguro de que -->
+
+ <pattern>
+ <token inflected="yes"><exception postag="VAIP3S0" postag_regexp="yes"></exception>estar</token>
+
+ <token inflected="yes">seguro</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 \2 de \3</suggestion></message>
+
+ <short>Posible queísmo</short>
+
+ <example correction="Estamos seguros de que" type="incorrect"><marker>Estamos seguros que</marker> falta poco para acabar.</example>
+
+ <example type="correct"><marker>Está segura de que</marker> lo que decís es cierto.</example>
+ </rule>
+
+ <rule id="PP_V_QUE" name="PP + verbo tipo alegrar + que">
+ <!-- PP_V_QUE Queísmo: me alegro que -> me alegro de que -->
+
+ <pattern>
+ <token postag="PP[12]C[SP]000" postag_regexp="yes"></token>
+
+ <token inflected="yes" regexp="yes">alegrar|sorprender|entreistecer|agobiar|emocionar|aburres|preocupa<exception postag="VM.*3.*"
+ postag_regexp="yes"></exception></token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 \2 de que</suggestion></message>
+
+ <short>Posible queísmo</short>
+
+ <example correction="Nos alegramos de que" type="incorrect"><marker>Nos alegramos que</marker> haya comida para todos</example>
+
+ <example type="correct">Fue cuando <marker>os enterasteis de que</marker> se acabó la temporada.</example>
+ </rule>
+
+ <rule id="VERBO_DE_QUE" name="verbo tipo pensar + de que">
+ <!-- VERBO_DE_QUE Queísmo: Pienso de que -> Pienso que -->
+
+ <pattern>
+ <token inflected="yes"
+ regexp="yes">pensar|opinar|creer|comentar|expresar|decir|deducir|inferir|colegir|razonar|comunicar|confirmar|corroborar|desmentir|constar|resultar|aconsejar|ver|observar</token>
+
+ <token>de</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>Posible dequeísmo: <suggestion>\1 \3</suggestion>.</message>
+
+ <short>Posible dequeísmo</short>
+
+ <example correction="Pienso que" type="incorrect"><marker>Pienso de que</marker> estamos mejorando mucho.</example>
+
+ <example type="correct">Creemos <marker>que</marker> podemos mejorar más.</example>
+ </rule>
+
+ <rule id="ESTAR_CLARO_DE_QUE" name="Vervo tipo estar + AQ + de que">
+ <!-- ESTAR_CLARO_DE_QUE Queísmo: Está claro de que -> Está claro que -->
+
+ <pattern>
+ <token inflected="yes" regexp="yes">ser|estar|encontrar|ver|entender</token>
+
+ <token postag="RG|AQ.*" postag_regexp="yes"><exception inflected="yes" regexp="yes">seguro|libre|consciente|harto</exception></token>
+
+ <token>de</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>Posible dequeísmo: <suggestion>\1 \2 \4</suggestion>.</message>
+
+ <short>Posible dequeísmo</short>
+
+ <example correction="Es fácil que" type="incorrect"><marker>Es fácil de que</marker> volvamos a encontrarnos</example>
+
+ <example type="correct"><marker>Encontrarás útil que</marker> hayan cambiado el cartel</example>
+ </rule>
+
+ <rule id="V3_DE_QUE" name="Verbo en 3a + de que">
+ <!-- V3_DE_QUE Dequeísmo: Me alegra de que -> Me alegra que -->
+
+ <pattern>
+ <token postag="PP[123]C[SP][0D]00" postag_regexp="yes"></token>
+
+ <token regexp="yes">alegra|entreistece|agobia|importa|resbala|harta|emociona|altera|aburre|falta|preocupa</token>
+
+ <token>de</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>Posible dequeísmo: <suggestion>\1 \2 \4</suggestion>.</message>
+
+ <short>Posible dequeísmo</short>
+
+ <example correction="Me alegra que" type="incorrect"><marker>Me alegra de que</marker> volvamos a encontrarnos</example>
+
+ <example type="correct"><marker>Me entristece que</marker> hayan cambiado el cartel</example>
+ </rule>
+
+ <rule id="INSISTIR_DE_QUE" name="Verbo tipo insistir + de que">
+ <!-- INSISTIR_DE_QUE Dequeísmo: Insisto de que -> Insisto en que -->
+
+ <pattern>
+ <token inflected="yes">insistir</token>
+
+ <token>de</token>
+
+ <token>que</token>
+ </pattern>
+
+ <message>Posible dequeísmo: <suggestion>\1 en \3</suggestion>.</message>
+
+ <short>Posible dequeísmo</short>
+
+ <example correction="insistas en que" type="incorrect">No <marker>insistas de que</marker> vayamos al cine</example>
+
+ <example type="correct"><marker>Inisitieron en que</marker> les faltaba un documento.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup id="DETRAS_PX" name="Preposición de opsición + posesivo">
+ <!--DETRAS_PX http://cvc.cervantes.es/alhabla/museo_horrores/museo_025.htm-->
+
+ <rule>
+ <!--1ª Singular: detrás mío.-->
+
+ <pattern>
+ <token regexp="yes">detrás|delante|debajo|encima|cerca</token>
+
+ <token postag="PX1.S0S0" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La expresión correcta es «<suggestion>\1 de <match no="2" postag="PX(\d).S0S0" postag_regexp="yes"
+ postag_replace="PP$1CSO00">mí</match></suggestion>».</message>
+
+ <example correction="detrás de mí" type="incorrect">Venían <marker>detrás mío</marker>.</example>
+
+ <example type="correct">Tengo a los niños encima de mí.</example>
+ </rule>
+
+ <rule>
+ <!--2ª Singular: debajo tuyo/tuya-->
+
+ <pattern>
+ <token regexp="yes">detrás|delante|debajo|encima|cerca</token>
+
+ <token postag="PX2.S0S0" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La expresión correcta es «<suggestion>\1 de <match no="2" postag="PX(\d).S0S0" postag_regexp="yes"
+ postag_replace="PP$1CSO00">ti</match></suggestion>».</message>
+
+ <example correction="detrás de ti" type="incorrect">Venían <marker>detrás tuyo</marker>.</example>
+
+ <example type="correct">Tienes a los niños encima de ti.</example>
+ </rule>
+
+ <rule>
+ <!--1ª plural: delante nuestro/a.-->
+
+ <pattern>
+ <token regexp="yes">detrás|delante|debajo|encima|cerca</token>
+
+ <token postag="PX1.S0P0" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La expresión correcta es «\1 de nosotros/as»</message>
+
+ <example type="incorrect">Venían <marker>detrás nuestro</marker>.</example>
+
+ <example type="correct">Tenemos a los niños encima de nosotros.</example>
+ </rule>
+
+ <rule>
+ <!--2ª plural: cerca vuestro/a-->
+
+ <pattern>
+ <token regexp="yes">detrás|delante|debajo|encima|cerca</token>
+
+ <token postag="PX2.S0P0" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La expresión correcta es «\1 de vosotros/as».</message>
+
+ <example type="incorrect">Venían <marker>detrás vuestro</marker>.</example>
+
+ <example type="correct">Tenemos a los niños encima de vosotros.</example>
+ </rule>
+
+ <rule>
+ <!--3ª: detrás suyo-->
+
+ <pattern>
+ <token regexp="yes">detrás|delante|debajo|encima|cerca</token>
+
+ <token postag="PX3.{2}0C0" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>La expresión correcta es «\1 de él/ella/ello/ellos/ellas/usted/ustedes».</message>
+
+ <example type="incorrect">Venían <marker>detrás suya</marker>.</example>
+
+ <example type="correct">Tienen a los niños encima de ellos.</example>
+ </rule>
+ </rulegroup>
+
+ <!--http://roble.pntic.mec.es/acid0002/index_archivos/Gramatica/imperativo.htm
+cantad [cantar/VMM02P0]
+cantéis[cantar/VMSP2P0]
+
+ven [venir/VMM02S0
+vengas[venir/VMSP2S0]-->
+
+ <rule id="NO_IMPERATIVO" name="no + imperativo">
+ <pattern>
+ <token regexp="yes">no|nunca|jamás</token>
+
+ <token postag="VMM.*" postag_regexp="yes"><exception negate_pos="yes" postag="VMM.*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Con la partícula negativa \1, en lugar del imperativo \2 debe usarse el subjuntivo <suggestion>\1 <match no="2" postag="VMM.(.{3})"
+ postag_regexp="yes" postag_replace="VMSP$1"></match></suggestion>.</message>
+
+ <example correction="No contéis" type="incorrect"><marker>No contad</marker> con nosotros.</example>
+
+ <example type="correct">Nunca contéis conmigo.</example>
+ </rule>
+
+ <rule id="PP_SE" name="te se, me se">
+ <!--PP_SE: te se -> se te-->
+
+ <pattern>
+ <token postag="PP.CS[0D]00" postag_regexp="yes"></token>
+
+ <token>se</token>
+ </pattern>
+
+ <message>El orden de las partículas debe invertirse: «<suggestion>\2 \1</suggestion>».</message>
+
+ <short>Incorreción gramatical: \1 \2</short>
+
+ <example correction="se te" type="incorrect">¡Como te agarre, <marker>te se</marker> cae el pelo!</example>
+
+ <example type="correct">Lo agarraron y se le cayó el pelo.</example>
+ </rule>
+
+ <rulegroup id="MAS_BUENO_MALO" name="más + bueno/malo (mejor/peor)">
+ <rule id="MAS_BUENA">
+ <!--MAS_BUENA-->
+
+ <pattern>
+ <token>más</token>
+
+ <token inflected="yes" postag="AQ.*" postag_regexp="yes">bueno</token>
+ </pattern>
+
+ <message>En español, se utiliza el término <suggestion><match no="2" postag="AQ.{2}(.)." postag_replace="AQ0C$10">mejor</match></suggestion></message>
+
+ <example correction="mejor" type="incorrect">Este pan está <marker>más bueno</marker> que el otro</example>
+
+ <example type="correct">Cuando una solución es la más simple es mejor que cualquier otra.</example>
+ </rule>
+
+ <rule id="MAS_MALA">
+ <!--MAS_MALA-->
+
+ <pattern>
+ <token>más</token>
+
+ <token inflected="yes" postag="AQ.*" postag_regexp="yes">malo</token>
+ </pattern>
+
+ <message>En español, se utiliza el término <suggestion><match no="2" postag="AQ.{2}(.)." postag_replace="AQ0C$10">peor</match></suggestion></message>
+
+ <example correction="peor" type="incorrect">Este pan está <marker>más malo</marker> que el otro</example>
+
+ <example type="correct">Cuando una solución es la más complicada es peor que cualquier otra.</example>
+ </rule>
+ </rulegroup>
+
+ <!--GROSSO_MODO
+http://buscon.rae.es/dpdI/SrvltConsulta?lema=grosso-->
+
+ <rule id="GROSSO_MODO" name="A grosso modo --&gt; grosso modo">
+ <pattern>
+ <token postag="SP.*" postag_regexp="yes"></token>
+
+ <token regexp="yes">gross?o</token>
+
+ <token>modo</token>
+ </pattern>
+
+ <message>La expresión latina <suggestion>grosso modo</suggestion> se usa sin preposición.</message>
+
+ <example correction="grosso modo" type="incorrect">Las cifras indican <marker>a grosso modo</marker> que la gestión es correcta.</example>
+
+ <example type="correct">La Tierra se encuentra, dicho grosso modo, a ocho minutos-luz del Sol.</example>
+ </rule>
+ </category>
+
+ <category name="Concordancia">
+ <rulegroup id="CONC_NUM" name="Concordancias de número">
+ <!-- Concordancias de número -->
+
+ <!-- Exclusiones deliberadas:
+ Las formas estilísticas adjetivo + nombre (casos S->P y P->S)
+ Razón: Son costosas (x2) y poco comunes para justificar su inclusión.
+ TODO: Incluir una categoría por defecto desactivada con esas reglas.
+ No se sintetiza porque es muy difícil saber la intención del autor y más que ayudar puede despistar.
+ -->
+
+ <rule id="DET_NOM_SING" name="Concordancia singular en Determinante + nombre">
+ <!-- DET_NOM_SING Concordancia (el pavos) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="D.{3}S.*" postag_regexp="yes"><exception postag="DI0CS0" postag_regexp="yes"></exception></token>
+
+ <token postag="N.{2}P.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}P.*|AQ.{2}P. --><exception negate_pos="yes" postag="N.{2}P.*"
+ postag_regexp="yes"></exception><exception regexp="yes">[Bb]otones|\p{Lu}\p{L}*</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Acércame <marker>la sillas</marker>, por favor.</example>
+
+ <example type="correct">Acércame las sillas, por favor.</example>
+ </rule>
+
+ <rule id="DEL_NOM_SING" name="Concordancia singular en Determinante + nombre">
+ <!-- DEL_NOM_SING Concordancia (del pavos) -->
+
+ <pattern case_sensitive="yes">
+ <token regexp="yes">del|al</token>
+
+ <token postag="N.{2}P.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}P.*|AQ.{2}P. --><exception negate_pos="yes" postag="N.{2}P.*"
+ postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}*</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Ha vuelto <marker>del parques</marker> pronto.</example>
+
+ <example type="correct">Ha vuelto del parque pronto.</example>
+ </rule>
+
+ <rule id="DET_NOM_PLUR" name="Concordancia plural en Determinante + nombre">
+ <!-- DET_NOM_PLUR Concordancia (los pavo) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="D.{3}P.*" postag_regexp="yes"></token>
+
+ <token postag="N.{2}S.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}S.*|AQ.{2}S. --><exception negate_pos="yes" postag="N.{2}S.*"
+ postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}*</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Ordenamos <marker>las silla</marker> por colores.</example>
+
+ <example type="correct">Ordenamos las sillas por colores.</example>
+ </rule>
+
+ <rule id="NOM_ADJ_SINGULAR" name="Concordancia singular Nombre + adjetivo">
+ <!-- NOM_ADJ_SINGULAR Concordancia (pavo rojos) -->
+
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token postag="N.{2}S.*" postag_regexp="yes" skip="1"><exception postag="C.*|SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ postag="[VRCD].*|SP.*" postag_regexp="yes"></exception><exception
+ regexp="yes">mayoría|minoría|parte|número|mitad|vez|modo|manera|guisa|forma</exception><exception regexp="yes"
+ scope="next">[^\p{L}].*|al|del|suficientemente</exception></token>
+
+ <token postag="A.{3}P.*" postag_regexp="yes"><exception postag="[VRCD].*|SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ postag="D.*|SP.*" postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}+</exception></token>
+
+ <token postag=".+" postag_regexp="yes"><exception postag="N.{2}P.*" postag_regexp="yes" scope="current"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Hay <marker>silla verdes</marker> en esa tienda.</example>
+
+ <example type="correct">Hay sillas verdes en esa tienda.</example>
+ </rule>
+
+ <rule id="NOM_ADJ_PLURAL" name="Concordancia plural Nombre + adjetivo">
+ <!-- NOM_ADJ_PLURAL Concordancia (pavos rojo) -->
+
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token postag="N.{2}P.*|P.{3}P.*" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ negate_pos="yes" postag="N.{2}P.*|P.{3}P.*" postag_regexp="yes"></exception><exception inflected="yes" postag=""
+ regexp="yes">me|nos|mí|conmigo|ti|contigo|lo|le|les|se|consigo|la|do</exception><exception regexp="yes">botones|veces</exception><exception
+ regexp="yes" scope="next">[^\p{L}].*|al|del</exception></token>
+
+ <token postag="A.{3}S.*" postag_regexp="yes"><exception postag="[VRCD].*|SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ scope="previous">del</exception><exception postag="R.*|SP.*" postag_regexp="yes"></exception><exception
+ regexp="yes">clave|guía|extra|\p{Lu}\p{L}+</exception></token>
+
+ <token postag=".+" postag_regexp="yes"><exception postag="C.*" postag_regexp="yes" regexp="yes">[;,]</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Pintaremos las <marker>sillas verde</marker> de otro color.</example>
+
+ <example type="correct">Pintaremos las sillas verdes de otro color.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup id="CONC_GENERO" name="Concordancias de género">
+ <!-- Concordancias de género -->
+
+ <!-- Exclusiones deliberadas:
+ Las formas estilísticas adjetivo + nombre (casos M->F y F->M)
+ Razón: Son costosas (x2) y poco comunes para justificar su inclusión.
+ TODO: Incluir una categoría por defecto desactivada con esas reglas.
+
+ El grupo completo se ha copiado del de concordancias de género,
+ sustituyendo S y P por F y M respectivamente y ajustando los textos
+ y las posiciones.
+
+ -->
+
+ <rule id="DET_NOM_FEM" name="Concordancia femenino en Determinante + nombre">
+ <!-- DET_NOM_FEM Concordancia (la pavo) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="D.{2}F.*" postag_regexp="yes"></token>
+
+ <token postag="N.{1}M.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}M.*" postag_regexp="yes" scope="current"></exception><exception
+ regexp="yes">botones|\p{Lu}\p{L}*</exception><exception inflected="yes" regexp="yes">la|do|número</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\2».</message>
+
+ <short>Concordancia de género dudosa</short>
+
+ <example type="incorrect">Me gusta <marker>esa teléfono</marker> para ti.</example>
+
+ <example type="correct">Me gusta ese coche para ti.</example>
+ </rule>
+
+ <rule id="DET_FEM_NOM_FEM" name="Palabras que empiezan por fonema A tónico">
+ <!-- DET_FEM_NOM_FEM Palabras que empiezan por fonema A tónico. -->
+
+ <pattern case_sensitive="no">
+ <token>la</token>
+
+ <!--Eliminado "alta" por tener valor femenino y masculino.-->
+
+ <token
+ regexp="yes">aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alza|ama|anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</token>
+ </pattern>
+
+ <message>Antes de una palabra que empieza por "a" o "ha" tónicas, se emplea el determinante masculino: <suggestion>el \2</suggestion>.</message>
+
+ <short>Determinante incorrecto.</short>
+
+ <example correction="el agua" type="incorrect">Me gusta <marker>la agua</marker> que hay ahí.</example>
+
+ <example type="correct">Me gusta el agua que hay ahí.</example>
+ </rule>
+
+ <rule id="DET_NOM_MASC" name="Concordancia masculino en Determinante + nombre">
+ <!-- DET_NOM_MASC Concordancia (ese pava) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="D[^P].{1}M.*" postag_regexp="yes"><exception regexp="yes">[Ee]l|(([Aa]l|[Nn]in)g)?[Uuú]n</exception><exception postag="R.*"
+ postag_regexp="yes"></exception></token>
+
+ <token postag="N.{1}F.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception><exception
+ regexp="yes">\p{Lu}\p{L}*</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\2».</message>
+
+ <short>Concordancia de género dudosa masculino-femenino</short>
+
+ <example type="incorrect">Me gusta <marker>ese silla</marker> que hay ahí.</example>
+
+ <example type="correct">Me gusta esa silla que hay ahí.</example>
+ </rule>
+
+ <rule id="EL_NOM_MASC" name="Concordancia masculino en Determinante + nombre">
+ <!-- EL_NOM_MASC Concordancia (el pava) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="DA0MS0" postag_regexp="yes"></token>
+
+ <token postag="N.{1}F.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception><exception
+ regexp="yes">\p{Lu}\p{L}*|aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alta|alza|ama</exception><exception
+ regexp="yes">anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\2».</message>
+
+ <short>Concordancia de género dudosa masculino-femenino</short>
+
+ <example type="incorrect">Me gusta <marker>el silla</marker> que hay ahí.</example>
+
+ <example type="correct">Me gusta esa silla que hay ahí.</example>
+ </rule>
+
+ <rule id="DEL_NOM_MASC" name="Concordancia masculino en Determinante + nombre">
+ <!-- DEL_NOM_MASC Concordancia (del pava)
+-->
+
+ <pattern case_sensitive="yes">
+ <token regexp="yes">[Dd]el|[Aa]l</token>
+
+ <token postag="N.{1}F.*" postag_regexp="yes"><exception postag="AQ.*|N.{1}M.*|SP.*" postag_regexp="yes" scope="current"></exception><exception
+ regexp="yes">\p{Lu}\p{L}*|aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alta|alza|ama</exception><exception
+ regexp="yes">anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\2».</message>
+
+ <short>Concordancia de género dudosa masculino-femenino</short>
+
+ <example type="incorrect"><marker>Del silla</marker></example>
+
+ <example type="correct">Del paso</example>
+ </rule>
+
+ <rule id="NOM_ADJ_FEM" name="Concordancia femenino Nombre + adjetivo">
+ <!-- NOM_ADJ_FEM Concordancia (pava rojo) -->
+
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token postag=".*" postag_regexp="yes"></token>
+
+ <token postag="N.{1}F.*|PD0F.*" postag_regexp="yes" skip="1"><exception postag="SP.*|C." postag_regexp="yes" scope="previous"></exception><!--Previously excluded C.*|SP.*|R.* without negated POS--><exception
+ negate_pos="yes" postag="N.{1}F.*|PD0F.*" postag_regexp="yes"></exception><exception inflected="yes"
+ regexp="yes">mayoría|minoría|mitad|parte|vez|era|eres|\w||\p{Lu}\p{L}+</exception><exception postag="[VRCD].*|SP.*|PR.*" postag_regexp="yes"
+ scope="next"></exception><exception regexp="yes" scope="next">\W*</exception><exception regexp="yes" scope="next">del|al</exception></token>
+
+ <token postag="A.{2}M.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}\p{L}+</exception></token>
+
+ <token postag=".+" postag_regexp="yes"><exception postag="N.{1}M.*" postag_regexp="yes" scope="current"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\2» y «\3».</message>
+
+ <short>Concordancia de género dudosa nom.-adj. m.- f.</short>
+
+ <example type="incorrect">La <marker>silla rojo</marker> está al fondo.</example>
+
+ <example type="correct">La silla roja está al fondo</example>
+ </rule>
+
+ <rule id="NOM_ADJ_MASC" name="Concordancia masculino Nombre + adjetivo">
+ <!-- NOM_ADJ_MASC Concordancia (pavo roja) -->
+
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token postag="N.{1}M.*|P.{2}M.*" postag_regexp="yes" skip="1"><exception negate_pos="yes" postag="N.{1}M.*|P.{2}M.*"
+ postag_regexp="yes"></exception><exception>dos</exception><exception regexp="yes" scope="next">[^\p{L}]+</exception><exception postag="[VCD].*|SP.*"
+ postag_regexp="yes" scope="next"></exception></token>
+
+ <token postag="A.{2}F.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}\p{L}+</exception><exception postag="N.*" postag_regexp="yes"
+ scope="next"></exception></token>
+
+ <token postag=".+" postag_regexp="yes"><exception postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\2».</message>
+
+ <short>Concordancia de género dudosa nom.-adj. f.-m.</short>
+
+ <example type="incorrect">El <marker>sillón roja</marker> está al fondo.</example>
+
+ <example type="correct">El sillón rojo está al fondo.</example>
+ </rule>
+
+ <rule id="CADA_UNA_DE_LOS" name="Concordancia «Cada una de los»">
+ <!-- CADA_UNA_DE_LOS Concordancia (Concordancia M/F) -->
+
+ <pattern case_sensitive="no">
+ <token postag="SENT_START" postag_regexp="yes"></token>
+
+ <token>cada</token>
+
+ <token>una</token>
+
+ <token>de</token>
+
+ <token>los</token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\3» y «\5».</message>
+
+ <short>Concordancia de género dudosa en la forma distributiva cada... de...</short>
+
+ <example type="incorrect"><marker>Cada una de los</marker> caballeros está ocupado.</example>
+
+ <example type="correct">Cada uno de los caballeros está ocupado.</example>
+ </rule>
+
+ <rule id="CADA_UNO_DE_LAS" name="Concordancia «Cada una de las»">
+ <!-- CADA_UNO_DE_LAS Concordancia (Concordancia F/M) -->
+
+ <pattern case_sensitive="no">
+ <token postag="SENT_START" postag_regexp="yes"></token>
+
+ <token>cada</token>
+
+ <token>uno</token>
+
+ <token>de</token>
+
+ <token>las</token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\3» y «\5».</message>
+
+ <short>Concordancia de género dudosa en la forma distributiva cada... de...</short>
+
+ <example type="incorrect"><marker>Cada uno de las</marker> damas está ocupada.</example>
+
+ <example type="correct">Cada una de las damas está ocupada.</example>
+ </rule>
+ </rulegroup>
+
+ <!--Concordancias con verbos-->
+
+ <rulegroup id="CONC_V_PERSONA" name="Concordancia de persona">
+ <!--Concordancia de persona-->
+
+ <!--Concordancica de persona (pronombre personal nominativo + verbo)-->
+
+ <rule id="PP_V_1">
+ <!-- PP_V_1 Concordancia (yo entregas)-->
+
+ <pattern>
+ <token postag="PP1(.{2}N|CN0|MP0).*" postag_regexp="yes"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ postag="V.{3}1.*|C.*|SP.*" postag_regexp="yes"></exception></token>
+
+ <token postag="V.{3}[23].*" postag_regexp="yes"><exception postag="V.{3}1.*|AQ.*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de persona entre «\1» y «\2».</message>
+
+ <short>Concordancia de 1ª persona dudosa</short>
+
+ <example type="incorrect"><marker>Yo vienes</marker></example>
+
+ <example type="correct">Yo vengo</example>
+ </rule>
+
+ <rule id="PP_V_2">
+ <!-- PP_V_2 Concordancia (tú entrego)-->
+
+ <pattern case_sensitive="no">
+ <token postag="PP2(.{2}N|CN0|MP0).*" postag_regexp="yes"><exception postag="SP*" postag_regexp="yes" scope="previous"></exception></token>
+
+ <token postag="V.{3}[13].*" postag_regexp="yes"><exception postag="AQ.*|SP.*" postag_regexp="yes"></exception><!--TODO: generalizar.--><exception
+ regexp="yes">como|una|obra</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de persona entre «\1» y «\2».</message>
+
+ <short>Concordancia de 2ª persona dudosa</short>
+
+ <example type="incorrect"><marker>Tú vengo</marker></example>
+
+ <example type="correct">Tú vienes</example>
+ </rule>
+
+ <rule id="PP_V_3">
+ <!-- PP_V_3 Concordancia (él entrego)-->
+
+ <pattern case_sensitive="no">
+ <token postag="PP3(.*000|CN0|MP0).*" postag_regexp="yes"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception></token>
+
+ <token postag="V.{3}[12].*" postag_regexp="yes"><exception postag="V.{3}3.*|C.*|SP.*" postag_regexp="yes" scope="next"></exception><exception
+ postag="V.{3}3.*|AQ.*|[NCR].*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de persona entre «\1» y «\2».</message>
+
+ <short>Concordancia de 3ª persona dudosa</short>
+
+ <example type="incorrect"><marker>Él vengo</marker></example>
+
+ <example type="correct">Él viene</example>
+ </rule>
+
+ <rule id="PP_V_SINGULAR" name="Concordancia singular Nombre + verbo">
+ <!-- PP_V_SINGULAR Concordancia (él vienen)
+ Eliminados sustantivos y otros pronombres por elevado número de falsos positivos. -->
+
+ <pattern>
+ <token postag="PP.{2}S.*" postag_regexp="yes"><exception postag="SP.*|C.*|PT.*" postag_regexp="yes" scope="previous"></exception><exception
+ negate_pos="yes" postag="PP.{2}S.*" postag_regexp="yes"></exception><exception postag="PP.C.[0D]00" postag_regexp="yes"></exception></token>
+
+ <token postag="V.{4}P.*" postag_regexp="yes"></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número (plural) dudosa</short>
+
+ <example type="incorrect"><marker>Yo venimos</marker></example>
+
+ <example type="correct">Yo vengo</example>
+ </rule>
+
+ <rule id="PP_V_PLURAL" name="Concordancia plural Nombre + verbo">
+ <!-- PP_V_PLURAL Concordancia (ellos viene)
+ Eliminados los sustantivos y otros pronombres por exceso de falsos positivos.
+ -->
+
+ <pattern>
+ <token postag="PP.{2}P.*" postag_regexp="yes"><exception postag="SP.*|CS.*|PT.*" postag_regexp="yes" scope="previous"></exception> <exception
+ postag="AQ.*|V.*|PP[12]C.000|PP3.{2}[AD]00" postag_regexp="yes"></exception></token>
+
+ <token postag="V.{4}S.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\2».</message>
+
+ <short>Concordancia de número (singular) dudosa</short>
+
+ <example type="incorrect">sólo <marker>ellos vuela</marker> por el cielo</example>
+
+ <example type="correct">aviones vuelan</example>
+ </rule>
+ </rulegroup>
+ </category>
+
+ <category default="off" name="Concordancia predicativa">
+ <rule id="SUJ_PRED_ATRIB_SINGULAR" name="Concordancia de sujeto y predicado en singular en oraciones atributivas">
+ <!-- SUJ_PRED_ATRIB_SINGULAR Concordancia (pavo es rojos) -->
+
+ <pattern case_sensitive="yes">
+ <token postag="N.{2}S.*|P.{3}S.*" postag_regexp="yes" skip="1"><exception scope="previous">del|al</exception><exception postag="SP.*|C.*"
+ postag_regexp="yes" scope="previous"></exception><exception postag="PP.C.[DO0]00|R.*|C.*|SP.*" postag_regexp="yes"></exception><exception
+ regexp="yes">mayoría|minoría|parte|número</exception><exception postag="[NC].*" postag_regexp="yes" scope="next"></exception></token>
+
+ <token inflected="yes" regexp="yes" skip="1"><exception regexp="yes" scope="previous">[^\w].*|se</exception><exception postag="C.*|SP.*"
+ postag_regexp="yes" scope="previous"></exception><exception postag="C.*|SP.*" postag_regexp="yes" scope="next"></exception>ser|parecer</token>
+
+ <token postag="N.{2}P.*|A.{3}P.*" postag_regexp="yes"><exception postag="V.*" scope="previous"></exception><exception postag="SP.*|[CDRV].*"
+ postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\3».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Esa <marker>cortina parece suaves</marker></example>
+
+ <example type="correct">Los aviones son azules</example>
+ </rule>
+
+ <rule id="SUJ_PRED_ATRIB_PLURAL" name="Concordancia de sujeto y predicado en número en oraciones atributivas">
+ <!-- SUJ_PRED_ATRIB_PLURAL Concordancia (pavos es rojo) -->
+
+ <pattern>
+ <token postag="N.{2}P.*|P.{3}P" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes"
+ scope="previous"></exception><exception>botones</exception><exception postag="PP.C.[DO0]00" postag_regexp="yes"></exception><exception postag="[NC].*"
+ postag_regexp="yes" scope="next"></exception></token>
+
+ <token inflected="yes" regexp="yes" skip="1"><exception regexp="yes" scope="previous">[^\w].*|se</exception><exception postag="VM[NG]0000"
+ postag_regexp="yes" scope="next"></exception>ser|estar|parecer</token>
+
+ <token postag="N.{2}S.*|A.{3}S.*" postag_regexp="yes"><exception postag="SP.*|[CD].*" postag_regexp="yes" scope="previous"></exception><exception
+ postag="SP.*|[CDRV].*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de número entre «\1» y «\3».</message>
+
+ <short>Concordancia de número dudosa</short>
+
+ <example type="incorrect">Las <marker>cortinas parecen suave</marker></example>
+
+ <example type="correct">Los aviones son azules</example>
+ </rule>
+
+ <rule id="SUJ_PRED_ATRIB_FEM" name="Concordancia de sujeto y predicado en femenino en oraciones atributivas">
+ <!-- SUJ_PRED_ATRIB_FEM Concordancia (pava es rojo)
+ *Quitados los pronombres: Eso es cal
+-->
+
+ <pattern>
+ <token postag="N.{1}F.*" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception
+ postag="[RC].*" postag_regexp="yes"></exception><exception postag="N.*|C.*" postag_regexp="yes" scope="next"></exception></token>
+
+ <token inflected="yes" regexp="yes" skip="2"><exception regexp="yes" scope="previous">[^\w].*|se</exception>ser|parecer</token>
+
+ <token postag="A.{2}M.*" postag_regexp="yes"><exception postag="SP.*|[CDRV].*" postag_regexp="yes"></exception><exception
+ regexp="yes">la|do</exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\3».</message>
+
+ <short>Concordancia de género dudosa</short>
+
+ <example type="incorrect">La <marker>cortina es amarillo</marker></example>
+
+ <example type="correct">Los aviones son amarillos</example>
+ </rule>
+
+ <rule id="SUJ_PRED_ATRIB_MASC" name="Concordancia de sujeto y predicado en masculino en oraciones atributivas">
+ <!-- SUJ_PRED_ATRIB_MASC Concordancia (pavo es roja) -->
+
+ <pattern>
+ <token postag="N.{1}M.*" postag_regexp="yes" skip="1"><exception postag="RN" postag_regexp="yes"></exception><exception
+ regexp="yes">botones|la|do</exception><exception postag="N.*|CS" postag_regexp="yes" scope="next"></exception></token>
+
+ <token inflected="yes" regexp="yes" skip="2"><exception regexp="yes" scope="previous">[^\w].*|se</exception>ser|estar|parecer</token>
+
+ <token postag="A.{2}F.*" postag_regexp="yes"><exception postag="SP.*|[CDRV].*" postag_regexp="yes"></exception></token>
+ </pattern>
+
+ <message>Posible falta de concordancia de género entre «\1» y «\3».</message>
+
+ <short>Concordancia de género dudosa</short>
+
+ <example type="incorrect"><marker>Este es amarilla</marker></example>
+
+ <example type="correct">La avioneta será costosa</example>
+ </rule>
+ </category>
+
+ <category name="Estilo">
+ <rule id="LOOR" name="Loor de multitudes">
+ <pattern>
+ <token>loor</token>
+
+ <token>de</token>
+
+ <token>multitudes</token>
+ </pattern>
+
+ <message>Se prefiere la expresion «<suggestion>olor de multitudes</suggestion>».</message>
+
+ <example correction="olor de multitudes" type="incorrect">Entraron en <marker>loor de multitudes</marker></example>
+
+ <example type="correct">Entraron en olor de multiitudes</example>
+ </rule>
+ </category>
+</rules>