|
| 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