Введение
Программа String Visualization предназначена для визуализации стандартных преобразований из одной строки в другую. Может быть использована для наглядного графического отображения работы того или иного анализатора строк, который указывает, какие изменения следует совершить в строке, чтобы получить правильную результирующую строку.
Основание для разработки
Основанием для разработки данной программы служит задание на курсовой проект по дисциплине "Качество и надежность программного обеспечения", выданное доцентом кафедры ПОАС Сычевым Олегом Александровичем 5.02.2014 г.
Назначение разработки
Данная разработка может быть использована для визуализации ошибок, сопоставления данных и эталонных строк, наглядной индикации работы другой программы.
Требования к программе
В качестве входных данных программа получает текстовый файл с исходной строкой, разбитой на лексемы, и перечнем выполняемых над строкой операций.
4.1 Функциональные требования:
|
|
- Программа должна принимать на вход текстовый файл, формат которого описан в приложении N.
- На основе входного файла должна создавать графическое изображение с текстом исходной строки, текстом результирующей строки и символическими изображениями применяемых операций. Внешний вид результирующего изображения должен удовлетворять требованиям, описанным в приложении N.
- Корректно обрабатывать ситуации с видами различий, описанные в приложении N.
4.2 Нефункциональные требования:
- Корректно обрабатывать ошибки ввода данных в соответствии с приложением.
Приложение
Таблица 1. Поддерживаемые операции
Операция | Описание | Пример работы |
insert:lexemindex:place:symbol | Вставляет символ "symbol" в лексеме с индексом lexemindex (индексация начинается с 0) в место с индексом place (индексация начинается с 0 перед первым символом). При многократном использовании индексация производится с учетом порядка вызова операции. Нельзя добавить символ, если исходная строка пустая, т.к. в ней отсутствуют лексемы. Вставка производится только в лексему. | Вставка символа в середине лексемы insert:3:2:s Вставка символа в конец лексемы insert:4:3:! Вставка нескольких символов в одно место insert:3:1:e insert:3:1:s Вставка нескольких символов в соседние места insert:0:4:l insert:0:4:i insert:0:4:e insert:0:4:v insert:0:5:b insert:0:5:l insert:0:5:e |
insertlexem:place:lexem | Вставляет лексему "lexem" в указанное место с индексом place (индексация начинается с 0 перед первой лексемой). При многократном использовании индексация производится с учетом ранее вставленных элементов. Можно вставить лексему в пустую строку. | Вставка в середину строки одной лексемы. insertlexem:2:the Вставка в начало строки одной лексемы insertlexem:0:Cat Вставка в строку нескольких лексем insertlexem:0:Cat insertlexem:0:is Вставка в пустую строку { } insertlexem:0:hello |
delete:lexemindex:place | Удаляет символ с индексом place (индексация начинается с 0) в лексеме с индексом lexemindex. | Удаление символа в лексеме delete:2:0 Удаление нескольких символов в лексеме delete:1:2 delete:1:2 |
deletelexem:lexemindex | Удаляет из строки лексему с индексом lexemindex (индексация начинается с 0) | Удаление лексемы из строки deletelexem:2 Удаление нескольких лексем из строки deletelexem:2 deletelexem:2 |
move:lexemfromindex: placefromindex: lexemtoindex: placetoindex | Перемещает символ с индексом placefromindex лексемы lexemfromindex на позицию placetoindex лексемы lexemtoindex. Каждая следующая стрелка увеличивается, чтобы избежать наложений (Пересечения возможны) | Перенос символа из одной лексемы в другую move:0:3:3:3 Перенос нескольких символов из разных лексем move:0:4:3:3 move:0:3:4:2 Перенос нескольких символов с пересечением стрелок move:0:3:4:2 move:0:4:3:3 |
movelexem:lexemindex:place | Перемещает лексему с индексом lexemindex на позицию с индексом place (индексация начинается с 0 перед первой лексемой) | Перемещение одной лексемы movelexem:4:0 |
space:lexemindex:place | Вставляет разделитель в лексеме lexemindex в позицию place | Вставка разделителя в лексеме space:0:3 |
Замена символа | ||
Замена лексемы |
приложение 2
|
|
формат входных данных.
На вход программы передается текстовый файл в формате txt. В нем содержится строка, разбитая на лексемы и список операций, совершаемых над строкой. Исходная строка записывается в фигурных скобках, каждая лексема с новой строки. Далее перечисляются операции, каждая операция вводится с новой строки и записывается в фигурных скобках. В случае пустой входной строки ставятся пустые фигурные скобки, каждая с новой строки.
Пример:
{
Cat
is
the
best
pet
}
{space:1:1}
{addlexem:4:!}
Пример 2. Пустая исходная строка:
{
}
{insertlexem:0:hello}
Таблица 2. Ошибки входных данных.
Ошибка | Пример | Сообщение при обнаружении ошибки/обработка |
Неверный формат входного файла | Input.doc | Input file was not found |
Ввод несуществующей операции | {append:2:3} | Invalid operation name |
Обращение к несуществующему символу или лексеме | I Like Apple {deletelexem:5} | Invalid operation index |
Неверное количество параметров операции | {insert:3} | Invalid operation parameters |
Более одной лексемы на одной строке при вводе редактируемой строки | { I Like apple } | Invalid string format |
Неправильно расставлены фигурные скобки | { I Like {delete:0} | Invalid open/close symbols |