chore: обновил README.md и добавил более свежую информацию

This commit is contained in:
ElectronixTM
2025-03-16 04:27:57 +03:00
parent 72d02e0a8d
commit 761f6ca9ff

View File

@ -3,9 +3,9 @@
Это очень маленький проект, который нужен для одной единственной лабы. Это очень маленький проект, который нужен для одной единственной лабы.
Для работы он принимает rulebook файл (расширение `.rb`), в котором содержатся возможные преобразования над последовательностями символов. Далее можно перейти в интерактивный режим или скормить ввод напрямую Для работы он принимает rulebook файл (расширение `.rb`, хотя так как это текстовые файлы, расширение у них может быть любое), в котором содержатся возможные преобразования над последовательностями символов. Далее можно перейти в интерактивный режим или скормить ввод напрямую.
Чтобы запустить приложение в интерактивном режиме, достаточно просто отдать ему книгу правил Чтобы запустить приложение в интерактивном режиме, достаточно просто отдать ему книгу правил:
```bash ```bash
poetry run markov.py <rulebook> poetry run markov.py <rulebook>
@ -14,21 +14,43 @@ poetry run markov.py <rulebook>
Можно и напрямую передать ввод: Можно и напрямую передать ввод:
```bash ```bash
poetry run markov.py -c <string> poetry run markov.py <rulebook> -c <string>
``` ```
Строки должны быть без пробелов Для получения многословного вывода (который можно использовать для сдачи лабораторной работы), предусмотрена опция `-v`:
```
poetry run markov.py <rulebook> -c <string> -v
```
Стоит учесть, что опция `-v` без использования `-c` не учитывается. Если вы начнете с этим флагом в интерактивном режиме, он будет проигнорирован. В интерактивном режиме другой способ получить многословный вывод.
## Описание интерактивного режима
Интерактивный режим позволяет вводить последовательности символов, к которым будут применяться заданные вами правила. Тем не менее некоторые последовательности символов зарезервированы:
- `h:` - выводит help.
- `r:` - выводит список правил из используемой в этой сессии книги.
- `v:` - включает многословный режим для следующей последовательности символов. Она не игнорирует ввод после двоеточия, поэтому пользоваться ей следует так: `v: ||`. Заметим также, что пробелы перед символами и после них игнорируются, также как и табы.
- `e:` - мгновенно завершает работу приложения. Также его можно завершить отправив на вход EOF.
- `:` - используется, если требуемая для алгоритма последовательность символов совпадает с зарезервированной. Все, что написано после двоеточия воспринимается без изменений (Только обрезаются пробелы). Только отбрасывается символ двоеточия>
NOTE: Как правило во всех случаях пробелы будут обрезаться, поскольку синтаксис книг правил не подразумевает возможность создавать операции над ними. Поэтому если в середине последовательности встретится пробел, он там навсегда и останется. Впрочем может вам это и нужно.
## Синтаксис книг правил ## Синтаксис книг правил
На каждой отдельной строке идет описания нового правила. Каждое правило описывает преобразования одной цепочки символов в другую цепочку символов. Для указания перехода используется символ `->` Или если преобразование завершающее `->|`. Также есть зарезервирвованный символ пустой подстроки: `$` На каждой отдельной строке идет описания нового правила. Каждое правило описывает преобразования одной цепочки символов в другую цепочку символов. Для указания перехода используется символ `->` или, если преобразование завершающее, `->|`. Также есть зарезервирвованный символ пустого множества: `$`
Есть возможность оставлять комментарии через символ `//`, по аналогии с C Есть возможность оставлять комментарии через символ `//`, по аналогии с C.
Пример: Пример:
``` ```
ss -> +s // comment ss -> +s // Комментарий
s ->| $ s ->| $ // Блокирующая операция, переводящая s в пустое множество
``` ```
## Замечание по поводу синатксических ошибок
Обработка синтаксических огрехов у меня не предусмотрена, поэтому если где-то произошла описка, то в лучшем случае программа свалится от необработанного исключения, в худшем будет undefined behaviour