<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" title="Pretty print" ?>
<?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css" title="Easy editing stylesheet" ?>
<!--
Ukrainian grammar and typo rules for LanguageTool
Copyright (C) 2007 Andriy Rysin

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
-->
<rules lang="uk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd">

  <category id="PUNCTUATION" name="Пунктуація">

    <rulegroup id="PLEASE_NO_COMMA" name="«будь ласка» виділяється комами">
      <rule>
        <pattern>
          <token>будь</token>
          <token>ласка</token>
          <token negate="yes" regexp="yes">[,\.!?:»”“]|[.!?]{3}</token>
        </pattern>
        <message>Відсутня права кома: <suggestion>\1 \2, \3</suggestion>.</message>
        <example correction="будь ласка, у">Запитайте, <marker>будь ласка у</marker> водія.</example>
      </rule>
      <rule>
        <pattern>
          <token negate="yes" regexp="yes">[\p{Punct}–—\(«“„]|[!?.]{3}
            <exception postag="SENT_START"/>
          </token>
          <token>будь</token>
          <token>ласка</token>
        </pattern>
        <message>Відсутня ліва кома: <suggestion>\1, \2 \3</suggestion>.</message>
        <example>Запитайте, будь ласка, у водія.</example>
        <example correction="Запитайте, будь ласка"><marker>Запитайте будь ласка</marker>, у водія.</example>
      </rule>
    </rulegroup>

    <rulegroup id="INSERTED_WORDS_NO_COMMA" name="вставні слова, напр., «мабуть», «щоправда», виділяються комами">
      <rule>
        <pattern>
          <token regexp="yes">мабуть|по-перше|по-друге|по-третє|щоправда|о?крім того|а втім</token>
          <token>
            <exception regexp="yes">[!?:;,"»“”\(\)\[\]/–—-]|[!?.]{3}</exception>
            <exception postag="SENT_END">.</exception>
          </token>
        </pattern>
        <message>Відсутня права кома: <suggestion>\1, \2</suggestion>.</message>
        <example>Це, мабуть, його водій.</example>
        <example>По-третє.</example>
        <example correction="мабуть, його">Це, <marker>мабуть його</marker> водій.</example>
      </rule>
      <rule>
        <pattern case_sensitive="yes">
          <token negate="yes" regexp="yes">[!?:;,\(\)\[\]/"«“„АаІіЙй–—-]|[!?.]{3}
            <exception postag="SENT_START"/>
          </token>
          <token regexp="yes">мабуть|щоправда|о?крім того|втім</token>
        </pattern>
        <message>Відсутня ліва кома: <suggestion>\1, \2</suggestion>.</message>
        <example>Мабуть, це водій.</example>
        <example>Це, мабуть, водій.</example>
        <example>Але це... мабуть, водій.</example>
        <example correction="Це, мабуть"><marker>Це мабуть</marker>, водій.</example>
        <!-- крапка замість коми, TODO: fix correction -->
        <example correction="., щоправда">призначає нового    прем’єра<marker>. щоправда</marker>, у Держдуми</example>
      </rule>
      <rule>
        <pattern case_sensitive="yes">
          <token negate="yes" regexp="yes">[!?:;,\(\)\[\]/"«“„АаІі–—-]|[!?.]{3}|[Цц]е
            <exception postag="SENT_START"/>
            <exception>Ну</exception>
          </token>
          <token regexp="yes">по-перше|по-друге|по-третє</token>
          <token negate="yes">ж</token>
        </pattern>
        <message>Відсутня ліва кома: <suggestion>\1, \2</suggestion>.</message>
        <example>Це по-перше.</example>
        <example>Ну по-перше, треба зробити оце.</example>
        <example correction="нашпигувати, по-друге">По-перше, треба його <marker>нашпигувати по-друге,</marker> запекти.</example>
      </rule>
    </rulegroup>

    <rulegroup name="Відсутня кома перед «але», «однак», ..." id="COMMA_BEFORE_BUT">
      <rule>
        <antipattern>
          <token>одне</token>
          <token>але</token>
        </antipattern>
        <pattern case_sensitive="yes">
          <marker>
            <token regexp="yes" negate="yes">[!?:;,…"«“„\(\)\[\]/–—-]|[!?.]{3}|[?!]\.\.|[нН]у|[АаІіЙй]|але
              <exception postag="SENT_START"></exception>
            </token>
            <token regexp="yes">а|але|однак|проте|зате</token>
          </marker>
          <token regexp="yes" negate="yes">[\p{Punct}"«“„\(\)–—]|ля</token>
        </pattern>
        <message>Відсутня кома перед сполучником: <suggestion>\1, \2</suggestion></message>
        <example>Вгадав всі літери — але не зміг прочитати слово.</example>
        <example>почалося щось а ля комедія</example>
        <example>Якби не одне але</example>
        <example>Всесвіт припинить своє існування, а це неможливо!</example>
        <example>Всесвіт припинить своє існування! а це неможливо!</example>
        <example>Всесвіт припинить своє існування!!! а це неможливо!</example>
        <example>Всесвіт припинить своє існування!.. а це неможливо!</example>
        <example>Боже мій! а що буде з матір'ю</example>
        <example correction="літери, але">Вгадав всі <marker>літери але</marker> не зміг прочитати слово.</example>
      </rule>
    </rulegroup>

    <rulegroup name="Відсутня кома після вставного слова" id="COMMA_AFTER_INSERT">
      <rule>
        <pattern>
          <marker>
            <token case_sensitive="yes" regexp="yes">Наприклад|Приміром</token>
          </marker>
          <token negate="yes" regexp="yes">[:,….!?"«“„\(\)\[\]/–—-]</token>
        </pattern>
        <message>Відсутня кома після наприклад: <suggestion>\1,</suggestion></message>
        <example correction="Наприклад,"><marker>Наприклад</marker> редакторством чи викладанням.</example>
        <example>Наприклад «Ржевський проти Наполеона».</example>
        <example>Наприклад?</example>
      </rule>
    </rulegroup>

    <rulegroup name="Відсутня кома після «отже», ..." id="COMMA_AFTER_OTZHE">
      <rule>
        <pattern case_sensitive="yes">
          <marker>
            <token>Отже</token>
          </marker>
          <token negate="yes" regexp="yes">[:,….!?"«“„\(\)\[\]/–—-]|ж</token>
        </pattern>
        <message>Відсутня кома після «отже»: <suggestion>\1,</suggestion></message>
        <example correction="Отже,"><marker>Отже</marker> виникає природна реакція.</example>
        <example>Отже – усе законно.</example>
        <example>Отже ж, прикрість яка!</example>
      </rule>
    </rulegroup>


<!--
    <rulegroup id="VOCATIVE_NO_COMMA" name="Кличний без коми">
      <rule>
        <pattern>
          <token postag_regexp="yes" postag="noun:inanim.*v_kly.*">
            <exception negate_pos="yes" postag_regexp="yes" postag="noun:inanim.*v_kly.*"/>
            <exception case_sensitive="yes" regexp="yes">[А-ЯІЇЄҐ].*</exception>
          </token>
          <token postag_regexp="yes" postag="adj.*v_kly.*" min="0"/>
          <token negate="yes" regexp="yes">[,\.!?:»”“«„—-]|[.!?]{3}
            <exception postag_regexp="yes" postag="adj.*v_kly.*"/>
          </token>
        </pattern>
        <message>Кличний відмінок виділяється комою: <suggestion><match no="1"/> <match no="2"/>, <match no="3"/></suggestion>.</message>
        <example correction="душе , швидко">Однак <marker>душе швидко</marker> на трасі її з'їла норвежка.</example>
        <example>прийди, відрадо, прийди!</example>
        <example>Не лізь, бо задушу, іродова душе!</example>
        <example>прийди, душе моя, прийди!</example>
        <example>Вельмишановна українська газето «Україно молода»!</example>
        <example>Сергій Свитко здіймав</example>
         
        <example>Панове укропи, хунто та інші фашисти</example>
        <example>ти будеш жити, Україно,    країно щастя і добра!</example>
        <example>Важка ти, шапко Мономаха</example>
        
      </rule>
    </rulegroup>
-->
    <rulegroup name="Зайва кома" id="NO_COMMA_NEEDED">
      <rule>
        <pattern>
          <token postag_regexp="yes" postag="verb.*"/>
          <token>,</token>
          <token>як</token>
          <token>рак</token>
        </pattern>
        <message>Зайва кома: <suggestion>\1 \3 \4</suggestion></message>
        <url>http://pravopys.net/sections/118/</url>
        <example correction="почервонів як рак"><marker>почервонів, як рак</marker>.</example>
      </rule>
      <rule>
        <pattern>
          <token postag_regexp="yes" postag="verb.*"/>
          <token>,</token>
          <token>як</token>
          <token>з</token>
          <token>відра</token>
        </pattern>
        <message>У сталих фразеологічних зворотах перед порівняльним сполучником кома не ставиться</message>
        <suggestion>\1 \3 \4 \5</suggestion>
        <url>http://pravopys.net/sections/118/</url>
        <example correction="лив як з відра">Дощ <marker>лив, як з відра</marker>.</example>
      </rule>
      <!--
          <rule>
          <pattern>
          <token regexp="yes">більше?|менше?|довше?|кортоше?</token>
          <token>,</token>
          <token regexp="yes">ніж|як</token>
          </pattern>
          <message>Не ставиться кома перед як, ніж у виразах (не) більш як, (не) раніше ніж, (не) довше ніж…</message>
          <suggestion>\1 \3</suggestion>
          <url>http://pravopys.net/sections/118/</url>
          <example correction="більш як">Сидів <marker>більш, як</marker> півгодини.</example>
          <example correction="довше ніж">Роботи вистачало не <marker>довше, ніж</marker> на два дні.</example>
          </rule>
          <rule>
          <antipattern>
          <token>як</token>
          <token postag_regexp="yes" postag="noun.*:v_zna.*"/>
          <token inflected="yes">бути</token>
          </antipattern>
          <pattern>
          <token postag_regexp="yes" postag="noun.*"/>
          <token>,</token>
          <token>як</token>
          <token postag_regexp="yes" postag="noun.*:v_zna.*">
          <exception postag_regexp="yes" postag=".*(pron|prop).*"/>
          <exception postag_regexp="yes" postag="noun.*:v_zna.*" negate_pos="yes"/>
          <exception>слід</exception>
          </token>
          </pattern>
          <message>Звороти, що вводяться в речення за допомогою сполучника як і мають значення «у ролі кого, чого», комою не виділяються</message>
          <suggestion>\1 \3 \4</suggestion>
          <url>http://pravopys.net/sections/118/</url>
          <example correction="відповідь як згоду">Сприймаємо вашу <marker>відповідь, як згоду</marker>.</example>
          <example>витіснення зі сфери публічного застосування, як це робить документ</example>
          <example>опису того, як Власенко та інші адвокати зневажали суддю</example>
          <example>про те, як слід поводитися</example>
          <example>вдався до таких крайніх дій, як зрив засідань</example>
          <example>ще не висохло чорнило на паперах, як угоду було залито кров’ю</example>
          </rule>
          <rule>
          <pattern>
          <token postag_regexp="yes" postag="verb.*"/>
          <token>,</token>
          <token regexp="yes">як|мов|ніби</token>
          <token postag_regexp="yes" postag="noun.*">
          <exception postag_regexp="yes" postag="noun.*" negate_pos="yes"/>
          <exception postag_regexp="yes" postag=".*(pron|prop).*"/>
          </token>
          </pattern>
          <message>Іменна частина складеного присудка, приєднана з допомогою сполучників як, мов, ніби тощо, комою не відокремлюється</message>
          <suggestion>\1 \3 \4</suggestion>
          <url>http://pravopys.net/sections/118/</url>
          <example correction="зробилися як лід">Руки <marker>зробилися, як лід</marker>.</example>
          <example>пам'ятав, як ніс рушницю</example>
          <example>так робив, як вона каже</example>
          </rule>
      -->
    </rulegroup>

    <rulegroup id="missing_space" name="Пропуски">
      <rule>
        <pattern>
          <token regexp="yes">.*[а-яіїєґ]</token>
          <marker>
            <token>,</token>
            <token spacebefore="no" regexp="yes">[^  —–-]</token>
          </marker>
        </pattern>
        <message>Відсутній пробіл після коми</message>
        <suggestion>\2 \3</suggestion>
        <example correction=", і">я цього досягла<marker>,і</marker> все</example>
        <example>я цього досягла, і все</example>
      </rule>
    </rulegroup>

    <!--
        На жаль правило впирається в семантичний рівень, можна хіба що спробувати ловити перед числом або числівником
        <rulegroup name="Зайва кома в оборотах «більш ніж…»" id="NO_COMMA_BEFORE_NIZH">
        <rule>
        <pattern>
        <marker>
        <token regexp="yes">(більше?|менше?|раніше?|пізніше?|довше?|коротше?)</token>
        <token>,</token>
        <token regexp="yes">ніж|як</token>
        </marker>
        <token postag_regexp="yes" postag="numr.*|number"/>
        </pattern>
        <message>Не ставиться кома перед як, ніж у виразах (не) більш як, (не) раніше ніж, (не) довше ніж тощо</message>
        <suggestion>\1 \3</suggestion>
        <url>http://pravopys.kiev.ua/pravopys.aspx?SectionID=2128</url>
        <example correction="більше ніж">Додано <marker>більше, ніж</marker> 10 тис слів.</example>
        <example>Ви більше, ніж актор.</example>
        </rule>
        </rulegroup>
    -->

  </category>

</rules>
