From 761f6ca9ff6ef59d077503c31522cbddea542001 Mon Sep 17 00:00:00 2001 From: ElectronixTM Date: Sun, 16 Mar 2025 04:27:57 +0300 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20README.md=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D1=81=D0=B2?= =?UTF-8?q?=D0=B5=D0=B6=D1=83=D1=8E=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 244a65c..86f41c6 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ Это очень маленький проект, который нужен для одной единственной лабы. -Для работы он принимает rulebook файл (расширение `.rb`), в котором содержатся возможные преобразования над последовательностями символов. Далее можно перейти в интерактивный режим или скормить ввод напрямую +Для работы он принимает rulebook файл (расширение `.rb`, хотя так как это текстовые файлы, расширение у них может быть любое), в котором содержатся возможные преобразования над последовательностями символов. Далее можно перейти в интерактивный режим или скормить ввод напрямую. -Чтобы запустить приложение в интерактивном режиме, достаточно просто отдать ему книгу правил +Чтобы запустить приложение в интерактивном режиме, достаточно просто отдать ему книгу правил: ```bash poetry run markov.py @@ -14,21 +14,43 @@ poetry run markov.py Можно и напрямую передать ввод: ```bash -poetry run markov.py -c +poetry run markov.py -c ``` -Строки должны быть без пробелов +Для получения многословного вывода (который можно использовать для сдачи лабораторной работы), предусмотрена опция `-v`: + +``` +poetry run markov.py -c -v +``` + +Стоит учесть, что опция `-v` без использования `-c` не учитывается. Если вы начнете с этим флагом в интерактивном режиме, он будет проигнорирован. В интерактивном режиме другой способ получить многословный вывод. + +## Описание интерактивного режима + +Интерактивный режим позволяет вводить последовательности символов, к которым будут применяться заданные вами правила. Тем не менее некоторые последовательности символов зарезервированы: + +- `h:` - выводит help. +- `r:` - выводит список правил из используемой в этой сессии книги. +- `v:` - включает многословный режим для следующей последовательности символов. Она не игнорирует ввод после двоеточия, поэтому пользоваться ей следует так: `v: ||`. Заметим также, что пробелы перед символами и после них игнорируются, также как и табы. +- `e:` - мгновенно завершает работу приложения. Также его можно завершить отправив на вход EOF. +- `:` - используется, если требуемая для алгоритма последовательность символов совпадает с зарезервированной. Все, что написано после двоеточия воспринимается без изменений (Только обрезаются пробелы). Только отбрасывается символ двоеточия> + +NOTE: Как правило во всех случаях пробелы будут обрезаться, поскольку синтаксис книг правил не подразумевает возможность создавать операции над ними. Поэтому если в середине последовательности встретится пробел, он там навсегда и останется. Впрочем может вам это и нужно. ## Синтаксис книг правил -На каждой отдельной строке идет описания нового правила. Каждое правило описывает преобразования одной цепочки символов в другую цепочку символов. Для указания перехода используется символ `->` Или если преобразование завершающее `->|`. Также есть зарезервирвованный символ пустой подстроки: `$` +На каждой отдельной строке идет описания нового правила. Каждое правило описывает преобразования одной цепочки символов в другую цепочку символов. Для указания перехода используется символ `->` или, если преобразование завершающее, `->|`. Также есть зарезервирвованный символ пустого множества: `$` -Есть возможность оставлять комментарии через символ `//`, по аналогии с C +Есть возможность оставлять комментарии через символ `//`, по аналогии с C. Пример: ``` -ss -> +s // comment -s ->| $ +ss -> +s // Комментарий +s ->| $ // Блокирующая операция, переводящая s в пустое множество ``` + +## Замечание по поводу синатксических ошибок + +Обработка синтаксических огрехов у меня не предусмотрена, поэтому если где-то произошла описка, то в лучшем случае программа свалится от необработанного исключения, в худшем будет undefined behaviour