Введение
Программа 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
![]() ![]() ![]() ![]() |
insertlexem:place:lexem | Вставляет лексему "lexem" в указанное место с индексом place (индексация начинается с 0 перед первой лексемой). При многократном использовании индексация производится с учетом ранее вставленных элементов. Можно вставить лексему в пустую строку. | Вставка в середину строки одной лексемы.
insertlexem:2:the
![]() ![]() ![]() ![]() |
delete:lexemindex:place | Удаляет символ с индексом place (индексация начинается с 0) в лексеме с индексом lexemindex. | Удаление символа в лексеме
delete:2:0
![]() ![]() |
deletelexem:lexemindex | Удаляет из строки лексему с индексом lexemindex (индексация начинается с 0) | Удаление лексемы из строки
deletelexem:2
![]() ![]() |
move:lexemfromindex: placefromindex: lexemtoindex: placetoindex | Перемещает символ с индексом placefromindex лексемы lexemfromindex на позицию placetoindex лексемы lexemtoindex. Каждая следующая стрелка увеличивается, чтобы избежать наложений (Пересечения возможны) | Перенос символа из одной лексемы в другую
move:0:3: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 |