<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../print.xsl"
title="Pretty print" ?>
<?xml-stylesheet type="text/css" href="../rules.css"
title="Easy editing stylesheet" ?>

    <!--
 Portuguese (Portugal - postreform) - Grammar and Typo Rules for LanguageTool.

 Copyright © 2016-2017 Tiago F. Santos (tiagofsantos81@sapo.pt)
 Copyright © 2016-2017 Marco A.G.Pinto (www.marcoagpinto.com)

 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|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)">
    <!ENTITY meses_ano "(?:janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)">
    <!ENTITY dias_semana_abrev "(?:seg|ter|qua|qui|sex|sáb|dom)">
    <!ENTITY dias_semana "(?:segunda|terça|quarta|quinta|sexta|sábado|domingo)">
    <!ENTITY expressoes_de_tempo "(?:segundo|minuto|hora|dia|semana|(?:bi|tri|quadri|se)mestre|ano|década|decénio|mil[éê]nio)s?|mês|meses">

    <!ENTITY hifen "[-‑]">
    <!ENTITY tracos_de_separacao "[-‑]|–|—">

    <!ENTITY pontos_cardeais "(?:n(?:ascente|or(?:te|[do]este))|su(?:l|[do]este)|este|o(?:este|cidente|riente)|poente)">

    <!ENTITY contracoes_MS "(?:ao|d(?:o|um|ele|es[st]e|aquele|is[st]o|aquilo|outro)|n(?:o|um|ele|es[st]e|aquele|is[st]o|aquilo|outro)|pelo|algum|mo|to|lho)">
    <!ENTITY contracoes_FS "(?:à|d(?:a|uma|ela|es[st]a|aquela|outra)|n(?:a|uma|ela|nes[st]a|aquela|outra)|pela|alguma|ma|ta|lha)">
    <!ENTITY contracoes_MP "(?:aos|d(?:os|uns|eles|es[st]es|aqueles|outros)|n(?:os|uns|eles|es[st]es|aqueles|outros)|pelos|alguns|mos|tos|lhos)">
    <!ENTITY contracoes_FP "(?:às|d(?:as|umas|elas|es[st]as|aquelas|outras)|n(?:as|umas|elas|es[st]as|aquelas|outras)|pelas|algumas|mas|tas|lhas)">

    <!ENTITY pronomes_retos "(?:e(?:l[ea]s?|u)|tu|nós|v(?:ós|ocês?))">
    <!ENTITY pronomes_ambiguos "(?:[ao]s?|mas|nos|se)">
    <!ENTITY pronomes_nao_ambiguos "(?:m(?:a|e|os?)|t(?:a|e|o)s?|lh[aeo]s?|vos)">

    <!ENTITY verbos_de_ligacao "(?:andar|continuar|estar|ficar|p(?:arecer|ermanecer)|assemelhar|s(?:emelhar|er)|v(?:irar|viver))">

    <!ENTITY negacoes "(?:n(?:ão|em|unca|inguém|ada)|jamais|sem|tampouco)">
    <!ENTITY introduz_proclise "(?:ainda|apenas|até|bem|caso|como|conforme|consoante|embora|enquanto|já|mais|onde|para|pois|porque|portanto|quais|qual|quando|quão|quant[ao]s?|que|quem|se|sempre|talvez)"><!-- XXX Excluded ali|aqui|acolá -->

    <!ENTITY prefixos_i "(?:(?:p(?:(?:lu|e)r|ol)|m(?:ult|ax|in)|(?:quad|t)r|se(?:squ|m)|a(?:nt|ur)|[ou]n|hem|b)i)">
    <!ENTITY prefixos_o "(?:(?:h(?:i(?:dr|p)|eter|om)|p(?:s(?:eud|ic)|rot)|(?:card|fis|soc|b)i|a(?:[eg]r|rteri|ut)|m(?:[ai]cr|orf)|e(?:letr|nd|x)|i(?:somacr|di)|g(?:astr|e)|r(?:etr|in)|x(?:ant|il)|ne(?:ur)?|o[cr]t|traque|lingu|quil)o)">
    <!ENTITY prefixos_o_2 "anarco|bio|paleo">
    <!ENTITY prefixos_o_ambiguos "(?:(?:e(?:stere|ur|g)|(?:cent|sac)r|a(?:str|udi)|t(?:erm|urb)|f(?:il|ot)|i(?:ntr|d)|bronc|labi|mon|vas|zo)o)">
    <!ENTITY prefixos_hifenizados_h "(?:p(?:r(?:(?:ot)?o|e)|seudo|enta|luri|an|os)|m(?:a(?:cro|xi)|i(?:cro|ni)|ulti|ega)|a(?:(?:[eg]r|ut)o|(?:rqu|nt)i)|s(?:u(?:p(?:er|ra)|b)|emi)|h(?:i(?:dro|per)|exa)|in(?:t(?:er|ra)|fra)|t(?:e(?:tra|le)|ri)|e(?:letro|xtra)|c(?:ircum|o)|re(?:tro)?|[gn]eo|ultra|bio?)">
    <!ENTITY pronomes_de_tratamento "(?:alteza|senhoria|majestade|realeza|magnificência|divindade|excelência|reverência|reverendíssima|beatitude|graça|paternidade|eminência|santidade)s?">

    <!ENTITY naipes "(?:o[iu]ros|copas|espadas|paus|trunfos?)">

]>
<rules lang="pt" xsi:noNamespaceSchemaLocation="../rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- Unification rules retrieved from galician grammar.xml - START-->
  <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>
    <!-- Unification rules retrieved from galician grammar.xml - END  -->

 <category id="EUROPEAN_PORTUGUESE" name="Português de Portugal">

    <rule id="ZERO_MEDIDA_SINGULAR" name="Concordância de número: 'zero grau'">
    <!-- Created by Tiago F. Santos, Portuguese rule, 2017-09-23 -->
      <pattern>
          <token>zero</token>
          <token postag='(?:N..|A...)S.+' postag_regexp='yes'>
            <exception postag='(?:N..|A...)S.+' postag_regexp='yes' negate_pos='yes'/></token>
      </pattern>
      <message>Em Português Europeu medidas com zero escrevem-se no plural.</message>
        <suggestion>\1 <match no="2" postag="(N..|A...)S(.+)" postag_replace='$1P$2' postag_regexp="yes"/></suggestion>
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/zero-graus--zero-grau/15274</url>
      <short>Brasileirismo</short>
      <example correction="zero graus">Lá fora estão <marker>zero grau</marker>.</example>
    </rule>

    <rule id='TODOS_FOLLOWED_BY_NOUN_SINGULAR' name="Expressão: Todo + 'nome sem artigo'">
    <!-- Created by Tiago F. Santos, 2017-10-12 -->
      <antipattern>
          <token regexp='yes'>tod[ao]</token>
          <token postag_regexp='yes' postag='A.+'>
            <exception negate_pos='yes' postag_regexp='yes' postag='A.+'/></token>
          <token>
            <exception postag_regexp='yes' postag='(?:N|A).+'/></token>
      </antipattern>
      <antipattern>
          <token regexp='yes' postag_regexp='yes' postag='V...3P.+' inflected='yes'>&verbos_de_ligacao;</token>
          <token regexp='yes'>tod[ao]</token>
          <token/>
          <token>
            <exception postag_regexp='yes' postag='(?:N|A).+'/></token>
      </antipattern>
      <pattern>
          <token regexp='yes'>tod[ao]</token>
          <token postag_regexp='yes' postag='N.+'>
            <exception negate_pos='yes' postag_regexp='yes' postag='N.+'/></token>
      </pattern>
      <message>Esta expressão no plural exige um segundo artigo.</message>
        <suggestion>\1 <match no='1' regexp_match='...(.)' regexp_replace='$1'/> \2</suggestion>
      <example correction='todo o dia'>Está aberto das dez às seis <marker>todo dia</marker> durante o ano.</example>
      <example correction='toda a hora'>Está aberto a <marker>toda hora</marker>.</example>
      <example>A mulher ficou toda satisfeita.</example>
    </rule>

    <rule id="EFEITO_ESTUFA" name="Hifenização: Efeito-estufa">
    <!-- Created by Marco A.G.Pinto, Portuguese rule, 2017-01-25 -->
      <pattern>
          <token regexp='yes'>efeitos?</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>estufas?</token>
      </pattern>
      <message>Esta expressão não é hifenizada.</message>
        <suggestion>efeito de estufa</suggestion>
        <suggestion>efeito estufa</suggestion>
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/sobre-a-formacao-dos-substantivos-compostos/13909</url>
      <example correction="efeito de estufa|efeito estufa">O calor deve-se ao <marker>efeito-estufa</marker>.</example><!-- TODO Confirm if this is a case of AO changes. VOP (AO90) has 'efeito de estufa'. Verify per-AO. -->
    </rule>

  <rulegroup id='HIFENIZADOR_VERBOS_1' name='Colocações pronominais: mesóclise'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-11-04 -->
      <url>https://pt.wikipedia.org/wiki/Coloca%C3%A7%C3%A3o_pronominal</url>
      <short>Erro de colocação pronominal</short>
    <rule>
      <pattern>
          <token postag='V.+' postag_regexp='yes'>
            <exception regexp='yes'>como|para|casa|nada</exception></token>
          <token regexp='yes'>m[aeo]s?|t[aeo]s?|s[aeo]|lh[aeo]s?|n[ao]s|vos</token>
          <token regexp='yes'>á|ão|ás|ei|eis|emos|ia|iam|íamos|ias|íeis</token>
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1-\2-\3</suggestion>
      <example correction='dar-nos-á'>A vida <marker>dar nos á</marker> sempre mais do que achamos que merecemos.</example>
    </rule>
  </rulegroup>

  <rulegroup id='HIFENIZADOR_VERBOS_2' name='Colocações pronominais dois termos'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-11-04 -->
    <!-- 		Brazilian Portuguese has some inverted colocations  -->
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/a-colocacao-dos-pronomes-atonos/11366</url>
      <short>Erro de colocação pronominal</short>
      <antipattern>
          <token>de</token>
          <token regexp='yes'>forma|jeito|modo</token>
          <token regexp='yes' skip='-1'>(?:algum|nenhum)a?
            <exception scope='next' postag='V.+' postag_regexp='yes'/>
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes' min='0'>&pronomes_retos;</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;|&pronomes_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token regexp='yes' skip='-1'>&negacoes;
            <exception scope='next' postag='V.+' postag_regexp='yes'/>
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes' min='0'>&pronomes_retos;</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;|&pronomes_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token regexp='yes'>nenhu[mn]a?s?|tod[ao]s?|tudo|nada|pouc[ao]s?|muit[ao]s?|algo<!-- TODO Review algu[mn]a?s? --></token>
          <token regexp='yes' min='0'>&pronomes_retos;</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;|&pronomes_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token regexp='yes' skip='-1'>&introduz_proclise;
            <exception scope='next' postag='V.+' postag_regexp='yes'/>
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes' min='0'>&pronomes_retos;</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;|&pronomes_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token regexp='yes' skip='-1'>só|ora|quer<!-- TODO Review ou -->
            <exception scope='next' postag='V.+' postag_regexp='yes'/>
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes' min='0'>&pronomes_retos;</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;|&pronomes_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
      </antipattern>
    <rule>
      <antipattern>
          <token regexp='yes'>nenhu[mn]a?s?</token>
          <token postag_regexp='yes' postag='N.+'/><!-- TODO min='0' after better disambiguation -->
          <token postag_regexp='yes' postag='V.[^N].+'>
            <exception regexp='yes'>mortos?</exception></token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>me|te|se|lhe|nos|vos|lhes</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
          <token postag='V.[PG].*' postag_regexp='yes'/>
      </antipattern>
      <pattern>
          <token postag='V.+' postag_regexp='yes'>
            <exception regexp='yes'>como|para|casa|nada</exception></token>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
          <token postag='V.+' postag_regexp='yes'/>
    <!--NOTE DO NOT INCLUDE a,o,as,os,se,nos,nas,mas. They produce too many
			false positives (Determinants & Contractions)  -->
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1-\2 \3</suggestion>
        <suggestion>\1 \3-\2</suggestion>
      <example correction='vou-te dar|vou dar-te'>Eu <marker>vou te dar</marker> um laptop.</example>
      <example>Ela pode ter-me visto na festa.</example>
      <example>Todos se admiram da sua perseverança.</example>
      <example>Foi então que algo me persuadiu a continuar.</example>
      <example>Quem lhe contou essa notícia?</example>
      <example>Só te tirei o brinquedo, porque te portaste mal</example>
      <example>Nenhum lugar te recorda daquelas férias?</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>-|–</token>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>nenhu[mn]a?s?</token>
          <token postag_regexp='yes' postag='N.+'/>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
          <token postag_regexp='yes' postag='V.[^N].+'/>
      </antipattern>
      <antipattern>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
          <token postag='V.[PG].*' postag_regexp='yes'/>
      </antipattern>
      <pattern>
          <token regexp='yes'>&pronomes_nao_ambiguos;
            <exception scope='previous'>Deus</exception></token>
          <token postag='V.+' postag_regexp='yes'>
            <exception regexp='yes'>mortos?</exception></token>
    <!--NOTE DO NOT INCLUDE a,o,as,os,se,nos,nas,mas. They produce too many
			false positives (Determinants & Contractions)  -->
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\2-<match no='1' case_conversion="startlower"/></suggestion>
      <example correction='dou-te'>Eu <marker>te dou</marker> um laptop.</example>
      <example correction='dou-te'><marker>Te dou</marker> um laptop.</example><!-- XXX changing the behaviour of the second token effects also the first token. This is Ok, since this error is caught by a second rule. -->
      <example correction='emprestaria-me'>Você <marker>me emprestaria</marker> o seu dicionário?</example>
      <example correction='ver-te'>Foi muito bom <marker>te ver</marker> de novo.</example>
      <example>Ela pode ter-me visto na festa.</example>
      <example>Todos se admiram da sua perseverança.</example>
      <example>Foi então que algo me persuadiu a continuar.</example>
      <example>Quem lhe contou essa notícia?</example>
      <example>Só te tirei o brinquedo, porque te portaste mal</example>
      <example>Nenhum lugar te recorda daquelas férias?</example>
      <example>...que eu vos peça expressamente...</example>
      <example>Deus me livre!</example>
    </rule>
    <rule>
      <pattern>
          <token postag='V.+' postag_regexp='yes'>
            <exception regexp='yes'>como|para|casa|nada|mortos?</exception></token>
          <token regexp='yes'>&pronomes_nao_ambiguos;</token>
    <!--NOTE DO NOT INCLUDE a,o,as,os,se,nos,nas,mas. They produce too many
			false positives (Determinants & Contractions)  -->
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1-\2</suggestion>
      <example correction='dar-me'>Isto vai <marker>dar me</marker> muitas dores de cabeça.</example>
      <example correction='estava-me'>Eu <marker>estava me</marker> perguntando se você ia aparecer hoje.</example>
      <example correction='ter-me'>Muito obrigado por <marker>ter me</marker> convidado.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
          <token postag='V.+' postag_regexp='yes' regexp='yes'>.+[rsz]$</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
          <token postag='V.+' postag_regexp='yes' regexp='yes'>.+(?:am|ão|õe)$</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>m[aeo]s?|t[aeo]s?|s[aeo]|lh[aeo]s?|[ao]s?|[nv]os</token>
          <token postag='V.+' postag_regexp='yes'/>
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1 \3-\2</suggestion>
      <example correction='Eu convido-o'><marker>Eu o convido</marker> para a inauguração.</example>
      <example correction='Ele esmera-se'><marker>Ele se esmera</marker> na apresentação.</example>
    </rule>
    <rule>
      <antipattern>
          <token>de</token>
          <token regexp='yes'>forma|jeito|modo</token>
          <token regexp='yes' skip='-1'>(?:algum|nenhum)a?
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
      </antipattern>
      <antipattern>
          <token regexp='yes' skip='-1'>&negacoes;|&introduz_proclise;
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
      </antipattern>
      <antipattern>
          <token inflected='yes'>dar</token>
          <token>por</token>
          <token regexp='yes'>&pronomes_retos;|mim|ti|si</token>
          <token>a</token>
      </antipattern>
      <antipattern>
          <token>a</token>
          <token postag='VMN0000'/>
      </antipattern>
      <pattern>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
          <token postag='V.+' postag_regexp='yes' regexp='yes'>.+[rsz]$</token>
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1 <match no='3' regexp_match='(.+).$' regexp_replace='$1'/>-l\2</suggestion>
        <suggestion>\1 <match no='3' regexp_match='(.+).$' regexp_replace='$1'/>-l\2</suggestion>
      <example correction='Nós convidamo-lo'><marker>Nós o convidamos</marker> para a inauguração.</example>
      <example>De modo algum <marker>nós o convidamos</marker> para a inauguração.</example>
      <example correction='Ela fa-las'><marker>Ela as faz</marker> manualmente.</example>
      <example>Demos por nós a extinguir o fogo.</example>
      <example>Entregue o aval hoje, para ser ela a fechar o negócio.</example>
      <example correction='nós recebemo-las'>...atribuem-se por meio de transmissão genética; <marker>nós as recebemos</marker> pelos genes, que herdamos de nossos pais.</example>
    </rule>
    <rule>
      <antipattern>
          <token>de</token>
          <token regexp='yes'>forma|jeito|modo</token>
          <token regexp='yes' skip='-1'>(?:algum|nenhum)a?
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
      </antipattern>
      <antipattern>
          <token regexp='yes' skip='-1'>&negacoes;|&introduz_proclise;
            <exception scope='next' regexp='yes'>[,;—]|\(</exception></token>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>&pronomes_retos;</token>
          <token regexp='yes'>[ao]s?</token>
          <token postag='V.+' postag_regexp='yes' regexp='yes'>.+(?:am|ão|õe)$</token>
      </pattern>
      <message>Forma hifenizada. Será que quis dizer:</message>
        <suggestion>\1 \3-n\2</suggestion>
      <example correction='Eles convidaram-no'><marker>Eles o convidaram</marker> para a inauguração.</example>
      <example>De forma alguma <marker>eles o convidaram</marker> para a inauguração.</example>
      <example correction='Ela põe-nas'><marker>Ela as põe</marker> na mesa.</example>
    </rule>
  </rulegroup>

  <rulegroup id="POSSESSIVE_WITHOUT_ARTICLE" name="Determinante possessivo sem artigo">
    <!-- Improved by Tiago F. Santos, Portuguese rule, 2016-10-18 	-->
    <!--     Base rule id="A_SUA" name="a sua" by Marco Pinto	-->
      <url>https://pt.wikipedia.org/wiki/Portugu%C3%AAs_brasileiro#Artigo_definido_antes_do_possessivo</url>
    <rule>
      <antipattern>
          <token postag='N.FS.+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='[AN].+' postag_regexp='yes'/></token>
          <token postag='R.+' postag_regexp='yes' min='0'>
            <exception negate_pos='yes' postag='R.+' postag_regexp='yes'/></token>
          <token postag='DP.FS.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token postag='N.FP.+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='[AN].+' postag_regexp='yes'/></token>
          <token postag='R.+' postag_regexp='yes' min='0'>
            <exception negate_pos='yes' postag='R.+' postag_regexp='yes'/></token>
          <token postag='DP.FP.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token postag='N.MS.+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='[AN].+' postag_regexp='yes'/></token>
          <token postag='R.+' postag_regexp='yes' min='0'>
            <exception negate_pos='yes' postag='R.+' postag_regexp='yes'/></token>
          <token postag='DP.MS.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token postag='N.MP.+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='[AN].+' postag_regexp='yes'/></token>
          <token postag='R.+' postag_regexp='yes' min='0'>
            <exception negate_pos='yes' postag='R.+' postag_regexp='yes'/></token>
          <token postag='DP.MP.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token inflected="yes">ser</token>
          <token postag='DP.+' postag_regexp='yes'/>
      </antipattern>
      <antipattern>
          <token>em</token>
          <token regexp="yes">(?:[mts]eu|[nv]osso|dele)s?</token>
          <token regexp="yes">nomes?</token>
      </antipattern>
      <antipattern>
          <token regexp="yes">(?:sua|vossa)s?</token>
          <token regexp="yes">&pronomes_de_tratamento;</token>
      </antipattern>
      <antipattern>
          <token regexp="yes">[ao]s?|es[st][ae]s?|uma?s?|uns|por|de|em|&contracoes_MS;|&contracoes_MP;|&contracoes_FS;|&contracoes_FP;</token>
          <token regexp="yes">["“]</token>
      </antipattern>
      <antipattern>
          <token>em</token>
          <token>seu</token>
          <token>favor</token>
      </antipattern>
      <antipattern>
          <token>em</token>
          <token>sua</token>
          <token regexp='yes'>adoração|defesa|homenagem|honra</token>
      </antipattern>
      <antipattern>
          <token postag_regexp='yes' postag='_PUNCT|SENT_START'/>
          <token>meus</token>
          <token>caros</token>
          <token postag='_PUNCT'/>
      </antipattern>
      <pattern>
          <token>
            <exception regexp="yes">[ao]s?|es[st][ae]s?|uma?s?|uns|por|de|em|&contracoes_MS;|&contracoes_MP;|&contracoes_FS;|&contracoes_FP;</exception></token>
          <token postag='DP.+' postag_regexp='yes'/>
      </pattern>
      <message>Será que quis dizer:</message>
        <suggestion>\1 <match no='2' postag='DP.(..).' postag_regexp='yes' postag_replace='DA.$1.'>o</match> <match no='2' case_conversion="alllower"/></suggestion>
      <example correction='honrou a sua'>Augusto <marker>honrou sua</marker> memória com um magnífico funeral.</example>
      <example correction='Leve a sua'><marker>Leve sua</marker> irmã no carro.</example>
      <example correction='A minha'><marker>Minha</marker> prancha partiu.</example>
      <example correction='turismo a sua'>Boa parte das Antilhas, tem no <marker>turismo sua</marker> mais importante fonte de recursos</example>
      <example type='correct'>Tudo bem, mas <marker>sua</marker> majestade está zangada.</example>
      <example type='correct'>Tudo bem, mas <marker>vossa</marker> eminência está zangada.</example>
      <example>e o Nuno Leitão que é meu amigo no Facebook e Skype.</example>
      <example>Apesar de reafirmar que vai prosseguir o “seu dever” no acolhimento às vagas de migrantes.</example>
    <!--        <example type='correct'>Hospital Nossa Senhora da Paz</example> -->
      <example>Isto é uma característica tipicamente sua.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp="yes">(?:sua|vossa)s?</token>
          <token regexp="yes">&pronomes_de_tratamento;</token>
      </antipattern>
      <antipattern>
          <token>de</token>
          <token regexp="yes">["“]</token>
      </antipattern>
      <pattern>
          <token>de</token>
          <token postag='DP.*' postag_regexp='yes'/>
      </pattern>
      <message>Será que quis dizer:</message>
        <suggestion>d<match no='2' postag='DP.(..).' postag_regexp='yes' postag_replace='DA.$1.'>o</match> <match no='2' case_conversion="alllower"/></suggestion>
      <example correction='da sua'>Leve a cesta <marker>de sua</marker> irmã.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp="yes">(?:sua|vossa)s?</token>
          <token regexp="yes">&pronomes_de_tratamento;</token>
      </antipattern>
      <antipattern>
          <token>em</token>
          <token regexp="yes">["“]</token>
      </antipattern>
      <pattern>
          <token>em</token>
          <token postag='DP.*' postag_regexp='yes'/>
      </pattern>
      <message>Será que quis dizer:</message>
        <suggestion>n<match no='2' postag='DP.(..).' postag_regexp='yes' postag_replace='DA.$1.'>o</match> <match no='2' case_conversion="alllower"/></suggestion>
      <example correction='na sua'>Leve <marker>em sua</marker> cesta.</example>
    </rule>
  </rulegroup>

  <rulegroup id='AVOID_GERUND' name='Evitar o Gerúndio (perifrásico)' default='on' type='style'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-11-24 -->
      <url>https://pt.wikipedia.org/wiki/Gerundismo</url>
      <short>Possível gerundismo.</short>
      <antipattern case_sensitive='yes'>
          <token>Armando</token>
      </antipattern>
    <rule>
      <pattern>
          <token inflected='yes' regexp='yes'>estar|andar|ir|vir</token>
          <token postag='V.G0+' postag_regexp='yes'/>
      </pattern>
      <message>Se possível, evite o gerúndio.</message>
        <suggestion>\1 a <match no='2' postag='VMN0000' case_conversion="alllower"/></suggestion>
      <example correction='Vou a olhar'><marker>Vou olhando</marker> para o que acontece.</example>
    </rule>
    <rule>
      <pattern>
          <token inflected='yes' regexp='yes'>estar|andar|ir|vir</token><!-- TODO Review all cases and confirm it can be safely expanded to more cases-->
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token postag='PP.*' postag_regexp='yes'/>
          <token postag='V.G0+' postag_regexp='yes'>
            <exception postag='V.G0+' postag_regexp='yes' negate_pos='yes'/></token>
      </pattern>
      <message>Se possível, evite o gerúndio.</message>
        <suggestion>\1\2\3 a <match no='4' postag='VMN0000' case_conversion="alllower"/></suggestion>
      <example correction='iam-se a acender'>As luzes <marker>iam-se acendendo</marker> à medida que ela passava.</example>
    </rule>
    <rule>
      <pattern>
          <token postag='V.+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='V.+' postag_regexp='yes'/></token>
          <token postag='V.G0+' postag_regexp='yes'>
            <exception postag='V.G0+' postag_regexp='yes' negate_pos='yes'/></token>
      </pattern>
      <message>Se possível, evite o gerúndio.</message>
        <suggestion>\1 a <match no='2' postag='VMN0000' case_conversion="alllower"/></suggestion>
      <example correction='continua a ser'>O processo básico <marker>continua sendo</marker> o mesmo.</example>
      <example correction='está a soprar'>...ventos do oeste, <marker>está soprando</marker> por cima das águas...</example>
      <example correction='Vou a olhar'><marker>Vou olhando</marker> para o que acontece.</example><!-- TODO This may be correct in some circunstances. REVIEW -->
    </rule>
  </rulegroup>

    <!-- EVITAR O GERÚNDIO Evitar o gerúndio em pt-PT	       -->
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-11-24 -->
    <rule id='AVOID_ALL_GERUND' name='Evitar o Gerúndio (completo)' default='off' type='style'>
      <pattern>
          <token postag='V.G0+' postag_regexp='yes'>
            <exception postag='V.G0+' postag_regexp='yes' negate_pos='yes'/></token>
      </pattern>
      <message>Se possível, evite o gerúndio.</message>
        <suggestion>a <match no='1' postag='VMN0000' case_conversion="alllower"/></suggestion>
      <url>https://pt.wikipedia.org/wiki/Gerundismo</url>
      <example correction='a soprar'>...ventos do oeste, está <marker>soprando</marker> por cima das águas...</example>
      <example correction='a acender'>As luzes iam-se <marker>acendendo</marker> à medida que ela passava.</example>
    </rule>

    <rule id="POR_QUEH_PORQUE" name="Confusão: 'Por quê' e 'Porque'">
    <!-- Created by Tiago F. Santos, Portuguese rule, 2017-XX-XX -->
      <pattern>
          <token>por</token>
          <token>quê</token>
      </pattern>
      <message>Em Português Europeu a expressão é sempre justaposta.</message>
        <suggestion>porquê</suggestion>
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/o-porque-e-o-por-que-e-o-portugues-europeu/30017</url>
      <short>Brasileirismo</short>
      <example correction="porquê">Fizeste isso <marker>por quê</marker>?</example>
    </rule>

 </category>

 <category id="CONTRACTIONS" name="Contrações">

  <rulegroup type='grammar' id="CONTRACOES" name="Contrações" default='on'>
    <!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-31 -->
    <!-- XXX Default off to avoid alarm fatigue. Reactivate when there is a color code/custom highlight system working on LibreOffice -->
      <url>https://pt.wiktionary.org/wiki/Ap%C3%AAndice:Combina%C3%A7%C3%B5es_e_contra%C3%A7%C3%B5es_do_portugu%C3%AAs</url>
      <short>Utilize a contração.</short>
      <antipattern>
          <token regexp='yes'>antes|apesar|capacidade|depois|expec?tativas?|facto|objec?tivo|possibilidade|risco|intenção</token>
          <token>de</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>aos?</token>
          <token regexp='yes'>pontos?</token>
          <token>de</token>
      </antipattern>
      <antipattern>
          <token inflected='yes'>chamar</token>
          <token>de</token>
      </antipattern>
      <antipattern>
          <token inflected='yes'>ser</token>
          <token>tempo</token>
          <token>de</token>
      </antipattern>
    <rule id='CONTRACAO_DOUTREM' name='De + outro/outrem' default='off'>
      <pattern>
          <token>de</token>
          <token case_sensitive="yes" regexp='yes'>outrem|outr[ao]s?</token>
      </pattern>
      <message>Pode também dizer <suggestion>d\2</suggestion>.</message>
      <example correction='doutrem'><marker>de outrem</marker>.</example>
      <example correction='doutro'><marker>de outro</marker>.</example>
      <example correction='doutros'><marker>de outros</marker>.</example>
      <example correction='doutra'><marker>de outra</marker>.</example>
      <example correction='doutras'><marker>de outras</marker>.</example>
    </rule>
    <rule id='CONTRACAO_DUM' name='De + um/uns' default='off'>
      <pattern>
        <marker>
          <token>de</token>
          <token case_sensitive="yes" regexp='yes'>uma?s?|uns</token>
        </marker>
          <token postag='(?:N|A).+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='(?:N|A).+' postag_regexp='yes'/></token>
      </pattern>
      <message>Pode também dizer <suggestion>d\2</suggestion>.</message>
      <example correction='dum'><marker>de um</marker> calmo dia.</example>
      <example correction='duma'><marker>de uma</marker> bonita manhã.</example>
      <example correction='dumas'><marker>de umas</marker> laranjas verdes.</example>
      <example correction='duns'><marker>de uns</marker> rios.</example>
    </rule>
    <rule>
      <pattern>
        <marker>
          <token>em</token>
          <token case_sensitive="yes" regexp='yes'>uma?s?|uns</token>
        </marker>
          <token min='0' max='2' postag='(?:N|A).+' postag_regexp='yes'>
            <exception negate_pos='yes' postag='(?:N|A).+' postag_regexp='yes'/></token>
      </pattern>
      <message>Pode também dizer <suggestion>n\2</suggestion>.</message>
      <example correction='num'><marker>em um</marker> belo dia.</example>
      <example correction='numa'><marker>em uma</marker> bonita manhã.</example>
      <example correction='numas'><marker>em umas</marker> laranjas verdes.</example>
      <example correction='nuns'><marker>em uns</marker> rios.</example>
    </rule>
  </rulegroup>

 </category>

 <category id='REGIONALISMS' name='Regionalismos'>

  <rulegroup default='on' id="EQUIPES" name="Confusão: Equipes - Equipas">
    <!-- Created by Marco A.G.Pinto , Portuguese rule -->
    <rule>
      <pattern>
          <token regexp="yes">(?:d|n|outr|pel)?[ao]s?|(?:alg|d|n)?(?:um(a|as)?|uns)|em|(?:sua|[nv]ossa|tua)s?</token>
        <marker>
          <token regexp='yes'>equipes?</token>
        </marker>
      </pattern>
      <message>Grafia do Brasil. Substitua por <suggestion><match no='2' regexp_match='ipe' regexp_replace='ipa'/></suggestion>.</message>
      <example correction="equipa">A nossa <marker>equipe</marker> é a melhor.</example>
      <example correction="equipas">As nossas <marker>equipes</marker> são boas.</example>
    </rule>
  </rulegroup>

    <!-- O/DE/DO/SOB CONTROLE o/de/do controlo -->
    <!-- Created by Marco A.G.Pinto , Portuguese rule -->
  <rulegroup default='on' id="CONTROLO_CONTROLE" name="Confusão Controle - Controlo">
    <rule>
      <pattern>
          <token regexp="yes">(?:d|n|outr|pel)?os?|de|(?:alg|d|n)?(?:um|uns)|em</token>
        <marker>
          <token>controle</token>
        </marker>
          <token regexp="yes">das?|dos?|de</token>
      </pattern>
      <message>Grafia do Brasil. Substitua por <suggestion>controlo</suggestion>.</message>
      <example correction="controlo">Perdeu o <marker>controle</marker> da situação.</example>
    </rule>
    <rule>
      <pattern>
          <token>sob</token>
          <token>controle</token>
      </pattern>
      <message>Grafia do Brasil. Substitua por <suggestion>sob controlo</suggestion>.</message>
      <example correction="sob controlo">Está tudo <marker>sob controle</marker>.</example>
    </rule>
  </rulegroup>

  <rulegroup id="BRASILEIRISMOS" name="Brasileirismos">
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-04-12 -->
      <url>https://pt.wikipedia.org/wiki/Portugu%C3%AAs_brasileiro#Gram.C3.A1tica</url>
      <short>Brasileirismo</short>
    <rule id="PAPAI_NOEL" name="Brasileirismo: Papai Noel - Pai Natal">
      <pattern>
          <token regexp='yes'>(?:pa)?pai</token>
          <token>noel</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>Pai Natal</suggestion>.</message>
      <example correction="Pai Natal">O <marker>Papai Noel</marker> vive na Lapónia.</example>
    </rule>
    <rule id="TIRO_DE_META" name="Brasileirismo: Tiro de Meta - Pontapé de Baliza">
      <pattern>
          <token>tiro</token>
          <token>de</token>
          <token>meta</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>pontapé de baliza</suggestion>.</message>
      <example correction="pontapé de baliza">Weverton dá o <marker>tiro de meta</marker>.</example>
    </rule>
    <rule id="CAFE_DA_MANHA" name="Brasileirismo: Café da Manhã - Pequeno Almoço">
      <pattern>
          <token>café</token>
          <token>da</token>
          <token>manhã</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>pequeno almoço</suggestion>.</message>
      <example correction="pequeno almoço">Já tomei o <marker>café da manhã</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_1_ABRIDOR' name='Brasileirismo: abridor de garrafas ou saca-rolhas'>
      <pattern>
          <token>abridor</token>
          <token>de</token>
          <token>garrafas</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>saca-rolhas</suggestion>.</message>
      <example correction='saca-rolhas'><marker>abridor de garrafas</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_2_ABRIDOR' name='Brasileirismo: abridor de latas'>
      <pattern>
          <token>abridor</token>
          <token>de</token>
          <token>latas</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>abre-latas</suggestion>.</message>
      <example correction='abre-latas'><marker>abridor de latas</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_3_ÁGUA' name='Brasileirismo: água sanitária'>
      <pattern>
          <token>água</token>
          <token>sanitária</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>lixívia</suggestion>.</message>
      <example correction='lixívia'><marker>água sanitária</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_4_CAFÉ' name='Brasileirismo: café da manhã'>
      <pattern>
          <token>café</token>
          <token>da</token>
          <token>manhã</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>pequeno almoço</suggestion>.</message>
      <example correction='pequeno almoço'><marker>café da manhã</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_5_CARRO' name='Brasileirismo: carro conversível'>
      <pattern>
          <token>carro</token>
          <token>conversível</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>carro descapotável</suggestion>.</message>
      <example correction='carro descapotável'><marker>carro conversível</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_6_CARTEIRA' name='Brasileirismo: carteira de identidade'>
      <pattern>
          <token>carteira</token>
          <token>de</token>
          <token>identidade</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>bilhete de identidade</suggestion>.</message>
      <example correction='bilhete de identidade'><marker>carteira de identidade</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_7_ESTAÇÃO' name='Brasileirismo: estação de trem'>
      <pattern>
          <token>estação</token>
          <token>de</token>
          <token>trem</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>gare</suggestion>.</message>
      <example correction='gare'><marker>estação de trem</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_8_ESTRADA' name='Brasileirismo: estrada de ferro'>
      <pattern>
          <token>estrada</token>
          <token>de</token>
          <token>ferro</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>caminho de ferro</suggestion>.</message>
      <example correction='caminho de ferro'><marker>estrada de ferro</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_9_FONES' name='Brasileirismo: fones de ouvido'>
      <pattern>
          <token>fones</token>
          <token>de</token>
          <token>ouvido</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>auscultadores</suggestion>.</message>
      <example correction='auscultadores'><marker>fones de ouvido</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_10_PRIVADA' name='Brasileirismo: privada sanitária, vaso sanitário'>
      <pattern>
          <token regexp='yes'>privada|vaso</token>
          <token regexp='yes'>sanitári[ao]</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>retrete</suggestion>.</message>
      <example correction='retrete'><marker>privada sanitária</marker>.</example>
      <example correction='retrete'><marker>vaso sanitário</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_11_SECRETÁRIA' name='Brasileirismo: secretária eletrônica'>
      <pattern>
          <token>secretária</token>
          <token regexp='yes'>eletr[óô]nica</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>atendedor de chamadas</suggestion>.</message>
      <example correction='atendedor de chamadas'><marker>secretária eletrônica</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_13_TELEFONE' name='Brasileirismo: telefone celular'>
      <pattern>
          <token>telefone</token>
          <token>celular</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion>telemóvel</suggestion>.</message>
      <example correction='telemóvel'><marker>telefone celular</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_14_CABULAR' name='Brasileirismo: cabular à escola'>
      <pattern>
          <token inflected='yes'>cabular</token>
          <token>a</token>
          <token>escola</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion><match no='1' postag='V.+'>faltar</match> à escola</suggestion>.</message>
      <example correction='faltar à escola'>Hoje vou <marker>cabular a escola</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_15_GOMA' name='Brasileirismo: goma de mascar'>
      <pattern>
          <token inflected='yes'>goma</token>
          <token>de</token>
          <token>mascar</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion><match no='1' postag='N.+'>pastilha</match> elástica</suggestion>.</message>
      <example correction='pastilhas elástica'>Compra duas <marker>gomas de mascar</marker>.</example>
    </rule>
    <rule id='BRASILEIRISMO_16_ATERRISAR' name='Brasileirismo: aterrisar'>
      <pattern>
          <token regexp='yes'>aterri(?:z|ss?).+</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion><match no='1' regexp_match='aterri(z|ss?)(.+)' regexp_replace='aterr$2'/></suggestion>.</message>
      <example correction='aterrar'>O avião vai <marker>aterrizar</marker> dentro de momentos.</example><!-- TODO Add aterrisar POSs to tagger -->
    </rule>
    <rule id='BRASILEIRISMO_17_DECOLAR' name='Brasileirismo: decolar'>
      <pattern>
          <token regexp='yes'>decol.+</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion><match no='1' regexp_match='decol(.+)' regexp_replace='descol$1'/></suggestion>.</message>
      <example correction='descolar'>O avião vai <marker>decolar</marker> dentro de momentos.</example><!-- TODO Add decolar POSs to tagger -->
    </rule>
    <rule id='BRASILEIRISMO_17_XINGAR' name='Brasileirismo: xingar'>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>xing.+</token>
      </pattern>
      <message>Expressão de Português do Brasil. Substitua por <suggestion><match no='1' regexp_match='xing(.+)' regexp_replace='goz$1'/></suggestion>.</message>
      <example correction='gozou'>Ela o <marker>xingou</marker> por não cortar o gramado.</example><!-- TODO Add xingar POSs to tagger -->
      <example>os rios Juruá, Purus, Madeira, Tapajós e Xingu.</example>
    </rule>
    <rule id='BRASILEIRISMO_18_CANCER' name='Brasileirismo: cancêr'>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>c[aâ]ncer.*
            <exception regexp='yes'>canceríg.*|canceros[ao]s?</exception></token>
      </pattern>
      <message>Se não se está a referir à constelação, esta é uma expressão de Português do Brasil.</message>
      <example type='incorrect'>O <marker>câncer</marker> é um problema grave de saúde pública.</example>
      <example type='correct'>O <marker>cancro</marker> é um problema grave de saúde pública.</example>
      <example>...mais resistentes são as células cancerígenas...</example>
    </rule>
    <rule id='BRASILEIRISMO_19_TIMES' name='Brasileirismo: time - equipa'>
      <antipattern>
          <token regexp='yes'>part|full</token>
          <token min='0'>-</token>
          <token regexp='yes'>times?</token>
      </antipattern>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>times?</token>
      </pattern>
      <message>Esta é uma expressão de Português do Brasil para <suggestion>equipa<match no='1' regexp_match='time(s?)' regexp_replace='$1' include_skipped='all'/></suggestion>, ou inglesa para <suggestion>tempo<match no='1' regexp_match='time(s?)' regexp_replace='$1' include_skipped='all'/></suggestion>.</message>
      <example correction='equipas|tempos'>Nossos <marker>times</marker> vão jogar hoje.</example>
      <example>O jornal The <marker>Times</marker> é britânica.</example>
    </rule>
    <rule id='BRASILEIRISMO_20_REVISAR' name='Brasileirismo: revisar - rever'>
      <pattern>
          <token inflected='yes'>revisar</token>
      </pattern>
      <message>Esta é uma expressão de Português do Brasil para <suggestion><match no='1' postag='V.+' postag_regexp='yes'>rever</match></suggestion>.</message>
      <example correction='(Rever)'><marker>Revisaste</marker> o texto antes de enviar.</example>
    </rule>
  </rulegroup>

 </category>

    <!--
 <category id='COMPOUNDING' name='Palavras Compostas'>
 </category>
  -->

 <category id='FORMAL_SPEECH' name='Linguagem Formal' type='register'>

    <!-- TODO Add antipattern for dash and quotations -->
  <rulegroup id='T-V_DISTINCTION' name='Tratamento formal: Tu,Você; Vós,Vocês' default='on'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-12-28 -->
      <url>https://pt.wikipedia.org/wiki/Distin%C3%A7%C3%A3o_t-v</url>
      <antipattern>
          <token regexp='yes' skip='-1'>["«„“][-‒–—―]?</token>
          <token regexp='yes'>["'»”]</token>
      </antipattern>
      <antipattern>
          <token postag='SENT_START'/>
          <token regexp='yes' skip='-1'>-|‒|–|—|―
            <exception scope='next' regexp='yes'>‒|–|—|―</exception></token>
          <token postag='SENT_END'/>
      </antipattern>
    <rule>
      <pattern case_sensitive="yes">
          <token min='0' regexp='yes'>tu|vós</token>
          <token postag="V...2S.+" postag_regexp='yes'>
            <exception regexp='yes'>ambientes|boates|corretas|desertas|gomes|soares|rodrigues|transplantes</exception>
            <exception negate_pos='yes' postag="V...2S.+" postag_regexp='yes'/></token>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion><match no="2" postag="(V...)2S(.+)" postag_replace='$13S$2' postag_regexp="yes"/></suggestion>
      <short>Tratamento informal</short>
      <example correction="Escolhia"><marker>Escolhias</marker> um projeto melhor.</example>
      <example correction="Dirá"><marker>Dirás</marker> a opção correcta.</example>
      <example>—Dirás a opção correcta.</example>
      <example>“Dirás a opção correcta.”</example>
      <example>Ela está preocupada com a evolução, a física, a química, e...</example>
      <example>A Astronomia é uma ciência natural que estuda corpos celestes.</example>
      <example correction="Está"><marker>Estás</marker> bem?</example>
      <example>Está bem.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>tu|vós</token>
          <token postag="R.+" postag_regexp='yes' min='0' max='2'/>
          <token postag="V...2.+" postag_regexp='yes'/>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion><match no="3" postag="(V...)2(.+)" postag_replace='$13$2' postag_regexp="yes"/></suggestion>
      <short>Tratamento informal</short>
      <example correction="Veja"><marker>Tu vê</marker> aquela notícia.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>teus?|tuas?|ti</token>
      </pattern>
      <message>O uso explícito do pronome "\1" pode ser interpretado como desrespeitoso. Considere substituí-lo pelo pronome de tratamente adequado.</message>
        <suggestion><match no='1' regexp_match='t' regexp_replace='s'/></suggestion>
      <short>Tratamento inapropriado</short>
      <example correction="seu">O <marker>teu</marker> carro é maneiro.</example>
      <example>—O teu carro é maneiro.</example>
      <example>“O teu carro é maneiro.”</example>
      <example correction="si">Ele a <marker>ti</marker> tem respeito. O mesmo não se pode dizer dela.</example>
    </rule>
    <rule>
      <pattern>
          <token>te</token>
      </pattern>
      <message>O uso explícito do pronome "\1" pode ser interpretado como desrespeitoso. Considere substituí-lo pelo pronome de tratamente adequado.</message>
        <suggestion>lhe</suggestion>
      <short>Tratamento inapropriado</short>
      <example correction="lhe">O Dr. Mário faz-<marker>te</marker> essa análise sem problemas.</example>
      <example>—O Dr. Mário faz-<marker>te</marker> essa análise sem problemas.</example>
    </rule>
    <rule>
      <pattern>
          <token>tu</token>
          <token postag="R.+" postag_regexp='yes' min='0' max='2'/>
          <token postag="V...2.+" postag_regexp='yes'/>
      </pattern>
      <message>O uso explícito do pronome "\1" pode ser interpretado como desrespeitoso. Considere remover o pronome ou substituí-lo pelo pronome de tratamente adequado.</message>
        <suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/></suggestion>
      <short>Tratamento inapropriado</short>
      <example correction="Tem"><marker>Tu tem</marker> mais atenção ao promenor.</example>
      <example correction="Não tenhas"><marker>Tu não tenhas</marker> atenção, não…</example>
      <example correction="dizes">“O teu carro é maneiro.” — <marker>tu dizes</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>vocês?</token>
          <token postag="R.+" postag_regexp='yes' min='0' max='2'/>
          <token postag="V...3.+" postag_regexp='yes'>
            <exception postag="VMN0000"/></token>
      </pattern>
      <message>O uso explícito do pronome "\1" pode ser interpretado como desrespeitoso. Considere remover o pronome ou substituí-lo pelo pronome de tratamente adequado.</message>
        <suggestion><match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/></suggestion>
      <short>Tratamento inapropriado</short>
      <example correction="Tenha"><marker>Você tenha</marker> mais atenção ao promenor.</example>
      <example correction="Não tenha"><marker>Você não tenha</marker> atenção, não…</example>
      <example correction="diz">“O teu carro é maneiro.” — <marker>você diz</marker>.</example>
      <example>Encontrei o seu casaco depois de você ter saído da casa.</example>
    </rule>
    <rule>
      <pattern>
          <token postag="V.+" postag_regexp='yes'/>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token>te</token>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion>\1-lhe</suggestion>
      <short>Possível tratamento informal</short>
      <example correction="Garanto-lhe"><marker>Garanto-te</marker> que foi mesmo assim.</example>
      <example>—<marker>Garanto-te</marker> que foi mesmo assim.</example>
      <example>«<marker>Garanto-te</marker> que foi mesmo assim.»</example>
      <example>"<marker>Garanto-te</marker> que foi mesmo assim."</example>
    </rule>
    <rule>
      <pattern>
          <token min='0' regexp='yes'>tu|vós</token>
          <token postag="V...2.+" postag_regexp='yes'>
            <exception postag="V..[^P]3.+" postag_regexp='yes'/></token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>me|te|lhe|nos|vos|lhes</token>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion><match no="2" postag="(V...)2(.+)" postag_replace='$13$2' postag_regexp="yes"/>-\4</suggestion>
      <short>Possível tratamento informal</short>
      <example correction="Diga-me"><marker>Diz-me</marker> que foi mesmo assim?</example>
      <example correction="Diga-me"><marker>Tu diz-me</marker> que foi mesmo assim?</example>
      <example correction="confira-me">Por favor, <marker>confere-me</marker> o valor do talão.</example>
    </rule>
    <!--    <rule>
      <antipattern>
          <token postag='SENT_START'/>
          <token regexp='yes' skip='-1'>["«„“-]|‒|–|—|―
            <exception scope='next' regexp='yes'>["'»”]</exception></token>
          <token postag="V.+" postag_regexp='yes'/>
      </antipattern>
        FIXME Conflict between V-Imperative (VMM.+), V-Conditional(V...3.+) + Regular 3p
      <antipattern>
          <token postag="V.+" postag_regexp='yes'>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token>se</token>
      </antipattern>
      <pattern>
          <token min='0' regexp='yes'>tu|vós</token>
          <token postag="VM..2S.+" postag_regexp='yes'>
            <exception negate_pos='yes' postag="V.+" postag_regexp='yes'/>
            <exception postag="V...3S.+" postag_regexp='yes'/></token>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion><match no="2" postag="(V...)2S(.+)" postag_replace='$13S$2' postag_regexp="yes"/></suggestion>
      <example correction="Escolha"><marker>Escolhe</marker> um bom projeto.</example>
      <example correction="Diga"><marker>Diz</marker> a opção correcta.</example>
      <example>Ela está preocupada com a evolução, a física, a química, e...</example>
      <example>A Astronomia é uma ciência natural que estuda corpos celestes.</example>
      <example>Está tudo bem.</example>
    </rule>-->
  </rulegroup>

  <rulegroup id='T-V_DISTINCTION_ALL' name='Tratamento formal: Todas as formas na segunda pessoa, sem salvaguardas' default='off'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-12-28 -->
    <rule>
      <pattern>
          <token min='0' regexp='yes'>tu|vós</token>
          <token postag="V...2.+" postag_regexp='yes'/>
      </pattern>
      <message>Confirme se esta forma de tratamento informal é apropriada.</message>
        <suggestion><match no="2" postag="(V...)2(.+)" postag_replace='$13$2' postag_regexp="yes"/></suggestion>
      <url>https://pt.wikipedia.org/wiki/Distin%C3%A7%C3%A3o_t-v</url>
      <short>Tratamento informal</short>
      <example correction="Cole"><marker>Cola</marker> aqui o texto.</example>
      <example correction="Veja"><marker>Vê</marker> no mapa.</example>
      <example correction="Diga"><marker>Tu diz</marker> o aconteceu.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>você|vocês</token>
      </pattern>
      <message>O uso explícito do pronome "você" pode ser interpretado como desrespeitoso. Considere remover o pronome ou substituí-lo pelo pronome de tratamente adequado.</message>
        <suggestion>o Senhor</suggestion>
        <suggestion>a Senhora</suggestion>
        <suggestion>o Excelentíssimo</suggestion>
        <suggestion>a Excelentíssima</suggestion>
        <suggestion>si</suggestion>
      <example correction="O Senhor|A Senhora|O Excelentíssimo|A Excelentíssima|Si"><marker>Você</marker> tenha mais atenção ao promenor.</example>
      <example correction="o Senhor|a Senhora|o Excelentíssimo|a Excelentíssima|si">Depois peço a <marker>você</marker> para me ajudar.</example>
    </rule>
  </rulegroup>

    <rule id='A_NIVEL' name="A nível" default='off'>
    <!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
      <pattern>
          <token regexp='yes'>a|em</token>
          <token>nível</token>
      </pattern>
      <message>Substitua por <suggestion>ao \2</suggestion>.</message>
      <url>https://duvidas.dicio.com.br/em-nivel-de-a-nivel-de-ou-ao-nivel-de/</url>
      <short>Construção gramatical incorreta.</short>
      <example correction="Ao nível"><marker>A nível</marker> de português está muito mau.</example>
    </rule>

 </category>

 <category id="AO90_RULES" name="Regras do Acordo Ortográfico de 90 (pós-AO90)" type="misspelling" default='on'>

    <rule id="AO90_TONIC_SYLLABLES" name="AO90: Terminações sem acento">
      <pattern>
          <token regexp='yes'>.+((?:óid[oae]|óic[oa]|ói[ao])s?)$
            <exception postag_regexp='yes' postag='NP.+'/></token>
      </pattern>
      <message>Palavras com esta terminação não são acentuadas, segundo o Acordo Ortográfico de 90.</message>
        <suggestion><match no='1' regexp_match='ó' regexp_replace='o'/></suggestion>
      <url>http://www.portaldalinguaportuguesa.org/recursos.html?action=novoacordo</url>
      <short>Palavra alterada pelo AO90</short>
      <example correction="abrotanoides"><marker>abrotanóides</marker>.</example>
      <example correction="acaroide"><marker>acaróide</marker>.</example>
      <example correction="agnostozoico"><marker>agnostozóico</marker>.</example>
      <example correction="jiboia"><marker>jibóia</marker>.</example>
    </rule>

  <rulegroup id='AO90_COMPOUNDS_GENERIC_PREFIX' name='AO90: Hifenizador de palavras'>
    <!--            COMPOSTAS DO NOVO ACORDO ORTOGRÁFICO	       -->
    <!-- Created by Tiago F. Santos , Portuguese rule, 2016-12-02 -->
    <!--	<url>http://www.portaldalinguaportuguesa.org/INDEX.PHP?action=vop&page=crit1</url>
      <url>http://pucrs.br/gpt/hifen.php</url>
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/prefixos-e-hifen/17908</url>
      <url>https://ciberduvidas.iscte-iul.pt/artigos/rubricas/idioma/o-uso-do-hifen-segundo-o-acordo-ortografico/3195</url>-->
      <url>https://pt.wikipedia.org/wiki/Uso_do_h%C3%ADfen_conforme_o_Acordo_Ortogr%C3%A1fico_de_1990</url>
    <rule>
      <pattern>
          <token regexp='yes'>ex|sota|soto|vice|vizo|grã|pós|pré|pró|recém</token>
    <!-- além|aquém|bem|sem|grão are better dealt by PortugueseCompoundRule.java -->
          <token>
            <exception regexp='yes'>[-,.!?\(\)]</exception>
            <exception postag='C.|R.|S.+' postag_regexp='yes'/>
          </token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='vice-diretor'>Tem uma reunião marcada com o <marker>vice diretor</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token>
            <exception regexp='yes'>[-,.!?\(\)]</exception>
            <exception postag='(?:C|R|S|NP).+' postag_regexp='yes'/>
          </token>
          <token regexp='yes'>açu|guaçu|mirim</token>
    <!-- These suffixes are used in Brazilian Portuguese -->
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='Escuteiro-Mirim'>Manual do  <marker>Escuteiro Mirim</marker></example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>&prefixos_hifenizados_h;</token>
    <!-- além|aquém|sem|grão|bem|mal|contra|entre|sobre|ante are better dealt by PortugueseCompoundRule.java -->
          <token regexp='yes'>h.+
            <exception regexp='yes'>[-,.!?\(\)]</exception>
            <exception postag='C.|R.|S.+' postag_regexp='yes'/>
          </token>
      </pattern>
      <message>Palavra provavelmente hifenizada. Pretende dizer </message>
        <suggestion>\1-\2</suggestion>
      <example correction='co-herdada'>A análise do ADN mostrou uma mutação <marker>co herdada</marker> por todos os membros da família afetados.</example>
    <!--	<example correction='sobre-humano'>Fez um esforço <marker>sobre humano</marker> para obter bons resultados.</example>-->
      <example correction='sub-hepática'>Prescrevi uma ecografia à região <marker>sub hepática</marker>.</example>
    </rule>

    <!--	TODO Rule for (des|in)-h... -> (des|in)...	-->

    <rule>
      <pattern>
          <token regexp='yes'>co|pre|pro|pos|re|bi|tri|tetra|penta|hexa</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes' case_sensitive="yes" spacebefore='no'>[^hrs].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto. Pretende dizer </message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='codependência'>Vivem em regime de <marker>co-dependência</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>não|quase</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token/>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto. Pretende dizer </message>
        <suggestion>\1 \3</suggestion>
      <example correction='não agressão'>O pacto de <marker>não-agressão</marker> foi a prioridade do dia.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>horas?</token>
          <token>extra</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>extra|infra|intra|supra|ultra|mega</token>
    <!-- contra are better dealt by PortugueseCompoundRule.java -->
          <token regexp='yes'>a.+
            <exception postag='C.|R.|S.+' postag_regexp='yes'/>
          </token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='infra-acústico'>O som foi produzido no espetro <marker>infra acústico</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>infra|intra|supra|ultra|mega</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^ahrs].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='megalítico'>O artefato encontrado provém do período <marker>mega lítico</marker> altos.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>contra|justa|para|tetra|penta|hexa|hepta|nona|deca</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^ahrs].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='paraquedistas'>São <marker>para-quedistas</marker>.</example>
      <example correction='pentacampeões'>São <marker>penta-campeões</marker>.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>horas?</token>
          <token>extra</token>
      </antipattern>
      <pattern>
          <token>extra</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>ção|conjugal|continental|contratual|tivo|to|tor|dição|ditar|escolar|fino|ir|legal|muros|ordinário|parlamentar|polação|polar|programa|terrestre|territorial|territorialidade|uterino|vagância|vaganciar|vagante|vaginal|vasação|vasado|vasante|vasão|vasar|versão|viar|vio</token>
      </pattern>
      <message>Neste contexto deve unir as palavras.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='extraterrestre'>A rocha encontrada é de origem <marker>extra terrestre</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token>tele</token>
    <!-- ante|entre|sobre are better dealt by PortugueseCompoundRule.java -->
          <token regexp='yes'>e.+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='tele-educação'>Os filhos tiveram que recorrer à <marker>tele educação</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token>tele</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^ehrs].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='televisão'>Nem tudo o que aparece na <marker>tele-visão</marker> é verdade.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>&prefixos_i;</token>
          <token regexp='yes'>i.+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='anti-intelectuais'>Tive que superar atitudes <marker>anti intelectuais</marker> antes de conseguir apresentar o trabalho.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>&prefixos_i;</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^ihrs].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='minimercados'>Os <marker>mini-mercados</marker> abrem em todo o lado.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>&prefixos_o;|&prefixos_o_2;|arqui
            <exception case_sensitive='yes'>Homo</exception></token>
          <token regexp='yes'>o.+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='micro-ondas'>Aquece 10 minutos no <marker>micro ondas</marker> altos.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>auto|quilo</token>
          <token regexp='yes'>d[aeo]s?</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>&prefixos_o;|&prefixos_o_2;|arqui
            <exception case_sensitive='yes'>Homo</exception></token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^hors].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='biodiversidade'>...apresenta índices de <marker>bio-diversidade</marker> altos.</example>
    </rule>
    <rule>
      <antipattern>
          <token>centro</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes' spacebefore='no'>direita|esquerda</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>&prefixos_o_ambiguos;</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes' spacebefore='no'>[^hors].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='eurocéticos'>Os <marker>euro-céticos</marker> têm dúvidas em relação ao europeísmo.</example>
    </rule>
    <!-- TODO special rules for  ante|contra|entre|sobre  -->
    <rule>
      <antipattern>
          <token regexp='yes'>horas?</token>
          <token>extra</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>extra|infra|intra|supra|ultra|mega|tele|&prefixos_i;|&prefixos_o;|&prefixos_o_2;|arqui
            <exception case_sensitive='yes'>Homo</exception></token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>r.+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1r<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='arquirrival'>O F.C. Porto é <marker>arqui-rival</marker> do S.L.Benfica.</example>
    </rule>
    <rule>
      <antipattern>
          <token>retro</token>
          <token>satanás</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>horas?</token>
          <token>extra</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>extra|infra|intra|supra|ultra|mega|tele|&prefixos_i;|&prefixos_o;|&prefixos_o_2;|arqui
            <exception case_sensitive='yes'>Homo</exception></token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>s.+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1s<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='multissecular'>Esta é uma história <marker>multi secular</marker>.</example>
      <example>Vade retro satanás!</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>hiper|inter|super</token>
          <token regexp='yes'>r.+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='super-resistente'>Estamos a desenvolver um liga <marker>super resistente</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>hiper|inter|super</token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^hr].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='hiperventilar'>É natural <marker>hiper-ventilar</marker>.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>ob|sub</token>
    <!-- ab (latim)|sob is better dealt by PortugueseCompoundRule.java -->
          <token regexp='yes' case_sensitive="yes">[br].+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
    <!--	<example correction='ab-rogar'>Pretende-se <marker>ab rogar</marker> as novas referências, no início do ano.</example>-->
      <example correction='sub-reino'>No <marker>sub reino</marker> dos Eumetazoa podemos encontrar...</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>ob|sub</token>
    <!-- ab (latim)|sob is better dealt by PortugueseCompoundRule.java -->
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes' case_sensitive="yes">[^,.!\(\)brh].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
    <!--	<example correction='abdicar'>Pretende <marker>ab-dicar</marker> dos seus direitos...</example>-->
      <example correction='subnível'>Em caso de emergência, saia pelo <marker>sub nível</marker> 1.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>circum|pan
            <exception case_sensitive='yes'>PAN</exception></token>
          <token regexp='yes'>[mnaeiouh].+</token>
      </pattern>
      <message>Palavra hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='Circum-navegação'><marker>Circum navegação</marker> é uma viagem marítima em torno de um lugar.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>circum|pan
            <exception case_sensitive='yes'>PAN</exception></token>
          <token min='0' regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[^,.!\(\)mnaeiouh].+</token>
      </pattern>
      <message>Este prefixo não é hifenizado neste contexto.</message>
        <suggestion>\1<match no='3' case_conversion="startlower"/></suggestion>
      <example correction='panteístas'>As crenças <marker>pan-teístas</marker> são próximas das filosofias orientais.</example>
    </rule>
  </rulegroup>

  <rulegroup id='AO90_ACCENTUATED_PREFIXES' name='AO90: Prefixos acentuados'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-08-15 -->
    <rule>
      <pattern>
        <marker>
          <token regexp='yes'>alem|aquem|pre</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
        </marker>
          <token spacebefore='no'/>
      </pattern>
      <message>Este prefixo é acentuado.</message>
        <suggestion><match no='1' regexp_match='e' regexp_replace='é'/>\2</suggestion>
      <example correction='Além-'>Crónicas de <marker>Alem-</marker>Mar.</example>
    </rule>
    <rule>
      <pattern>
        <marker>
          <token>recem</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
        </marker>
          <token spacebefore='no'/>
      </pattern>
      <message>Este prefixo é acentuado.</message>
        <suggestion>recém\2</suggestion>
      <example correction='Recém-'>Crónicas das <marker>Recem-</marker>Casadas.</example>
    </rule>
    <rule>
      <pattern>
        <marker>
          <token regexp='yes'>pos|pro</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
        </marker>
          <token spacebefore='no'/>
      </pattern>
      <message>Este prefixo é acentuado.</message>
        <suggestion><match no='1' regexp_match='o' regexp_replace='ó'/>\2</suggestion>
      <example correction='pós-'>O período <marker>pos-</marker>moderno.</example>
    </rule>
  </rulegroup>

    <rule id='AO90_HIPHEN_REMOVALS' name='AO90: Palavras que deixam de ser hifenizadas'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-04-19 -->
      <regexp>(?:c(?:a(?:b(?:e(?:ça(?:-(?:de-(?:c(?:a(?:r(?:neiro|taz)|valo|sal)|obra)|a(?:(?:lho-choch|sn)o|bóbora|velã)|(?:t(?:remoç|urc)|burr|vent)o|p(?:o(?:nte|rco)|rego|au)|m(?:edusa|otim)|s(?:ecção|érie)|lista)|no-ar)|s-(?:de-(?:c(?:a(?:r(?:neiro|taz)|sal)|obra)|s(?:(?:anto-antóni|ecçã)o|érie)|a(?:lho-chocho|bóbora|velã)|(?:t(?:remoç|urc)|vent)o|p(?:onte|rego|au)|m(?:edusa|otim)|lista)|no-ar))|lo(?:s-d(?:e-(?:raposa|anjo)|as-feiticeiras)|-d(?:as-feiticeiras|e-anjo)))|os?-de-(?:esquad|guer)ra)|(?:p(?:it(?:ão-de-(?:(?:mar-e-guer|bandei)r|(?:corve|fraga)t)|ões-de-(?:(?:mar-e-guer|bandei)r|fragat))|a-de-chuv)|chorros?-da-arei|gas?-na-saquinh)a|ixa(?:-d(?:e-(?:r(?:essonância|ufo)|(?:pirolit|ócul)os|música|ar)|os-pirolitos)|s-de-(?:(?:pirolit|ócul)os|música|rufo|ar))|r(?:a(?:s-de-(?:nó-cego|pau)|-de-(?:nó-cego|pau))|t(?:(?:ões|ão)-de-visita|as?-de-prego)|ne-de-so(?:is|l)|reiras?-de-tiro)|mi(?:sa(?:-d(?:e-(?:(?:onze-vara|vénu)s|forças?)|o-pano)|s-de-(?:(?:onze-var|forç)a|vénu)s)|nhos?-de-ferro)|v(?:alo(?:-d(?:e-(?:batalh|fris)a|o-cão)|s-d(?:e-batalha|o-cão))|eiras?-da-noite)|s(?:ca(?:s-de-(?:carvalho|noz)|-de-(?:carvalho|noz))|acos?-de-couro)|n(?:a(?:(?:is|l)-d[ae]-arei|-de-roc)a|to(?:-d[eo]|s-de)-cisne)|tingas?-de-bode)|o(?:r(?:es-de-(?:(?:tijol|vinh)o|laranja)|-de-(?:(?:tijol|vinh)o|laranja)|po-a-corpo)|nto(?:s-d(?:a-carochinha|o-vigário)|-d(?:a-carochinha|o-vigário))|va(?:-do-ladr(?:ões|ão)|s-do-ladrão)|m(?:idas?-de-urso|es?-e-dorme)|letes?-de-forças)|h(?:a(?:péu(?:-de-(?:so(?:is|l)|chuva)|s-de-(?:chuva|sol))|lotinhas-do-gerês)|uvas?-de-ouro|efe-de-fila)|(?:ent(?:áureas?-menor-perfolhad|ro-de-mes)|éus?-da-boc)a|â(?:nhamos?-de-manila|maras?-de-ar)|u(?:rral-de-trapiche|s?-de-judas)|ravagem-do-centeio)|p(?:a(?:i(?:-d(?:e-(?:(?:velhac|menin|tod)os|santo)|os-meninos)|s-d(?:e-(?:velhacos|santo)|os-meninos))|u(?:-(?:d(?:e-(?:(?:cabe|fi)leira|sabão)|o-ar)|a-pique)|s-(?:de-sabão|a-pique))|po(?:-de-(?:anjo|peru|rola)|s-de-(?:anjo|peru))|l(?:pos-de-aranha|ha-de-abade)|ssarinho-a-olhar|z(?:es)?-de-alma|r-ou-pernão)|e(?:d(?:r(?:a(?:-d(?:e-(?:(?:a(?:mol|fi)|cev)ar|(?:sang|toq)ue|águia|raio)|a(?:s-amazonas|-lua)|o-(?:so(?:is|l)|ar))|s-d(?:e-(?:(?:a(?:mol|fi)|cev)ar|águia|toque|raio)|o-(?:sol|ar)|a-lua))|inha-na-boca)|aços?-de-asno)|rna(?:-de-(?:serra|pau)|s-de-pau)|ito-de-(?:canga|morte)|les?-de-vinho)|é(?:-de-(?:c(?:a(?:n(?:(?:tig)?a|deeiro)|valo|bra)|humbo)|a(?:l(?:feres|tar)|tleta|migo)|(?:galinh|danç)a|(?:molequ|lebr)e|(?:ven|pa)to|b(?:anco|oi))|s-de-(?:(?:galinh|atlet)a|c(?:humbo|abra)|lebre|vento|boi))|ã(?:o-(?:d(?:e-(?:(?:passarinh|gal)o|aç(?:ú|u)car|l(?:eite|ó))|o-chile)|por-Deus)|es-d(?:e-(?:(?:passarinh|gal)o|l(?:eite|ó)|açucar)|o-chile))|i(?:n(?:go(?:-de-tocha|s-de-ovos)|ho-de-flandres)|(?:(?:ões|ão)-das-nica|anos?-dos-preto)s|olho-de-cobra)|o(?:r(?:ta(?:-(?:a-port|da-ru)|s-a-port)a|es-do-sol)|mo(?:-de-ad(?:ões|ão)|s-de-adão)|ntas?-de-lança)|r(?:e(?:ss(?:ões|ão)-de-ar|tos?-e-branco)|ontos?-a-(?:vesti|come)r|íncipe-de-gales)|ó(?:-de-(?:(?:sapat|talc)o|chipre|arroz|goa)|s-de-(?:chipre|arroz|goa))|ôr(?:-do-so(?:is|l)|s-do-sol))|b(?:i(?:c(?:h(?:o(?:s-d(?:o-(?:burac|ouvid|mat)o|e-sete-cabeças)|-d(?:o-(?:burac|ouvid|mat)o|e-sete-cabeças))|a(?:s-de-(?:sete-cabeças|rabear)|-de-(?:sete-cabeças|rabear)))|o(?:-de-(?:p(?:a(?:pagai|t)o|omba)|g(?:avião|ás)|mocho|obra)|s-de-(?:p(?:a(?:pagai|t)o|omba)|g(?:avião|ás)|obra)))|lhete(?:s-de-(?:identidade|visita)|-de-(?:identidade|visita))|fe-de-caneca)|o(?:ca(?:-de-(?:f(?:avas|ogo)|si(?:no|ri)|incêndio)|s-de-(?:(?:incêndi|fog|lob)o|si(?:no|ri)))|(?:t(?:(?:ões|ão)-de-our|as?-de-elástic)|(?:ns|m)-de-bic)o|la(?:s-(?:ao-cesto|de-neve)|-(?:ao-cesto|de-neve))|a-vai-ela)|a(?:r(?:riga(?:s-de-(?:freira|bicho)|-de-(?:freira|bicho))|ba-de-baleia|ca-de-ouro)|ba(?:-de-(?:camelo|moça)|s-de-camelo)|l(?:ões|ão)-de-ensaio|irros?-de-lata)|ra(?:ço(?:-de-(?:preguiça|armas|ferro)|s-de-(?:preguiça|ferro))|vos?-de-mundão|nco-de-baleia)|(?:ênç(?:ões|ão)-de-deu|uchas?-dos-caçadore)s|e(?:xigas?-de-lobo|ijos?-de-moça)|álsamo-do-canadá)|f(?:o(?:go(?:-d(?:e-(?:sant(?:o-ant(?:ões|ão)|elmo)|(?:bengal|vist)a|artifício)|o-ar)|s-d(?:e-(?:(?:sant(?:o-antã|elm)|artifíci)o|(?:bengal|vist)a)|o-ar))|cinho(?:s-de-(?:(?:burr|porc)o|tenca)|-de-(?:(?:burr|porc)o|tenca))|ra(?:s-d(?:e-jogo|a-lei)|-d(?:e-jogo|a-lei))|lh(?:a-de-flandres|os-de-sinhá))|a(?:to(?:-de-(?:(?:saia-e-cas|mac)ac|trein|banh)|s-de-(?:macac|trein|banh))o|c(?:es?-a-face|a-de-mato)|rinhas?-de-pau|zs?-de-conta)|i(?:(?:lho-d(?:e-parid|a-terr)|sca(?:is|l)-de-linh|(?:ns|m)-de-seman)a|o(?:s-de-(?:prumo|ovos)|-de-prumo))|e(?:bre-d(?:os-(?:três-dia|feno)s|e-malta)|rro-de-(?:engomar|romã)|zes-de-ouro)|r(?:adinho-d[ae]-mão-furada|entes?-a-frente|utos-do-mar)|u(?:mos?-da-terra|la-de-gabu)|lor-de-enxofre)|m(?:a(?:r(?:i(?:a-da(?:s-pernas-compridas|-fonte)|do-de-bolas)|c(?:o-de-colónia|a-de-judas)|mita-de-gigante)|nga-de-(?:alpaca|eixo)|çã-de-ad(?:ões|ão)|tutas?-e-meia)|e(?:s(?:tre(?:-de-(?:cerimóni|arm|obr)|s-de-(?:cerimóni|obr))as|(?:inha|as?)-de-cabeceira)|nina-d(?:e-cinco-olhos|o-olho)|adinha-de-ouro|ias?-de-leite)|ã(?:e(?:-d(?:e-(?:aluguer|santo)|a-lua)|s-d(?:e-santo|a-lua))|o(?:-de-(?:(?:barc|obr)a|judas)|s-de-obra))|o(?:scas-de-mil(?:ões|ão)|ços?-de-forcado|ntes?-de-vénus|rtes?-em-pé)|ulhers?-a-dias)|a(?:z(?:u(?:is-d(?:a-prússia|e-metileno)|l-d(?:a-prússia|e-metileno))|eite(?:s-de-(?:cheiro|pau)|-de-(?:cheiro|pau)))|l(?:godão-(?:d(?:as-(?:laranj|oliv)eiras|e-vidro)|em-rama)|m(?:écega-do-brasi[ls]|as?-do-padeiro)|finetes?-de-ama)|r(?:co(?:-d(?:a-(?:alianç|chuv)a|e-deus)|s-da-(?:alianç|chuv)a)|r(?:uda-dos-muros|oz-de-cuxá))|judante(?:s-de-(?:ordens|campo)|-de-(?:ordens|campo))|n(?:gus?-de-caroço|jos?-da-guarda)|m(?:igos?-da-onça|a-de-leite)|çúcar-de-madeira|chas?-de-armas|utos?-de-fé)|t(?:e(?:rra(?:-(?:de-(?:s(?:evilh|ien)a|ninguém)|a-terra)|s-a-terra)|sta(?:s-de-(?:ferro|ponte)|-de-(?:ferro|ponte)))|i(?:nta(?:s-d(?:os-pobres|a-china)|-d(?:os-pobres|a-china))|r(?:as?-que-ti|o-de-guer)ra)|o(?:r(?:rão-de-alicante|nas?-e-torna)|ucinhos?-do-céu|pas?-a-tudo)|r(?:o(?:(?:uxas?|ixa)-de-ovos|mba-de-boi)|intas?-e-um)|êtes?-à-tête|énis-de-mesa)|r(?:abo(?:s-de-(?:(?:a(?:ndorinh|rrai)|sai)a|(?:cav|g)alo|leque|tatu)|-de-(?:(?:a(?:ndorinh|rrai)|sai)a|(?:cav|g)alo|leque|tatu))|e(?:lógio(?:s-d(?:a-morte|e-ponto)|-d(?:a-morte|e-ponto))|sina-de-jalapa)|o(?:sa-d(?:e-o[iu]ro|os-ventos)|upa-de-franceses)|és-do-ch(?:ões|ão))|s(?:a(?:l-de-(?:s(?:eldlitz|aturno)|(?:júpit|glaub)er|azedas|epsom|vichy)|c(?:a-de-carv(?:ões|ão)|o-de-areia)|ída-de-(?:banho|praia)|is-de-azedas)|o(?:p(?:inha-de-massa|a-de-urso)|l-(?:de-gata|e-dó))|ul-rio-grandense)|v(?:i(?:n(?:ho(?:-de-(?:c(?:heiro|aju)|maçãs?|palma)|s-de-(?:cheiro|maçãs))|t(?:e-e-(?:quatro-horas|um)|ém-de-santo-antónio))|ola-d(?:e-a(?:rame|mor)|a-terra)|dro-de-cheiro)|erbos?-de-encher|olta-no-meio)|l(?:i(?:xa(?:s-de-(?:lei|pau)|-de-(?:lei|pau))|mpas?-pára-brisas|nha-de-água)|íngua(?:-de-(?:(?:vead|gat)o|trapos|sogra)|s-de-gato)|ua(?:-de-me(?:is|l)|s-de-mel)|eite-de-ca(?:is|l))|o(?:lho(?:-de-(?:mosquito|sogra|tigre|boi)|s-de-boi)|co(?:-do-coraç(?:ões|ão)|s-do-coração)|ficia(?:is|l)-às-ordens|itavos-de-fina(?:is|l)|relhas-de-abade)|g(?:(?:aitas?-de-(?:beiço|fole)|rosso-de-nápole|ás-dos-pântano|essos?-de-pari)s|u(?:inchos?-da-tainha|arda-de-corpo))|á(?:gua(?:s-de-(?:(?:forç|mes)a|végeto|lume)|-de-(?:(?:forç|mes)a|végeto|lume))|rvores?-da-vida)|d(?:ente(?:s-de-(?:serra|lobo)|-de-coelho)|(?:anças?-de-são-vit|oenças?-do-son)o|ia-a-dia)|zé(?:s-(?:d(?:os-anzóis|a-véstia)|faz-formas)|-(?:d(?:os-anzóis|a-véstia)|faz-formas))|n(?:(?:egros?-de-fum|ós?-de-adã)o|ortes?-rio-grandense|ão-sei-quês?|ariz-de-cera)|j(?:uiz(?:s-de-(?:campo|linha)|-de-(?:campo|linha))|ardi(?:ns|m)-de-infância)|qu(?:arto(?:s-de-fina(?:is|l)|-de-fina(?:is|l))|eijinho-do-céu)|u(?:(?:nhas?-de-fom|p-to-dat)e|mbigo-de-freira)|e(?:aus?-de-toilette|spuma-do-mar)|hás?-de-haver|és-não-és)</regexp>
      <message>Esta palavra já não é hifenizada.</message>
    <!--<suggestion><match no="0" regexp_match="-" regexp_replace=" "/></suggestion>-->
      <url>http://www.portaldalinguaportuguesa.org/recursos.html?action=novoacordo</url>
      <example type='incorrect'>Soluções <marker>terra-a-terra</marker> têm resistência.</example>
      <example type='correct'>Soluções <marker>terra a terra</marker> têm resistência.</example>
    </rule>

  <rulegroup id='HAVER_DE' name='AO90: Haver + de'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-07 -->
      <url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/sobre-supressao-do-hifen-na-forma-verbal-ha-de-depois-do-novo-acordo/29531</url>
    <rule>
      <pattern>
          <token regexp='yes'>heis?|hás?|hão</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token>de</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, esta forma já não é hifenizada.</message>
        <suggestion>\1 \3</suggestion>
      <example correction='Hás de'><marker>Hás-de</marker> comprar uma casa.</example>
      <example correction='Hei de'><marker>Hei-de</marker> ir ao Congo.</example>
    </rule>
    <rule>
      <antipattern>
          <token regexp='yes'>às?</token>
          <token>de</token>
          <token regexp='yes'>uma?|uns</token>
      </antipattern>
      <antipattern>
          <token>ás</token>
          <token>de</token>
          <token regexp='yes'>&naipes;</token>
      </antipattern>
      <pattern>
          <token negate='yes' regexp='yes'>&hifen;</token>
        <marker>
          <token regexp='yes'>eis?|ás?|ão</token>
          <token min='0' regexp='yes'>-|–|—</token>
          <token>de</token>
        </marker>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, o verbo haver não é hifenizado nem leva 'h'.</message>
        <suggestion>h<match no='2' case_conversion='alllower'/> \4</suggestion>
      <example correction='Hás de'><marker>Ás-de</marker> comprar uma casa.</example>
      <example>All In na blind com Ás de Copas e Ás de Ouros.</example>
      <example>Os espanhóis realizaram outra expedição similar à de Orellana.</example>
    </rule>
    <rule>
      <pattern>
          <token regexp='yes'>às?</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token>de</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, o verbo haver não é hifenizado nem leva 'h'.</message>
        <suggestion>há<match no='1' regexp_match='.(s?)' regexp_replace='$1'/> \3</suggestion>
      <example correction='Hás de'><marker>Às-de</marker> comprar uma casa.</example>
      <example>Os espanhóis realizaram outra expedição similar à de Orellana.</example>
    </rule>
  </rulegroup>

  <rulegroup id='BEM_FEITO' name='AO90: Bem-feito / Bem feito!'>
    <rule>
      <antipattern>
          <token postag='SENT_START'/>
          <token>Bem</token>
          <token regexp='yes'>feit[ao]</token>
          <token regexp='yes'>[!\?]</token>
      </antipattern>
      <pattern>
          <token>bem</token>
          <token regexp='yes'>feit[ao]s?</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, o adjetivo deve ser hifenizado, enquanto que a interjeição não deve ser hifenizada.</message>
        <suggestion>\1-\2</suggestion>
      <example correction='bem-feito'>Este programa está mesmo <marker>bem feito</marker>!</example>
      <example>Bem feito!</example>
    </rule>
    <rule>
      <pattern>
          <token postag='SENT_START'/>
          <token>bem</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>feit[ao]</token>
          <token regexp='yes'>[!\?]</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, o adjetivo deve ser hifenizado, enquanto que a interjeição não deve ser hifenizada.</message>
        <suggestion>\2 \4\5</suggestion>
      <example correction='Bem feito!'><marker>Bem-feito!</marker></example>
      <example>Este programa está mesmo <marker>bem-feito</marker>!</example>
    </rule>
  </rulegroup>

    <rule id='AO90_MONTHS_CASING' type='grammar' name='AO90: Capitalização de Meses e Estações do Ano'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-25 -->
      <antipattern>
          <token>Rio</token>
          <token>de</token>
          <token>Janeiro</token>
      </antipattern>
      <antipattern>
          <token>25</token>
          <token>de</token>
          <token>Abril</token>
      </antipattern>
      <antipattern>
          <token>Revolução</token>
          <token>de</token>
          <token>Outubro</token>
      </antipattern>
      <antipattern>
          <token>Primavera</token>
          <token>Árabe</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>Jan|Fev|Abr|Mai|Jun|Jul|Ago|Set|Out|Nov</token>
          <token postag_regexp='yes' postag='NP.+|UNKNOWN'/>
      </antipattern>
      <pattern case_sensitive='yes'>
          <token negate_pos='yes' postag='SENT_START'/>
        <marker>
          <token regexp='yes'>(?:Janeiro|Fevereiro|Março|Abril|Maio|Junho|Julho|Agosto|Setembro|Outubro|Novembro|Dezembro)s?|(?:Jan|Fev|Abr|Mai|Jun|Jul|Ago|Set|Out|Nov)|Invernos?|Primaveras?|Ver(?:ão|ões)|Outonos?|Estios?</token><!-- TODO |Mar|Dez create subrule for these cases -->
        </marker>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, os meses e as estações do ano deixam de ser capitalizados.</message>
        <suggestion><match no='2' case_conversion='alllower'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <short>Erro de capitalização.</short>
      <example correction='janeiro'>O ano novo chinês é a 28 de <marker>Janeiro</marker>.</example>
      <example correction='inverno'>Este <marker>Inverno</marker> está a ser muito seco.</example>
      <example correction='set'>22 <marker>Set</marker> – início do outono.</example>
      <example>Junho é um mês de muitas chuvas.</example>
      <example>1) Jan Rogoziński, A brief history of the Caribbean : fr...</example>
      <example correction='jan'>1 <marker>Jan</marker> 2002 - As moedas e notas físicas de euro entraram em circulação, tornando-se a moeda de uso corrente entre os membros originais.</example>
    </rule>

  <rulegroup id='AO90_WEEKDAYS_CASING' type='grammar' name='AO90: Capitalização dos Dias da Semana'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-26 -->
    <rule>
      <antipattern>
          <token postag='SENT_START'/>
          <token regexp='yes'>[“«&quot;]</token>
          <token>Ter</token>
      </antipattern>
      <pattern case_sensitive='yes'>
          <token>
            <exception postag_regexp='yes' postag='SENT_START|NP.+'/></token>
        <marker>
          <token regexp='yes'>Sábados?|Domingo|(?:Seg|Ter|Qua|Qui|Sex|S[aá]b|Dom)</token>
        </marker>
          <token>
            <exception postag_regexp='yes' postag='NP.+'/></token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, os dias da semana deixam de ser capitalizados.</message>
        <suggestion><match no='2' case_conversion='alllower'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='domingo'>O torneio é no próximo <marker>Domingo</marker>.</example>
      <example correction='sáb'>A nova temporada estreia em <marker>Sáb</marker>. 24 dez 2016.</example>
      <example correction='ter'>A última temporada estreiou na <marker>Ter</marker>. 27 dez 2016.</example>
      <example>A data coincide com o aniversário do imperador Dom Pedro II.</example>
      <example>Nas eleições de 1946, o general Juan Domingo Perón se apresentou como candidato do Partido Lab...</example>
      <example>"Ter trabalho e despesa."</example>
    </rule>
    <rule>
      <pattern case_sensitive='yes'>
          <token negate_pos='yes' postag='SENT_START'/>
        <marker>
          <token regexp='yes'>(?:Segunda|Terça|Quarta|Quinta|Sexta)s?</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[Ff]eiras?</token>
        </marker>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, os dias da semana deixam de ser capitalizados.</message>
        <suggestion><match no='2' case_conversion='alllower'/>-<match no='4' case_conversion='alllower'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='segundas-feiras'>As <marker>Segundas-feiras</marker> são sempre difíceis.</example>
      <example>Segundas-feiras são sempre difíceis.</example>
    </rule>
  </rulegroup>

    <rule id='AO90_CARDINAL_POINTS_CASING' type='grammar' name='AO90: Capitalização de Pontos Cardeais'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-26 -->
      <antipattern case_sensitive='yes'>
          <token>Médio</token>
          <token>Oriente</token>
      </antipattern>
      <antipattern>
          <token regexp='yes'>em|n[ao]s?</token>
          <token regexp='yes' case_sensitive='yes'>Norte|Sul|Este|Oeste|Ocidente|Oriente|Nascente|Poente|Nordeste|Sudeste|Noroeste|Sudoeste</token>
          <token regexp='yes'>d[eao]s?</token>
          <token regexp='yes' case_sensitive='yes'>\p{Lu}.+</token>
      </antipattern>
      <antipattern>
          <token postag='SENT_START'/>
          <token postag='_PUNCT'/>
          <token>Este</token>
      </antipattern>
      <pattern case_sensitive='yes'>
          <token>
            <exception regexp='yes'>[Pp][oó]lo|[Zz]onas?|[Rr]egi(ão|ões)|[Oo]|[Dd]o|[Nn]o|[Pp]arte|[Hh]emisfério|\-</exception>
            <exception postag_regexp='yes' postag='SENT_START|NP.+'/></token>
        <marker>
          <token regexp='yes'>Norte|Sul|Este|Oeste|Ocidente|Oriente|Nascente|Poente|Nordeste|Sudeste|Noroeste|Sudoeste
            <exception postag_regexp='yes' postag='NP..[^G].+'/></token>
        </marker>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, os pontos cardeais deixam de ser capitalizados, excepto se se referem a uma região específica.</message>
        <suggestion><match no='2' case_conversion='alllower'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='sul'>Trás-os-Montes é a <marker>Sul</marker> do rio Douro.</example>
      <example>Estas vão se reduzindo em direção ao Pólo Sul.</example>
      <example>Rodeia o polo Sul, e por esse motivo está quase completamente coberto de gelo.</example>
      <example>Este elevador é capaz de carregar 10 pessoas por vez.</example>
      <example>A maior parte dos corais no Norte da Grande Barreira estão mortos.</example>
      <example>A maioria dos corais na parte Norte da Grande Barreira estão mortos.</example>
    </rule>

    <rule id="POLO_CAPITALIZATION" name="AO90: Polo Norte/Sul">
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-08-08 -->
      <antipattern case_sensitive='yes'>
          <token regexp='yes'>P[oó]lo</token>
          <token regexp='yes'>Norte|Sul</token>
      </antipattern>
      <pattern>
          <token regexp='yes'>p[oó]lo</token>
          <token regexp='yes'>norte|sul</token>
      </pattern>
      <message>Segundo o AO90, deve capitalizar esta expressão geográfica.</message>
        <suggestion><match no='1' case_conversion='startupper'/> <match no='2' case_conversion='startupper'/></suggestion>
      <example correction="Polo Norte">O <marker>polo norte</marker> é no Ártico.</example>
      <example correction="Polo Sul">O <marker>polo Sul</marker> é no Antártico.</example>
      <example>O <marker>Polo Norte</marker> é no Ártico.</example>
    </rule>

    <rule id="AVÉ_MARIA" name="AO90: ave Maria">
    <!-- Created by Marco A.G.Pinto, Portuguese rule, 2017-01-09 -->
      <pattern>
        <marker>
          <token>avé</token>
        </marker>
          <token min="0">,</token>
          <token>Maria</token>
          <token>,</token>
          <token>cheia</token>
          <token>de</token>
          <token>graça</token>
      </pattern>
      <message>Segundo o AO90, deve substituir por <suggestion>ave</suggestion>.</message>
      <example correction="Ave"><marker>Avé</marker>, Maria, cheia de graça.</example>
    </rule>

 </category>

 <category id="AO45_RULES" name="Regras do Acordo Ortográfico de 45 (pré-AO90)"  type="misspelling" default='off'>

    <rule id='AO45_MONTHS_CASING' type='grammar' name='AO45: Capitalização de Meses e Estações do Ano'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-26 -->
      <pattern case_sensitive='yes'>
          <token regexp='yes'>(?:&meses_ano;)s?|(?:&meses_ano_abrev;)|invernos?|primaveras?|ver(?:ão|ões)|estios?|outonos?
            <exception regexp='yes'>mar|dez</exception></token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 45, os meses e as estações do ano devem ser capitalizados.</message>
        <suggestion><match no='1' case_conversion='startupper'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='Janeiro'>O ano novo chinês é a 28 de <marker>janeiro</marker>.</example>
      <example correction='Inverno'>Este <marker>inverno</marker> está a ser muito seco.</example>
      <example correction='Set'>22 <marker>set</marker> - início do Outono.</example>
      <example>Só faltam dez dias para as férias.</example>
    </rule>

  <rulegroup id='AO45_WEEKDAYS_CASING' type='grammar' name='AO45: Capitalização dos Dias da Semana'>
    <!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-26 -->
    <rule>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>sábados?|domingo|s[aá]b|dom</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 90, os dias da semana são capitalizados.</message>
        <suggestion><match no='1' case_conversion='startupper'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='Domingo'>O torneio é no próximo <marker>domingo</marker>.</example>
      <example correction='Sáb'>A nova temporada estreia em <marker>sáb</marker> 24 dez 2016.</example>
    </rule>
    <rule>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>(?:segunda|terça|quarta|quinta|sexta)s?|(?:seg|ter|qua|qui|sex)</token>
          <token regexp='yes' spacebefore='no'>&hifen;</token>
          <token regexp='yes'>[Ff]eiras?</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 45, os dias da semana são capitalizados.</message>
        <suggestion><match no='1' case_conversion='startupper'/>-\3</suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='Segundas-feiras'>As <marker>segundas-feiras</marker> são sempre difíceis.</example>
    <!--<example correction='Ter'>A última temporada estreou em <marker>ter</marker>, 27 Dez 2016.</example>--><!-- TODO seperate abrev and exclude ter -->
    </rule>
  </rulegroup>

  <rulegroup id='AO45_CARDINAL_POINTS_CASING' type='grammar' name='AO45: Capitalização de Pontos Cardeais'>
    <rule>
      <pattern case_sensitive='yes'>
        <marker>
          <token regexp='yes'>&pontos_cardeais;
            <exception>este</exception></token>
        </marker>
          <token negate='yes' regexp='yes'>&hifen;</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 45, os pontos cardeais são capitalizados.</message>
        <suggestion><match no='1' case_conversion='startupper'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='Sul'>Trás-os-Montes é a <marker>sul</marker> do rio Douro.</example>
      <example>Devolva este livro assim que puder.</example>
    </rule>
    <rule>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>[Pp]ólo|[Zz]onas?|[Rr]egi(ão|ões)|[Vv]entos?|[Oo]ndas?|[Oo]ndulação|[Ss]well|[Direc?ção]|[Oo]|[Dd]o|[Nn]o|-</token>
          <token min='0'>a</token>
          <token regexp='yes'>l?este</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 45, os pontos cardeais são capitalizados.</message>
        <suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' case_conversion='startupper'/></suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='zona Este'>Os biomas são mais diversos na <marker>zona este</marker> da Europa.</example>
    </rule>
    <rule>
      <pattern case_sensitive='yes'>
          <token regexp='yes'>[Aa]</token>
          <token regexp='yes'>l?este</token>
          <token regexp='yes'>[dn][eao]s?</token>
      </pattern>
      <message>Segundo o Acordo Ortográfico de 45, os pontos cardeais são capitalizados.</message>
        <suggestion>\1 <match no='2' case_conversion='startupper'/> \3</suggestion>
      <url>http://www.uc.pt/noticias/02_NL_2011/05_2011/2011_05_ManualNovoAcordoOrtografico.pdf/</url>
      <example correction='A Este da'><marker>A este da</marker> Europa, os biomas são mais diversos.</example>
    </rule>
  </rulegroup>

    <rule id="MUITO_PELO_É" name="AO45: Confusão: pelo - pêlo">
    <!-- Created by Marco A.G. Pinto   -->
      <pattern>
          <token>muito</token>
          <token>pelo</token>
          <token inflected='yes'>ser</token>
      </pattern>
      <message>Substitua por <suggestion>muito pêlo \3</suggestion>.</message>
      <example correction="muito pêlo é">Para quem tem animais com <marker>muito pelo é</marker> bom.</example>
    </rule>
 </category>

    <!-- TODO Temporary use only for minimum inconsistency. Regression test in pt-PT then move to pt-AO and pt-MZ. Change id back to CASING after moving.
 <category id='CASING_AO45' name='Capitalização' type='grammar'>


 </category>
 -->
</rules>
