Задача O. Константные выражения

Автор:А. Баранов   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:2 Мб
Выходной файл:output.txt  

Условие

Пусть имеется программа, записанная на императивном языке программирования, поддерживающем команды следующего вида:

<переменная> = <выражение> — присвоить переменной результат заданного выражения.

Выражение может состоять из арифметических операций ('+', '-', '*', '/'), круглых скобок, переменных и целочисленных констант. Между ними также допускается произвольное число пробелов. При этом знак минуса используется здесь для обозначения как бинарной, так и унарной операции. Операции ('+', '-') имеют меньший приоритет, чем ('*', '/'). Операции, обладающие одинаковым приоритетом, выполняются слева направо.

В качестве имен переменных выступают символы латинского алфавита (регистр их написания неважен). Полагается, что все они принадлежат к знаковому 32-разрядному целому типу и могут принимать значения из диапазона от  − 231 до 231 − 1. Константы представляют собой числа, записанные в десятичной системе счисления и лежащие в диапазоне от 0 до 231 − 1.

Изначально всем переменным присваиваются нулевые значения. Арифметическое переполнение и деление на ноль приводят к неопределенному результату, для обозначения которого используется символ '#' (ASCII 35). Все операции с неопределенным значением (кроме умножения на ноль) также возвращают '#'.

В рамках текущей задачи для каждой переменной требуется определить ее значение, полученное по окончанию программы.

Формат входного файла

Во входном файле "input.txt" построчно содержатся команды указанного языка.

Формат выходного файла

В выходной файл "output.txt" следует вывести пары: <переменная> <значение>. При этом переменные, которые отсутствуют в левых частях выражений, могут быть проигнорированы.

Ограничения

Полагается, что все представленные команды включают в себя не более 50 арифметических операций и не содержат синтаксических ошибок.

Число открывающихся скобок также ограничено и не превосходит 30.

Входная программа состоит как минимум из одной команды. Общее число команд не превосходит 1000.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
i = 1045
B = (a + i) * 23 - 190
c = B
i = - 4 + i / 10
c = i - 138
b 23845
c -38
i 100
2
i = B + 14903 * A
B = 100 / (i * 2)
C = b /(c +a * E)
i = i - u * C
B = i + 350
b 350
c #
i 0

0.129s 0.025s 15