설정 파일
면접 대비시간 제한2초메모리 제한512 MB
중괄호로 구분된 설정 파일에서 변수 대입이 블록 범위를 따르도록 파싱하고, 변수 대 변수 대입마다 대입되는 값을 출력한다.
문제
Vadim은 자기 프로젝트의 설정 파일용 파서를 만들고 있다. 설정 파일은 중괄호로 구분된 블록으로 이루어진다. "{"는 블록의 시작, "}"는 블록의 끝을 나타낸다. 블록은 중첩될 수 있다. 한 블록은 여러 다른 블록을 포함할 수 있다.
설정 파일에는 변수가 있다. 각 변수의 이름은 영문 소문자 최대 열 글자로 이루어진다. 각 변수는 정숫값을 가지며, 처음에는 모든 변수의 값이 으로 설정되어 있다.
변수에 새 값을 대입할 수 있다. 변수에 상숫값을 대입하는 것은 "<variable>=<number>"로 나타낸다. 여기서 <variable>은 변수의 이름이고, <number>는 정수이며 절댓값은 을 넘지 않는다. 파서는 파일을 한 줄씩 읽는다. 대입 연산을 읽으면 변수에 새 값을 대입한다. 이 값은 현재 블록이 끝날 때까지 사용되고, 그 뒤에는 이전 값이 복원된다. 대입 연산 뒤에 현재 블록에 중첩된 블록이 있으면, 그 블록 안에서는 변수의 새 값이 사용된다.
변수에 다른 변수의 값을 대입할 수도 있다. 이런 연산은 "<variable1>=<variable2>"로 나타낸다. 파서가 이런 줄을 읽으면 variable2의 현재 값을 variable1에 대입한다. 상숫값을 대입할 때와 마찬가지로, 새 값은 현재 블록이 끝날 때까지 사용된다. 현재 블록이 끝나면 변수는 블록 시작 시점의 값을 되찾는다.
Vadim은 디버깅을 위해 "<variable1>=<variable2>" 형태의 줄을 처리할 때 대입되는 모든 값을 출력하려고 한다. 파서 디버깅을 도와주자.
입력
입력은 최소 줄, 최대 줄로 이루어진다. 각 줄은 다음 네 가지 중 하나다.
{: 블록의 시작;- }: 블록의 끝;
<variable>=<number>: 변수에 상숫값 대입;<variable1>=<variable2>: 한 변수를 다른 변수에 대입. 여기서<variable1>과<variable2>는 같을 수 있다.
입력은 올바르며 문제의 서술에 부합한다. 입력에는 공백이 없다.
출력
"<variable1>=<variable2>" 형태의 각 줄마다 대입되는 값을 출력한다.