
*Маленький Эксель*
Необходимо реализовать простую электронную таблицу в виде программы, выполняющейся из командной строки. Она должна уметь обрабатывать ячейки таблицы как и более продвинутые аналоги, только с упрощенным синтаксисом выражений. Каждая ячейка может содержать:
* Ничего
* Неотрицательное целое число
* Текстовые строки, которые начинаются с символа '
* Строки-выражения, которые начинаются с символа '=' и могут содержать неотрицательные целые числа, ссылки на ячейки и простые арифметические выражения. Скобки запрещены, у всех операций одинаковый приоритет. Ссылки на ячейки состоят из одной латинской буквы и следующей за ней цифры.
Эти ограничения введены для упрощения разбора выражений, поскольку разбор выражений не является основной частью проблемы. Вы можете спокойно положиться на эти ограничения. Вот грамматика содержимого ячейки:
{code}
expression ::= '=' term {operation term}*
term ::= cell_reference | nonnegative_number
cell_reference ::= [A-Za-z][0-9] --
operation ::= '+' | '-' | '*' | '/'
text ::= '\'' {printable_character}
{code}
*Процесс обработки *
\- Все выражения должны быть заменены на вычисленный результат.
\- Все вычисления выполняются с помощью целочисленной арифметики со знаком.
\- Ячейки с текстом должны быть вычислены как соответствующий текст без префикса '.
\- Операции над строками текста запрещены.
\- В случае любой ошибки вычисления формулы, вычисляемая ячейка должна содержать слово-сообщение об ошибке, начинающееся с символа '#'. Используйте короткие, ясные сообщения. Не надо предоставлять подробности об ошибках в выводе.
Программа должна использовать только стандартные библиотеки и классы и не должна вызывать сторонние программы, библиотеки или системные компоненты.
*Ввод и вывод*
Программа получает описание таблицы с формулами из стандартного ввода, вычисляет ее и печатает полученный результат в стандартный вывод. Входные данные представлены таблицей, элементы строк которой разделены табуляциями. Первая строка содержит пару чисел, разделенных табуляцией - высоту и ширину таблицы, соответственно. Затем идут строки с ячейками таблицы, в грамматике, приведенной выше.
Выход должен содержать только ожидаемую информацию, включая сообщения об ошибках, и никакой другой информации в выводе не должно быть, включая и welcome text. Выход должен быть отформатирован в соответствии с приведенным ниже примером.
Пример данных: