Permalink
Fetching contributors…
Cannot retrieve contributors at this time
4578 lines (4348 sloc) 241 KB
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" title="Pretty print" ?>
<?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css" title="Easy editing stylesheet" ?>
<!--
Galician Grammar and Typo Rules for LanguageTool
Copyright (C) 2006 Marcin Miłkowski
Copyright (C) 2009 Susana Sotelo Docío
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-->
<!DOCTYPE rules [
<!ENTITY meses_ano_abrev "(?:jan|feb|mar|abr|mai|xu[lnñ]|ago|set|out|nov|dec)">
<!ENTITY meses_ano "(?:x(?:aneiro|u(?:ñ|ll)o)|febreiro|marzo|abril|maio|agosto|setembro|outubro|novembro|decembro)">
<!ENTITY dias_semana_abrev "(?:seg|ter|cua|mar|qui|sex|sáb|dom)">
<!ENTITY dias_semana "(?:segunda|terza|martes|cuarta|quinta|sexta|sábado|domingo)">
<!ENTITY partes_do_dia "(?:mañá|matina|tarde|noite)">
<!ENTITY expressoes_de_tempo "(?:segundo|minuto|hora|día|semana|(?:bi|tri|quadri|se)mestre|ano|década|decenio|milenio|tempo|temporada|época)s?|mes|meses">
<!ENTITY puntos_cardeais "(?:n(?:acente|or(?:te|[do]este))|su(?:l|(?:ro)este)|este|o(?:este|ccidente|riente)|poñente)">
<!ENTITY adverbios_de_intensidade "bastante|ben|demasiado|moitísimo|máis|menos|moi|nada|pouco|canto|case|tanto|tan|todo"><!-- XXX untranslated assaz|demais|*«quão -->
<!ENTITY adverbios_de_lugar "abaixo|enriba|dentro|adiante|fóra|aí|alén|ai|aquén|atrás|acá|dentro|embaixo|externamente|alí|lonxe|preto"><!-- XXX *algures|*alhures|*nenhures -->
<!ENTITY codigos_de_pais "(?:A(?:[DEFGIMNOQRSTUWZ]|LS?)|M[ACDGHKLMNOPQRSTUVWXYZ]|S[ACDEGHIJKLMNORTUVYZb]|B[ABDEFGHIJMNORSTVWYZ]|C[ACFGHIKLMNORSUVXYZ]|G[ABDEFHILMNPQRSTUWY]|T[CDFGHJKMNOPRTVWZ]|N[ACEFGILOPRTUZ]|P[AEFGHKLMNRTWY]|K[EGHIMNPRWYZ]|L[ABCIKRSTUVY]|I[DELNOQRST]|E[CEGHNRST]|F[IJKMORX]|U[AGKMSYZ]|V[ACEGINU]|D[EJKMOZ]|H[KMNRTU]|R[EOUW]|J[MOP]|Y[ETU]|Z[AMR]|W[FS]|OM|QA)">
<!ENTITY divisas "(?:euros|dólares|francos|pesos|libras|rublos|rupias|iuans|iens|[€£¥$₽])">
<!ENTITY separadores_de_oracoes "(?:[,;:…–—\(«“]|\-|\[)">
<!ENTITY hifen "(?:[-‑])">
<!ENTITY tracos_de_separacao "(?:[-‑]|–|—)">
<!ENTITY unidades_de_medida "(?:(?:[khdcmnµfYZEPTGM]|da)?(?:[gmlsJNWCVSFTHΩ]|Hz|cd|lm|mol|Pa|Wb|rad|sr|lx|Bq|Gy|Sv|kat|Np|eV)(?:⁻)?[23¹²³]?|º[CFK]|cv|k?cal|mmHg|atm|ton|kWh|GWa|MWd|MWh|mAh|min)">
<!ENTITY unidades_de_medida_por_extenso "(?:quil[oó]|dec[ií]|cent[ií]|mil[ií]|micr[oó])?(grama|metro|litro|segundo)s?|hectar(es)?|(grau|(quilo)?tonelada)s?">
<!ENTITY tabela_periodica "(?:[UVW]|C[adeflmnorsu]?|N[abdehiop]?|P[abdmortu]?|S[bcegimnr]?|T[abcehilms]|A[cglmrstu]|R[abefghnu]|B[aehikr]?|H[efgos]?|M[cdgnot]|F[elmr]?|L[airuv]|D[bsy]|E[rsu]|G[ade]|I[nr]?|O[gs]?|Z[nr]|Kr?|Yb?|Xe|[₁₂₃₄₅₆₇₈₉₀])">
<!ENTITY precede_nome_proprio "(asociación|avenida|balneario|parella?|coalición|colección|cometa|concurso|copa|curso|designación|designado|distribución|escola|estación|estilo|filme|fundación|galardón|xeración|illa|imperio|iniciativa|instituto|titulado|lagoa?|lei|libro|monte|museo|navío|novela|obra|orquestra|praza|premio|programa|proxecto|quinta|rexistro|reino|informe|revista|río|rúa|serra|teatro|tema|tipo|universidade|versión)">
<!ENTITY contraccions_MS "(?:ao|d(?:o|un|el|est?e|aquel|ist?o|aquilo|outro)|n(?:o|un|el|est?e|aquel|ist?o|aquilo|outro)|algún|polo)"><!-- XXX lost 'me+o|che+o|lle+o'-->
<!ENTITY contraccions_FS "(?:á|d(?:a|uña|ela|est?a|aquela|outra)|n(?:a|unha|ela|nest?a|aquela|outra)|algunha|pola)"><!-- XXX lost 'me+a|che+a|lle+a'-->
<!ENTITY contraccions_MP "(?:aos|d(?:os|uns|eles|est?es|aqueles|outros)|n(?:os|uns|eles|est?es|aqueles|outros)|algúns|polos)"><!-- XXX lost 'me+o|che+o|lle+o'+s-->
<!ENTITY contraccions_FP "(?:ás|d(?:as|uñas|elas|est?as|aquelas|outras)|n(?:as|unhas|elas|est?as|aquelas|outras)|algunhas|polas)"><!-- XXX lost 'me+a|che+a|lle+a'+s-->
<!ENTITY verbos_auxiliares_part_pasado "(?:ser|estar|ter|haber|ficar)">
<!ENTITY abreviaturas "(?:s(?:[eé]c)?|[Ee]tc\.|(?:m[aá]x|m[ií]n|[aA]prox)|(?:[aA]pt?do|[aA]sdo|[aA]vd?a?|[Cc]ód|[Dd]e?pto|[Ff]ac|[Ii]nst)|(?:[Aa]fm[oa]s?|Emcia|Ilt?m[ao]s?|Iltres?|MM|Exc?m[ao]s?|Magf[oa]|D(?:na)?|Sra?|Sr[ea]s|Srta|Dra?|Dr[ea]s?|Rm[ao]|Rev|Revm[ao]|Mons|Emmo|Rv?d[ao]|[Ll]icd[oa]|[Ll]ic|[Ll]d[oa]|[pP]rofs?)|(?:[Nn][úu]ms?|[fF]igs?|[Pp][aá]xs?|pp?|cc?a)|(?:[Vv]ols?|[Cc]aps?)|(?:[Aa]dmóns?|[aA]d(?:mt)?v[oa]s?)|(?:[pP]pal|[Vv]des?|[Ii]b[íi]d|[Rr]efs?|[Cc]it|[Aa]brevs?|[Aa]bl|[Aa]dx|[Aa]dv|[Aa]cr|[Cc]onx|[Ll]oc|[Pp]rep|[Ss]ubst)|(?:[vV]id|[Cc]fr?)|(?:[Cc]oord|[Ee]d)s?|(?:[Cc]t[ae]|[Tt]e?lf|[Tt]fno|[Tt]el[eé]f|[Tt]el)s|(?:[oO]p|[lL]oc)|cit|[aá]l|vs)"><!-- XXX retrieved from segment.srx, Galician section -->
<!ENTITY MSG_ECV "Posíbel erro de concordancia verbal.">
<!ENTITY MSG_ECX "Posíbel erro de concordancia de xénero.">
<!ENTITY MSG_ECN "Posíbel erro de concordancia de número.">
]>
<rules lang="gl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd">
<unification feature="number">
<equivalence type="singular">
<token postag="(?:[NZ]..|[ADP]...|V....)S.+" postag_regexp="yes"/>
</equivalence>
<equivalence type="plural">
<token postag="(?:[NZ]..|[ADP]...|V....)P.+" postag_regexp="yes"/>
</equivalence>
</unification>
<unification feature="gender">
<equivalence type="masc">
<token postag="(?:[NZ].|[ADP]..|V.....)[MC].+" postag_regexp="yes"/>
</equivalence>
<equivalence type="fem">
<token postag="(?:[NZ].|[ADP]..|V.....)[FC].+" postag_regexp="yes"/>
</equivalence>
</unification>
<unification feature="person">
<equivalence type="first">
<token postag="(?:V...|PP)1.+" postag_regexp="yes"/>
</equivalence>
<equivalence type="second">
<token postag="(?:V...|PP)2.+" postag_regexp="yes"/>
</equivalence>
<equivalence type="third">
<token postag="(?:V...|PP)3.+" postag_regexp="yes"/>
</equivalence>
</unification>
<category id="CAT0" name="Gramática::Concordancia">
<rulegroup id='GENERAL_GENDER_AGREEMENT_ERRORS' name="Concordancia de género: Geral">
<!-- General gender concordance errors -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-21 -->
<url>http://www.lingua.gal/c/document_library/get_file?file_path=/portal-lingua/celga/celga-1/material-alumno/Manual_Aula_de_Galego_1_resumo_gramatical.pdf</url>
<antipattern case_sensitive='yes'><!-- XXX Proper names exception -->
<unify negate='yes'>
<feature id="gender"/><feature id="number"/>
<token postag_regexp='yes' postag='(?:N|A).+|UNKNOWN' regexp='yes'>\p{Lu}.+</token>
<token regexp='yes'>\p{Lu}.+</token>
</unify>
</antipattern>
<rule>
<antipattern>
<unify>
<feature id="gender"/><feature id="number"/>
<token/>
<token regexp='yes'>(?:&precede_nome_proprio;)e?s?</token>
</unify>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)MS.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CF]S.+|V.[CSIG].+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception>ás</exception><!-- XXX Dealt by HOMOPHONE_AS_CARD -->
<exception regexp='yes'>e|ser|son|termo|nome</exception></token>
<token min='0' postag='(?:A..|Z.)C[SN].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[SN].+'/></token>
<token postag='(?:[NZ].|A..)F.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CM].+|V.[CSI].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>unha|mas</exception>
</token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)MS(.+)" postag_replace='$1FS$2' postag_regexp="yes" include_skipped='all'/> <match no='3' include_skipped='all'/> \4</suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..)F.(.+)" postag_replace='$1MS$2' postag_regexp="yes"/></suggestion>
<example correction='Unha vaca|Un (vaca)'><marker>Un vaca</marker> está no pasto.</example>
<example correction='unha tortilla|un (tortilla)'>Vostede pode facer <marker>un tortilla</marker> española para eu cea, por favor?</example>
<example>O Un tórnase Dous, o Dous tórnase Tres.</example>
<!--example>Dise que a cada día nace un trouxa, e diso o vigarista sabe.</example--><!-- XXX solved after disambiguation rules are converted -->
<!--example correction='unha sándwich|un (sándwich)'>Están comendo <marker>un sándwich</marker>.</example-->
<!--example correction="unha espantosa dor|un espantosa (dor)">Teño <marker>un espantosa dor</marker> na cabeza.</example--><!-- XXX make example with neutral adjective instead of espantosa>
<example correction="unha gran erupción|un gran (erupción)">Por exemplo, <marker>un gran erupción</marker> volcánica causa maior reflexión da luz solar de vo…</example-->
<example>O monte Fariña é unha montaña do distrito de Vila Real.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_MS;
<exception postag_regexp='yes' postag='RG|NP.+'/></token>
<token min='0' postag='(?:A..|Z.)C[SN].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[SN].+'/></token>
<token postag='(?:[NZ].|A..|DP.)F.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..|DP.)[CM].+|V.[CSI].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>unha|mas</exception>
</token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..)F.(.+)" postag_replace='$1MS$2' postag_regexp="yes"/></suggestion>
<example correction='no (hora)'>Foi resolto <marker>no hora</marker> correcta.</example>
<example type='correct'>Foi resolto <marker>na hora</marker> correcta.</example>
</rule>
<rule>
<antipattern>
<unify>
<feature id="gender"/><feature id="number"/>
<token/>
<token regexp='yes'>(?:&precede_nome_proprio;)s</token>
</unify>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)MP.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CF]P.+|V.[CSIG].+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception regexp='yes'>as|termos|nomes</exception></token>
<token min='0' postag='(?:A..|Z.)C[NP].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NP].+'/></token>
<token postag='(?:[NZ].|A..)F.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CM].+|V.[CSI].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>unha|media</exception>
</token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)MP(.+)" postag_replace='$1FP$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> \4</suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)F.(.+)" postag_replace='$1MP$2' postag_regexp="yes"/></suggestion>
<example correction='As invasoras|Os invasores'><marker>Os invasoras</marker> holandeses decidiron ir en dirección ao Río Grande do Norte…</example>
<example correction='As frases|Os (frases)'><marker>Os frases</marker> están erradas.</example>
<example correction='Unhas cadelas|Uns cans'><marker>Uns cadelas</marker> están na rúa.</example>
<example type='correct'><marker>Os bois</marker> están no pasto.</example>
<!--example correction="unhas espantosas dores|uns espantosas (dores)">Teño <marker>uns espantosas dores</marker> na cabeza.</example--><!-- XXX adapt example with neutral adjective -->
<example>Existe cada vez máis presión nos media para que presenten contidos de calidade.</example>
<example>Os ríos Onda, Ave e Leça pertencen á mesma rexión hidrográfica.</example>
<example correction="As escolas|Os (escolas)"><marker>Os escolas</marker> Álvaro de Campos, José Rodrigues dos Santos e Fernando Persoa teñen sido ben avaliadas.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_MP;
<exception postag_regexp='yes' postag='RG|NP.+'/></token>
<token min='0' postag='(?:A..|Z.)C[NP].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NP].+'/></token>
<token postag='(?:[NZ].|A..|DP.)F.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..|DP.)[CM].+|V.[CSI].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>unha|mas</exception>
</token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..)F.(.+)" postag_replace='$1MP$2' postag_regexp="yes"/></suggestion>
<example correction='Algúns (frases)'><marker>Algúns frases</marker> ten erros gramaticais.</example>
<example type='correct'><marker>Algunhas frases</marker> ten erros gramaticais.</example>
<example correction='Nos (mil)'><marker>Nos mil</marker> e unha noites.</example>
</rule>
<rule>
<antipattern>
<token>industria</token>
<token>automóbil</token>
</antipattern>
<antipattern>
<unify>
<feature id="gender"/><feature id="number"/>
<token/>
<token regexp='yes'>(?:&precede_nome_proprio;)e?s?</token>
</unify>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token regexp='yes'>zonas?</token>
<token>euro</token>
</antipattern>
<antipattern>
<token>alínea</token>
<token regexp='yes'>\w|\d</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)FS.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CM]S.+|V.[CSI].+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception regexp='yes'>e|ser|a|palabra|letra|comunidade</exception></token>
<token min='0' postag='(?:A..|Z.)C[NS].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NS].+'/></token>
<token postag='(?:[NZ].|A..)M.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CF].+|V.[CSIG].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>un|uns|ser|&puntos_cardeais;|números?|son</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)FS(.+)" postag_replace='$1MS$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> \4</suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)M.(.+)" postag_replace='$1FS$2' postag_regexp="yes"/></suggestion>
<example correction='Un boi|Unha (boi)'><marker>Unha boi</marker> está no pasto.</example>
<example>Á comunidade Mozilla (Firefox, Thunderbird e SeaMonkey).</example>
<example>Unha vaca está no pasto.</example>
<!--example correction="un espantosa inchazo|unha espantosa (inchazo)">Teño <marker>unha espantoso inchazo</marker> na cabeza.</example XXX enable after disambiguation improvements. Also tests 'espantoso' as neutral -->
<example>Alemaña perdera a Primeira Guerra Mundial debido á Revolución alemá.</example>
<example>Unha rúa Roberto Duarte Silva, tantas memorias.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_FS;
<exception postag_regexp='yes' postag='RG|NP.+'/></token>
<token min='0' postag='(?:A..|Z.)C[NS].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NS].+'/></token>
<token postag='(?:[NZ].|A..|DP.)M.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..|DP.)[CF].+|V.[CSIG].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>un|uns|ser|&puntos_cardeais;|números?|son</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)M.(.+)" postag_replace='$1FS$2' postag_regexp="yes"/></suggestion>
<example correction='Algunha (boi)'><marker>Algunha boi</marker> está no pasto.</example>
</rule>
<rule>
<antipattern>
<unify>
<feature id="gender"/><feature id="number"/>
<token/>
<token regexp='yes'>(?:&precede_nome_proprio;)s</token>
</unify>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token>alíneas</token>
<token regexp='yes'>\w|\d</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)FP.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CM]P.+|V.[CSI].+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception regexp='yes'>e|palabras|letras|rúas|illas</exception></token>
<token min='0' postag='(?:A..|Z.)C[NP].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NP].+'/></token>
<token postag='(?:[NZ].|A..)M.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)[CF].+|V.[CSIG].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>un|uns|ser|&puntos_cardeais;|números?|son</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)FP(.+)" postag_replace='$1MP$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> \4</suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)M.(.+)" postag_replace='$1FP$2' postag_regexp="yes"/></suggestion>
<example correction='Uns bois|Unhas (bois)'><marker>Unhas bois</marker> están no pasto.</example>
<example type='correct'><marker>Unhas vacas</marker> están no pasto.</example>
<!-- example correction="uns terríveis inchaços|unhas terríveis (inchaços)">Teño <marker>unhas espantosas inchaços</marker> na cabeza.</example XXX enable after disambiguation improvements. Also tests 'espantoso' as neutral -->
<example correction="os millónes|as (millónes)">Vexan <marker>as millónes</marker> de mulleres.</example>
<!--example>Isso é nas escolas Álvaro de Campos, José Rodrigues dos Santos e Fernando Pessoa.</example--><!-- TODO Tokenize conjunctions -->
<example>Isto é, as escolas Álvaro de Campos, José Rodrigues dos Santos e Fernando Persoa.</example>
<example correction="Os ríos|As (ríos)"><marker>As ríos</marker> Onda, Ave e Leça pertencen á mesma rexión hidrográfica.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_FP;
<exception postag_regexp='yes' postag='RG|NP.+'/></token>
<token min='0' postag='(?:A..|Z.)C[NP].+' postag_regexp='yes'>
<exception negate_pos='yes' postag_regexp='yes' postag='(?:[NZ].|A..)C[NP].+'/></token>
<token postag='(?:[NZ].|A..|DP.)M.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..|DP.)[CF].+|V.[CSIG].+|(C|R).+|SPS00.*' postag_regexp='yes'/>
<exception regexp='yes'>un|uns|ser|&puntos_cardeais;|números?|son</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)M.(.+)" postag_replace='$1FP$2' postag_regexp="yes"/></suggestion>
<!--example correction="das grandes descubertas">A maioría <marker>das grandes descubertos</marker> científicas son nada menos que o descubrimento do ób…</example XXX add after disambiguation sync -->
<example correction='Algunhas (bois)'><marker>Algunhas bois</marker> están no pasto.</example>
</rule>
</rulegroup>
<!-- Specific gender concordance errors - A > Masculine Noun -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-24 -->
<rule default='off' id='ERRO_DE_CONCORDNCIA_DO_GÉNERO_FEMININO_A' name="Concordancia de género: A + Masculino">
<pattern>
<marker>
<token>a</token>
<token postag='(?:[NZ].|A..)MS.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)MS.+' postag_regexp='yes' negate_pos='yes'/>
<exception regexp='yes'>un|uns|ser|&puntos_cardeais;|números?|exemplo|fin|favor|serio|tempo|lado|uso|dereito</exception></token>
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>o \2</suggestion>
<suggestion>a <match no='2' postag='(A..|N.|Z.)MS(.+)' postag_replace='$1FS$2' postag_regexp='yes'/></suggestion>
<url>http://www.lingua.gal/c/document_library/get_file?file_path=/portal-lingua/celga/celga-1/material-alumno/Manual_Aula_de_Galego_1_resumo_gramatical.pdf</url>
<example correction='O boi|A (boi)'><marker>A boi</marker> está no pasto.</example>
<example type='correct'>A vaca está no pasto.</example>
</rule>
<rule default='off' id='A_WORD_A' name="Concordancia de género: A + palavra terminada em A">
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<pattern>
<token regexp='yes'>a</token>
<token postag='(?:[NZ].|A..)M.+' postag_regexp='yes' regexp='yes'>.+a$
<exception regexp='yes'>palabra|letra</exception></token>
</pattern>
<message>Posíbel erro de concordancia de xénero.</message>
<suggestion>o \2</suggestion>
<url>http://www.lingua.gal/c/document_library/get_file?file_path=/portal-lingua/celga/celga-1/material-alumno/Manual_Aula_de_Galego_1_resumo_gramatical.pdf</url>
<example correction="O dogma"><marker>A dogma</marker> de quen sabe moito.</example>
</rule>
<rulegroup id='SER_ADJECTIVE_AGREEMENT' name="Erro de concordancia: SER + adjetivo + nome">
<!-- Created by Tiago F. Santos, 2017-09-06 -->
<rule>
<pattern>
<token inflected="yes">ser</token>
<token postag_regexp="yes" postag="A..MS.+">
<exception negate_pos='yes' postag_regexp="yes" postag="(?:A..|N.)MS.+"/></token>
<token postag_regexp="yes" postag="(?:Z|D..)[CF][SN].+"/>
<token postag_regexp="yes" postag="A..[CF][SN].+" min='0' max='2'/>
<token postag="N.FS.+" postag_regexp='yes'>
<exception postag_regexp="yes" postag="(?:A..|[PN].)[CM]S.+"/></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>\1 <match no='2' postag='(A..|N.|Z.)MS(.+)' postag_replace='$1FS$2' postag_regexp='yes'/> \3 <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/></suggestion>
<example correction="É necesaria unha festa"><marker>É necesario unha festa</marker>.</example>
<example correction="É necesaria unha gran festa"><marker>É necesario unha gran festa</marker>.</example>
</rule>
<rule>
<pattern>
<token inflected="yes">ser</token>
<token postag_regexp="yes" postag="A..FS.+">
<exception negate_pos='yes' postag_regexp="yes" postag="(?:A..|N.)FS.+"/></token>
<token postag_regexp="yes" postag="(?:Z|D..)[CM][SN].+"/>
<token postag_regexp="yes" postag="A..[CM][SN].+" min='0' max='2'/>
<token postag="N.MS.+" postag_regexp='yes'>
<exception postag_regexp="yes" postag="(?:A..|[PN].)[CF]S.+"/></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>\1 <match no='2' postag='(A..|N.|Z.)FS(.+)' postag_replace='$1MS$2' postag_regexp='yes'/> \3 <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/></suggestion>
<example correction="É necesario un acordo"><marker>É necesaria un acordo</marker>.</example>
<example correction="É necesario un gran acordo"><marker>É necesaria un gran acordo</marker>.</example>
</rule>
<rule>
<pattern>
<token inflected="yes">ser</token>
<token postag_regexp="yes" postag="A..MP.+">
<exception negate_pos='yes' postag_regexp="yes" postag="(?:A..|N.)MP.+"/></token>
<token postag_regexp="yes" postag="(?:Z|D..)[CF][PN].+"/>
<token postag_regexp="yes" postag="A..[CF][PN].+" min='0' max='2'/>
<token postag="N.FP.+" postag_regexp='yes'>
<exception postag_regexp="yes" postag="(?:A..|[PN].)[CM]P.+"/></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>\1 <match no='2' postag='(A..|N.|Z.)MP(.+)' postag_replace='$1FP$2' postag_regexp='yes'/> \3 <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/></suggestion>
<example correction="Son necesarias unhas festas"><marker>Son necesarios unhas festas</marker>.</example>
<example correction="Son necesarias unhas grandes festas"><marker>Son necesarios unhas grandes festas</marker>.</example>
</rule>
<rule>
<pattern>
<token inflected="yes">ser</token>
<token postag_regexp="yes" postag="A..FP.+">
<exception negate_pos='yes' postag_regexp="yes" postag="(?:A..|N.)FP.+"/></token>
<token postag_regexp="yes" postag="(?:Z|D..)[CM][PN].+"/>
<token postag_regexp="yes" postag="A..[CM][PN].+" min='0' max='2'/>
<token postag="N.MP.+" postag_regexp='yes'>
<exception postag_regexp="yes" postag="(?:A..|[PN].)[CF]P.+"/></token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>\1 <match no='2' postag='(A..|N.|Z.)FP(.+)' postag_replace='$1MP$2' postag_regexp='yes'/> \3 <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/></suggestion>
<example correction="Son necesarios uns acordos"><marker>Son necesarias uns acordos</marker>.</example>
<example correction="Son necesarios uns grandes acordos"><marker>Son necesarias uns grandes acordos</marker>.</example>
</rule>
</rulegroup>
<!-- Specific gender concordance errors - O > Feminine Noun -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-24 -->
<rule id='ERRO_DE_CONCORDNCIA_DO_GÉNERO_MASCULINO_O' name="Concordancia de género: O + Feminino">
<pattern>
<marker>
<token>o</token>
<token postag='(?:[NZ].|A..)F.+' postag_regexp='yes'>
<exception postag='(?:[NZ].|A..)F.+' postag_regexp='yes' negate_pos='yes'/>
<exception regexp='yes'>unha|unhas|e|ser|nome|termo</exception></token>
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECX;</message>
<suggestion>a \2</suggestion>
<suggestion>o <match no='2' postag='(A..|N.|Z.)FS(.+)' postag_replace='$1MS$2' postag_regexp='yes'/></suggestion>
<url>http://www.lingua.gal/c/document_library/get_file?file_path=/portal-lingua/celga/celga-1/material-alumno/Manual_Aula_de_Galego_1_resumo_gramatical.pdf</url>
<example correction='A cadela|O can'><marker>O cadela</marker> está no pasto.</example>
<example type='correct'>A cadela está no pasto.</example>
</rule>
<rulegroup id='GENERAL_NUMBER_AGREEMENT_ERRORS' name="Concordancia de Número: Geral">
<!-- General number concordance errors -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-19 -->
<url>http://www.lingua.gal/c/document_library/get_file?file_path=/portal-lingua/celga/celga-1/material-alumno/Manual_Aula_de_Galego_1_resumo_gramatical.pdf</url>
<antipattern case_sensitive='yes'>
<unify negate='yes'><!-- XXX Proper names exception -->
<feature id="gender"/><feature id="number"/>
<token postag_regexp='yes' postag='(?:N|A).+|UNKNOWN' regexp='yes'>\p{Lu}.+</token>
<token regexp='yes'>\p{Lu}.+</token>
</unify>
</antipattern>
<antipattern>
<unify negate='yes'>
<feature id="number"/>
<token postag_regexp='yes' postag='N.+'/>
<token postag_regexp='yes' postag='Z.+'/>
</unify>
</antipattern>
<rule>
<antipattern>
<token regexp='yes'>(?:&precede_nome_proprio;)s</token>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token>os</token>
<token regexp='yes'>máis|menores|maiores|mellores|peores</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[MC]P.+' postag_regexp='yes'/>
</antipattern>
<antipattern>
<token postag='(?:D[ADIP].|NC|A..|Z.).S.+' postag_regexp='yes'/>
<token regexp='yes'>d[eao]s?</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[MC]P.+' postag_regexp='yes'/>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)[MC]P.+' postag_regexp='yes'>
<exception postag='(?:D[ADIP].|NC|A..|P..|Z.)[MC]S.+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception regexp='yes'>.+[°′″]</exception></token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|Z.)[MC]S.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|Z.)[MC]P.+|P[ID].[CFM].+|(C|R).+|SPS00.*|VMG0000' postag_regexp='yes'/>
<exception regexp="yes">hai|son|ser|deber|van|serán</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)[MC]P(.+)" postag_replace='$1[MC]S$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[MC]S(.+)" postag_replace='$1[MC]P$2' postag_regexp="yes"/></suggestion>
<example correction='O can|Os cans'><marker>Os can</marker> está no pasto.</example>
<example correction="pai natal|pais natais">Había <marker>pais natal</marker> na festa.</example>
<example correction="todo litoral|todos litorais">Posúe unha extensión aproximada de 378 km, o que representa 3,8% de <marker>todos litoral</marker> do México.</example>
<example correction="Caso máis preocupante|Casos máis preocupantes"><marker>Casos máis preocupante</marker> son estas.</example>
<example>Conforme máis datos van sendo acumulados de persoas de todas as idades.</example>
<example>Os rinocerontes serán anestesiados, antes de se remover o chifre.</example>
<example>Calzas, as máis resgadas posíbel!</example>
<example>Os montes Evereste, K2 e Kanchenjunga son os máis altos do mundo.</example>
<example>As cores son: Ás de Copas vermello, Ás de Ouros vermello, Ás de Paus negro e Ás de Espadas negro.</example>
</rule>
<rule>
<antipattern>
<token postag_regexp='yes' regexp='yes' postag='R.+'>&contraccions_MP;
<exception postag_regexp='yes' negate_pos='yes' postag='R.+'/></token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_MP;</token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|DP.|Z.)[MC]S.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|DP.|Z.)[MC]P.+|NPMS.+|P[ID].[CFM].+|(C|R).+|SPS00|VMG0000' postag_regexp='yes'/>
<exception regexp="yes">[dlv]ê|hai|son|ser|deber|media|mídia</exception></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[MC]S(.+)" postag_replace='$1[MC]P$2' postag_regexp="yes"/></suggestion>
<example correction='dos pais'>É o orgullo <marker>dos pai</marker>.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>&precede_nome_proprio;</token>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token regexp='yes'>tod[oa]</token>
<token>ouvidos</token>
</antipattern>
<antipattern>
<token>o</token>
<token regexp='yes'>máis|menor|maior|peor|mellor</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[MC]S.+' postag_regexp='yes'/>
</antipattern>
<antipattern>
<token postag='(?:D[ADIP].|NC|A..|Z.).P.+' postag_regexp='yes'/>
<token regexp='yes'>d[eao]</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[MC]S.+' postag_regexp='yes'/>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|ou|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)[MC]S.+' postag_regexp='yes'>
<exception postag='(?:D[ADIP].|N.|A..|Z.)[MC]P.+|(C|R).+|SPS00|VMG0000' postag_regexp='yes'/>
<exception>ás</exception><!-- XXX Dealt by HOMOPHONE_AS_CARD -->
<exception regexp="yes">hai|son|ser|haber|serán|van|uso|cero</exception>
<exception regexp='yes'>.+[°′″]</exception></token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|Z.)[MC]P.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|Z.)[MC]S.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token>
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[MC]P(.+)" postag_replace='$1[MC]S$2' postag_regexp="yes"/></suggestion>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)[MC]S(.+)" postag_replace='$1[MC]P$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<example correction='Este gato|Estes gatos'><marker>Este gatos</marker> están no pasto.</example>
<example>Son todo oídos</example>
<example>Uso óculos desde os 6 anos,</example>
<example>Calzas, o máis posíbel resgadas.</example>
<example>O Monte Camerún é o volcán máis activo do oeste africano, tendo numerosas erupcións rexistradas.</example>
<example>O número nove.</example>
<example>Alí fóra están cero graos.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>tod[oa]</token>
<token>ouvidos</token>
</antipattern>
<antipattern>
<token postag_regexp='yes' regexp='yes' postag='R.+'>&contraccions_MS;
<exception postag_regexp='yes' negate_pos='yes' postag='R.+'/></token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|ou|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_MS;</token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|DP.|Z.)[MC]P.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|DP.|Z.)[MC]S.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token>
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[MC]P(.+)" postag_replace='$1[MC]S$2' postag_regexp="yes"/></suggestion>
<suggestion>\2s <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<example correction='do pai|dos pais'>É o orgullo <marker>do pais</marker>.</example>
<example correction='polo medio|polos medios'>Conseguiron combater o fogo <marker>polo medios</marker> de todos os revezes.</example>
<example>Polo menos nós terminamos o traballo pesado.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>&precede_nome_proprio;</token>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token>a</token> <!-- FIXME Improve disambiguator for a as SP cases -->
<token>docentes</token>
</antipattern>
<antipattern>
<token>unha</token>
<token>vez</token>
</antipattern>
<antipattern>
<token postag='(?:D[ADIP].|NC|A..|Z.).P.+' postag_regexp='yes'/>
<token regexp='yes'>d[eao]</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[FC]S.+' postag_regexp='yes'/>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)[FC]S.+' postag_regexp='yes'>
<exception postag='(?:D[ADIP].|N.|A..|Z.)[FC]P.+|C.|R.' postag_regexp='yes'/>
<exception regexp='yes'>a|.+[°′″]</exception></token><!-- TODO improve 'a' as preposition disambiguation -->
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|Z.)[FC]P.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|Z.)[FC]S.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token>
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..)[FC]P(.+)" postag_replace='$1[FC]S$2' postag_regexp="yes"/></suggestion>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..)[FC]S(.+)" postag_replace='$1[FC]P$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<example correction='Unha vaca|Unhas vacas'><marker>Unha vacas</marker> son malladas, outras non.</example>
<example>O programa Lendas do Futuro é bo?</example>
<example>Unha vez acordadas as novas condicións, será feito o abastecemento eléctrico.</example>
<!--example correction='unión empobrecida|unións empobrecidas'>As rexións na <marker>unión empobrecidas</marker> acabaron por ser culpabilizadas.</example XXX uncomment after better tagging of VMPs -->
<example>As rexións da <marker>unión empobrecidas</marker> acabaron por ser culpabilizados.</example>
</rule>
<rule>
<antipattern>
<token postag_regexp='yes' regexp='yes' postag='R.+'>&contraccions_FS;
<exception postag_regexp='yes' negate_pos='yes' postag='R.+'/></token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_FS;</token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|DP.|Z.)[FC]P.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|DP.|Z.)[FC]S.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token><!-- FIXME Review patterns to include passive without crippling detection -->
</marker>
<token negate='yes' regexp='yes'>&hifen;</token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[FC]P(.+)" postag_replace='$1[FC]S$2' postag_regexp="yes"/></suggestion>
<suggestion>\2s <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<example correction='nunha especie|nunhas especies'>Valor contido <marker>nunha especies</marker> por descubrir.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>(?:&precede_nome_proprio;)s</token>
<token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
</antipattern>
<antipattern>
<token postag='(?:D[ADIP].|NC|A..|Z.).S.+' postag_regexp='yes'/>
<token regexp='yes'>d[eao]s?</token>
<token postag='(?:D[ADIP].|NC|A..|Z.)[FC]P.+' postag_regexp='yes'/>
</antipattern>
<antipattern>
<token>distribucións</token>
<token>Linux</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|&hifen;</token>
<marker>
<token postag='(?:D[ADIP].|NC|A..|P[^IDP].|Z.)[FC]P.+' postag_regexp='yes'>
<exception postag='(?:D[ADIP].|N.|A..|Z.)[FC]S.+|(C|R).+|SPS00' postag_regexp='yes'/>
<exception regexp='yes'>.+[°′″]</exception></token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|Z.)[FC]S.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|Z.)[FC]P.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..|P[^IDP].|Z.)[FC]P(.+)" postag_replace='$1[FC]S$2' postag_regexp="yes"/> <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/></suggestion>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[FC]S(.+)" postag_replace='$1[FC]P$2' postag_regexp="yes"/></suggestion>
<example correction='A vaca|As vacas'><marker>As vaca</marker> son malladas.</example>
<example>Presentou os programas Xornal do Mundo, Internacional Patati e Plus Berlin.</example>
<example correction='fechadura grande|fechaduras grandes'>Coloca esa chave nas <marker>fechaduras grande</marker>.</example>
<example correction="situación máis preocupante|situacións máis preocupantes">A <marker>situacións máis preocupante</marker> é esta.</example>
<example>Conforme máis datos van sendo acumulados de persoas de todas as idades.</example>
<example>Pega na chave das <marker>fechaduras grande</marker>.</example>
</rule>
<rule>
<antipattern>
<token postag_regexp='yes' regexp='yes' postag='R.+'>&contraccions_FP;
<exception postag_regexp='yes' negate_pos='yes' postag='R.+'/></token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|&hifen;</token>
<marker>
<token regexp='yes'>&contraccions_FP;</token>
<token regexp='yes' min='0'>&adverbios_de_intensidade;</token><!-- XXX use POS after disambiguation improvements -->
<token postag='(?:N.|A..|DP.|Z.)[FC]S.+' postag_regexp='yes'>
<exception postag='(?:N.|A..|DP.|Z.)[FC]P.+|P[ID].[CFM].+|(C|R).+|SPS00.*' postag_regexp='yes'/></token>
</marker>
<token>
<exception postag_regexp='yes' postag='[^Z].+' regexp='yes'>e|&hifen;</exception></token>
</pattern>
<message>&MSG_ECN;</message>
<suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no="4" postag="(N.|[AD]..|Z.)[FC]S(.+)" postag_replace='$1[FC]P$2' postag_regexp="yes"/></suggestion>
<example correction='nunhas especies'>Valor contido <marker>nunhas especie</marker> por descubrir.</example>
</rule>
</rulegroup>
</category>
<category id='TYPOGRAPHY' name="Tipografia" type="typographical">
<rulegroup id='GENERAL_NUMBER_FORMAT' name="Matemático: Formateo de números: 10 341 330">
<!-- Created by Tiago F. Santos, 2017-03-05 -->
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/2500-2-500-ou-2500/12873</url TODO localize -->
<short>Erro tipográfico</short>
<rule>
<antipattern>
<token spacebefore='no'>,</token>
<token regexp="yes" spacebefore='no'>\d+</token>
</antipattern>
<antipattern>
<token regexp="yes">\d{4}</token>
<token>
<exception regexp="yes">\d+</exception></token>
</antipattern>
<antipattern>
<token>
<exception regexp="yes">\d+</exception></token>
<token postag='SENT_END' regexp="yes">\d{4}</token>
</antipattern>
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp="yes">\d+</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<pattern>
<marker>
<token regexp="yes">\d+\d{3}(?:,\d+)?</token>
</marker>
</pattern>
<message>Se non é un ano, os algarismos deben ser agrupados en grupos de 3.</message>
<suggestion><match no="2" regexp_match="(\d+)(\d{3})(,\d+)?" regexp_replace="$1 $2$3"/></suggestion>
<example correction='10 341'>En 2016, Portugal rexistrou <marker>10341</marker> miles de habitantes.</example>
<example correction='1 034'><marker>1034</marker> 133 corresponde a un décimo dos habitantes portugueses</example>
<example>O ano ten exactamente 365,24219858156 días.</example>
<example>É o ano de <marker>1989</marker>.</example>
<example>É o ano de <marker>1989</marker></example>
<example>ISBN 0-522-85317-X.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">\d+\,\d{3}\d+</token>
</pattern>
<message>Os algarismos deben ser agrupados en grupos de 3.</message>
<suggestion><match no="3" regexp_match="(\d+,\d{3})(\d+)" regexp_replace="$1 $2"/></suggestion>
<example correction='17,103 41'>A media exacta é de <marker>17,10341</marker> valores.</example>
<example correction='365,242 19858156'>O ano ten exactamente <marker>365,24219858156</marker> días.</example>
</rule>
</rulegroup>
<rulegroup id="UNITS_OF_MEASURE_SPACING" name="Espazos en unidades de medida">
<!-- Localized from German by Tiago F. Santos, Portuguese rule, 2017-09-29 -->
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/simbolos-de-unidades/11572</url TODO localize -->
<rule>
<regexp case_sensitive='yes'>(\-?[0-9]+[0-9,\.]*(°C|°F|°De?|°R[éeøa]?|(Z|E|P|T|G|M|k|h|da|d|c|m|µ|n|p|f|a|z|y)?m|(Z|E|P|T|G|M|k|h|da|d|c|m|µ|n|p|f|a|z|y)?N|[kKMGTPEZY]i?B|[kmµnp]g|[Mk]t|kWh|GWa|MWd|MWh))\b</regexp>
<message>Debe dar un espazo entre o valor e a unidade de medida: <suggestion><match no="1" regexp_match="((\-)?[0-9]+[0-9,.]*{1,})" regexp_replace="$1 "/></suggestion></message>
<!-- url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/simbolos-de-unidades/11572</url TODO localize -->
<example correction="25 °C">Fan <marker>25°C</marker>.</example>
<example correction="-25 °C">Fan <marker>-25°C</marker>.</example>
<example correction="25,5 °F">Fan <marker>25,5°F</marker>.</example>
<example>Fan <marker>25,5 °C</marker>.</example>
<example>Fan <marker>25,5 °Ra</marker>.</example>
<example>Son <marker>5 km</marker> gelaufen.</example>
<example correction="5 km">Son <marker>5km</marker> de distancia.</example>
<example>Son <marker>5 ZiB</marker> de datos.</example>
<example correction="5 ZiB">Son <marker>5ZiB</marker> de datos.</example>
<example>Son <marker>5 kB</marker> de datos.</example>
<example correction="5 kB">Son <marker>5kB</marker> de datos.</example>
<example correction="5 kg">Pesa <marker>5kg</marker>.</example>
<example correction="5 Mt">Pesa <marker>5Mt</marker>.</example>
<example>Pesa <marker>5 µg</marker>.</example>
<example>Isótopo 241Am</example>
<example>(AsCH3)2n</example>
<example>Bd. 1b</example>
<example>Primeiro lanzamento de Saturno 1B</example>
<example correction="2.000 kWh">Foron consumidos <marker>2.000kWh</marker></example>
<example>Os xuros son de 5 <marker>%</marker>.</example>
<example>jbo:1901moi</example>
</rule>
<rule>
<regexp>((\-)?[0-9]+[0-9.,]*{1,}) (°[^CFK])</regexp>
<message>Non existe espaçamento a preceder o símbolo de grao. Utilice <suggestion>\1°</suggestion> ou adicione a unidade de medida térmica (p.ex. <suggestion>\1 °C</suggestion>).</message>
<example correction="25°|25 °C">O ángulo é <marker>25 ° </marker></example>
<example correction="-25,5°|-25,5 °C">Fan <marker>-25,5 ° </marker>de temperatura.</example>
<example correction="-25°|-25 °C">Fan <marker>-25 ° </marker>de temperatura.</example>
<example correction="25°|25 °C">O ángulo é <marker>25 ° </marker>de abertura.</example>
<example correction="-25°|-25 °C">Fan <marker>-25 ° </marker>de temperatura.</example>
</rule>
<rule>
<regexp>((\-)?[0-9]+[0-9.,]{1,}) (″)</regexp>
<message>O sinal de segundos (\2) non é espaçado.</message>
<suggestion>\1\2\3</suggestion>
<example>3°14′ 45,54″</example>
<example correction="45″"><marker>45 ″</marker> E</example>
<example correction="45,54″"><marker>45,54 ″</marker> E</example>
</rule>
</rulegroup>
<rulegroup id='SI_UNITS_EXPONENT' name="Matemático: Unidades do Sistema Internacional: km2/km²">
<!-- Created by Tiago F. Santos, 2017-05-12 -->
<url>https://gl.wikipedia.org/wiki/Funci%C3%B3n_exponencial</url>
<short>Erro tipográfico</short>
<!--rule> XXX disambiguate numbers Z.+ and uncomment
<pattern case_sensitive="yes">
<token postag_regexp='yes' postag='Z.+' skip='3'/>
<marker>
<token regexp="yes">(?:[khdcmnµfYZEPTGM]|da)?[gmlsJNWCVSFTH](\^)?⁻?2
<exception regexp='yes'>(?:TV|GT)2</exception></token>
</marker>
</pattern>
<message>Os expoentes deben estar en sobrescrito.</message>
<suggestion><match no="2" regexp_match='(.+?)((\^)?)(⁻?)2' regexp_replace='$1$4²'/></suggestion>
<example correction="km²">..estado o ano de 2010, foi de 4,68 habitantes por <marker>km2</marker>, sendo a vixésima cuarta maior do Brasil e a quin…</example>
<example correction="km²">..estado o ano de 2010, foi de 4,68 habitantes por <marker>km^2</marker>, sendo a vixésima cuarta maior do Brasil e a quin…</example>
<example correction="s⁻²">g = 9,8 m.<marker>s⁻2</marker></example>
</rule>
<rule> XXX disambiguate numbers Z.+ and uncomment
<pattern case_sensitive="yes">
<token postag_regexp='yes' postag='Z.+' skip='3'/>
<marker>
<token regexp="yes">(?:[khdcmnµfYZEPTGM]|da)?[gmlsJNWCVSFTH](\^)?⁻?3
<exception regexp='yes'>(?:TV|GT)3</exception></token>
</marker>
</pattern>
<message>Os expoentes deben estar en sobrescrito.</message>
<suggestion><match no="2" regexp_match='(.+?)((\^)?)(⁻?)3' regexp_replace='$1$4³'/></suggestion>
<example correction="m³">A banheira tiña 2 <marker>m3</marker>.</example>
<example correction="m³">A banheira tiña 2 <marker>m^3</marker>.</example>
<example correction="s⁻³">g.t = 9,8 m.<marker>s⁻3</marker></example>
</rule-->
<rule>
<pattern case_sensitive="yes">
<token>/</token>
<marker>
<token regexp="yes">(?:[khdcmnµfYZEPTGM]|da)?[gmlsJNWCVSFTH](\^)?2</token>
</marker>
</pattern>
<message>Os expoentes deben estar en sobrescrito.</message>
<suggestion><match no="2" regexp_match='(.+?)((\^)?)2' regexp_replace='$1²'/></suggestion>
<example correction="">g = 9,8 m/<marker>s2</marker></example>
<example correction="">g = 9,8 m/<marker>s^2</marker></example>
</rule>
<rule>
<pattern case_sensitive="yes">
<token>/</token>
<marker>
<token regexp="yes">(?:[khdcmnµfYZEPTGM]|da)?[gmlsJNWCVSFTH](\^)?3</token>
</marker>
</pattern>
<message>Os expoentes deben estar en sobrescrito.</message>
<suggestion><match no="2" regexp_match='(.+?)((\^)?)3' regexp_replace='$1³'/></suggestion>
<example correction="cm³">ρ[H₂O]≈1,0 g/<marker>cm3</marker>.</example>
<example correction="cm³">ρ[H₂O]≈1,0 g/<marker>cm^3</marker>.</example>
</rule>
</rulegroup>
<rulegroup id="kWh" name="kW/h → kWh">
<!-- Localized from French grammar.xml by Tiago F. Santos, 2017-06-28 -->
<url>https://gl.wikipedia.org/wiki/Ordes_de_magnitude_(enerx%C3%ADa)</url>
<rule>
<pattern>
<token regexp="yes">[KMGT]?W|(kilo|mega|giga|tera)?watt</token>
<token spacebefore="no">/</token>
<token spacebefore="no" regexp="yes">h|hora</token>
</pattern>
<message>Se se refire á unidade de consumo de enerxía, debe escribir <suggestion>\1\3</suggestion>.</message>
<example correction="kWh">O aparello consome 5 <marker>kW/h</marker>.</example>
<example>O aparello consome 5 kW.h.</example>
<example>O aparello consome 5 kWh.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">(?-i)KW</token>
<token spacebefore="no" regexp='yes'>[·.]</token>
<token spacebefore="no">h</token>
</pattern>
<message>O prefixo kilo debe ser escrito en minúsculas.</message>
<suggestion><match no="1" case_conversion="startlower"/>h</suggestion>
<suggestion><match no="1" case_conversion="startlower"/>.h</suggestion>
<example correction="kWh|kW.h">O aparello consome 5 <marker>KW.h</marker>.</example>
<example>O aparello consome 5 kWh.</example>
</rule>
<rule>
<pattern case_sensitive="yes">
<token>KWh</token>
</pattern>
<message>O prefixo kilo debe ser escrito en minúsculas.</message>
<suggestion><match no="1" case_conversion="startlower"/></suggestion>
<example correction="kWh">O aparello consome 5 <marker>KWh</marker>.</example>
<example>O aparello consome 5 kW·h.</example>
<example>O aparello consome 5 kWh.</example>
</rule>
</rulegroup>
<rule id="SPACES_BETWEEN_OPERATORS" name="Matemático: Espazo entre operadores">
<!-- Localized from German grammar.xml, by Tiago F. Santos, 2017-07-09 -->
<antipattern> <!-- time exception: -->
<token regexp="yes">(?:[01]?[0-9]|2[0-4])[0-9]?</token>
<token>:</token>
<token regexp="yes">[0-5][0-9]</token>
</antipattern>
<pattern>
<marker>
<token regexp="yes">(?:[0-9]+[a-z]*)
<exception scope="previous" regexp="yes">escalas?</exception>
<exception scope="previous" regexp="yes">\d\d\d\d-\d\d-\d\d</exception>
</token>
<token spacebefore="no" regexp="yes">[\*×∗·\+÷:=]</token>
<token spacebefore="no" regexp="yes">((?:[0-9]+[a-z]*))+
<exception regexp="yes">\d\dh</exception></token>
</marker>
<token negate="yes">h</token>
</pattern>
<message>Separe as fórmulas con espazos (protexidos).</message>
<suggestion>\1 \2 \3</suggestion>
<example correction="5 * 5"><marker>5*5</marker>.</example>
<example correction="3a = 2"><marker>3a=2</marker>.</example>
<example>Un mapa na escala 1:80000.</example>
<example>Teño unha reunión ás 7:00 h.</example>
<example>Teño unha reunión ás 7:00h.</example>
<example>Enviado a 2014-01-23 10:32 :</example>
<example>a = 2 · x² + 5</example>
<example>4,5 × 2,5</example>
<example>Entre as 9:00 e as 16:45.</example>
</rule>
<rulegroup id='MULTIPLICATION_SIGN' name="Matemático: Multiplicación: x - × ">
<!-- Created by Tiago F. Santos, 2017-03-27 -->
<rule>
<antipattern>
<token regexp='yes'>[,o]</token>
<token>x</token>
<token regexp='yes'>[,e]</token>
</antipattern>
<antipattern>
<token regexp='yes'>\p{Lu}</token>
<token spacebefore='no'>.</token>
<token regexp='yes' spacebefore='yes'>\p{Lu}</token>
</antipattern>
<pattern>
<token regexp="yes">[a-z]|[\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+?[a-z]{0,1}</token>
<marker>
<token regexp='yes'>[x\*]</token>
</marker>
<token regexp="yes">[a-z]|[\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+?[a-z]{0,1}</token>
</pattern>
<message>Prefira o símbolo de multiplicación.</message>
<suggestion>×</suggestion>
<suggestion>·</suggestion>
<example correction="×|·">h = 6,626 <marker>x</marker> 10⁻³⁴ J.s</example>
<example correction="×|·">h = 6.626 <marker>x</marker> 10⁻³⁴ J.s</example>
<example correction="×|·">5 <marker>*</marker> 2 = 10</example>
<example correction="×|·">a = 5 <marker>*</marker> x + 7</example>
<example correction="×|·">a = 5x <marker>*</marker> 5 + 7</example>
<example correction="×|·">a <marker>*</marker> b</example>
<example>a = 2 · x² + 5</example>
<example>4,5 × 2,5 = 11,25</example>
<example>Consideremos <marker>que x é</marker> a coordenada horizontal, e y é a coordenada vertical.</example>
<example>Regueira Fernández, X. L.</example>
</rule>
<rule>
<regexp>([\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+?)[x\*]([\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+)</regexp>
<message>Prefira o símbolo de multiplicación.</message>
<suggestion>\1×\2</suggestion>
<suggestion>\1·\2</suggestion>
<example correction='2,998×10⁸|2,998·10⁸'>c=<marker>2,998x10⁸</marker> m/s</example>
<example correction="6.626×10⁻³⁴|6.626·10⁻³⁴">h = <marker>6.626x10⁻³⁴</marker> J.s</example>
<example correction="5×2|5·2"><marker>5*2</marker> = 10</example>
<example>a=2·x²+5</example>
<example>4,5×2,5=11,25</example>
</rule>
<rule>
<regexp>([a-z]|[\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+?[a-z]{0,1})\*([a-z]|[\d\.,⁻¹²³⁴⁵⁶⁷⁸⁹⁰]+?[a-z]{0,1})</regexp>
<message>Prefira o símbolo de multiplicación.</message>
<suggestion>\1×\2</suggestion>
<suggestion>\1·\2</suggestion>
<example correction="5×x|5·x">a=<marker>5*x</marker>+7</example>
<example correction="5x×5|5x·5">a=<marker>5x*5</marker>+7</example>
<example correction="a×b|a·b"><marker>a*b</marker></example>
<example>a=2·x²+5</example>
<example>4,5×2,5=11,25</example>
</rule>
</rulegroup>
<rulegroup id='PLUS_MINUS' name="Matemático: +- - ± ">
<!-- Created by Tiago F. Santos, 2017-03-28 -->
<rule>
<pattern>
<token>+</token>
<token regexp='yes' spacebefore='no'>&hifen;</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>±</suggestion>
<example correction='±'>m = 75,5 <marker>+-</marker> 0,1 g</example>
</rule>
<rule>
<pattern>
<token regexp='yes'>&hifen;</token>
<token spacebefore='no'>+</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>±</suggestion>
<example correction='±'>m = 75,5 <marker>-+</marker> 0,1 g</example>
</rule>
</rulegroup>
<rulegroup id="EQUAL_OR_X" name="Matemático: &gt;= (≥)">
<!-- Localized from German grammar.xml, by Tiago F. Santos, 2017-07-07 -->
<rule>
<regexp>&gt;=</regexp>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>≥</suggestion>
<suggestion>≧</suggestion>
<example>1 = 1</example>
<example correction="≥|≧">1 <marker>&gt;=</marker> 0</example>
</rule>
<!--rule> FIXME &lt; sequence is not being properly escaped. Verify interpreter.
<pattern>
<token>&lt;</token>
<token>=</token>
<token negate="yes">></token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>≤</suggestion>
<suggestion>≦</suggestion>
<example>1 ≤ 3</example>
<example type="incorrect">1 <marker>&gt;=</marker> 3</example>
</rule-->
</rulegroup>
<rulegroup id="ARROWS" name="-&gt; (→)">
<!-- Localized from German grammar.xml, by Tiago F. Santos, 2017-07-07 -->
<rule>
<pattern>
<token negate="yes">&lt;</token>
<marker>
<token regexp="yes">(?:\-|=){1,2}</token>
<token>&gt;</token>
</marker>
</pattern>
<message>Pretende utilizar un frecha?</message>
<suggestion>≥</suggestion>
<suggestion>→</suggestion>
<suggestion>⇾</suggestion>
<suggestion>⇉</suggestion>
<suggestion>⇒</suggestion>
<suggestion>⇨</suggestion>
<suggestion>⇛</suggestion>
<example correction="≥|→|⇾|⇉|⇒|⇨|⇛"><marker>-&gt;</marker> Punto 1</example>
</rule>
<!--rule> FIXME &lt; equence is not being properly escaped. Verify interpreter.
<pattern>
<marker>
<token>&lt;</token>
<token regexp="yes">(?:\-|=){1,2}</token>
</marker>
<token negate="yes">&gt;</token>
</pattern>
<message>Pretende utilizar um seta?</message>
<suggestion>≤</suggestion>
<suggestion>←</suggestion>
<suggestion>⇽</suggestion>
<suggestion>⇇</suggestion>
<suggestion>⇐</suggestion>
<suggestion>⇦</suggestion>
<suggestion>⇚</suggestion>
<example correction="≤|←|⇽|⇇|⇐|⇦|⇚">A <marker>&lt;-</marker> B</example>
<example >A ← B</example>
</rule>
<rule>
<pattern>
<token>&lt;</token>
<token regexp="yes">\-|=</token>
<token>&gt;</token>
</pattern>
<message>Pretende utilizar um seta?</message>
<suggestion>↔</suggestion>
<suggestion>⇿</suggestion>
<suggestion>⇄</suggestion>
<suggestion>⇆</suggestion>
<suggestion>⇋</suggestion>
<suggestion>⇌</suggestion>
<suggestion>⇔</suggestion>
<example correction="↔|⇿|⇄|⇆|⇋|⇌|⇔">A <marker>&lt;=></marker> B</example>
<example>A ⇔ B</example>
</rule-->
</rulegroup>
<rulegroup id='YEAR_NUMBER_FORMAT' name="Formateo de números: anos">
<!-- Localized and improved by Tiago F. Santos, Portuguese rule, 2017-03-05 -->
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/2500-2-500-ou-2500/12873</url TODO localize -->
<rule>
<pattern>
<token regexp="yes" skip='1'>anos?</token>
<marker>
<token regexp="yes">\d\.\d{3}</token>
</marker>
</pattern>
<message>En anos os números non deben ser separados.</message>
<suggestion><match no='2' regexp_match='(\d)(.)(\d{3})' regexp_replace='$1$3'/></suggestion>
<example correction="1989">É o ano de <marker>1.989</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">&meses_ano;</token>
<token skip="1">de</token>
<marker>
<token regexp="yes">\d{1,2}\.\d{3}</token>
</marker>
</pattern>
<message>En anos os números non deben ser separados.</message>
<suggestion><match no='3' regexp_match='(\d{1,2})(.)(\d{3})' regexp_replace='$1$3'/></suggestion>
<example correction="1989">É decembro de <marker>1.989</marker>.</example>
</rule>
<rule>
<pattern>
<marker>
<token regexp="yes">\d{1,3}\.\d{3}</token>
</marker>
<token regexp="yes">aC|dC</token>
</pattern>
<message>En anos os números non deben ser separados.</message>
<suggestion><match no='1' regexp_match='(\d{1,3})(.)(\d{3})' regexp_replace='$1$3'/></suggestion>
<example correction="1989">Estamos a <marker>1.989</marker> aC.</example>
</rule>
</rulegroup>
<rule id='AVOID_DECIMAL_APOSTROPHE' name="Matemático: Evitar apóstrofe en decimais">
<!-- Based on Catalan version, by Tiago F. Santos, 2017-02-27 -->
<antipattern>
<token regexp="yes">\d{1,2}\,\d+</token>
<token spacebefore="no" regexp="yes">['`’‘]</token>
<token spacebefore="no" regexp="yes">\d+(?:%|&unidades_de_medida;)?</token>
<token spacebefore="no" regexp="yes">[”"]</token>
</antipattern>
<pattern>
<token regexp="yes">\d+|\d{1,3}(?:[\. &#8239;&#160;]\d\d\d)+
<exception regexp="yes">\d{1,2}\,\d+</exception>
<exception scope="previous" regexp="yes">.*[º°h]</exception></token>
<token spacebefore="no" regexp="yes">['`’‘]</token>
<token spacebefore="no" regexp="yes">\d+(?:%|&unidades_de_medida;)?</token>
</pattern>
<message>Utilice antes unha vírgula para separar os decimais.</message>
<suggestion>\1,\3</suggestion>
<example correction="9,5"><marker>9'5</marker></example>
<example correction="9,5%"><marker>9'5%</marker></example>
<example correction="9.349,5"><marker>9.349'5</marker></example>
<example correction="1.999.349,5"><marker>1.999.349'5</marker></example>
<example correction="349,5">1 999 <marker>349'5</marker></example>
<example>1,23'2</example>
<example>41° 22'44.</example>
<example>41º 12’12” N.</example>
</rule>
<rule id='PERCENT_WITHOUT_SPACE' name="Matemático: Remover espazo en percentagens (3%)" default="on">
<!-- Localized and improved from Catalan, by Tiago F. Santos, 2017-02-27 -->
<pattern>
<token regexp="yes">[\d.,]+
<exception regexp="yes">[.,]</exception></token>
<token spacebefore="yes" regexp="yes">[%‰‱]</token>
</pattern>
<message>Escriba a porcentaxe sen espazos (estilo padrão).</message>
<suggestion>\1\2</suggestion>
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/centigrados-porcentagem/18011</url TODO localize -->
<example correction="23,5%">A taxa é de <marker>23,5 %</marker>.</example>
<example correction="23,5‰">Paga <marker>23,5 ‰</marker>.</example>
<example>Neste caso a % é de 1 a 2.</example>
<example>Paga 25%.</example>
</rule>
<rule id='PERCENT_WITH_SPACE' name="Matemático: Acrescentar espazo en percentagens (3 %)" default="off">
<!-- Localized and improved from Catalan, by Tiago F. Santos, 2017-02-27 -->
<pattern>
<token regexp="yes">[\d.,]+[%‰‱]</token>
</pattern>
<message>Escolleu a opción de inserción de espazo.</message>
<suggestion><match no="1" regexp_match="(.+)([%‰‱])" regexp_replace="$1 $2"/></suggestion>
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/centigrados-porcentaxe/18011</url TODO localize -->
<example correction="23,5 %">A taxa é do <marker>23,5%</marker>.</example>
<example correction="23,5 ‰">Paga <marker>23,5‰</marker>.</example>
<example>Paga 25 %.</example>
</rule>
<rule id="SPACE_INDENTATION" name="Libreoffice: Indentación con espazos" default='off'>
<!-- Localized from German grammar.xml by Tiago F. Santos, 2017-08-19 -->
<regexp>^ +</regexp>
<message>No LibreOffice, a indentação é máis precisa se utilizar as ferramentas de tabulação ou indentação.</message>
<suggestion/>
<example correction=""><marker> </marker>El saíu de casa.</example>
</rule>
<rulegroup id='DASH_RULE' name='Guión, Meio-Raia e Raia'>
<!-- Created by Tiago F. Santos, 2017-01-23 -->
<url>https://gl.wikipedia.org/wiki/Raia_(puntuaci%C3%B3n)</url>
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<rule>
<pattern>
<token postag='SENT_START'/>
<token min='0' regexp='yes'>["'«»“”]</token>
<marker>
<token regexp='yes'>-|–</token>
</marker>
</pattern>
<message>En diálogos e enumerações debe utilizar trazo longo.</message>
<suggestion>—</suggestion>
<short>Nesta situación debe utilizar o travessão.</short>
<example correction=''><marker>-</marker> O que é iso, nai?</example>
<example correction=''>« <marker>-</marker> O que é iso, nai?</example>
<example>— É o seu presente de aniversario, miña filla.</example>
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>2560-657 TORRES VEDRAS</example>
<example>---------------------------------------</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>-</token>
<token regexp='yes'>-</token>
<token regexp='yes'>-</token>
<token regexp='yes'>,</token>
</antipattern>
<pattern>
<marker>
<token regexp='yes' spacebefore='yes'>-|–</token>
</marker>
<token spacebefore="no">,</token>
</pattern>
<message>Termine a frase parentética cun trazo longo.</message>
<suggestion>—</suggestion>
<short>Nesta situación debe utilizar o travessão.</short>
<example correction=''>como dixen <marker>-</marker>,…</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
<token regexp='yes'>-|–</token>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
</antipattern>
<pattern>
<marker>
<token spacebefore="yes" regexp='yes'>-|–</token>
</marker>
<token spacebefore="yes"/>
</pattern>
<message>Se non pretende unir dúas palabras, debe utilizar trazo longo.</message>
<suggestion>—</suggestion>
<short>Nesta situación debe utilizar trazo longo.</short>
<example correction=''>Neses establecementos de ensino existían matrículas <marker>-</marker> a maioría de ensino fundamental — e un total de docentes.</example>
<example correction=''>Instituto Ricci de Macau <marker>-</marker> Asociación de promoción cultural da Compañía de Jesus en Macau</example>
<example>Na porción centro-oeste e noroeste presentan maiores elevacións, podendo atinxir 500 metros por enriba do nivel do mar, destacándose a Serra do Tumucumaque e a Serra Lombarda.</example>
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>2560-657 TORRES VEDRAS</example>
<example>---------------------------------------</example>
</rule>
<rule>
<antipattern>
<token>Estrada</token>
<token>Nacional</token>
<token regexp="yes">\d{3}</token>
<token regexp="yes">–|&hifen;</token>
<token regexp="yes">\d</token>
</antipattern>
<antipattern><!-- XXX Postal codes -->
<token regexp="yes">\d{4}</token>
<token regexp="yes">–|&hifen;</token>
<token regexp="yes">\d{3}</token>
<token>
<exception case_sensitive='yes'>a</exception></token>
</antipattern>
<antipattern><!-- XXX YYYY-XX-XX date formats and XX-XX-YYYY -->
<token regexp="yes">\d{2}|\d{4}</token>
<token regexp="yes" spacebefore='no'>–|&hifen;</token>
<token regexp="yes" spacebefore='no'>\d{2}</token>
<token regexp="yes" spacebefore='no'>–|&hifen;</token>
<token regexp="yes" spacebefore='no'>\d{2}|\d{4}</token>
</antipattern>
<pattern>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
<token regexp="yes">—|&hifen;</token>
<token regexp='yes'>\d+%?|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
</pattern>
<message>Se pretende indicar unha gama temporal ou numérica, debe utilizar o medio-trazo.</message>
<suggestion>\1 – \3</suggestion>
<suggestion>\1–\3</suggestion>
<short>En gamas numéricas/temporais, debe utilizar o medio-trazo.</short>
<example correction='1901 – 1978|1901–1978'>Vitorino Nemésio (<marker>1901 - 1978</marker>) — escritor e profesor universitario.</example>
<!--example correction='10 – 20%|10–20%'><marker>10-20%</marker></example--> <!-- XXX add half dash to tokenizer split characters and uncomment -->
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>2560-657 TORRES VEDRAS</example>
<example>---------------------------------------</example>
<example>10-10-10 — Data</example>
<example>10-10-2010 — Data</example>
<example>2010-10-10 — Data</example>
</rule>
</rulegroup>
<rulegroup id='DASH_SPACE_RULES' name="Trazo longo en enumerações" default="on">
<!-- Localized and improved from Catalan by Tiago F. Santos, 2017-05-16 -->
<url>https://gl.wikipedia.org/wiki/Raia_(puntuaci%C3%B3n)</url>
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<rule>
<pattern>
<token postag="SENT_START"/>
<token regexp="yes">\d+|\w</token>
<token regexp="yes">[–‒—]|&hifen;</token>
<token spacebefore="no">
<exception regexp="yes">\d+</exception></token>
</pattern>
<message>En enumerações, debe dar un espazo despois do trazo longo.</message>
<suggestion>\2 — \4</suggestion>
<short>Erro tipográfico</short>
<example correction="1 — Influencia"><marker>1—Influencia</marker> artística.</example>
</rule>
</rulegroup>
<rule id='DASH_ENUMERATION_NO_SPACE_RULE' name="Trazo longo en diálogos: Sem espazo" default="off">
<!-- Localized and improved from Catalan by Tiago F. Santos, 2017-05-16 -->
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<pattern>
<token postag="SENT_START"/>
<token regexp="yes">[–‒—]|&hifen;</token>
<token spacebefore="yes"/>
</pattern>
<message>En diálogos, debe remover o espazo despois do trazo longo.</message>
<suggestion>—\3</suggestion>
<example correction="—Corre"><marker>— Corre</marker>! Vaia!</example>
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>—Saltar</example>
<example>—Correr</example>
<example>—Rastejar</example>
<example>---------------------------------------</example>
</rule>
<rule id='DASH_ENUMERATION_SPACE_RULE' name="Trazo longo en diálogos: Espazo depois" default="on">
<!-- Based on Catalan version by Tiago F. Santos, 2017-05-16 -->
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<pattern>
<token postag="SENT_START"/>
<token regexp="yes">[–‒—]|&hifen;</token>
<token spacebefore="no"/>
</pattern>
<message>En diálogos, debe dar espazo despois do trazo longo.</message>
<suggestion>— \3</suggestion>
<!--url>https://ciberduvidas.iscte-iul.pt/consultorio/preguntas/o-uso-do-hifen-e-do-travessao/31251</url TODO localize -->
<example correction="— Corre"><marker>—Corre</marker>! Vaia!</example>
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>— Saltar</example>
<example>— Correr</example>
<example>— Rastejar</example>
<example>---------------------------------------</example>
</rule>
<rulegroup id='HIPHEN_SPACE_RULES' name="Espaçamento en hífens e travessões" default="on">
<!-- Created by Tiago F. Santos, 2017-XX-XX -->
<rule>
<antipattern>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
<token regexp='yes'>–|&hifen;</token>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
</antipattern>
<pattern>
<token regexp='yes'>\p{L}+</token>
<token spacebefore="yes" regexp='yes'>&tracos_de_separacao;</token>
<token spacebefore="no" regexp='yes'>\p{L}+</token>
</pattern>
<message>Se pretende unir dúas palabras, non debe espaçar e debe utilizar o hífen. En caso contrario, utilice espazos e un trazo longo.</message>
<suggestion>\1-\3</suggestion>
<suggestion>\1 — \3</suggestion>
<short>Erro tipográfico.</short>
<example correction='Tras-os|Tras — os'>Alfándega da Fe fica en <marker>Tras -os</marker>-Montes.</example>
<example>Ayer, A. J.— As Ideas de Bertrand Russel.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
<token regexp='yes'>&hifen;</token>
</antipattern>
<antipattern>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
<token regexp='yes'>–|&hifen;</token>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
</antipattern>
<pattern>
<token/>
<token spacebefore="no" regexp='yes'>&tracos_de_separacao;</token>
<token spacebefore="yes"/>
</pattern>
<message>Se pretende unir dúas palabras, non debe espaçar e debe utilizar o hífen. En caso contrario, utilice espazos e un trazo longo.</message>
<suggestion>\1-\3</suggestion>
<suggestion>\1 — \3</suggestion>
<short>Erro tipográfico.</short>
<example correction='Tras-os|Tras — os'>Alfándega da Fe fica en <marker>Tras- os</marker>-Montes.</example>
</rule>
</rulegroup>
<rule id='ENUMERATION_AND_DASHES' name="Enumerações com travessões: 1.2.-">
<!-- Localized and improved from Catalan by Tiago F. Santos, 2016-10-27 -->
<antipattern>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
<token regexp='yes'>–|&hifen;</token>
<token regexp='yes'>\d+|&meses_ano;|&meses_ano_abrev;|&dias_semana;|&dias_semana_abrev;</token>
</antipattern>
<pattern>
<token postag='SENT_START'/>
<token regexp="yes">\d+(?:\.\d+)?</token>
<token>.</token>
<token regexp="yes" min="1" max="3">[—–‒-]</token>
</pattern>
<message>Os trazos longos son desnecessários en enumerações.</message>
<suggestion>\2.</suggestion>
<example correction="1."><marker>1.-</marker> Introdución</example>
<example correction="1."><marker>1.--</marker> Introdución</example>
<example correction="1.3."><marker>1.3.—</marker> Introdución</example>
<example>1139–1385 — Formación do Reino de Portugal</example>
<example>50-30</example>
<example>…cunha pedra…—, penso que…</example>
</rule>
<rulegroup id='HYPOTHESIS_TYPOGRAPHY' name='Tipografia de Hipóteses'>
<!-- Created by Tiago F. Santos, 2017-09-01 -->
<rule>
<pattern case_sensitive='yes'>
<token>H0</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₀</suggestion>
<example correction='H₀'><marker>H0</marker>: Non existen efectos significativos.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H1</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₁</suggestion>
<example correction='H₁'><marker>H1</marker>: Existen efectos significativos co composto A.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H2</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₂</suggestion>
<example correction='H₂'><marker>H2</marker>: Existen efectos significativos co composto B.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H3</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₃</suggestion>
<example correction='H₃'><marker>H3</marker>: Existen efectos significativos cos compostos A e B combinados.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H4</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₄</suggestion>
<example correction='H₄'><marker>H4</marker>: Existen efectos significativos na ausencia do composto C.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H5</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₅</suggestion>
<example correction='H₅'><marker>H5</marker>: Existen efectos significativos do composto C.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H6</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₆</suggestion>
<example correction='H₆'><marker>H6</marker>: Existen efectos significativos do composto D.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H7</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₇</suggestion>
<example correction='H₇'><marker>H7</marker>: Existen efectos significativos do composto E.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H8</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₈</suggestion>
<example correction='H₈'><marker>H8</marker>: Existen efectos significativos do composto F.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token>H9</token>
</pattern>
<message>Prefira o símbolo tipográfico.</message>
<suggestion>H₉</suggestion>
<example correction='H₉'><marker>H9</marker>: Existen efectos significativos do composto G.</example>
</rule>
</rulegroup>
<rulegroup id='CHEMICAL_FORMULAS_TYPOGRAPHY' name='Fórmulas químicas'>
<!-- Created by Tiago F. Santos, 2017-02-12 -->
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)(?:&tabela_periodica;)+(?:[₁₂₃₄₅₆₇₈₉]+)((&tabela_periodica;)+)?</token>
</pattern>
<message>Os multiplicadores nas fórmulas químicas deben ser separados.</message>
<suggestion><match no='1' regexp_match='(\d+)((&tabela_periodica;)+)([₁₂₃₄₅₆₇₈₉₀]+)(((&tabela_periodica;)+)?)' regexp_replace='$1 $2$4$5'/></suggestion>
<example correction='4 H₂O'><marker>4H₂O</marker></example>
</rule>
<!-- Created by Tiago F. Santos, 2017-01-18 -->
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]2</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3'/></suggestion>
<example correction='O₂'><marker>O2</marker></example>
<example correction='4H₂O'><marker>4H2O</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+3((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]3</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)3(((&tabela_periodica;)+)?)' regexp_replace='$1₃$3'/></suggestion>
<example correction='2S₃'><marker>2S3</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+4((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]4</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)4(((&tabela_periodica;)+)?)' regexp_replace='$1₄$3'/></suggestion>
<example correction='CH₄'><marker>CH4</marker></example>
<example correction='H₄Si'><marker>H4Si</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?2((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)2(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3₂$6'/></suggestion>
<example correction='H₂O₂'><marker>H2O2</marker></example>
<example correction='H₂NO₂Al'><marker>H2NO2Al</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?3((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)3(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3₃$6'/></suggestion>
<example correction='K₂HPO₃'><marker>K2HPO3</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+3((?:&tabela_periodica;)+)?2((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)3(((&tabela_periodica;)+)?)2(((&tabela_periodica;)+)?)' regexp_replace='$1₃$3₂$6'/></suggestion>
<example correction='CH₃CH₂OH'><marker>CH3CH2OH</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+3((?:&tabela_periodica;)+)?3((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)3(((&tabela_periodica;)+)?)3(((&tabela_periodica;)+)?)' regexp_replace='$1₃$3₃$6'/></suggestion>
<example correction='CH₃CH₃'><marker>CH3CH3</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?4((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)4(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3₄$6'/></suggestion>
<example correction='H₂SO₄'><marker>H2SO4</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?5((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)5(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3₅$6'/></suggestion>
<example correction='C₂H₅OH'><marker>C2H5OH</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+2((?:&tabela_periodica;)+)?6((?:&tabela_periodica;)+)?</token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)2(((&tabela_periodica;)+)?)6(((&tabela_periodica;)+)?)' regexp_replace='$1₂$3₆$6'/></suggestion>
<example correction='C₂H₆'><marker>C2H6</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+7((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]7</exception>
<exception>V7</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)7(((&tabela_periodica;)+)?)' regexp_replace='$1₇$3'/></suggestion>
<example correction='C₇H₁₆'><marker>C7H₁₆</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+8((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]8</exception>
<exception>V8</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)8(((&tabela_periodica;)+)?)' regexp_replace='$1₈$3'/></suggestion>
<example correction='C₈H₁₈'><marker>C8H₁₈</marker></example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+9((?:&tabela_periodica;)+)?
<exception regexp='yes'>I[CP]9</exception>
<exception>V9</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)9(((&tabela_periodica;)+)?)' regexp_replace='$1₉$3'/></suggestion>
<example correction='C₉H₂₀'><marker>C9H₂₀</marker></example>
<example>Lola T70 Chevy V8</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>(?:\d+)?(?:&tabela_periodica;)+0((?:&tabela_periodica;)+)?
<exception>V0</exception></token>
</pattern>
<message>Os números nas fórmulas químicas deben estar en subscrito.</message>
<suggestion><match no='1' regexp_match='((&tabela_periodica;)+)0(((&tabela_periodica;)+)?)' regexp_replace='$1₀$3'/></suggestion>
<example correction='C₉H₂₀'><marker>C₉H₂0</marker></example>
</rule>
</rulegroup>
<rule id='DEGREE_SYMBOL' name="Matemático: Símbolo de grau (°)">
<!-- Localized from Catalan grammar.xml, by Tiago F. Santos, 2017-02-27 -->
<regexp>(?-i)\s?º\s?([CFNSEW])\b</regexp>
<message>Se está a indicar graos, utilice o símbolo <suggestion>&#8239;°\1</suggestion>.</message>
<example correction="&#8239;°C">Fai 25<marker>º C</marker> á sombra.</example>
<example correction="&#8239;°C">Fai 25<marker>ºC</marker> á sombra.</example>
<example correction="&#8239;°C">Fai 25<marker> º C</marker> á sombra.</example>
<example correction="&#8239;°C">Fai 25<marker> ºC</marker> á sombra.</example>
<example>Fai 25°.</example>
<example>…o da Unión, conforme estabelecido nos artigos 349.º e 355.º do Tratado sobre o Funcionamento da Unión E…</example>
<example>…que puxo fin á República Vella, depondo seu 13º e último presidente Washington Luís e impedindo a…</example>
<!-- <example>…tua-se no nordeste do Oceano Atlântico entre os 36º e os 43º de latitude Norte e os 25º e os 31º de longitude… XXX False negative </example>-->
</rule>
<rule id='PLURAL_IN_UNITS_OF_MEASURE' name="Matemático: Abreviaturas de unidades de medida">
<!-- Based on the Catalan version, by Tiago F. Santos, 2017-02-22 -->
<pattern>
<token regexp="yes">\d+</token>
<marker>
<token regexp="yes">(?:&unidades_de_medida;)s</token>
</marker>
</pattern>
<message>As abreviaturas de unidades de medida padrão non ten plural.</message>
<suggestion><match no='2' regexp_match='(&unidades_de_medida;)s' regexp_replace='$1'/></suggestion>
<example correction="kg">Son 2 <marker>kgs</marker> de maças.</example>
</rule>
<rule id='KELVIN' name="Matemático: Kelvin (sem graus)">
<!-- Localized and improved by Tiago F. Santos, Portuguese rule, 2017-02-27 -->
<regexp>\s*[º°]\s*K\b</regexp>
<message>Kelvin non utiliza o sinal de grao.</message>
<suggestion>&#8239;K</suggestion>
<url>https://gl.wikipedia.org/wiki/Kelvin</url>
<example correction="&#8239;K">A 30<marker> ºK</marker>.</example>
<example correction="&#8239;K">A 30<marker>ºK</marker>.</example>
<example correction="&#8239;K">A 30<marker> º K</marker>.</example>
</rule>
<rulegroup id='DEGREE_MINUTES_SECONDS' name="Matemático: Tipografia de graus, minutos e segundos: 50°45′ 20″">
<!-- Localized and improved by Tiago F. Santos, Portuguese rule, 2016-10-27 -->
<rule>
<regexp>\b([\d., ]*\d)\s*[º°]\s*([\d., ]*\d)\s*[”"'’′`]\s*([\d., ]*\d)\s*[”"'’′`]</regexp>
<message>Utilice os símbolos de graos, minutos e segundos.</message>
<suggestion>\1°&#8239;\2′&#8239;\3″</suggestion>
<example correction="25°&#8239;29,1′&#8239;49″"><marker>25º 29,1' 49"</marker>.</example>
<example correction="25°&#8239;29′&#8239;49″"><marker>25º 29' 49'</marker>.</example>
<example correction="25°&#8239;29,1′&#8239;49″"><marker>25 º 29,1' 49"</marker>.</example>
<example correction="25°&#8239;29′&#8239;49″"><marker>25 º 29' 49'</marker>.</example>
<example correction="25°&#8239;29′&#8239;49″"><marker>25º29’49”</marker> N.</example>
<example>25° 29′ 34″</example>
</rule>
<rule>
<regexp>\b([\d., ]*\d)\s*[º°]\s*([\d., ]*\d)\s*[”"'’`]</regexp>
<message>Utilice os símbolos de graos e minutos.</message>
<suggestion>\1°&#8239;\2′</suggestion>
<example correction="25°&#8239;29,1′"><marker>25º 29,1'</marker>.</example>
<example correction="25°&#8239;29′"><marker>25º 29 '</marker>.</example>
<example correction="25°&#8239;29,1′"><marker>25 º 29,1'</marker>.</example>
<example correction="25°&#8239;29′"><marker>25 º29'</marker>.</example>
<example correction="25°&#8239;29′"><marker>25º29’</marker> N.</example>
<example>25° 29′</example>
</rule>
<rule>
<regexp>\b([\d., ]*\d)\s*[”"'’′`]\s*([\d., ]*\d)\s*[”"'’′`]</regexp>
<message>Utilice os símbolos de minutos e segundos.</message>
<suggestion>\1′&#8239;\2″</suggestion>
<example correction="29,1′&#8239;49″"><marker>29,1' 49"</marker>.</example>
<example correction="29′&#8239;49″"><marker>29' 49 '</marker>.</example>
<example correction="29,1′&#8239;49″"><marker>29,1' 49 "</marker>.</example>
<example correction="29′&#8239;49″"><marker>29 ' 49'</marker>.</example>
<example correction="29′&#8239;49″"><marker>29’49”</marker> N.</example>
<example>29′ 34″</example>
</rule>
</rulegroup>
<rule id='LOOSE_ACCENTS' name="Acentos soltos">
<!-- Based on Catalan grammar.xml, by Tiago F. Santos on 11-02-2017 -->
<regexp>[`´]</regexp>
<message>Caratere incorreto. Utilice antes o apóstrofe ou revise a acentuación.</message>
<suggestion>’</suggestion>
<suggestion/>
<short>Caractere incorreto.</short>
<example correction="’|">Non e<marker>´</marker> común encontrar erros deste tipo.</example>
</rule>
<rule id="DE_APOSTROPHE_SPACE" name="Tipografia: d' sem espazo">
<!-- Created by Tiago F. Santos, 2017-10-06 -->
<pattern>
<token>d</token>
<token spacebefore='no' regexp='yes'>['’]</token>
<token spacebefore='yes'/>
</pattern>
<message>A contracción d' non debe ser separada por espazos.</message>
<suggestion>\1\2\3</suggestion>
<example correction="d'El">Aquí xace <marker>d' El</marker>-rei D.Sebastião.</example>
</rule>
<rulegroup id='PRIORITIZE_QUOTES' name="Prioritizar o tipo de comiñas: «“‘...’”»." default="off">
<!-- Created by Tiago F. Santos, 2017-05-31 -->
<rule>
<pattern>
<token skip='-1'>‘
<exception scope="next">’</exception></token>
<token regexp='yes'>[«“]</token>
</pattern>
<message>Utilice primeiro comiñas dobres.</message>
<suggestion><match no='1' regexp_match='' regexp_replace='' include_skipped='all'/> ‘</suggestion>
<example correction="“Dixen que ‘"><marker>‘Dixen que “</marker>si”.</example>
<example>“Dixen que ‘si’”.</example>
<example>«Dixen que “si”».</example>
</rule>
<rule>
<pattern>
<token skip='-1' regexp='yes'>[”»]
<exception regexp='yes' scope="next">[«“‘]</exception></token>
<token>’</token>
</pattern>
<message>Utilice primeiro comiñas dobres.</message>
<suggestion><match no='1' regexp_match='[”»]' regexp_replace='' include_skipped='all'/>”</suggestion>
<example correction="’.”">Dixen que “si<marker>”.’</marker></example>
<example>“Dixen que ‘si’”.</example>
<example>«Dixen que “si”».</example>
</rule>
<rule>
<pattern>
<token skip='-1'>“
<exception scope="next">”</exception></token>
<token>«</token>
</pattern>
<message>Utilice primeiro unha comiña baixa.</message>
<suggestion><match no='1' regexp_match='' regexp_replace='«' include_skipped='all'/> “</suggestion>
<example correction="«Dixen que “"><marker>“Dixen que «</marker>si»”.</example>
<example>“Dixen que ‘si’”.</example>
<example>«Dixen que “si”».</example>
</rule>
<rule>
<pattern>
<token skip='-1'
<exception regexp='yes' scope="next">[«“]</exception></token>
<token>”</token>
</pattern>
<message>Utilice primeiro unha comiña baixa.</message>
<suggestion><match no='1' regexp_match='»' regexp_replace='' include_skipped='all'/>»</suggestion>
<example correction="”»">“Dixen que «si<marker>»”</marker>.</example>
<example>“Dixen que ‘si’”.</example>
<example>«Dixen que “si”».</example>
</rule>
</rulegroup>
<rulegroup id='UNPAIRED_BRACKET_SUGGESTIONS' name='Tipografia: Corrección de comiñas inteligentes repetidas'>
<!-- Created by Tiago F. Santos, Portuguese rule, 2017-08-25 -->
<rule>
<pattern>
<token skip='-1'>‘
<exception scope="next">’</exception></token>
<marker>
<token>‘</token>
</marker>
</pattern>
<message>Utilice unha comiña de fecho.</message>
<suggestion>’</suggestion>
<example correction="">Dixen que ‘si<marker>‘</marker>.</example>
</rule>
<rule>
<pattern>
<token skip='-1'>“
<exception scope="next">”</exception></token>
<marker>
<token>“</token>
</marker>
</pattern>
<message>Utilice unha comiña de fecho.</message>
<suggestion>”</suggestion>
<example correction="">Dixen que “si<marker>“</marker>.</example>
</rule>
</rulegroup>
<!-- Typography rules from English grammar.xml - START-->
<!-- Localized and improved by Tiago F. Santos, Portuguese rule, 2016-10-27 -->
<rulegroup id='TRADEMARK' name="Tipografia: Trademark - ™">
<rule>
<pattern case_sensitive='yes'>
<token regexp='yes'>\p{Lu}.*</token>
<marker>
<token>(</token>
<token>TM</token>
<token>)</token>
</marker>
</pattern>
<message>Pretende dicir: <suggestion>™</suggestion>?</message>
<short>Anotación non padronizada de ™</short>
<example correction=''>O novo produto é de Escolla Executiva<marker>(TM)</marker> Plus.</example>
</rule>
<rule id='SERVICEMARK' name="Tipografia: Servicemark - ℠">
<pattern case_sensitive='yes'>
<token regexp='yes'>\p{Lu}.*</token>
<marker>
<token>(</token>
<token>SM</token>
<token>)</token>
</marker>
</pattern>
<message>Pretende dicir: <suggestion>℠</suggestion>?</message>
<short>Anotación non padronizada de ℠</short>
<example correction=''>O novo produto é de Escolla Executiva<marker>(SM)</marker> Plus.</example>
</rule>
</rulegroup>
<rule id='R_SYMBOL' name="Tipografia: Marca Rexistrada - ®">
<antipattern case_sensitive="yes">
<marker>
<token>(</token>
<token>R</token>
<token skip="-1">)</token>
</marker>
<token regexp="yes">[\p{Lu}^R]
<exception scope="previous" negate="yes">(</exception></token>
<token skip="-1">)</token>
</antipattern>
<antipattern case_sensitive="yes">
<token>(</token>
<token regexp="yes">[\p{Lu}^R]</token>
<token skip="-1">)</token>
<marker>
<token>R
<exception scope="previous" negate="yes">(</exception></token>
<token skip="-1">)</token>
</marker>
</antipattern>
<pattern case_sensitive='yes'>
<token regexp='yes'>\p{Lu}.*</token>
<marker>
<token>(</token>
<token>R</token>
<token>)</token>
</marker>
</pattern>
<message>Pretende dicir: <suggestion>®</suggestion>?</message>
<short>Anotación non padronizada de ®</short>
<example correction='®'>Windows <marker>(R)</marker></example>
<example>Estes son Richard Burr (D) e Kay Hagan (R).</example>
</rule>
<rule id='COPYRIGHT' name="Tipografia: Copyright - ©" type="typographical">
<antipattern>
<token>(</token>
<token>a</token>
<token skip="-1">)</token>
<token>b
<exception scope="previous" negate="yes">(</exception></token>
<token skip="-1">)</token>
<marker>
<token>c
<exception scope="previous" negate="yes">(</exception></token>
<token>)</token>
</marker>
</antipattern>
<pattern>
<marker>
<token>(</token>
<token>c</token>
<token>)</token>
</marker>
<token regexp="yes">\d{4}|\p{Lu}\p{Ll}+</token>
</pattern>
<message>Esta anotación non é padronizada, utilice antes o símbolo: <suggestion>©</suggestion></message>
<short>Anotación non padronizada de ©</short>
<example correction="©">Copyright <marker>(C)</marker> Joanna Bator, 2012</example>
<example correction="©">Copyright <marker>(C)</marker> 2010 O Estado da Gramática</example>
<example>Isto é unha lista: (a) item, (b) 2 itens, (c) 2014 itens.</example>
</rule>
<rulegroup type="locale-violation" id='CURRENCY' name="Posición dos símbolos de moeda: '100£ (£100)">
<rule>
<pattern>
<token regexp="yes">[\d\,\.]+[$£¥\u8371]</token>
</pattern>
<message>O símbolo desta divisa é por norma colocado antes do valor: <suggestion><match no="1" regexp_match="([\d\,\.]+)([$€£¥\u8371])" regexp_replace="$2$1"/></suggestion>.</message>
<short>Coloque a divisa no inicio</short>
<example correction="£100">Debe <marker>100£</marker>.</example>
<example correction="£100.00">Debe <marker>100.00£</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">[\d\,\.]+</token>
<token regexp="yes">[$£¥\u8371]</token>
</pattern>
<message>O símbolo desta divisa é por norma colocado antes do valor: <suggestion>\2\1</suggestion>.</message>
<short>Coloque a divisa no inicio</short>
<example correction="£100">Debe <marker>100 £</marker>.</example>
<example correction="£100.00">Debe <marker>100.00 £</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">[€\u8371]</token>
<token regexp="yes">\d+(?:[\,\.]\d+)?</token>
</pattern>
<message>O símbolos de euro é colocado despois do valor: <suggestion>\2 \1</suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Euro</url>
<short>Coloque a divisa no fin</short>
<example correction="100 €">Debe <marker>€ 100</marker>.</example>
<example correction="100,00 €">Debe <marker>€ 100,00</marker>.</example>
</rule>
</rulegroup>
<rule type="whitespace" id='CURRENCY_SPACE' name="Símbolos monetários sem espazo en branco: '$ 100' ($100)">
<pattern>
<token regexp="yes">[$£¥\u8371]</token>
<token regexp="yes" spacebefore="yes">\d+(?:[\,\.]\d+)?</token>
</pattern>
<message>Os símbolos monetarios internacionais non son separados por un espazo: <suggestion>\1\2</suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Euro</url>
<short>Remover espazo</short>
<example correction="$100">Débese <marker>$ 100</marker>.</example>
</rule>
<rule type="whitespace" id='CURRENCY_SPACE_2' name="Espazo en branco antes de símbolos monetários: '100,00€' (100,00 €)">
<pattern>
<token regexp="yes">\d+(?:[\,\.]\d+)?[€]</token>
</pattern>
<message>Os símbolos monetarios do euro (€) son separados por un espazo<suggestion><match no="1" regexp_match="(\d+)([€\u8371])" regexp_replace="$1 $2"/></suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Euro</url>
<short>Erro tipográfico</short>
<example correction="100 €">Débese <marker>100€</marker>.</example>
</rule>
<rulegroup id='SMART_QUOTES' name="Comiñas inteligentes (“”)">
<rule>
<pattern>
<token postag="``"/>
</pattern>
<message>Utilice aquí comiñas intelixentes: <suggestion>“</suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Comiñas</url>
<short>Utilice comiñas intelixentes</short>
<example correction="">Isto é un (<marker>&quot;</marker>proba&quot;).</example>
<example correction=""><marker>&quot;</marker>Proba&quot;!</example>
<example>“Proba”!</example>
<example correction="">Isto é outra proba <marker>&quot;</marker>proba&quot;.</example>
</rule>
<rule>
<antipattern> <!-- não embelezar polegadas -->
<token postag_regexp="yes" postag="''|SENT_START" skip="-1">
<exception scope="next" postag="``"/></token>
<token regexp="yes">\d{1,2}</token>
<token regexp='yes' min='0' spacebefore='no'>[-\.]</token>
<token regexp='yes' min='0' spacebefore='no'>\d{1,2}</token>
<marker><token postag="''"/></marker>
</antipattern>
<pattern>
<token postag="''"/>
</pattern>
<message>Utilice unha comiña de fecho aquí: <suggestion>”</suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Comiñas</url>
<short>Utilice comiñas intelixentes</short>
<example correction="">Isto é unha proba (&quot;proba<marker>&quot;</marker>)</example>
<example correction="">Use as comiñas &quot;aquí<marker>&quot;</marker> para dicir algo.</example>
<example correction="">Isto é outra proba &quot;proba<marker>&quot;</marker>.</example>
<example correction="">Achilles falou na canción &quot;57821<marker>&quot;</marker>, de Janelle Monáe ft.</example>
<example>“Proba”!</example>
<!-- FIXME Clash with paired pontuation. Re-enable when fixed. -->
<example>Os assentos da classe económica tem uma profundidade de 31-33&quot;</example>
<example correction="">O xogador de fútbol apelidado do &quot;Animal<marker>&quot;</marker></example>
</rule>
<rule>
<pattern>
<token>`</token>
<token spacebefore="no">`</token>
</pattern>
<message>Utilice unha comiñas intelixente de abertura aquí: <suggestion>“</suggestion>.</message>
<url>https://gl.wikipedia.org/wiki/Comiñas</url>
<short>Utilice comiñas intelixentes</short>
<example correction=""><marker>``</marker>Proba”.</example>
</rule>
<rule>
<pattern>
<token>„</token>
</pattern>
<message>Abertura de comiñas posibelmente errada: <suggestion>“</suggestion>.</message>
<url>https://en.wikipedia.org/wiki/„</url>
<example correction=""><marker>„</marker>Proba”.</example>
</rule>
</rulegroup>
<rule id='ELLIPSIS' name="Reticências inteligentes (…)">
<antipattern>
<token>.</token>
<token>.</token>
<token>.</token>
<token>.</token>
<token>.</token>
</antipattern>
<pattern>
<token>.</token>
<token>.</token>
<token>.</token>
</pattern>
<message>Utilice o caractér tipográfico de reticências en vez de: <suggestion>…</suggestion>.</message>
<example correction="">Isto é importante <marker>. . .</marker> tanto canto sei.</example>
<example>Isto é importante – tanto canto sei.</example>
<example correction="">Isto é importante<marker>...</marker> tanto canto sei.</example>
<example>1. Introdución .................................... 3</example>
</rule>
<rulegroup id='TIME_FORMAT' name="Tipografia de horas: 22.30 h -> 22:30h">
<!-- Localized from Catalan, by Tiago F. Santos, 2017-05-15 -->
<url>https://ciberduvidas.iscte-iul.pt/artigos/rúbricas/idioma/sóbrea-escrita-dos-numeros-das-horas-e-de-outras-representacoes/3267</url>
<short>Preferencia tipográfica</short>
<rule>
<pattern>
<token regexp="yes">[012]?\d[,\.][012345]\d[,\.][012345]\d([,.]\d+)?</token>
</pattern>
<message>En expresións de horas, utilice dous puntos.</message>
<suggestion><match no='1' regexp_match='(\d+)[,\.](\d+)[,\.](.+)' regexp_replace='$1:$2:$3'/></suggestion>
<suggestion><match no='1' regexp_match='(\d+)[,\.](\d+)[,\.](.+)' regexp_replace='$1&#160;h&#160;$2&#160;min&#160;$3&#160;s'/></suggestion>
<example correction="10:00:43|10&#160;h&#160;00&#160;min&#160;43&#160;s">Ás <marker>10.00.43</marker>.</example>
<example correction="10:00:43,5|10&#160;h&#160;00&#160;min&#160;43,5&#160;s">Ás <marker>10.00.43,5</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">[012]?\d[,\.][012345]\d</token>
<token regexp="yes">h|horas|hrs|hs|hora</token>
</pattern>
<message>En expresións de horas, utilice dous puntos.</message>
<suggestion><match no='1' regexp_match='(\d+)[,\.](\d+)' regexp_replace='$1:$2'/>&#160;\4</suggestion>
<example correction="22:50&#160;h">Ás <marker>22.50 h</marker>.</example>
<example correction="6:05&#160;h">Ás <marker>6,05 h</marker>.</example>
<example>Ás 22:30 h.</example>
<example>A subida demora 8, 10 hores.</example>
</rule>
<rule>
<pattern>
<token regexp='yes'>ás?|das?</token>
<token regexp="yes">[012]?\d[,\.][012345]\d</token>
</pattern>
<message>En expresións de horas, utilice dous puntos.</message>
<suggestion>\1 <match no='2' regexp_match='(\d+)[,\.](\d+)' regexp_replace='$1:$2'/></suggestion>
<example correction="Ás 10:00"><marker>Ás 10.00</marker>.</example>
<example correction="Da 01:00"><marker>Da 01.00</marker> a as… </example>
<example correction="ás 10:50">Das 10:00 <marker>ás 10.50</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp="yes" skip="2">[012]?\d[,\.][012345]\d</token>
<token regexp="yes" inflected="yes">&partes_do_dia;</token>
</pattern>
<message>En expresións de horas, utilice dous puntos.</message>
<suggestion><match no='1' include_skipped='all' regexp_match='(\d+)[,\.](\d+)' regexp_replace='$1:$2'/> <match no='2' include_skipped='all'/></suggestion>
<example correction="5:00 da mañá">Ás <marker>5.00 da mañá</marker>.</example>
<example correction="6:05 da tarde">Ás <marker>6.05 da tarde</marker>.</example>
<example correction="6:05 da noite">Ás <marker>6.05 da noite</marker>.</example>
<example>Ás 22:30 h.</example>
</rule>
</rulegroup>
<rule id='APOSTROPHE_IN_DATES' name="Apóstrofe en datas">
<pattern>
<token spacebefore="yes" regexp='yes'>(?::?[1-2]\d)?\d0
<exception regexp='yes'>2[1-9]\d0</exception></token>
<token regexp="yes">['’]</token>
<token>s</token>
</pattern>
<message>Apostrofes non son necesarios en décadas: <suggestion><match no="1"/><match no="3"/></suggestion>.</message>
<url>http://@www.monash.edu/about/editorialstyle/editing/apostrophes</url>
<short>Apóstrofe desnecessário</short>
<example correction='1970s'>O Diácono Remedios preguntou onde estabas nos <marker>1970's</marker>.</example>
<example correction='70s'>O Diácono Remedios preguntou onde estabas nos <marker>70's</marker>.</example>
<example correction='1990s'>Onde estabas nos <marker>1990’s</marker>?</example>
<example>Discos de travões da <marker>Alvis 12/70</marker> adaptados a jantes máis largas.</example>
</rule>
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-10-27 -->
<!-- Localization of rules from the English grammar.xml - END -->
<rulegroup id='SPACE_AFTER_PUNCTUATION' name='Espazos após pontuación'>
<!-- Created by Tiago F. Santos, Portuguese rule, 2017-01-01 -->
<rule>
<antipattern>
<token regexp='yes'>[.]</token>
<token regexp='yes'>[.]</token>
<token regexp='yes'>[.]</token>
<token regexp='yes'>[.]</token>
</antipattern>
<pattern>
<marker>
<token regexp='yes'>[.]</token>
<token regexp='yes'>[.]</token>
<token regexp='yes'>[.]</token>
</marker>
<token spacebefore='no'>
<exception regexp="yes">[,;:!?…”»()\[\]&#8210;&#8211;&#8212;&#8213;\-]</exception>
<exception postag='SENT_END'/></token>
</pattern>
<message>Coloque un espazo despois das reticencias</message>
<suggestion>… </suggestion>
<example correction=''>Cole aquí o seu texto<marker>...</marker>ou verifique este texto.</example>
<example correction=''><marker>...</marker>e os votos de Bo Ano Novo.</example>
<example>Cole aquí o seu texto<marker>...</marker></example>
</rule>
<rule>
<pattern>
<marker>
<token regexp='yes'>…
<exception postag='SENT_END'/></token>
</marker>
<token spacebefore='no'>
<exception regexp="yes">[,;:!?…”»()\[\]&#8210;&#8211;&#8212;&#8213;\-&quot;“]</exception>
<exception postag='SENT_END'/></token>
</pattern>
<message>Coloque un espazo despois das reticencias</message>
<suggestion>… </suggestion>
<example correction=''>Cole aquí o seu texto<marker>…</marker>ou verifique este texto.</example>
<example correction=''><marker>…</marker>e os votos de Bo Ano Novo.</example>
<example>Cole aquí o seu texto<marker>…</marker></example>
<example>Alén diso<marker>…</marker> </example>
</rule>
</rulegroup>
<rulegroup id="SPACE_BEFORE_PUNCTUATION" name="Espazos antes da pontuación">
<!-- Based on German grammar.xml, by Tiago F. Santos, 2017-07-08 -->
<rule>
<regexp>\b([\p{L}\d]+) ([!?»”’,….])</regexp>
<message>Remova o espazo antes deste sinal de puntuación.</message>
<suggestion>\1\2</suggestion>
<example correction="escapou!">Como isto me <marker>escapou !</marker></example>
<!--example correction="escapou!">Como é que isto me <marker>escapou !</marker></example-->
<example correction="roda.">Existen dúas estratexias posíbeis: aproveitar o que existe ou reinventar a <marker>roda .</marker></example>
</rule>
<rule>
<regexp>\b([\p{L}\d]+) ([:;])(?!-?[()/])</regexp>
<message>Remova o espazo antes deste sinal de puntuación.</message>
<suggestion>\1\2</suggestion>
<example correction="posíbeis:">Existen dúas estratexias <marker>posíbeis :</marker> aproveitar o que existe ou reinventar a roda.</example>
<example>Un sorriso :-)</example>
<example>Un sorriso :)</example>
<example>Un sorriso :(</example>
<example>Un sorriso :-/</example>
<example>Un sorriso :/</example>
</rule>
</rulegroup>
<rule id="SEMICOLON_AND_QUOTES" name="Ponto e vírgula antes de comiñas">
<!-- Localized from German grammar.xml by Tiago F. Santos, 2017-08-17 -->
<antipattern>
<token regexp="yes">„|“|»|«|"</token>
<token>;</token>
<token regexp="yes">»|«|"|”|‘|‹|›|'>
</token>
</antipattern>
<pattern>
<marker>
<token>;</token>
<token spacebefore="no" regexp="yes">“|»|«|"|”|‘|‹|›|'</token>
</marker>
<token spacebefore="yes"/>
</pattern>
<message>Xeralmente, non se coloca punto e vírgula antes de comiñas.</message>
<example type="incorrect">“Non me incomode con súa tagarelice infantil<marker>;”</marker> dixen Maria; “eu escribo versos inmortais.”</example>
</rule>
<rulegroup id="PARENTESESE_AND_QUOTES_SPACING" name="Espaçamento en volta de comiñas ou paréntesis">
<!-- Localized from German grammar.xml by Tiago F. Santos, 2017-08-17 -->
<rule>
<antipattern>
<token>,</token>
<token spacebefore="no" regexp="yes">»|«|"</token>
</antipattern>
<antipattern>
<token regexp="yes">„|»|«|"|\(|\{</token>
<token regexp="yes">:|,|;</token>
<token regexp="yes">“|»|«|"|\)|\}</token>
</antipattern>
<pattern>
<or>
<token postag="SENT_START"/>
<token regexp="yes">:|,|;</token>
</or>
<marker>
<token regexp="yes">„|“|«|"|\(|\{</token>
<token spacebefore="yes"/>
</marker>
</pattern>
<message>Espaçamento incorreto.</message>
<suggestion>\2\3</suggestion>
<example correction="«O"><marker>« O</marker> xardín é verdadeiramente bonito», dixo ela.</example>
<example correction="«O">Ela dixo: <marker>« O</marker> xardín é verdadeiramente bonito.»</example>
<example correction="«é">«O xardín», dixo ela, <marker>« é</marker> verdadeiramente bonito.»</example>
<example>A galiña di "Quiquiriquiqui" o porco di "Oinque, Oinque," o pato di "Quá, Quá" e di que o gato "Miau".</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>&abreviaturas;|ex</token>
<token spacebefore='no'>.</token>
<token regexp="yes">“|»|«|"|\)|\}</token>
</antipattern>
<antipattern>
<token regexp="yes">[a-z]</token>
<token>.</token>
<token regexp="yes">“|»|«|"|\)|\}</token>
</antipattern>
<antipattern>
<token regexp="yes">„|»|«|"|\(|\{</token>
<token regexp="yes">\.|\?|!</token>
<token regexp="yes">“|»|«|"|\)|\}</token>
</antipattern>
<pattern>
<marker>
<token regexp="yes">\.|\?|!</token>
<token spacebefore="yes" regexp="yes">“|»|«|"|\)|\}</token>
</marker>
</pattern>
<message>Espaçamento incorreto.</message>
<suggestion>\1\2</suggestion>
<example correction="">«O xardín é verdadeiramente bonito<marker>. »</marker></example>
<example correction="">«O xardín», dixo el, «xardín é verdadeiramente bonito<marker>. »</marker></example>
<example>Algunhas palabras inglesas teñen dúas grafias, p.ex. "gray" e "grey".</example>
</rule>
<rule>
<antipattern>
<token regexp="yes">„|»|«|"|\(|\{</token>
<token>,</token>
<token regexp="yes">“|»|«|"|\)|\}</token>
</antipattern>
<pattern>
<marker>
<token/>
<token spacebefore="yes" regexp="yes">“|»|«|"|\)|\}</token>
</marker>
<token>,</token>
</pattern>
<message>Espaçamento incorreto.</message>
<suggestion>\1\2</suggestion>
<example correction="bonito»">«O xardín é verdadeiramente <marker>bonito »</marker>, dixo ela.</example>
</rule>
<rule>
<pattern>
<token spacebefore="yes" regexp="yes">“|‚|\(|\{</token>
<token spacebefore="yes"/>
</pattern>
<message>Espaçamento incorreto.</message>
<suggestion>\1\2</suggestion>
<example correction="“O">Ela dixo: <marker>“ O</marker> xardín é verdadeiramente bonito.”</example>
</rule>
<rule>
<pattern>
<token/>
<token spacebefore="yes" regexp="yes">»|«|"|“|”|‹|›|‘|’|'</token>
<token spacebefore="yes"/>
</pattern>
<message>Un dos espazos é desnecessário. Debe excluílo.</message>
<suggestion>\1\2 \3</suggestion>
<suggestion>\1 \2\3</suggestion>
<example correction="é' verdadeiramente|é 'verdadeiramente">O xardín <marker>é ' verdadeiramente</marker>' bonito.</example>
</rule>
</rulegroup>
<rule id="SEMICOLON_COLON_SPACING" name="Espazos en falta: ':' e ';'">
<!-- Localized from German grammar.xml by Tiago F. Santos, 2017-08-17 -->
<antipattern>
<token regexp="yes">“|«|"|\(</token>
<token regexp="yes">:|;</token>
<token regexp="yes">”|»|"|\)</token>
</antipattern>
<antipattern><!-- XXX Wikipedia lists and time formats -->
<token>:</token>
<token spacebefore="no"/>
<token spacebefore="no">:</token>
</antipattern>
<antipattern>
<token regexp="yes">&codigos_de_pais;</token>
<token spacebefore="no">:</token>
</antipattern>
<antipattern>
<token>;</token>
<token regexp="yes">“|»|«|"|”</token>
<token spacebefore="yes"/>
</antipattern>
<antipattern>
<token regexp="yes">.*[0-9]</token>
<token>:</token>
<token regexp="yes">[0-9].*</token>
</antipattern>
<antipattern>
<!-- smiley -->
<token regexp="yes">[:;]</token>
<token spacebefore="no">-</token>
<token spacebefore="no" regexp="yes">[()]</token>
</antipattern>
<pattern>
<marker>
<token regexp="yes">:|;</token>
<token spacebefore="no">
<exception postag="SENT_END"/></token>
</marker>
</pattern>
<message>Deve colocar um espazo após '\1'.</message>
<suggestion>\1 \2</suggestion>
<example correction=": «">Ele dixo<marker>:«</marker>O xardín é verdadeiramente bonito.»</example>
<example>A cea estará pronto ás 18:30.</example>
</rule>
</category>
<category id="CAT1" name="Gramática::Verbo">
<rule id="IR_A_INF" name="ir máis infinitivo">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes">ir</token>
<token>a</token>
<token postag="(VMN0000|VSN0000).*" postag_regexp="yes"/>
</pattern>
<message>A perífrase formada polo verbo &quot;ir&quot; máis un infinitivo constrúese en galego sen preposición: <suggestion>\1 \3</suggestion></message>
<example correction="Vou saltar"><marker>Vou a saltar</marker> con ela.</example>
</rule>
<!-- FIXME it offers VéN as correction when source is uppercase: VEN -->
<!-- FIXME false positive when "ven" is imperative -->
<rulegroup id="VEN_VEN" name="vén vs. ven">
<rule name="vén + xerundio (vén brincando)">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token regexp="yes">ven|ves</token>
</marker>
<token postag="VMN.*|VSN.*|VMP.*|VSP.*|VMG.*|VSG.*" postag_regexp="yes"/>
</pattern>
<message>A palabra &quot;<match no="1"/>&quot; seguida dunha forma non temporal adoita ser do verbo &quot;vir&quot; e, polo tanto, leva til diacrítico para diferenciala da forma homónima do verbo &quot;ver&quot;. Quería vostede dicir <suggestion><match no="1" regexp_match="(?iu)e" regexp_replace="é"/></suggestion>?</message>
<short>Forma incorrecta</short>
<example correction="vén">O neno <marker>ven</marker> saltando polo camiño.</example>
</rule>
<rule name="vén de + infinitivo (vén de adquirir)">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token>ven</token>
</marker>
<token>de</token>
<token postag="(VMN0000|VSN0000).*" postag_regexp="yes"/>
</pattern>
<message>A forma &quot;<match no="1"/>&quot; seguida de infinitivo adoita ser do verbo &quot;vir&quot; e, polo tanto, leva til diacrítico para diferenciala da forma homónima do verbo &quot;ver&quot;. Quería vostede dicir <suggestion>vén</suggestion>?</message>
<short>Cando é do verbo vir, &quot;ven&quot; leva til</short>
<example correction="vén">A caixa <marker>ven</marker> de sanear a carteira de créditos.</example>
</rule>
</rulegroup>
<!-- FIXME: cómpre + secuencia de advs + inf: cómpre ademais agora non ignorar as provocacións -->
<rulegroup id="COMPRE" name="cómpre vs. compre">
<!-- compre + VINF (cómpre ignorar a provocación) -->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token>compre</token>
</marker>
<token postag="(VMN0000|VSN0000).*" postag_regexp="yes"/>
</pattern>
<message>A forma 'compre', cando é do verbo &quot;cumprir&quot; (ser necesario), leva til para distinguila do verbo 'comprar'. Quería vostede dicir <suggestion>cómpre</suggestion>?</message>
<example correction="cómpre">Agora <marker>compre</marker> analizar o proceso de constitución das listas.</example>
</rule>
<!-- compre + adverbio + VINF (cómpre agora ignorar a provocación) -->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token>compre</token>
</marker>
<token postag="RG|RN" postag_regexp="yes"/>
<token postag="(VMN0000|VSN0000).*" postag_regexp="yes"/>
</pattern>
<message>A forma 'compre', cando é do verbo &quot;cumprir&quot; (ser necesario), leva til para distinguila do verbo 'comprar'. Quería vostede dicir <suggestion>cómpre</suggestion>?</message>
<example correction="Cómpre"><marker>Compre</marker> agora analizar o proceso de constitución das listas.</example>
</rule>
<!-- compre + que -->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token>compre</token>
</marker>
<token>que</token>
</pattern>
<message>A forma 'compre', cando é do verbo &quot;cumprir&quot; (ser necesario), leva til para distinguila do verbo 'comprar'. Quería vostede dicir <suggestion>cómpre</suggestion>?</message>
<example correction="Cómpre"><marker>Compre</marker> que a arquitectura das Nacións Unidas se axuste a ese concepto.</example>
</rule>
</rulegroup>
<rulegroup id="CLITICOS" name="posición dos clíticos">
<rule name="volo dixen (díxenvolo)">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token postag="SENT_START"/>
<token postag="PP......:PP......" postag_regexp="yes"/>
<token postag="V.*" postag_regexp="yes"/>
</pattern>
<message>Os pronomes clíticos non poden ir en galego no inicio da oración. Por favor, empregue o verbo seguido do pronome (por exemplo: 'díxenvolo' no canto de 'volo dixen').</message>
<short>O pronome debe ir posposto ao verbo</short>
<example correction=""><marker>Volo dixen</marker> e non me quixestes facer caso.</example>
<example><marker>Díxenvolo</marker> e non me quixestes facer caso.</example>
</rule>
</rulegroup>
<rulegroup id="REFLEXIVOS" name="cásome, me caso (caso)">
<!--enclíticos-->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes" regexp="yes" postag="V...1S.:PP1.S.*" postag_regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion><match no="1" postag="(.*):.*" postag_regexp="yes" postag_replace="$1"/></suggestion>?</message>
<example correction="marchei">Finalmente <marker>marcheime</marker> con Alberte.</example>
</rule>
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes" regexp="yes" postag="V...2S.:PP2.S.*" postag_regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion><match no="1" postag="(.*):.*" postag_regexp="yes" postag_replace="$1"/></suggestion>?</message>
<example correction="marchas">Finalmente <marker>márchaste</marker> con Alberte?</example>
</rule>
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes" regexp="yes" postag="V...3[SP].:PP3.N.*" postag_regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion><match no="1" postag="(.*):.*" postag_regexp="yes" postag_replace="$1"/></suggestion>?</message>
<example correction="marchou">Finalmente <marker>marchouse</marker> con Alberte.</example>
</rule>
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes" regexp="yes" postag="V...1P.:PP1.P.*" postag_regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion><match no="1" postag="(.*):.*" postag_regexp="yes" postag_replace="$1"/></suggestion>?</message>
<example correction="marchamos">Finalmente <marker>marchámonos</marker> con Alberte.</example>
</rule>
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes" regexp="yes" postag="V...2P.:PP2.P.*" postag_regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion><match no="1" postag="(.*):.*" postag_regexp="yes" postag_replace="$1"/></suggestion>?</message>
<example correction="marchades">Finalmente <marker>marchádesvos</marker> con Alberte.</example>
</rule>
<!--proclíticos-->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<unify>
<feature id="person">
<type id="first"/>
<type id="second"/>
<type id="third"/>
</feature>
<feature id="number">
<type id="singular"/>
<type id="plural"/>
</feature>
<token regexp="yes">me|te|se|nos|vos</token>
<token inflected="yes" regexp="yes">casar|morrer|acougar|adormecer|agrelar|acedar|murchar|merar|espertar|quedar|marchar|calar|caer</token>
</unify>
</pattern>
<message>Algúns verbos en galego non admiten nunca construcións reflexivas. Quería vostede dicir <suggestion>\2</suggestion>?</message>
<example correction="caso">Finalmente non <marker>me caso</marker> con Alberte.</example>
<example>Finalmente non <marker>caso</marker> con Alberte.</example>
</rule>
</rulegroup>
<rule id="PRON_NOS" name="nos cantamos (nós cantamos)">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token postag="SENT_START"/>
<token>nos</token>
</marker>
<token postag="V...1P.*" postag_regexp="yes">
<exception negate_pos="yes" postag="V.*" postag_regexp="yes"/>
</token>
</pattern>
<message>A forma 'nos' ao comezo da oración e seguida por un verbo adoita ser un pronome suxeito e leva til. Quería vostede dicir <suggestion><match no="2" regexp_match="(?iu)o" regexp_replace="ó"/></suggestion>?</message>
<short>Acentuación de pronomes suxeito</short>
<example correction="Nós"><marker>Nos</marker> cremos que a lingua é un tesouro.</example>
</rule>
<rule id="PRON_VOS" name="vos cantades (vós cantades)">
<!-- Created by Susana Sotelo Docío -->
<pattern>
<marker>
<token postag="SENT_START"/>
<token>vos</token>
</marker>
<token postag="V...2P.*" postag_regexp="yes">
<exception negate_pos="yes" postag="V...2P.*" postag_regexp="yes"/>
</token>
</pattern>
<message>A forma 'vos' ao comezo da oración e seguida por un verbo adoita ser un pronome suxeito e leva til. Quería vostede dicir <suggestion><match no="2" regexp_match="(?iu)o" regexp_replace="ó"/></suggestion>?</message>
<short>Acentuación de pronomes suxeito</short>
<example correction="Vós"><marker>Vos</marker> sabedes o que come?</example>
</rule>
<rulegroup id="REXIME_VERBAL" name="construción verbal">
<!-- Verbs with pattern: SUBJanim Verb PP(que).
SUBJ must be animate/human, otherwise the subordinate could act as subject (and
it would be a false positive:
Ex. 'o asunto influíu en que un poida mudar de opinión'
'inflúe que ti esteas presente'
-->
<!-- V + de + que: informar -->
<rule>
<!-- Created by Susana Sotelo Docío -->
<pattern>
<token inflected="yes">