summaryrefslogtreecommitdiffstats
path: root/JLanguageTool/src/rules/ru
diff options
context:
space:
mode:
Diffstat (limited to 'JLanguageTool/src/rules/ru')
-rw-r--r--JLanguageTool/src/rules/ru/grammar.xml1576
-rw-r--r--JLanguageTool/src/rules/ru/replace.txt115
2 files changed, 1691 insertions, 0 deletions
diff --git a/JLanguageTool/src/rules/ru/grammar.xml b/JLanguageTool/src/rules/ru/grammar.xml
new file mode 100644
index 0000000..74199ca
--- /dev/null
+++ b/JLanguageTool/src/rules/ru/grammar.xml
@@ -0,0 +1,1576 @@
+<?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" ?>
+<!--
+LanguageTool.
+Copyright (C) 2005 Daniel Naber (http://www.danielnaber.de)
+A Russian rule file for LanguageTool
+Copyright (C) 2008-2010 Yakov Reztsov
+$Id$
+-->
+<rules lang="ru" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="../rules.xsd">
+ <category name="Пунктуация">
+ <rule default="on" id="ABREV_DOT" name="Точка после сокращений">
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token regexp="yes">тыс|зам|коп|руб|наб|нач|пер|шт|ед|экз|км|дм|см|мм|просп|пр|пос|кв|Тел|исп|Исп</token>
+ <token negate="yes" regexp="yes">.|/</token>
+ </pattern>
+ <message>Точка должна стоять после сокращений. Должно быть: <suggestion>\1.</suggestion></message>
+ <short>Точка после сокращений.</short>
+ <example type="correct">Стоимость работ составила 10 тыс. рублей.</example>
+ <example type="incorrect">Стоимость работ составила 10 <marker>тыс</marker> рублей.</example>
+ </rule>
+ <rule default="off" id="ABREV_DOT2" name="Точка после сокращений (млн, млрд)">
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token regexp="yes">млн|млрд</token>
+ <token negate="yes" regexp="yes">.|/</token>
+ </pattern>
+ <message>Точка должна стоять после сокращений. Должно быть: <suggestion>\1.</suggestion></message>
+ <short>Точка после сокращений.</short>
+ <example type="correct">Стоимость работ составила 10 млн. рублей.</example>
+ <example type="incorrect">Стоимость работ составила 10 <marker>млн</marker> рублей.</example>
+ </rule>
+ <rulegroup id="POZHALUJSTA" name="«пожалуйста» выделяется запятыми">
+ <rule>
+ <pattern case_sensitive="yes" mark_to="0">
+ <token negate="yes" regexp="yes">[\p{Punct}]|всегда<exception postag="SENT_START"></exception></token>
+ <token>пожалуйста</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\1, \2</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Закройте дверь, <marker>пожалуйста.</marker></example>
+ <example type="incorrect">Закройте <marker>дверь пожалуйста</marker>.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_to="0">
+ <token postag="SENT_START"></token>
+ <token>Пожалуйста</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct"><marker>Пожалуйста, закройте</marker> дверь.</example>
+ <example type="incorrect"><marker>Пожалуйста закройте</marker> дверь.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="KAK_PRAVILO" name="Вводное сочетание как обычно, как всегда, ...">
+ <!--Вводное сочетание как обычно, как всегда, как правило, как исключение, как сейчас, как нарочно
+-->
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>как</token>
+ <token regexp="yes">обычно|всегда|правило|исключение|нарочно|сейчас</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\1, \2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct"><marker>Мы, как правило, ходим</marker> ходим в походы летом.</example>
+ <example type="incorrect" correction="Мы, как правило, ходим"><marker>Мы как правило ходим</marker> в походы летом.</example>
+ </rule>
+
+
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>как</token>
+ <token regexp="yes">обычно|всегда|правило|исключение|нарочно|сейчас</token>
+ <token>,</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\1, \2 \3\4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct"><marker>Мы, как правило,</marker> ходим в походы летом.</example>
+ <example type="incorrect" correction="Мы, как правило,"><marker>Мы как правило,</marker> ходим в походы летом.</example>
+ </rule>
+
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token>как</token>
+ <token regexp="yes">обычно|всегда|правило|исключение|нарочно|сейчас</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\2 \3,</suggestion></message>
+ <short>Нет запятой.</short>
+ <example type="correct">Мы, <marker>как правило,</marker> ходим в походы летом.</example>
+ <example type="incorrect">Мы, <marker>как правило</marker> ходим в походы летом.</example>
+ </rule>
+
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token>Как</token>
+ <token regexp="yes">обычно|всегда|правило|исключение|нарочно|сейчас</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Нет запятой: <suggestion>\2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct"><marker>Как правило,</marker> мы ходим в походы летом.</example>
+ <example type="incorrect" correction="Как правило, мы"><marker>Как правило мы</marker> ходим в походы летом.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup id="KAK_I" name="После союза как следует и">
+ <!--TODO: Detect 2 comma.-->
+ <rule>
+ <pattern case_sensitive="no">
+ <token negate="yes" regexp="yes">[\p{Punct}]|так|же|равно|также|время|-|—<exception postag="SENT_START"></exception></token>
+ <token>как</token>
+ <token>и</token>
+ </pattern>
+ <message>Оборот "как и" выделяется запятыми: <suggestion>\1, \2 \3</suggestion>.</message>
+ <short>Оборот "как и" выделяется запятыми.</short>
+ <example type="correct">Мы<marker>, как и наши товарищи,</marker> любим заниматься спортом.</example>
+ <example type="incorrect"><marker>Мы как и</marker> наши товарищи любим заниматься спортом.</example>
+ </rule>
+
+ </rulegroup>
+ <rulegroup default="on" id="A_NO_DA" name="Союзы 'а, но'">
+ <rule>
+ <pattern case_sensitive="yes" mark_to="-1">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|’|ну|Ну|«<exception postag="SENT_START"></exception></token>
+ <token>а</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]|\)</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">И растёт ребёнок там не по дням, а по часам.</example>
+ <example type="incorrect">И растёт ребёнок там не по <marker>дням а</marker> по часам.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|«<exception postag="SENT_START"></exception></token>
+ <token>но</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Она говорила мало, но толково.</example>
+ <example type="incorrect">Она говорила <marker>мало но</marker> толково.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="VVODNOE_SLOVO" name="Вводные слова: по-видимому, ...">
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|как|который|которого|которому|
+ котором|которая|которой|которую|которые|которых|
+ которыми|которое|которым<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">по-видимому|по-моему|по-твоему|впрочем</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Это показалось ему, по-видимому, странным.</example>
+ <example type="incorrect" correction="ему, по-видимому, странным">Это показалось <marker>ему по-видимому странным</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|как|который|которого|которому|
+ котором|которая|которой|которую|которые|которых|
+ которыми|которое|которым<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">по-видимому|по-моему|по-твоему|впрочем</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2\3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Это показалось <marker>ему, по-видимому,</marker> странным.</example>
+ <example type="incorrect" correction="ему, по-видимому,">Это показалось <marker>ему по-видимому,</marker> странным.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">по-видимому|по-моему|по-твоему|впрочем</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Это показалось ему, <marker>по-видимому,</marker> странным.</example>
+ <example type="incorrect">Это показалось ему, <marker>по-видимому</marker> странным.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token regexp="yes">По-видимому|По-моему|По-твоему|Впрочем</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">По-видимому, это странное явление.</example>
+ <example type="incorrect" correction="По-видимому, это"><marker>По-видимому это</marker> странное явление.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: итак, следовательно, во-первых, наконец, между прочим, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">итак|следовательно|во-первых|во-вторых|в-третьих|в-четвертых|в-пятых</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, во-первых, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, во-первых, представляет">Эта <marker>работа во-первых представляет</marker> огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: итак, следовательно, во-первых, наконец, между прочим, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">итак|следовательно|во-первых|во-вторых|в-третьих|в-четвертых|в-пятых</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2\3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта <marker>работа, во-первых,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, во-первых,">Эта <marker>работа во-первых,</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">итак|следовательно|во-первых|во-вторых|в-третьих|в-четвертых|в-пятых</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, <marker>во-первых,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect">Эта работа, <marker>во-первых</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token regexp="yes">Итак|Следовательно|Во-первых|Во-вторых|В-третьих|В-четвертых|В-пятых</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Во-первых, эта работа представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="Во-первых, эта"><marker>Во-первых эта</marker> работа представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: видишь (ли), понимаешь (ли), ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">видишь|понимаешь</token>
+ <token>ли</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, видишь ли, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, видишь ли, представляет">Эта <marker>работа видишь ли представляет</marker> огромную научную ценность.</example>
+ </rule>
+
+ <rule>
+ <!-- Вводные слова: видишь (ли), понимаешь (ли), ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">видишь|понимаешь</token>
+ <token>ли</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3\4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта <marker>работа, видишь ли,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, видишь ли,">Эта <marker>работа видишь ли,</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">видишь|понимаешь</token>
+ <token>ли</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, <marker>видишь ли,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect">Эта работа, <marker>видишь ли</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token regexp="yes">Видишь|Понимаешь</token>
+ <token>ли</token>
+ <token negate="yes" regexp="yes">,|.</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Видишь ли, эта работа представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="Видишь ли, эта"><marker>Видишь ли эта</marker> работа представляет огромную научную ценность.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="off" id="KAK_VVODNOE" name="Слова, которые могут выступать в роли вводных: к счастью, ...">
+ <rule>
+ <!--Вводные слова: к счастью, к несчастью, к радости, к ужасу, к сожалению, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>к</token>
+ <token regexp="yes">счастью|несчастью|радости|ужасу|сожалению</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Мы, к сожалению, не успели на поезд.</example>
+ <example type="incorrect" correction="Мы, к сожалению,"><marker>Мы к сожалению не</marker> успели на поезд.</example>
+ </rule>
+
+ <rule>
+ <!--Вводные слова: к счастью, к несчастью, к радости, к ужасу, к сожалению, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>к</token>
+ <token regexp="yes">счастью|несчастью|радости|ужасу|сожалению</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3\4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Мы, к сожалению, не успели на поезд.</example>
+ <example type="incorrect" correction="Мы, к сожалению,"><marker>Мы к сожалению,</marker> не успели на поезд.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token>к</token>
+ <token regexp="yes">счастью|несчастью|радости|ужасу|сожалению</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Мы, <marker>к сожалению,</marker> не успели на поезд.</example>
+ <example type="incorrect">Мы, <marker>к сожалению</marker> не успели на поезд.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token>К</token>
+ <token regexp="yes">счастью|несчастью|радости|ужасу|сожалению</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">К сожалению, мы не успели на поезд.</example>
+ <example type="incorrect" correction="К сожалению, мы"><marker>К сожалению мы</marker> не успели на поезд.</example>
+ </rule>
+
+ <rule>
+ <!-- Вводные слова: конечно, несомненно, вероятно, может быть, кажется, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|наиболее|наименее|более|менее<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">конечно|несомненно|вероятно|кажется</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, несомненно, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, несомненно,">Эта <marker>работа несомненно представляет</marker> огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: конечно, несомненно, вероятно, может быть, кажется, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—|наиболее|наименее|более|менее<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">конечно|несомненно|вероятно|кажется</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2\3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, несомненно, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, несомненно,">Эта <marker>работа несомненно,</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">конечно|несомненно|вероятно|кажется</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, <marker>конечно,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect">Эта работа, <marker>конечно</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token regexp="yes">Конечно|Несомненно|Вероятно|Кажется</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2, \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Несомненно, эта работа представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="Несомненно, эта"><marker>Несомненно эта</marker> работа представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: одним словом, вообще, иначе говоря, так сказать, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>одним</token>
+ <token>словом</token>
+ <token negate="yes">,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, одним словом, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, одним словом,">Эта <marker>работа одним словом представляет</marker> огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <!-- Вводные слова: одним словом, вообще, иначе говоря, так сказать, ...-->
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>одним</token>
+ <token>словом</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3\4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, одним словом, представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="работа, одним словом,">Эта <marker>работа одним словом,</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes" mark_from="1" mark_to="-1">
+ <token>,<exception postag="SENT_START"></exception></token>
+ <token>одним</token>
+ <token>словом</token>
+ <token negate = "yes" regexp="yes">[\p{Punct}]|-|—</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3,</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Эта работа, <marker>одним словом,</marker> представляет огромную научную ценность.</example>
+ <example type="incorrect">Эта работа, <marker>одним словом</marker> представляет огромную научную ценность.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token postag="SENT_START"></token>
+ <token>Одним</token>
+ <token>словом</token>
+ <token negate="yes" regexp="yes">[\p{Punct}]</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\2 \3, \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Одним словом, эта работа представляет огромную научную ценность.</example>
+ <example type="incorrect" correction="Одним словом, эта"><marker>Одним словом эта</marker> работа представляет огромную научную ценность.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="off" id="PREDLOGI_KROME" name="Дополнения, вводимые предлогами: кроме, ...">
+ <!--Дополнения, вводимые предлогами: кроме, помимо, вместо, сверх, за исключением
+ -->
+ <!--TODO: Detect 2 comma.-->
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token regexp="yes">кроме|помимо|вместо</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">Около костра, кроме Ивана, грелось ещё пять человек.</example>
+ <example type="incorrect">Около <marker>костра кроме</marker> Ивана грелось ещё пять человек.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>за</token>
+ <token>исключением</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">В поход, за исключением Ивана, пошло ещё пять человек.</example>
+ <example type="incorrect" correction="поход, за исключением">В <marker>поход за исключением</marker> Ивана пошло ещё пять человек.</example>
+ </rule>
+ </rulegroup>
+ <rule default="on" id="V_tom_chisle" name="В том числе">
+ <pattern case_sensitive="yes">
+ <token negate="yes" regexp="yes">и|[\p{Punct}]|-|—<exception postag="SENT_START"></exception></token>
+ <token>в</token>
+ <token>том</token>
+ <token>числе</token>
+ </pattern>
+ <message>Запятая пропущена здесь:<suggestion>\1, \2 \3 \4</suggestion>.</message>
+ <short>Нет запятой.</short>
+ <example type="correct">В тайге ещё сохранились редкие хищники, в том числе дальневосточный леопард.</example>
+ <example type="incorrect">В тайге ещё сохранились редкие <marker>хищники в том числе</marker> дальневосточный леопард.</example>
+ </rule>
+
+ <rule default="on" id="DEFIS_COMMA" name="Дефис и запятая">
+ <pattern>
+ <token regexp="yes">-|—|–</token>
+ <token>,</token>
+ </pattern>
+ <message>Запятая должна стоять перед тире. Должно быть: <suggestion>\2 \1</suggestion></message>
+ <short>Запятая - перед тире.</short>
+ <example type="correct">Здорово живешь, соседка, - поздоровался Иван.</example>
+ <example type="incorrect">Здорово живешь, соседка<marker> -,</marker> поздоровался Иван.</example>
+ </rule>
+
+ <rulegroup default="on" id="Hyphen_and_spaces" name="Пробелы перед/после дефиса.">
+ <rule>
+ <pattern case_sensitive="yes">
+ <token regexp="yes">.*[а-я]</token>
+ <token spacebefore="yes" regexp="yes">-[а-я].*</token>
+ </pattern>
+ <message>Перед дефисом не должно быть пробела: <suggestion>\1\2</suggestion></message>
+ <short>Лишний пробел.</short>
+ <example type="correct">Кое-кто пошёл в магазин.</example>
+ <example type="incorrect"><marker>Кое -кто</marker> пошёл в магазин.</example>
+ </rule>
+
+ <rule>
+ <pattern case_sensitive="yes">
+ <token regexp="yes">.*[а-я]-</token>
+ <token spacebefore="yes" regexp="yes">[а-я][а-я].*</token>
+ </pattern>
+ <message>После дефиса не должно быть пробела: <suggestion>\1\2</suggestion></message>
+ <short>Лишний пробел.</short>
+ <example type="correct">Кое-кто пошёл в магазин.</example>
+ <example type="incorrect"><marker>Кое- кто</marker> пошёл в магазин.</example>
+ </rule>
+ </rulegroup>
+
+
+ <rulegroup default="on" id="NO_KAK_POPALO" name="Что угодно, как попало">
+ <!--Что угодно, как попало не выделяются запятыми.
+ -->
+ <rule>
+ <pattern>
+ <token>,</token>
+ <token regexp="yes">что|как</token>
+ <token regexp="yes">попало|угодно</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion> \2 \3</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">Работа была сделана как попало.</example>
+ <example type="incorrect">Работа была сделана<marker>, как попало</marker>.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="NO_NE_KAK" name="Почти как, не как, ...">
+ <!--Перед сравнительным оборотом стоит не или слова совсем, совершенно, почти, именно запятая не ставится.
+ -->
+ <rule>
+ <pattern>
+ <token regexp="yes">не|совсем|совершенно|почти|именно</token>
+ <token>,</token>
+ <token>как</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \3</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">Работа была сделана совсем как попало.</example>
+ <example type="incorrect">Работа была сделана <marker>совсем, как</marker> попало.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="NO_NE_TO_CHTO" name="Не то что, не так чтобы, не иначе как">
+ <!-- Внутри сочетаний не то что, не то (так) чтобы, не иначе как запятая не ставится.
+ -->
+ <rule>
+ <pattern>
+ <token>не</token>
+ <token regexp="yes">то|иначе</token>
+ <token>,</token>
+ <token regexp="yes">что|как|чтобы</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \2 \4</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">Работа была сделана не иначе как полностью.</example>
+ <example type="incorrect">Работа была сделана <marker>не иначе, как</marker> полностью.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>не</token>
+ <token>так</token>
+ <token>,</token>
+ <token>чтобы</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \2 \4</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">Работа была сделана не так чтобы полностью.</example>
+ <example type="incorrect">Работа была сделана <marker>не так, чтобы</marker> полностью.</example>
+ </rule>
+
+ </rulegroup>
+ <rulegroup default="on" id="I_TO_I_SE" name="Цельные выражения: ни рыба ни мясо, ...">
+ <!-- Запятая не ставится в цельных выражениях:
+ и то и се,
+ ни то ни се,
+ ни свет ни заря,
+ и так и сяк,
+ и туда и сюда,
+ ни рыба ни мясо,
+ ни жив ни мертв.
+ -->
+ <rule>
+ <pattern>
+ <token regexp="yes">и|ни</token>
+ <token>то</token>
+ <token>,</token>
+ <token regexp="yes">и|ни</token>
+ <token regexp="yes">се|сё</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \2 \4 \5</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">И то и сё.</example>
+ <example type="incorrect"><marker>И то, и сё</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern>
+ <token>ни</token>
+ <token regexp="yes">свет|рыба|жив</token>
+ <token>,</token>
+ <token>ни</token>
+ <token regexp="yes">заря|мясо|мертв|мёртв</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \2 \4 \5</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">Он проснулся ни свет ни заря</example>
+ <example type="incorrect">Он проснулся <marker>ни свет, ни заря</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>и</token>
+ <token regexp="yes">так|туда</token>
+ <token>,</token>
+ <token>и</token>
+ <token regexp="yes">сяк|сюда</token>
+ </pattern>
+ <message>Запятая не нужна:<suggestion>\1 \2 \4 \5</suggestion>.</message>
+ <short>Запятая не нужна.</short>
+ <example type="correct">И так и сяк.</example>
+ <example type="incorrect"><marker>И так, и сяк</marker>.</example>
+ </rule>
+
+ </rulegroup>
+ </category>
+ <category name="Типографика">
+ <rule default="off" id="KAVITCHKI" name="„ → ”">
+ <pattern>
+ <token>“</token>
+ </pattern>
+ <message>Кавычки не соответствуют нормам типографики. Должно быть: <suggestion>„</suggestion>пример<suggestion>”</suggestion>.</message>
+ <short>Неправильные кавычки.</short>
+ <example type="correct">Газета „Правда”.</example>
+ <example correction="„|”" type="incorrect">Газета <marker>“</marker>Правда”.</example>
+ </rule>
+ <rule default="off" id="Three_dot" name="... → …">
+ <pattern>
+ <token>.</token>
+ <token>.</token>
+ <token>.</token>
+ </pattern>
+ <message>Заменить на типографский символ троеочия?<suggestion>…</suggestion></message>
+ <short>Заменить на троеточие?</short>
+ <example type="correct">Продолжение следует…</example>
+ <example type="incorrect">Продолжение следует<marker>...</marker></example>
+ </rule>
+
+ <rule default="on" id="PUNKT_KAVITCHKI" name="Кавычки и знаки препинания">
+ <pattern>
+ <token spacebefore="no" regexp="yes">;|:|-|—</token>
+ <token regexp="yes">»|\)</token>
+ </pattern>
+ <message>Знаки препинания должны стоять после закрывающихся кавычек или скобок. Должно быть: <suggestion>\2\1</suggestion></message>
+ <short>Знаки препинания - после кавычек/скобок.</short>
+ <example type="correct">Газета «Правда»: "У нас опубликована сенсационная статья"!</example>
+ <example type="correct">У нас опубликована сенсационная ;) статья.</example>
+ <example type="incorrect">Газета «Правда<marker>:»</marker> "У нас опубликована сенсационная статья"!</example>
+ </rule>
+
+ <rulegroup default="on" id="Digit_defis_letter" name="Окончания порядковых числительных">
+ <rule>
+ <pattern>
+ <token regexp="yes">[\p{Digit}](й|го|му|м|о|я|е|ми|х)</token>
+ </pattern>
+ <message>Пропущен дефис. Должно быть: <suggestion><match no="1" regexp_match="([\p{Digit}])(й|го|му|м|о|я|е|ми|х)" regexp_replace="$1-$2"/></suggestion></message>
+ <short>Пропущен дефис.</short>
+ <example type="correct">План должен быть выполнен к 6-му сентября.</example>
+ <example type="incorrect">План должен быть выполнен к <marker>6му</marker> сентября.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token regexp="yes">[\p{Digit}]</token>
+ <token regexp="yes">й|го|му|о|я|е|ми|х</token>
+ </pattern>
+ <message>Пропущен дефис. Должно быть: <suggestion>\1-\2</suggestion></message>
+ <short>Пропущен дефис.</short>
+ <example type="correct">План должен быть выполнен к 6-му сентября.</example>
+ <example type="incorrect">План должен быть выполнен к <marker>6 му</marker> сентября.</example>
+ </rule>
+ </rulegroup>
+
+
+ </category>
+ <category name="Грамматика">
+
+ <rulegroup default="on" id="SoglasovanieP" name="Согласование падежей">
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:.*:Nom NN:.*:.*:Nom -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:Nom"></exception></token>
+ <token postag="ADJ:.*:Nom" postag_regexp="yes"><exception negate_pos="yes" postag="ADJ:.*:Nom" postag_regexp="yes"></exception><exception scope="previous" postag_regexp="yes" postag="NN:.*" ></exception></token>
+ <token postag="NN:(.*):(.*):.*" skip ="-1" postag_regexp="yes"><exception postag="NN:.*:.*:Nom" postag_regexp="yes"></exception><exception scope="next" postag="NN:.*:.*:Nom" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2"></match> <match no="3" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:Nom" ></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Добротная усадьба.</example>
+ <example type="incorrect"><marker>Добротная усадьбе</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+
+ <!-- ADJ:.*:R NN:.*:.*:R -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:R"></exception></token>
+ <token postag="ADJ:(.*):.*" postag_regexp="yes"><exception postag="ADJ:.*:R" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:(.*):.*" postag_regexp="yes"/><exception scope="previous" postag="NN:.*" postag_regexp="yes"></exception></token>
+ <token postag="NN:.*:.*:R" skip ="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:R" postag_regexp="yes"></exception><exception negate_pos="yes" scope= "next" postag="NN:.*:.*:R" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:R"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Нет крепкого сна.</example>
+ <example type="incorrect">Нет <marker>крепкому сна</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:.*:D NN:.*:.*:D -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:D"></exception></token>
+ <token postag="ADJ:(.*):.*" postag_regexp="yes"><exception postag="ADJ:.*:D" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:(.*):.*" postag_regexp="yes"/><exception scope="previous" postag="NN:.*" postag_regexp="yes"></exception></token>
+ <token postag="NN:.*:.*:D" skip = "-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:D" postag_regexp="yes"></exception><exception negate_pos="yes" scope ="next" postag="NN:.*:.*:D" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:D"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Вода стекала по мягкому жёлобу.</example>
+ <example type="incorrect">Вода стекала по <marker>мягкого жёлобу</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:.*:V NN:.*:.*:V -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:V"></exception></token>
+ <token postag="ADJ:(.*):.*" postag_regexp="yes"><exception postag="ADJ:.*:V" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:(.*):.*" postag_regexp="yes"/><exception scope="previous" postag_regexp="yes" postag="NN:.*" ></exception></token>
+ <token postag="NN:.*:.*:V" skip="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:V" postag_regexp="yes"></exception><exception negate_pos="yes" scope= "next" postag="NN:.*:.*:V" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:V"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Мы увидели бурную реку.</example>
+ <example type="incorrect">Мы увидели <marker>бурной реку</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:.*:T NN:.*:.*:T -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:T"></exception></token>
+ <token postag="ADJ:(.*):.*" postag_regexp="yes"><exception postag="ADJ:.*:T" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:(.*):.*" postag_regexp="yes"/><exception scope="previous" postag="NN:.*" postag_regexp="yes"></exception></token>
+ <token postag="NN:.*:.*:T" skip = "-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:T" postag_regexp="yes"></exception><exception negate_pos="yes" scope="next" postag="NN:.*:.*:T" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:T"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Они справились с бурной рекой</example>
+ <example type="incorrect">Они справились с <marker>бурную рекой</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:.*:P NN:.*:.*:P -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:.*:P"></exception></token>
+ <token postag="ADJ:(.*):.*" postag_regexp="yes"><exception postag="ADJ:.*:P" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:(.*):.*" postag_regexp="yes"/><exception scope="previous" postag="NN:.*" postag_regexp="yes"></exception></token>
+ <token postag="NN:.*:.*:P" skip="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:P" postag_regexp="yes"></exception><exception negate_pos="yes" scope="next" postag="NN:.*:.*:P" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по падежу.
+ <suggestion><match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:P"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании падежей.</short>
+ <example type="correct">Они думали о родном доме.</example>
+ <example type="incorrect">Они думали о <marker>родного доме</marker>.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="SoglasovanieG" name="Согласование слов по роду/числу">
+ <rule>
+
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:Masc NN:Masc -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:Masc:Sin:.*"></exception></token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:Masc:.*" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:.*:.*" postag_regexp="yes"/><exception scope="previous" postag="NumC:.*|Num:.*" postag_regexp="yes"></exception><exception scope="previous" regexp="yes">[\p{Digit}]*</exception></token>
+ <token postag="NN:Masc:Sin:.*" skip="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:Masc:Sin:.*" postag_regexp="yes"></exception><exception postag="NN:Masc:Sin:.*" scope= "next" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по роду.
+ <suggestion><match no="2" postag="ADJ:.*:(.*)" postag_regexp="yes" postag_replace="ADJ:Masc:$1"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании по роду.</short>
+ <example type="correct">Был построен добротный дом.</example>
+ <example type="incorrect">Был построен <marker>добротная дом</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:Fem NN:Fem -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:Fem:Sin:.*"></exception></token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:Fem:.*" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:.*:.*" postag_regexp="yes"/><exception scope="previous" postag="NumC:.*|Num:.*" postag_regexp="yes"></exception><exception scope="previous" regexp="yes">[\p{Digit}]*</exception></token>
+ <token postag="NN:Fem:Sin:.*" skip="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:Fem:Sin:.*" postag_regexp="yes"></exception><exception postag="NN:Fem:Sin:.*" scope="next" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по роду.
+ <suggestion><match no="2" postag="ADJ:.*:(.*)" postag_regexp="yes" postag_replace="ADJ:Fem:$1"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании по роду.</short>
+ <example type="correct">Пушистая кошка грелась на солнышке.</example>
+ <example type="incorrect">Эта <marker>пушистое кошка</marker> грелась.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:Neut NN:Neut -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:Neut:Sin:.*"></exception></token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:Neut:.*" postag_regexp="yes"></exception><exception negate_pos="yes" postag="ADJ:.*:.*" postag_regexp="yes"/><exception scope="previous" postag="NumC:.*|Num:.*" postag_regexp="yes"></exception><exception scope="previous" regexp="yes">[\p{Digit}]*</exception></token>
+ <token postag="NN:Neut:Sin:.*" skip="-1" postag_regexp="yes"><exception negate_pos="yes" postag="NN:Neut:Sin:.*" postag_regexp="yes"></exception><exception postag="NN:Neut:Sin:.*" scope="next" postag_regexp="yes"></exception></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по роду.
+ <suggestion><match no="2" postag="ADJ:.*:(.*)" postag_regexp="yes" postag_replace="ADJ:Neut:$1"></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании по роду.</short>
+ <example type="correct">Вдали виднелось синее небо.</example>
+ <example type="incorrect">Вдали виднелось <marker>синий небо</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:PL NN:.*:PL -->
+
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:PL:.*"></exception></token>
+ <token postag="ADJ:PL:.*" postag_regexp="yes"><exception negate_pos="yes" postag="ADJ:PL:.*" postag_regexp="yes"></exception> <exception scope="previous" postag="NumC:.*|Num:.*" postag_regexp="yes"></exception><exception scope="previous" regexp="yes">[\p{Digit}]*</exception> </token>
+ <token postag="NN:.*:.*:.*" skip="-1" postag_regexp="yes"><exception postag="NN:.*:PL:.*" postag_regexp="yes"></exception><exception postag="NN:.*:PL:.*" scope="next" postag_regexp="yes"></exception><exception negate_pos="yes" postag="NN:.*:.*:.*" postag_regexp="yes"/></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по числу.</message>
+ <short>Грамматическая ошибка в согласовании по числу.</short>
+ <example type="correct">Вдали виднелись красивые сосны.</example>
+ <example type="incorrect">Вдали виднелись <marker>красивые ёлка</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1" mark_to="-1">
+ <!-- ADJ:!PL NN:.*:Sin -->
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag_regexp="yes" postag="NN:.*:Sin:.*"></exception></token>
+ <token postag="ADJ:.*:(.*)" postag_regexp="yes"><exception negate_pos="yes" postag="ADJ:.*:(.*)" postag_regexp="yes"></exception><exception postag="ADJ:PL:.*" postag_regexp="yes"></exception><exception regexp="yes" scope="previous">и|или|но|да</exception></token>
+ <token postag="NN:.*:.*:.*" skip="-1" postag_regexp="yes"><exception postag="NN:.*:Sin:.*" postag_regexp="yes"></exception><exception postag="NN:.*:Sin:.*" scope="next" postag_regexp="yes"></exception><exception negate_pos="yes" postag="NN:.*:.*:.*" postag_regexp="yes"/></token>
+ <token regexp="yes">.|;</token>
+ </pattern>
+
+ <message>Прилагательное не согласуется с существительным по числу.
+ <suggestion><match no="2" postag="ADJ:.*:(.*)" postag_regexp="yes" postag_replace="ADJ:PL:$1" ></match> <match no="3"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка в согласовании по числу.</short>
+ <example type="correct">Мебель сделана из красивой сосны.</example>
+ <example type="incorrect">Столы сделаны из <marker>красивой сосен</marker>.</example>
+ </rule>
+
+
+
+ </rulegroup>
+
+ <rulegroup default="on" id="O_P_padeg" name="Предлоги и предложный падеж">
+ <rule>
+ <pattern mark_from="1">
+ <token postag="SENT_START" skip ="-1"><exception regexp="yes" scope="next" >о|обо|об|в|во|при|по|на|и|или|но|да</exception></token>
+ <token postag="NN:.*:.*:P" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:P" postag_regexp="yes"></exception><exception regexp="yes" scope="previous">«|[\p{Punct}]|[\p{Digit}]*</exception></token>
+ </pattern>
+ <message>Предложный падеж предполагает наличие предлога (о – обо – об; в – во; при; по; на): <suggestion>о \2</suggestion>, <suggestion>об \2</suggestion>, <suggestion>обо \2</suggestion>, <suggestion>в \2</suggestion>, <suggestion>во \2</suggestion>, <suggestion>при \2</suggestion>, <suggestion>по \2</suggestion>, <suggestion>на \2</suggestion>.</message>
+ <short>Пропущен предлог.</short>
+ <example type="correct">Они думали о доме.</example>
+ <example type="incorrect">Они думали <marker>доме</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1">
+ <token postag="SENT_START"></token>
+ <token postag="NN:.*:.*:P" postag_regexp="yes"><exception negate_pos="yes" postag="NN:.*:.*:P" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предложный падеж предполагает наличие предлога (о – обо – об; в – во; при; по; на): <suggestion>О <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>Об <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>Обо <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>В <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>Во <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>При <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>По <match no="2" case_conversion ="startlower"/></suggestion>, <suggestion>На <match no="2" case_conversion ="startlower"/></suggestion>.</message>
+ <short>Пропущен предлог.</short>
+ <example type="correct">О доме они думали.</example>
+ <example type="incorrect"><marker>Доме</marker> они думали.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="Com_Num" name="Собирательные числительные">
+ <rule>
+ <pattern>
+ <token regexp= "yes">пятеро|шестеро|семеро</token>
+ <token postag="NN:Fem:.*" postag_regexp="yes"></token>
+ </pattern>
+ <!-- согласовать падежи для коррекции ошибок - выполнено
+ -->
+ <message>Собирательные числительные (двое, трое, четверо, пятеро, шестеро, семеро) НЕЛЬЗЯ употреблять с существительными женского рода
+ <suggestion><match no="1" regexp_match="(пят|шест|сем)еро" regexp_replace="$1ь" ></match> <match no="2"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">Здесь было семь подруг.</example>
+ <example type="incorrect">Здесь было <marker>семеро подруг</marker>.</example>
+ <example type="incorrect">Здесь было <marker>пятеро подруг</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>двое</token>
+ <token postag="NN:Fem:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Собирательные числительные (двое, трое, четверо, пятеро, шестеро, семеро) НЕЛЬЗЯ употреблять с существительными женского рода
+ <suggestion>две <match no="2" postag="NN:Fem:PL:Nom"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">Здесь были две подруги.</example>
+ <example type="incorrect">Здесь были <marker>двое подруг</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>трое</token>
+ <token postag="NN:Fem:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Собирательные числительные (двое, трое, четверо, пятеро, шестеро, семеро) НЕЛЬЗЯ употреблять с существительными женского рода
+ <suggestion>три <match no="2" postag="NN:Fem:PL:Nom"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">Здесь были три подруги.</example>
+ <example type="incorrect">Здесь были <marker>трое подруг</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>четверо</token>
+ <token postag="NN:Fem:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Собирательные числительные (двое, трое, четверо, пятеро, шестеро, семеро) НЕЛЬЗЯ употреблять с существительными женского рода
+ <suggestion>четыре <match no="2" postag="NN:Fem:PL:Nom"></match></suggestion>
+ </message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">Здесь были четыре подруги.</example>
+ <example type="incorrect">Здесь были <marker>четверо подруг</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="Oba_obe" name="Числительные оба/обе">
+ <rule>
+ <pattern>
+ <token regexp= "yes">оба|обоих|обоим|обоими</token>
+ <token postag="NN:Fem:.*" postag_regexp="yes"><exception negate_pos="yes" postag="NN:Fem:.*" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Числительное оба (обоих, обоим, обоими) употребляется только с существительными мужского рода: <suggestion>обе \2</suggestion>,<suggestion>обеих \2</suggestion>,<suggestion>обеим \2</suggestion>,<suggestion>обеими \2</suggestion>.</message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">По обеим сторонам.</example>
+ <example type="incorrect">По <marker>обоим сторонам</marker>.</example>
+ </rule>
+
+ <rule>
+ <pattern>
+ <token regexp= "yes">обе|обеих|обеим|обеими</token>
+ <token postag="NN:Masc:.*" postag_regexp="yes"><exception negate_pos="yes" postag="NN:Masc:.*" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Числительное обe (обеих, обеим, обеими) употребляется только с существительными женского рода: <suggestion>оба \2</suggestion>,<suggestion>обоих \2</suggestion>,<suggestion>обоим \2</suggestion>,<suggestion>обоими \2</suggestion>.</message>
+ <short>Грамматическая ошибка.</short>
+ <example type="correct">На обоих столах.</example>
+ <example type="incorrect">На <marker>обеих столах</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="Pnn_compose_error" name="Ошибки в образовании местоимений">
+
+ <rule>
+ <pattern>
+ <token regexp= "yes">ихний|ихняя|ихнее|ихнего|ихнему|ихним|ихнем|ихней|ихнюю</token>
+ </pattern>
+ <message>Правильная форма - <suggestion>их</suggestion>.</message>
+ <short>Правильная форма - "их".</short>
+ <example type="correct">Там находится их дом.</example>
+ <example type="incorrect">Там находится <marker>ихний</marker> дом.</example>
+ </rule>
+
+ </rulegroup>
+
+
+ <rulegroup default="on" id="Ne_pril_prich" name="Не с прилагательными/причастиями">
+ <rule>
+ <pattern mark_from="1">
+ <token regexp= "yes">очень|весьма|крайне|совершенно|вполне|почти|отчасти|совсем|чрезвычайно</token>
+ <token>не</token>
+ <token postag="ADJ:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Пишется слитно: <suggestion>\2\3</suggestion>.</message>
+ <short>Слитно с не</short>
+ <example type="correct">Этот поступок был крайне неосторожным.</example>
+ <example type="incorrect">Этот поступок был крайне <marker>не осторожным</marker>.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1">
+ <token regexp= "yes">очень|крайне|совершенно|совсем|чрезвычайно</token>
+ <token>не</token>
+ <token postag="PT:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Пишется слитно: <suggestion>\2\3</suggestion>.</message>
+ <short>Слитно с не</short>
+ <example type="correct">Это совсем непродуманное решение.</example>
+ <example type="incorrect">Это совсем <marker>не продуманное</marker> решение.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="Kak_budto" name="Сложный союз (частица) “как будто”">
+ <rule>
+ <pattern case_sensitive="no">
+ <token>какбудто</token>
+ </pattern>
+ <message>Сложный союз (частица) "как будто" пишется раздельно: <suggestion>как будто</suggestion>.</message>
+ <short>"Как будто" пишется раздельно.</short>
+ <example type="correct"><marker>Как будто</marker> время остановилось.</example>
+ <example type="incorrect"><marker>Какбудто</marker> время остановилось.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="Pravopisanie_slitno1" name="Правописание слов “наверху”, “внизу” ...">
+ <!-- To Do
+ввиду (но: иметь в виду)
+вглубь
+вдоль
+взамен
+вместо
+вне
+заместо
+навстречу
+накануне
+наподобие
+напротив
+насчёт
+ниже
+посередине
+сверх
+свыше
+согласно
+-->
+ <rule>
+ <!-- внизу, снизу, наверху, вверху, сверху
+ -->
+ <pattern case_sensitive="no">
+ <token regexp = "yes">на|в|с</token>
+ <token regexp = "yes">верху|низу</token>
+ </pattern>
+ <message>Слово пишется слитно: <suggestion>\1\2</suggestion>.</message>
+ <short>Пишется слитно.</short>
+ <example type="correct">Он будет <marker>наверху</marker>.</example>
+ <example type="incorrect">Он будет <marker>на верху</marker>.</example>
+ </rule>
+
+
+ <rule>
+ <!-- поверх, подо, помимо
+ -->
+ <pattern case_sensitive="no">
+ <token>по</token>
+ <token regexp = "yes">верх|до|мимо</token>
+ </pattern>
+ <message>Слово пишется слитно: <suggestion>\1\2</suggestion>.</message>
+ <short>Пишется слитно.</short>
+ <example type="correct"><marker>Помимо</marker> чисто игровых проблем на ситуацию в таблице могут влиять и различные нюансы.</example>
+ <example type="incorrect"><marker>По мимо</marker> чисто игровых проблем на ситуацию в таблице могут влиять и различные нюансы.</example>
+ </rule>
+ <rule>
+ <!-- невзирая на, несмотря на
+ -->
+ <pattern case_sensitive="no">
+ <token>не</token>
+ <token regexp = "yes">взирая|смотря</token>
+ <token>на</token>
+ </pattern>
+ <message>Слово пишется слитно: <suggestion>\1\2 \3</suggestion>.</message>
+ <short>Пишется слитно.</short>
+ <example type="correct">Премия в этом году состоялась <marker>невзирая на</marker> кризис.</example>
+ <example type="incorrect">Премия в этом году состоялась <marker>не смотря на</marker> кризис.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="Vo_chto_by_to_ni_stalo" name="“Во что бы то ни стало”">
+ <rule>
+ <pattern case_sensitive="no">
+ <token>во</token>
+ <token>чтобы</token>
+ <token>то</token>
+ <token regexp="yes">ни|не</token>
+ <token>стало</token>
+ </pattern>
+ <message>Пишется раздельно: <suggestion>во что бы то ни стало</suggestion>.</message>
+ <short>Пишется раздельно: “во что бы то ни стало”.</short>
+ <example type="correct">Мы должны попасть домой <marker>во что бы то ни стало</marker>.</example>
+ <example type="incorrect">Мы должны попасть домой <marker>во чтобы то ни стало</marker>.</example>
+ </rule>
+ <rule>
+ <pattern case_sensitive="no">
+ <token>во</token>
+ <token>что</token>
+ <token>бы</token>
+ <token>то</token>
+ <token>не</token>
+ <token>стало</token>
+ </pattern>
+ <message>Пишется раздельно: <suggestion>во что бы то ни стало</suggestion>.</message>
+ <short>Пишется раздельно: “во что бы то ни стало”.</short>
+ <example type="correct">Мы должны попасть домой <marker>во что бы то ни стало</marker>.</example>
+ <example type="incorrect">Мы должны попасть домой <marker>во что бы то не стало</marker>.</example>
+ </rule>
+
+ </rulegroup>
+
+ <rulegroup default="on" id="Tak_je_kak_i" name="Сложный союз “так же как и”">
+ <rule>
+ <pattern case_sensitive="no">
+ <token>также</token>
+ <token>как</token>
+ <token>и</token>
+ </pattern>
+ <message>Сложный союз: <suggestion>так же \2 \3</suggestion>.</message>
+ <short>Сложный союз "так же как и".</short>
+ <example type="correct">Мы, <marker>так же как и</marker> наши товарищи, любим заниматься спортом.</example>
+ <example type="incorrect">Мы, <marker>также как и</marker> наши товарищи, любим заниматься спортом.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="V_K_S" name="Беглая гласная в предлогах: в, к, с, без, из ...">
+ <rule>
+ <pattern>
+ <token>во</token>
+ <token regexp="yes">[аёоуыэюяьън].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Буква "о" не нужна. Должно быть: <suggestion>в \2</suggestion>.</message>
+ <short>Буква "о" не нужна.</short>
+ <example type="correct">Мы видели её в окне.</example>
+ <example type="incorrect">Мы видели её <marker>во окне</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>ко</token>
+ <token regexp="yes">[аеёиоуыэюяьън].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Буква "о" не нужна. Должно быть: <suggestion>к \2</suggestion>.</message>
+ <short>Буква "о" не нужна.</short>
+ <example type="correct">Мы успели к обеду.</example>
+ <example type="incorrect">Мы успели <marker>ко обеду</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>cо</token>
+ <token regexp="yes">[аеёиоуыэюяьънбгдкптфхцч].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Буква "о" не нужна. Должно быть: <suggestion>c \2</suggestion>.</message>
+ <short>Буква "о" не нужна.</short>
+ <example type="correct">Иван взял сумку с едой.</example>
+ <example type="incorrect">Иван взял сумку <marker>cо едой</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>безо</token>
+ <token regexp="yes">[аеёиоуыэюяьън].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Буква "о" не нужна. Должно быть: <suggestion>без \2</suggestion>.</message>
+ <short>Буква "о" не нужна.</short>
+ <example type="correct">Он убегал без оглядки.</example>
+ <example type="incorrect">Он убегал <marker>безо оглядки</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>изо</token>
+ <token regexp="yes">[аеёиоуыэюяьън].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Буква "о" не нужна. Должно быть: <suggestion>из \2</suggestion>.</message>
+ <short>Буква "о" не нужна.</short>
+ <example type="correct">Из окна выпал пакет.</example>
+ <example type="incorrect"><marker>Изо окна</marker> выпал пакет.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="off" id="S_SO" name="Беглая гласная в предлогах: c, co.">
+ <rule>
+ <pattern>
+ <token>с</token>
+ <token regexp="yes">[сзшжлрмщ][йцкнгшщзхфвпрлджчсмтб].*|ль[йцкнгшщзхфвпрлджчсмтб].*</token>
+ </pattern>
+ <message>Неправильная форма предлога. Должно быть: <suggestion>со \2</suggestion>.</message>
+ <short>Неправильная форма предлога.</short>
+ <example type="correct">Кошка спрыгнула со шкафа.</example>
+ <example type="incorrect">Кошка спрыгнула <marker>с шкафа</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="O_OB_OBO" name="Правописание предлогов о, об, обо">
+ <rule>
+ <pattern>
+ <token regexp="yes">обо|о</token>
+ <token regexp="yes">[аиоуэ].*<exception>и</exception></token>
+ </pattern>
+ <message>Неправильная форма предлога. Должно быть: <suggestion>об \2</suggestion>.</message>
+ <short>Неправильная форма предлога.</short>
+ <example type="correct">Об интернете.</example>
+ <example type="incorrect"><marker>О интернете</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token regexp="yes">об|о</token>
+ <token regexp="yes">мне|всё|что</token>
+ </pattern>
+ <message>Неправильная форма предлога. Должно быть: <suggestion>обо \2</suggestion>.</message>
+ <short>Неправильная форма предлога.</short>
+ <example type="correct">Они говорили обо мне.</example>
+ <example type="incorrect">Они говорили <marker>об мне</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token>об</token>
+ <token regexp="yes">всём|всей|всех|всем</token>
+ </pattern>
+ <message>Неправильная форма предлога. Должно быть: <suggestion>обо \2</suggestion> или <suggestion>о \2</suggestion>.</message>
+ <short>Неправильная форма предлога.</short>
+ <example type="correct">Обо всём.</example>
+ <example type="incorrect"><marker>Об всём</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <rule default="on" id="Verb_and_PREP" name="Глагол и предлог">
+ <pattern>
+ <!-- PREP VB:.* -->
+ <token postag="PREP" postag_regexp="yes"><exception negate_pos="yes" postag="PREP" postag_regexp="yes"></exception><exception>спустя</exception></token>
+ <token postag="VB:.*" postag_regexp="yes"><exception negate_pos="yes" postag="VB:.*" postag_regexp="yes"></exception></token>
+
+ </pattern>
+ <message>Предлог перед глаголом не употребляется. Должно быть: <suggestion>\2</suggestion> или <suggestion>\2 \1</suggestion>.</message>
+ <short>Предлог перед глаголом не употребляется.</short>
+ <example type="correct">Он пошёл в лес.</example>
+ <example type="incorrect">Он <marker>в пошёл</marker> лес.</example>
+ </rule>
+
+ <rule default="on" id="PREP_and_PNN" name="Предлог и местоимения">
+
+ <pattern mark_to="-1" >
+ <!-- PREP (его, ему, ей... ) -> PREP (него, нему, ней... ) -->
+ <token postag="PREP" postag_regexp="yes"><exception negate_pos="yes" postag="PREP" postag_regexp="yes"></exception><exception regexp="yes">по|в|благодаря|наперекор|вопреки|согласно|навстречу</exception></token>
+ <and>
+ <token postag="PNN:.*:P3" postag_regexp="yes"><exception postag="PNN:.*:Nom:P3" postag_regexp="yes"></exception></token>
+ <token regexp="yes" negate="yes" >[н].*</token>
+ </and>
+ <token postag="SENT_END"></token>
+ </pattern>
+ <message>У местоимений 3 лица в косвенных падежах пишется начальная н, если эти местоимения употребляются после предлогов: <suggestion>\1 н\2</suggestion>.</message>
+ <short>Пропущена начальная буква “н”</short>
+ <example type="correct">Он пошёл к нему.</example>
+ <example type="correct">Дело удалось благодаря его усилиям.</example>
+ <example type="incorrect">Он подошёл <marker>к ему</marker>.</example>
+ </rule>
+ <rule default="on" id="PREP_K_and_Noun" name="Предлог “к” и существительное">
+ <pattern>
+ <!-- PREP к, ко -> NN:.*:D -->
+ <token regexp="yes">к|ко</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:D" postag_regexp="yes"></exception><exception postag="NN:.*:.*:.*" negate_pos = "yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог “к” предполагает употребление существительного в дательном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:D"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется дательный падеж.</short>
+ <example type="correct">Он подошёл к дому.</example>
+ <example type="incorrect">Он подошёл <marker>к дом</marker>.</example>
+ </rule>
+ <rule default="on" id="PREP_K_and_ADJ" name="Предлог “к” и прилагательное">
+ <pattern>
+ <!-- PREP к, ко -> ADJ:.*:D -->
+ <token regexp="yes">к|ко</token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:.*:D" postag_regexp="yes"></exception><exception postag="ADJ:.*:.*" negate_pos="yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог “к” предполагает употребление прилагательного в дательном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:D"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется дательный падеж.</short>
+ <example type="correct">Он подошёл к зелёному дому.</example>
+ <example type="incorrect">Он подошёл <marker>к зелёный</marker> дому.</example>
+ </rule>
+
+ <rule default="on" id="PREP_Nad_and_Noun" name="Предлоги “над”, “перед” и существительное">
+ <pattern>
+ <!-- PREP над, перед -> NN:.*:T -->
+ <token regexp="yes">над|перед</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:T" postag_regexp="yes"></exception><exception postag="NN:.*:.*:.*" negate_pos = "yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлоги “над” и “перед” предполагают употребление существительного в творительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:T"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется творительный падеж.</short>
+ <example type="correct">Перед закатом.</example>
+ <example type="incorrect"><marker>Перед закат</marker>.</example>
+ </rule>
+ <rule default="on" id="PREP_Nad_and_ADJ" name="Предлоги “над”, “перед” и прилагательное">
+ <pattern>
+ <!-- PREP над, перед -> ADJ:.*:T -->
+ <token regexp="yes">над|перед</token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:.*:T" postag_regexp="yes"></exception><exception postag="ADJ:.*:.*" negate_pos="yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлоги “над” и “перед” предполагают употребление прилагательного в творительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:T"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется творительный падеж.</short>
+ <example type="correct">Перед багровым закатом.</example>
+ <example type="incorrect"><marker>Перед багровый</marker> закатом.</example>
+ </rule>
+
+
+ <rule default="on" id="PREP_cherez_and_Noun" name="Предлоги “сквозь”, “через” и существительное">
+ <pattern>
+ <!-- PREP сквозь, через -> NN:.*:V -->
+ <token regexp="yes">сквозь|через</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:V" postag_regexp="yes"></exception><exception postag="NN:.*:.*:.*" negate_pos = "yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлоги “сквозь” и “через” предполагают употребление существительного в винительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:V"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется винительный падеж.</short>
+ <example type="correct">Луч света попал сквозь окно в комнату.</example>
+ <example type="incorrect">Луч света попал <marker>сквозь окном</marker> в комнату.</example>
+ </rule>
+ <rule default="on" id="PREP_cherez_and_ADJ" name="Предлоги “сквозь”, “через” и прилагательное">
+ <pattern>
+ <!-- PREP сквозь, через -> ADJ:.*:V -->
+ <token regexp="yes">сквозь|через</token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:.*:V" postag_regexp="yes"></exception><exception postag="ADJ:.*:.*" negate_pos="yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлоги “сквозь” и “через” предполагают употребление прилагательного в винительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:V"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется винительный падеж.</short>
+ <example type="correct">Луч света попал сквозь стеклянное окно в комнату.</example>
+ <example type="incorrect">Луч света попал <marker>сквозь стеклянному</marker> окно в комнату.</example>
+ </rule>
+
+ <rule default="on" id="PREP_Pri_and_Noun" name="Предлог “при” и существительное">
+ <pattern>
+ <!-- PREP при -> NN:.*:P -->
+ <token>при</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:P" postag_regexp="yes"></exception><exception postag="NN:.*:.*:.*" negate_pos = "yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог “при” предполагает употребление существительного в предложном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:P"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется предложный падеж.</short>
+ <example type="correct">Лаборатория была создана при центре.</example>
+ <example type="incorrect">Лаборатория была создана <marker>при центр</marker>.</example>
+ </rule>
+ <rule default="on" id="PREP_Pri_and_ADJ" name="Предлог “при” и прилагательное">
+ <pattern>
+ <!-- PREP при -> ADJ:.*:P -->
+ <token>при</token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:.*:P" postag_regexp="yes"></exception><exception postag="ADJ:.*:.*" negate_pos="yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог “при” предполагает употребление прилагательного в предложном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:P"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется предложный падеж.</short>
+ <example type="correct">Лаборатория была создана при исследовательском центре.</example>
+ <example type="incorrect">Лаборатория была создана <marker>при исследовательский</marker> центре.</example>
+ </rule>
+
+ <rule default="on" id="PREP_U_and_Noun" name="Предлоги “у”, “без”,... и существительное">
+ <pattern>
+ <!-- PREP у, без, вместо, для, до, из (изо), из-за, из-под, кроме, около, от, против, среди-> NN:.*:R -->
+ <token regexp="yes">у|без|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"><exception postag="NN:.*:.*:R" postag_regexp="yes"></exception><exception postag="NN:.*:.*:.*" negate_pos = "yes" postag_regexp="yes"></exception><exception regexp="yes" >нее|варяг|грек</exception></token>
+ </pattern>
+ <message>Предлог \1 предполагает употребление существительного в родительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:R"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется родительный падеж.</short>
+ <example type="correct">Заросший пруд у опушки леса.</example>
+ <example type="incorrect">Заросший пруд <marker>у опушка</marker> леса.</example>
+ </rule>
+ <rule default="on" id="PREP_U_and_ADJ" name="Предлоги “у”, “без”,... и прилагательное">
+ <pattern>
+ <!-- PREP у, без вместо для, до, из (изо), из-за, из-под, кроме, около, от, против, среди- -> ADJ:.*:R -->
+ <token regexp="yes">у|без|вместо|для|до|из|изо|из-за|из-под|кроме|около|от|против|среди</token>
+ <token postag="ADJ:.*:.*" postag_regexp="yes"><exception postag="ADJ:.*:R" postag_regexp="yes"></exception><exception postag="ADJ:.*:.*" negate_pos="yes" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог \1 предполагает употребление прилагательного в родительном падеже:
+ <suggestion><match no="1"></match> <match no="2" postag="ADJ:(.*):.*" postag_regexp="yes" postag_replace="ADJ:$1:R"></match></suggestion> или <suggestion><match no="2"/></suggestion></message>
+ <short>Требуется родительный падеж.</short>
+ <example type="correct">Заросший пруд у лесной опушки.</example>
+ <example type="incorrect">Заросший пруд <marker>у лесную</marker> опушки.</example>
+ </rule>
+
+
+ </category>
+ <category name="Стиль">
+
+ <rulegroup default="on" id="talk" name="Разговорные слова">
+ <rule>
+ <pattern>
+ <token postag=".*:Talk" postag_regexp="yes"><exception negate_pos="yes" postag=".*:Talk" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Разговорная форма слова.</message>
+ <short>Разговорная форма слова.</short>
+ <example type="correct">Иван Иванович</example>
+ <example type="incorrect">Иван <marker>Иваныч</marker>.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="off" id="Unknown_words" name="Неизвестные слова (проверка орфографии)">
+ <rule>
+ <pattern mark_to="-1">
+ <token postag="UNKNOWN" regexp="yes">[а-я].*</token>
+ <token></token>
+ </pattern>
+ <message>Слова нет в словаре LanguageTool.</message>
+ <short>Нет в словаре.</short>
+ <example type="correct">Проверка текста.</example>
+ <example type="incorrect">Это только <marker>теест</marker> проверка.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="Prep_Soglasno" name="Предлог “согласно”">
+ <rule>
+ <pattern>
+ <token>согласно</token>
+ <token postag="NN:.*:.*:R" postag_regexp="yes"><exception postag="NN:.*:.*:D" postag_regexp="yes"></exception></token>
+ </pattern>
+ <message>Предлог “согласно” должен употребляться с дательным падежом (согласно чему), а не с родительным (согласно чего):
+ <suggestion><match no="1"/> <match no="2" postag="NN:(.*):(.*):R" postag_regexp="yes" postag_replace="NN:$1:$2:D" ></match></suggestion>
+ </message>
+ <short>Требуется дательный падеж.</short>
+ <example type="correct">Отправление поезда согласно расписанию.</example>
+ <example type="incorrect">Отправление поезда <marker>согласно расписания</marker>.</example>
+ </rule>
+ </rulegroup>
+ <rulegroup default="on" id="Use_prep_O" name="Предлог “о”">
+ <rule>
+ <pattern>
+ <token inflected = "yes" regexp="yes">понимать|изучать|выяснять|описывать|объяснить|излагать|подчеркнуть|утверждать|обсудить|подозревать</token>
+ <token regexp="yes">о|об</token>
+ </pattern>
+ <message>Глагол \1 с предлогом “о” не употребляется.</message>
+ <short>С предлогом “о” не употребляется.</short>
+ <example type="correct">Выяснять про событие.</example>
+ <example type="incorrect"><marker>Выяснять о</marker> событии.</example>
+ <example type="incorrect">Он <marker>выясняет о</marker> событии.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token inflected = "yes" regexp="yes">обсуждать|доказывать|отмечать|показать</token>
+ <token regexp="yes">о|об</token>
+ </pattern>
+ <message>Глагол \1 не употребляется с предлогами.</message>
+ <short>Предлог не нужен.</short>
+ <example type="correct">Отмечать событие.</example>
+ <example type="incorrect"><marker>Доказывать об</marker> этом событии.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token inflected = "yes" regexp="yes">сомневаться|упрекнуть</token>
+ <token regexp="yes">о|об</token>
+ </pattern>
+ <message>Глагол \1 с предлогом “о” не употребляется. Возможная замена: <suggestion>\1 в</suggestion></message>
+ <short>С предлогом “о” не употребляется.</short>
+ <example type="correct">Сомневаться в доказательстве.</example>
+ <example type="incorrect"><marker>Сомневаться об</marker> этом выводе.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token inflected = "yes" regexp="yes">указывать|указать</token>
+ <token regexp="yes">о|об</token>
+ <token postag="NN:.*:.*:.*" postag_regexp="yes"></token>
+ </pattern>
+ <message>Глагол \1 с предлогом “о” не употребляется. Возможная замена:
+ <suggestion><match no="1"/> на <match no="3" postag="NN:(.*):(.*):.*" postag_regexp="yes" postag_replace="NN:$1:$2:V" ></match></suggestion></message>
+ <short>С предлогом “о” не употребляется.</short>
+ <example type="correct">Указать на ошибку.</example>
+ <example type="incorrect"><marker>Указать об ошибке</marker>.</example>
+ </rule>
+ </rulegroup>
+
+ <rulegroup default="on" id="strong_m" name="Пропуск обязательных зависимых слов">
+ <rule>
+ <pattern>
+ <token inflected = "yes">содействовать</token>
+ <token><exception postag=".*:D" postag_regexp="yes"/><exception postag="PNN:.*" postag_regexp="yes"/><exception regexp="yes">также|тоже</exception></token>
+ </pattern>
+ <message>Не найдены обязательные зависимые слова: содействовать чему?</message>
+ <short>содействовать чему?</short>
+ <example type="correct">Содействовать выполнению задания.</example>
+ <example type="incorrect"><marker>Содействовать и</marker> помогать.</example>
+ <example type="incorrect"><marker>Содействовали и</marker> помогали.</example>
+ </rule>
+ <rule>
+ <pattern mark_from="1">
+ <token postag="SENT_START" skip ="-1"><exception scope="next" postag=".*:R" postag_regexp="yes"/><exception scope="next" postag="PNN:.*:R.*" postag_regexp="yes" /></token> <!-- -->
+ <token inflected = "yes">интересовать</token>
+ <token><exception postag=".*:R" postag_regexp="yes"/><exception postag="PNN:.*" postag_regexp="yes"/></token>
+ </pattern>
+ <message>Не найдены обязательные зависимые слова: интересовать кого?</message>
+ <short>интересовать кого?</short>
+ <example type="correct">Через несколько минут мы ответим на интересующие слушателей вопросы.</example>
+ <example type="incorrect">Мы ответим на <marker>интересующие вопросы</marker>.</example>
+ </rule>
+ <rule>
+ <pattern>
+ <token inflected = "yes">нарушать</token>
+ <token><exception postag=".*:V" postag_regexp="yes"/><exception postag="PNN:.*" postag_regexp="yes"/></token>
+ </pattern>
+ <message>Не найдены обязательные зависимые слова: нарушать что?</message>
+ <short>нарушать что?</short>
+ <example type="correct">Вы нарушаете правила.</example>
+ <example type="incorrect">Вы <marker>нарушаете!</marker></example>
+ </rule>
+
+ </rulegroup>
+
+
+ <rule default="on" id="OPREDELENIA" name="Избыточные придаточные определения">
+ <pattern>
+ <token skip="-1" regexp="yes">который|которого|которому|
+ котором|которая|которой|которую|которые|которых|
+ которыми|которое|которым|чей|чьего|чьему|
+ чьим|чья|чьей|чью|чье|чьё|чьем|чьём|чьи</token>
+ <token regexp="yes">который|которого|которому|
+ котором|которая|которой|которую|которые|которых|которыми|которое|
+ которым|чей|чьего|чьему|чьим|чья|чьей|
+ чью|чье|чьё|чьем|чьём|чьи</token>
+ </pattern>
+ <message>Избыточные определения. В правильно составленном предложении не должно быть больше одного придаточного определения.</message>
+ <short>Избыточные определения.</short>
+ <example type="correct">Они пошли к реке, по которой плавала лодка.</example>
+ <example type="incorrect">Они пошли к реке, по <marker>которой плавала лодка, которая</marker> была окрашена в белый цвет.</example>
+ </rule>
+ <rulegroup default="off" name="Благозвучность" id="BLAGOZVUCHNOST">
+ <rule>
+ <pattern>
+ <token regexp="yes">.*[йцкнгшщзхфвпрлджчсмтб][йцкнгшщзхфвпрлджчсмтб]</token>
+ <token regexp="yes">[йцкнгшщзхфвпрлджчсмтб][йцкнгшщзхфвпрлджчсмтб].*</token>
+ </pattern>
+ <message>Сложно произнести подряд 4 согласных звука.</message>
+ <short>4 согласных подряд.</short>
+ <example type="correct">Гимнаст активно тренировался.</example>
+ <example type="incorrect"><marker>Гимнаст тренировался</marker>.</example>
+ </rule>
+ </rulegroup>
+ </category>
+
+ <category name="Заглавные буквы">
+
+ <rule default="on" id="Cap_Letters_Name" name="Имя">
+ <pattern case_sensitive="yes">
+ <token postag="NNN:.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}.*</exception><exception regexp="yes">е|мадам|леди|пани|ежи|шоу|обл</exception><exception negate_pos="yes" postag="NNN:.*" postag_regexp="yes"/></token>
+ </pattern>
+ <message>Имя пишется с большой буквы: <suggestion><match no="1" case_conversion ="startupper"/></suggestion></message>
+ <short>Заглавные буквы.</short>
+ <example type="correct">Он - <marker>Иван</marker>.</example>
+ <example type="incorrect">Он - <marker>иван</marker>.</example>
+ </rule>
+
+ <rule default="on" id="Cap_Letters_SName" name="Отчество">
+ <pattern case_sensitive="yes">
+ <token postag="NNP:.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}.*</exception><exception>e</exception><exception negate_pos="yes" postag="NNP:.*" postag_regexp="yes"/></token>
+ </pattern>
+ <message>Отчество пишется с большой буквы: <suggestion><match no="1" case_conversion ="startupper"/></suggestion></message>
+ <short>Заглавные буквы.</short>
+ <example type="correct">Он - <marker>Иванович</marker>.</example>
+ <example type="incorrect">Он - <marker>иванович</marker>.</example>
+ </rule>
+
+
+ </category>
+
+</rules>
+
diff --git a/JLanguageTool/src/rules/ru/replace.txt b/JLanguageTool/src/rules/ru/replace.txt
new file mode 100644
index 0000000..9b5191b
--- /dev/null
+++ b/JLanguageTool/src/rules/ru/replace.txt
@@ -0,0 +1,115 @@
+# @author Yakov Reztsov
+# TODO: дописать список
+
+# Формат: ошибочная_фраза=правильная_фраза
+
+# слова
+курей=кур
+ложить=класть
+покласть=положить
+положь=положи
+положьте=положите
+покладу=положу
+ляжь=ляг
+ляжьте=лягте
+
+длинше=длиннее
+ширше=шире
+тончее=тоньше
+тонче=тоньше
+слаже=слаще
+красивше=красивее
+
+хужее=хуже
+
+стригет=стрижёт
+стригёт=стрижёт
+стригем=стрижём
+стригём=стрижём
+стригешь=стрижёшь
+стригёшь=стрижёшь
+стригете=стрижёте
+стригёте=стрижёте
+
+бегим=бежим
+бежите=бегите
+бежи=беги
+длиньше=длиннее
+нагинаться=нагибаться
+застегать=застёгивать
+
+ехай=поезжай
+ехайте=поезжайте
+едь=поезжай
+езжай=поезжай
+езжайте=поезжайте
+
+приколон=приколот
+
+порват=порван
+порвата=порвана
+даден=дан
+
+толью=толем
+шампунью=шампунем
+повидлой=повидлом
+
+съемши=съев
+поемши=поев
+выпимши=выпив
+купивши=купив
+пришедши=придя
+
+тубаретка=табуретка
+ндравится=нравится
+подчерк=почерк
+подскользнуться=поскользнуться
+коммунизьм=коммунизм
+акадэмия=академия
+
+жгешь=жжёшь
+жгёшь=жжёшь
+жгет=жжёт
+жгёт=жжёт
+жгем=жжём
+жгём=жжём
+жгете=жжёте
+жгёте=жжёте
+
+пекешь=печёшь
+пекёшь=печёшь
+пекёт=печёт
+пекем=печём
+пекём=печём
+пекёте=печёте
+
+хочим=хотим
+хочите=хотите
+
+взади=сзади
+назаду=сзади
+взад=назад
+взаду=позади
+#взад назад=взад вперёд
+вовнутрь=внутрь
+куды=куда
+туды=туда
+сюды=сюда
+тама=там
+здеся=здесь
+тута=тут
+зазря=зря
+зараз=сразу
+сперва=сначала
+перво-наперво=сначала
+опосля=потом
+впервой=впервые
+по-новой=снова
+глыбоко=глубоко
+#без разницы=безразлично
+#взаправду=по правде
+зазря=зря
+ширше=шире
+длиньше=длиннее
+напополам=пополам
+#один за одним=один за другим \ No newline at end of file