Лабораторная работа №1.

Преамбула

Одним из старейших интерфейсов взаимодействия человека и компьютера является CLI (Command Line Interface), в рамках которого определяются базовые правила формирования команд компьютерной системе.

Задание

Рассмотрим упрощенные и несколько модифицированные правила формирования команд в CLI:
  1. Команда состоит только из набора латинских букв и цифр
  2. Команда может иметь параметры и опции
  3. Параметры и опции отделяются друг от друга и от команды произвольным кол-вом пробелов
  4. Лидирующие и завершающие пробелы в командной строке игнорируются
  5. Параметры могут содержать латинские буквы, цифры, знак подчеркивания.
  6. Опции могут содержать латинские буквы и начинаются со знаков "-" или "/". Опция может быть пустой, т.е. состоять только из знака "-" или "/".
Создать консольную программу на любом языке программирования, которая на стандартном входе принимает набор строк, а на выходе, при успешной обработке, для каждой исходной строки выводит символьный разделитель (напр. "----------------------------------------------------") и четыре блока, разделенных пустой строкой:
  1. исходную строку
  2. команду
  3. параметры по одному в каждой строке
  4. опции по одной в каждой строке
Если введенная строка содержит ошибки, то на выходе программы два блока:
  1. исходная строка
  2. Слово Error и номер позиции ошибки в исходной строке
Анализируется только первая ошибка.
Пример исходного набора данных:

     test
test -h /h -h -f firstfile /help -suboption nextfile
тест
copy abc.txt xyz.txt
mv abc xyz -f-b
xcopy /?
Пример результирующего набора данных:
---------------------------

Error 1
---------------------------
     test
test


---------------------------
test -h /h -h -f firstfile /help -suboption nextfile
test

firstfile
nextfile

-h
/h
-h
-f
/help
-suboption
---------------------------
тест
Error 1
---------------------------
copy abc.txt xyz.txt
Error 9
---------------------------
mv abc xyz -f-b
Error 14
---------------------------
xcopy /?
Error 8
Пример программы обработки (без поддержки опций)