All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.languagetool.rules.en.en-GB.grammar.xml Maven / Gradle / Ivy

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" ?>
<?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css"
title="Easy editing stylesheet" ?>
<!--
British English Grammar and Typo Rules for LanguageTool
See tagset.txt for the meaning of the POS tags
Copyright (C) 2012 Marcin Miłkowski (https://www.languagetool.org)

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 apostrophe "['’`´‘ʻ]">

    <!ENTITY hyphen "(?:[-‑])">

    <!ENTITY ambiguous_date '
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes">\d\d\d\d</token>
    '>
    <!-- "7 October 2014" and "7th October 2014" -->
    <!ENTITY date_dmy '
        <token regexp="yes">\d\d?(th)?</token>
        <token regexp="yes">&months;|&abbrevMonths;</token>
        <token regexp="yes">\d\d\d\d</token>
    '>
    <!ENTITY date_dmy_skip '
        <token regexp="yes">\d\d?</token>
        <token regexp="yes">&months;|&abbrevMonths;</token>
        <token regexp="yes" skip="-1">\d\d\d\d</token>
    '>
    <!-- "October 7, 2014" -->
    <!ENTITY date_mdy '
        <token regexp="yes">&months;|&abbrevMonths;</token>
        <token regexp="yes">\d\d?</token>
        <token>,</token>
        <token regexp="yes">\d\d\d\d</token>
    '>
    <!ENTITY date_mdy_skip '
        <token regexp="yes">&months;|&abbrevMonths;</token>
        <token regexp="yes">\d\d?</token>
        <token>,</token>
        <token regexp="yes" skip="-1">\d\d\d\d</token>
    '>
    <!-- "31/10/2014" -->
    <!ENTITY date_dmy_numbers '
        <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
        <token>/</token>
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes">\d\d\d\d</token>
    '>
    <!ENTITY date_dmy_numbers_skip '
        <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
        <token>/</token>
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes" skip="-1">\d\d\d\d</token>
    '>
    <!-- "10/31/2014" -->
    <!ENTITY date_mdy_numbers '
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
        <token>/</token>
        <token regexp="yes">\d\d\d\d</token>
    '>
    <!ENTITY date_mdy_numbers_skip '
        <token regexp="yes">0?[1-9]|1[0-2]</token>
        <token>/</token>
        <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
        <token>/</token>
        <token regexp="yes" skip="-1">\d\d\d\d</token>
    '>
]>

<rules lang="en-GB" xsi:noNamespaceSchemaLocation="../../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <category id="AMERICAN_ENGLISH" name="American English phrases" type="locale-violation">
        <rulegroup id="TAKE_A_LOOK" name="take a look → have a look">
            <short>American spelling</short>
            <rule>
                <pattern>
                    <marker>
                        <token inflected="yes" chunk_re=".-VP">
                            take
                        </token>
                        <token>a</token>
                        <token min="0" regexp="yes">closer?|first|second|deeper|brief|quick|careful</token>
                        <token chunk_re="E-NP.*">look</token>
                    </marker>
                    <token regexp="yes">at|if|and|on|because|but|when|once|over|in(to)?|whether|later|before|afterwards?|after|tomorrow|here|please|,|\.|…|\?|\!</token>
                </pattern>
                <message>In American English, "take a look" is more commonly used.</message>
                <suggestion><match no="1" postag="VB.*" postag_regexp="yes">have</match> \2 \3 \4</suggestion>
                <example correction="have a look">I promise that I will <marker>take a look</marker> later.</example>
            </rule>
        </rulegroup>
        <rulegroup id="LUNCH_ROOM" name="lunchroom">
            <rule>
                <pattern>
                    <token>lunchroom</token>
                </pattern>
                <message>This term is chiefly North American English. Consider a replacement.</message>
                <suggestion>canteen</suggestion>
                <suggestion>cafeteria</suggestion>
                <suggestion>break room</suggestion>
                <example correction="canteen|cafeteria|break room">Tom is having a break in the <marker>lunchroom</marker>.</example>
            </rule>
            <rule>
                <pattern>
                    <token>lunchrooms</token>
                </pattern>
                <message>This term is chiefly North American English. Consider a replacement.</message>
                <suggestion>canteens</suggestion>
                <suggestion>cafeterias</suggestion>
                <suggestion>break rooms</suggestion>
                <example correction="canteens|cafeterias|break rooms">Tom is having a break in the <marker>lunchrooms</marker>.</example>
            </rule>
        </rulegroup>
        <rule id="DRIVERS_LICENSE" name="driver's licence/driving licence">
            <pattern>
                <token>driver</token>
                <token>'s</token>
                <token regexp="yes">licences?</token>
            </pattern>
            <message>This term is chiefly North American English. Consider a replacement.</message>
            <suggestion>driving \4</suggestion>
            <url>https://www.lexico.com/definition/driving_licence</url>
            <example correction="driving licence">I've got a full, clean <marker>driver's licence</marker>.</example>
        </rule>
        <rule id="EGGPLANT" name="eggplant/aubergine">
            <pattern>
                <token regexp="yes">eggplants?</token>
            </pattern>
            <message>This term is chiefly North American English. Consider a replacement.</message>
            <suggestion><match no="1" regexp_match="(?i)eggplant" regexp_replace="aubergine" /></suggestion>
            <url>https://www.lexico.com/en/definition/eggplant</url>
            <example correction="aubergines">He loved to eat <marker>eggplants</marker> for breakfast.</example>
        </rule>
        <rule id="ZIP_CODE_POSTCODE" name="zip code/postcode">
            <pattern>
                <token>zip</token>
                <token postag_regexp="yes" postag="NN:UN|NNS" regexp="yes">codes?</token>
            </pattern>
            <message>The term '\1 \2' is common for American English. Did you mean <suggestion><match no="2" postag_regexp="yes" postag="NN(S)|NN:UN" postag_replace="NN$1">postcode</match></suggestion>?</message>
            <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
            <short>AmE/BrE: zip code/postcode</short>
            <example correction="postcode">Please enter your <marker>zip code</marker>.</example>
            <example correction="Postcodes"><marker>Zip codes</marker> are not always necessary.</example>
        </rule>
        <rule id="APARTMENT-FLAT" name="apartment/flat">
            <pattern>
                <token inflected="yes">apartment</token>
            </pattern>
            <message>The word '\1' is common for American English. Did you mean <suggestion><match no="1" postag="(NN.*)" postag_replace="$1">flat</match></suggestion>?</message>
            <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
            <short>AmE/BrE: apartment/flat</short>
            <example correction="flats">These <marker>apartments</marker> are expensive.</example>
            <example correction="flat">I just bought an <marker>apartment</marker>.</example>
        </rule>
        <rulegroup id="BAND-AID_PLASTER" name="band-aid/plaster">
            <rule><!-- 'Band-Aid' is a trademark according to Merriam Webster's dictionary. Thus, it must not have postags NN or NNS. -->
                <pattern>
                    <token>band-aid</token>
                </pattern>
                <message>The word '\1' is common for American English. (Band-Aid is a trademark.) Did you mean <suggestion>plaster</suggestion>?</message>
                <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
                <short>AmE/BrE: band-aid/plaster</short>
                <example correction="plaster">Where's the <marker>band-aid</marker>?</example>
            </rule>
            <rule>
                <pattern>
                    <token>band-aids</token>
                </pattern>
                <message>The word '\1' is common for American English. (Band-Aid is a trademark.) Did you mean <suggestion>plasters</suggestion>?</message>
                <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
                <short>AmE/BrE: band-aid/plaster</short>
                <example correction="plasters">These <marker>band-aids</marker> are dirty.</example>
            </rule>
        </rulegroup>
        <rule id="GROUND_VS_MINCED" name="ground beef/minced beef">
            <pattern>
                <token>ground</token>
                <token>beef</token>
            </pattern>
            <message>The term '\1 \2' is common for American English. Did you mean <suggestion>minced \2</suggestion>?</message>
            <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
            <short>AmE/BrE: ground beef/minced beef</short>
            <example correction="minced beef">Do vegetarians eat <marker>ground beef</marker>?</example>
        </rule>
        <rule id="MOVIE_THEATER_CINEMA" name="movie theater/cinema">
            <pattern>
                <token>movie</token>
                <token inflected="yes">theater</token>
            </pattern>
            <message>The term '\1 \2' is common for American English. Did you mean <suggestion><match no="2" postag="NN|NN(S)" postag_replace="NN$1(:UN)?">cinema</match></suggestion>?</message>
            <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
            <short>AmE/BrE: movie theater/cinema</short>
            <example correction="cinema">Let's go to a <marker>movie theater</marker>.</example>
            <example correction="Cinemas"><marker>Movie theaters</marker> are popular, despite the new online movie streaming services.</example>
            <example>Edward Norton – not appearing in a <marker>cinema</marker> near you.</example>
        </rule>
        <rule id="GOT_GOTTEN" name="gotten/got">
            <pattern>
                <token>gotten</token>
            </pattern>
            <message>"Gotten" is commonly used in American English. For varieties outside of North America, "got" is the preferred variant.</message>
            <suggestion>got</suggestion>
            <url>https://languagetool.org/insights/post/grammar-got-gotten/</url>
            <short>AmE/BrE: gotten/got</short>
            <example correction="got">He has <marker>gotten</marker> some food.</example>
            <example correction="got">He's <marker>gotten</marker> up on the wrong side of bed.</example>
        </rule>
        <rule id="GAS_PETROL" name="gas/petrol" default="off"> <!-- This rule needs more exceptions to be usable -->
            <pattern>
                <token>gas<exception scope="previous">natural</exception></token>
            </pattern>
            <message>With the meaning of "gasoline", in British English is more common to use <suggestion>petrol</suggestion>.</message>
            <short>AmE/BrE: gas/petrol</short>
            <example>Natural gas.</example>
            <example correction="petrol">More <marker>gas</marker>.</example>
        </rule>
        <rule id="LICENCE_LICENSE_NOUN_SINGULAR" name="License/Licence (noun)">
            <antipattern>
                <token postag="TO|MD" postag_regexp="yes" />
                <token postag="RB" min="0" />
                <token>license</token>
            </antipattern>
            <pattern>
                <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">license</token>
            </pattern>
            <message><match no="1"/> must be spelled with a "c" when used as a noun in British English. Use <suggestion>licence</suggestion>.</message>
            <short>AmE/BrE: license/licence (noun singular)</short>
            <example correction="licence">Please show me your <marker>license</marker>.</example>
        </rule>
        <rule id="LICENCE_LICENSE_NOUN_PLURAL" name="Licenses/Licences (noun)">
            <antipattern>
                <token chunk_re=".-NP-.*"/>
                <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">licenses</token>
                <token chunk_re=".-NP-.*"/>
            <example>The verb licenses a bare infinitive.</example>
            </antipattern>
            <pattern>
                <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">licenses</token>
            </pattern>
            <message><match no="1"/> must be spelled with a "c" when used as a noun in British English. Use <suggestion>licences</suggestion>.</message>
            <short>AmE/BrE: license/licence (noun plural)</short>
            <example correction="licences">Please show me your <marker>licenses</marker>.</example>
        </rule>
        <rule id="TRUNK_BOOT" name="trunk/boot (of car)">
            <antipattern>
                <token>car</token>
                <token regexp="yes" skip="-1">boots?</token>
                <token regexp="yes">trunks?</token>
            </antipattern>
            <antipattern>
                <token regexp="yes" skip="-1">trunks?</token>
                <token>car</token>
                <token regexp="yes">boots?</token>
            </antipattern>
            <antipattern>
                <token>car</token>
                <token>'s</token>
                <token skip="-1">boot</token>
                <token regexp="yes">trunks?</token>
            </antipattern>
            <antipattern>
                <token regexp="yes" skip="-1">trunks?</token>
                <token>car</token>
                <token>'s</token>
                <token>boot</token>
            </antipattern>
            <antipattern>
                <token regexp="yes">boots?</token>
                <token>of</token>
                <token postag_regexp="yes" postag="DT|PDT" />
                <token inflected="yes" skip="-1">car</token>
                <token regexp="yes">trunks?</token>
            </antipattern>
            <antipattern>
                <token regexp="yes" skip="-1">trunks?</token>
                <token regexp="yes">boots?</token>
                <token>of</token>
                <token postag_regexp="yes" postag="DT|PDT" />
                <token inflected="yes">car</token>
            </antipattern>
            <pattern>
                <token postag="SENT_START" skip="-1"><exception scope="next" inflected="yes" regexp="yes">elephant|river|swimming|tree</exception></token>
                <marker>
                    <token regexp="yes" skip="-1">trunk|trunks<exception scope="next" inflected="yes" regexp="yes">elephant|river|swimming|tree|road|muzik</exception></token>
                </marker>
                <token postag="SENT_END"><exception scope="current" inflected="yes" regexp="yes">elephant|river|swimming|tree</exception></token>
            </pattern>
            <message>In the context of cars (automobiles), '<match no="2"/>' is American English. For British English use <suggestion><match no="2" postag="(NN.*)" postag_replace="$1">boot</match></suggestion>.</message>
            <url>https://en.wikipedia.org/wiki/Trunk_%28car%29</url>
            <short>AmE/BrE: trunk/boot</short>
            <example correction="boot">The automobile has a small <marker>trunk</marker>.</example>
            <example correction="boots">Automobiles that have large <marker>trunks</marker> are usually expensive.</example>
            <example correction="Boots"><marker>Trunks</marker> on some automobiles are at the front.</example>
            <example correction="boot">This Volkswagen has a large <marker>trunk</marker>.</example>
            <example correction="boots">Volkswagens and Chryslers usually have large <marker>trunks</marker>.</example>
            <example>The elephant's <marker>trunk</marker> is long.</example>
            <example>This tree <marker>trunk</marker> is large.</example>
            <example>The <marker>trunks</marker> of some trees were damaged during the storm.</example>
            <example>The arterial <marker>trunks</marker> of some rivers are ...</example>
            <example><marker>Trunks</marker> (swimming) of various colours are available from ...</example>
            <example>If the electrical <marker>trunking</marker> on the car is ...</example>
            <example>Put the <marker>trunk</marker> into the car boot.</example>
            <example>The car boot contained <marker>trunks</marker> of many colours.</example>
            <example>The car boots contained <marker>trunks</marker> of many sizes.</example>
            <example>Put these items into the boot of the car: <marker>trunk</marker>, table, chair, kitchen sink.</example>
            <example>Put the <marker>trunks</marker> into the boot of the car.</example>
            <example>The lace on this <marker>boot</marker> is frayed.</example>
            <example>The car boot contained a <marker>trunk</marker> and a ...</example>
            <example>The car's boot contained a <marker>trunk</marker> and a ...</example>
            <example>The <marker>trunks</marker> were in our car’s boot.</example>
            <example>In the United Kingdom, trunk roads were first defined for Great Britain in the Trunk Roads Act 1936.</example>
            <example>Trunk Muzik is a mixtape by southern rapper Yelawolf.</example>
            <example type="triggers_error">The boot of this Volkswagen contains a large <marker>trunk</marker>.</example>
            <example type="triggers_error">The boots of Volkswagens are sufficiently large to contain 2 or 3 <marker>trunks</marker>.</example>
            <example type="triggers_error">The <marker>trunk</marker> was in the Ford.</example>
            <example type="triggers_error">Mr Ford has a large blue <marker>trunk</marker>.</example>
            <example type="triggers_error">The <marker>trunk</marker> was on the back seat of the Ford.</example>
            <example type="triggers_error">The abandoned car contained a stolen <marker>trunk</marker>.</example>
            <example type="triggers_error">The Chrysler's boot contained a <marker>trunk</marker> and a ...</example>
            <example type="triggers_error">Some cars' boots can contain <marker>trunks</marker> of enormous size.</example>
        </rule>
        <rule id="AIR_PLANE_AEROPLANE" name="air plane/aeroplane"><!-- 'airplane' is in replace.txt -->
            <pattern>
                <token>air</token>
                <token postag_regexp="yes" postag="NN|NNS" regexp="yes">planes?</token>
            </pattern>
            <message>The term '\1 \2' is common for American English. For British English use <suggestion><match no="2" postag="(NN.*)" postag_replace="$1">aeroplane</match></suggestion>.</message>
            <url>https://www.lexico.com/definition/airplane</url>
            <short>AmE/BrE: air plane/aeroplane</short>
            <example correction="aeroplane">This <marker>air plane</marker> is very quiet.</example>
            <example correction="aeroplanes">These <marker>air planes</marker> can fly for 12 hours when they are fully loaded with fuel.</example>
            <example>This <marker>aeroplane</marker> is very quiet.</example>
        </rule>
        <rule id="SI_UNITS_OF_MEASUREMENT_ADJECTIVES_AME" name="1-liter/1-litre">
            <pattern>
                <token regexp="yes">([0-9]+-)(yotta|zetta|exa|peta|tera|giga|mega|kilo|hecto|deka|deci|centi|milli|micro|nano|pico|femto|atto|zepto|yocto)?(liter|meter)<exception postag="NNP"/></token>
            </pattern>
            <message>The word '<match no="1"/>' is an adjective (SI unit of measurement), but the spelling is not correct British English.</message>
            <short>AmE/BrE: SI units (adjectives)</short>
            <example correction="">Use a <marker>6-millimeter</marker> bolt.</example>
            <example>Use a <marker>6-millimetre</marker> bolt.</example>
            <example>Do not find incorrect English: use a <marker>10-millimeters</marker> bolt.</example>
            <example>The 4.<marker>6-centigram</marker> difference is not a problem.</example><!-- Refer to OXFORD_SPELLING_GRAM -->
            <example correction="">Use a <marker>10-meter</marker> rope.</example>
            <example correction="">Also find typographic errors: a 5.7.<marker>8-femtoliter</marker> difference is not important.</example>
       </rule>
        <rule id="TAKE_A_BATH" name="Collocation: take (have) a bath/nap"><!-- Refer to en-US/HAVE_A_BATH -->
            <pattern>
                <marker>
                    <token inflected="yes">take</token>
                </marker>
                <or>
                    <token>a</token>
                    <token postag="PRP$"/>
                </or>
                <token regexp="yes" chunk_re="E-NP.*">bath|nap|rest|vacation</token>
            </pattern>
            <message>In British English, the usual verb to go with '\3' is <suggestion><match no="1" postag_regexp="yes" postag="(VB.*)" postag_replace="$1">have</match></suggestion>.</message>
            <url>http://dialectblog.com/2012/07/26/take-have-a-bath/</url>
            <short>Collocation error</short>
            <example correction="had">John <marker>took</marker> a nap after lunch.</example>
            <example correction="have">You can't <marker>take</marker> your bath now because I'm cleaning the bathroom.</example><!-- LT suggestion is not correct. -->
            <example correction="have">Mary will <marker>take</marker> her vacation in Paris.</example>
            <example correction="having">I was thinking about <marker>taking</marker> a rest, but I decided to complete the work.</example>
            <example correction="having">While I was <marker>taking</marker> a bath, I thought about how to lay the bedroom carpet.</example>
            <example correction="have">Does she <marker>take</marker> a bath in her vacation home or only a shower?</example>
            <example correction="had">Who <marker>took</marker> a bath in the morning?</example>
            <example>John <marker>had</marker> a nap after lunch.</example>
        </rule>
        <rule id="OK" name="ok (OK)">
            <pattern>
                <token case_sensitive="yes" regexp="yes">[Oo]k</token>
            </pattern>
            <message>Lower-case '\1' is American English. For British English use <suggestion>OK</suggestion>.</message>
            <url>https://www.lexico.com/en/definition/ok</url>
            <short>AmE/BrE: ok/OK</short>
            <example correction="OK"><marker>Ok</marker>, I'll let you know.</example>
            <example correction="OK">Are you <marker>ok</marker>?</example>
        </rule>
        <rule id="ANYMORE" name="anymore (any more)"><!-- Premium #759 -->
            <pattern>
                <token>anymore</token>
            </pattern>
            <message>In British English, the spelling '\1' is sometimes considered incorrect. Did you mean <suggestion>any more</suggestion>?</message>
            <url>https://www.collinsdictionary.com/dictionary/english/anymore</url>
            <short>AmE/BrE: anymore/any more</short>
            <example correction="any more">I don't want to do this <marker>anymore</marker>.</example>
            <example>I don't want to do this <marker>any more</marker>.</example>
        </rule>
    </category>

    <category id="SEMANTICS" name="Semantics" type="inconsistency">
        <rule id="UNION_JACK" name="Union Jack">
            <antipattern case_sensitive="yes">
                <token regexp="yes">Union|UNION</token>
                <token regexp="yes">Jack|JACK</token>
            </antipattern>
            <pattern>
                <token>union</token>
                <token>jack</token>
            </pattern>
            <message>Capitalize this word if you mean the national flag of the UK.</message>
            <suggestion>Union Jack</suggestion>
            <url>https://www.lexico.com/definition/union_jack</url>
            <example correction="Union Jack">The <marker>union jack</marker> is the national flag of the UK.</example>
        </rule>
        <rulegroup id="DATE_FUTURE_VERB_PAST_US" name="Future date, but verb in past tense (UK)">
            <rule><!-- We have visited the client on 27/10/2040 -->
                <pattern>
                    <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token>
                    <token postag="VBN" skip="-1" chunk_re=".-VP">
                        <exception>scheduled</exception>
                        <exception regexp="yes">wed|sat</exception>
                        <exception scope='next' regexp='yes'>before|until|will</exception></token>
                    <marker> &date_dmy_numbers; </marker>
                </pattern>
                <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\7 month:\5 day:\3"/>
                <message>The given date is in the future, but the verb is in past tense.</message>
                <example correction="">We have visited the client on <marker>27/10/2040</marker>.</example>
                <example correction="">I had already informed the customer on <marker>27/10/2040</marker>.</example>
                <example>We have visited the client on <marker>27/10/2010</marker>.</example>
                <example>I had already informed the customer on <marker>27/10/2010</marker>.</example>
                <example>We will inform the client on 27/10/2010.</example>
                <example>He promised to do it before 30/08/2020.</example>
                <example>The data collected from 8/12/2019 to 8/29/2019 contained a lot of errors.</example><!-- XXX US standard style dates -->
            </rule>
            <rule><!-- On 27/10/2040, we have visited the client -->
                <pattern>
                    <token>
                        <exception regexp='yes'>before|until</exception></token>
                    <marker> &date_dmy_numbers_skip; </marker>
                    <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token>
                    <token postag="VBN" skip="-1" chunk_re=".-VP">
                        <exception regexp="yes">wed|sat</exception>
                    </token>
                </pattern>
                <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
                <message>The given date is in the future, but the verb is in past tense.</message>
                <example correction="">On <marker>27/10/2040</marker>, we have visited the client.</example>
                <example correction="">On <marker>27/10/2040</marker>, I had already informed the customer.</example>
                <example>On <marker>27/10/2010</marker>, we have visited the client.</example>
                <example>On <marker>27/10/2010</marker>, I had already informed the customer.</example>
                <example>On 27/10/2010, we will inform the client.</example>
                <example>He promised to do it before 30/08/2020.</example>
            </rule>
            <rule><!-- We visited the client on 27/10/2040  -->
                <pattern>
                    <token postag="VBD" skip="-1" chunk_re=".-VP">
                        <exception scope='next' regexp='yes'>before|until|will</exception>
                        <exception regexp="yes">wed|sat</exception>
                    </token>
                    <marker> &date_dmy_numbers; </marker>
                </pattern>
                <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
                <message>The given date is in the future, but the verb is in past tense.</message>
                <example correction="">We visited the client on <marker>27/10/2040</marker>.</example>
                <example correction="">I already informed the customer on <marker>27/10/2040</marker>.</example>
                <example>We visited the client on <marker>27/10/2010</marker>.</example>
                <example>I already informed the customer on <marker>27/10/2010</marker>.</example>
                <example>We will inform the client on 27/10/2010.</example>
                <example>He promised to do it before 30/08/2020.</example>
            </rule>
            <rule><!-- On 27/10/2040, we visited the client -->
                <pattern>
                    <token>
                        <exception regexp='yes'>before|until</exception></token>
                    <marker> &date_dmy_numbers_skip; </marker>
                    <token postag="VBD" skip="-1" chunk_re=".-VP">
                        <exception regexp="yes">wed|sat</exception>
                    </token>
                </pattern>
                <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
                <message>The given date is in the future, but the verb is in past tense.</message>
                <example correction="">On <marker>27/10/2040</marker>, we visited the client.</example>
                <example correction="">On <marker>27/10/2040</marker>, I already informed the customer.</example>
                <example>On <marker>27/10/2010</marker>, we visited the client.</example>
                <example>On <marker>27/10/2010</marker>, I already informed the customer.</example>
                <example>On 27/10/2010, we will inform the client.</example>
                <example>He promised to do it before 30/08/2020.</example>
            </rule>
        </rulegroup>
    </category>

    <category id="TYPOS" name="Possible Typo" type="misspelling">

        <rule id="AIT" name="ait (it)">
            <antipattern><!-- Context: island, river -->
                <token skip="-1" postag="SENT_START"/>
                <token skip="-1" regexp="yes" postag_regexp="yes" postag="NN.*" inflected="yes">island|river</token>
                <token postag="SENT_END"/>
            </antipattern>
            <pattern>
                <token case_sensitive="yes" regexp="yes">[Aa]it<exception postag="NNP"/></token>
            </pattern>
            <message>The rare word '\1' means a small island in a river.</message>
            <suggestion>air</suggestion>
            <suggestion>it</suggestion>
            <url>https://www.lexico.com/definition/ait</url>
            <short>Possible typo</short>
            <example correction="Air|It"><marker>Ait</marker> is a good idea.</example>
            <example correction="air|it">I need some fresh <marker>ait</marker> to clear my mind.</example>
            <example>An <marker>ait</marker> is a small island.</example>
            <example>The AIT is governed by a Committee.</example>
            <example>Stallergenes Greer's approach to allergen immunotherapy(AIT) is focused on individual patient needs.</example>
            <example>Welcome to all new and returning AiT members. </example>
            <example>Santo insists young full-back Rayan Ait-Nouri has their 'confidence and total support'...</example>
            <example>Restricted access - Isleworth Ait. Birdwatching.</example>
            <example>Isleworth Ait lies offshore from Heron's place.</example>
            <example>Visit One Over the Ait Pub and Restaurant in Brentford.</example>
            <example type="triggers_error">Explore releases from Ait! at Discogs.</example>
        </rule>

    </category>

</rules>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy