Skip to content

Commit 7593aec

Browse files
Update details.md
1 parent f40940e commit 7593aec

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

docs/details.md

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
Файлы импорта ленты и управляющего устройства являются json файлами.
2+
3+
Формат файла ленты:
4+
```
5+
{
6+
"tape-view": ["<символ 1>", "<символ 2>", … , "<символ n>"],
7+
"empty-symbol" : "<пустой символ>",
8+
"pointer-index": <число>
9+
}
10+
```
11+
12+
Формат файла управляющего устройства:
13+
```
14+
{
15+
"alphabet": ["<символ 1>", "<символ 2>", … , "<символ n>"],
16+
"states": ["<состояние 1>", "<состояние 2>", … , "<состояние n>"],
17+
"begin-state": "<состояние i>",
18+
"end-state": " состояние i",
19+
"commands":
20+
{
21+
"<<символ i><состояние j>>":
22+
{
23+
"new-symbol": "<символ>",
24+
"new-state": "<состояние>",
25+
"action": "<действие>"
26+
},
27+
"<<символ j><состояние i>>":
28+
{
29+
"new-symbol": "<символ>",
30+
"new-state": "<состояние>",
31+
"action": "<действие>"
32+
}
33+
}
34+
}
35+
```
36+
37+
Команды должны быть заданы для каждой пары <символ><состояние>, где символы берутся из алфавита машины, а состояние – из множества состояний.
38+
Если команд будет недостаточно, программа выведет сообщение об этом.
39+
Действия:
40+
* "R" – смещение вправо
41+
* "L" – смещение влево
42+
* "N" – смещение отсутствует
43+
44+
Проверяется соответствие ленты и управляющего устройства. Управляющее устройство имеет приоритет над лентой. Если символы ленты не соответствуют символам алфавита управляющего устройства, машина не сможет начать работу. Для начала работы необходимо исправить символы ленты.
45+
46+
При добавлении нового состояния из программы оно будет автоматически помечено как начальное, конечное и текущее, при условии, что до этого управляющее устройство их не содержало. Также можно принудительно задать новое состояние начальным, конечным и/или текущим.
47+
48+
При добавлении нового символа алфавита из программы, он автоматически будет помечен как пустой символ, при условии, что до этого в ленте он не был задан. Также можно принудительно задать новый символ алфавита пустым символом.
49+
50+
При добавлении новой команды из программы, необходимо соблюдать установленный синтаксис: <символ алфавита>-<состояние>-<действие>. При этом команда будет проверена на корректность, а именно принадлежность символа алфавита текущему алфавиту, состояния – текущему множеству состояний и команды – возможным командам.
51+
52+
При добавлении нового символа ленты он будет проверен на принадлежность алфавиту, при условии, что тот задан. Если алфавит не задан, символ проверен не будет.
53+
54+
После достижения машиной конечного состояния, будет выведено сообщение об этом и машина завершит работу. Для продолжения работы, необходимо перезагрузить машину.

0 commit comments

Comments
 (0)