PF
시간 제한0.1초메모리 제한1024 MB
숫자와 +, -, * 연산자가 순서대로 들어오는 입력을 읽어 표준 우선순위로 계산해 그 결과를 레지스터 A에 남기는 PF 나노프로세서 프로그램을 255줄 이내로 작성한다.
문제
나노프로세서 Perfect Function(줄여서 PF)의 단순한 구조에는 입력 레지스터 IN과 세 개의 정수 레지스터 A, B, C가 있다. IN은 표준 입력에 연결되어 있고, 계산 결과는 A에 들어 있어야 한다. IN에서는 음이 아닌 정수 하나와 +, -, *, = 중 하나의 문자를 표준 입력에서 읽을 수 있다.
PF가 수행할 수 있는 기본 연산은 아래 표에 나와 있다.

다음 기호를 사용한다.
- <Reg> - 네 레지스터 중 아무거나;
- <R>, <R1>, <R2> - 세 정수 레지스터 A, B, C 중 아무거나;
- <number> - 음이 아닌 정수;
- <const> - 허용된 문자 중 아무거나, 또는 음이 아닌 정수.
레지스터를 바꾸는 이항 연산에서는 바뀌는 레지스터가 두 번째 인자라는 점을 알 수 있다.
계산을 시작할 때 모든 레지스터에는 수 0이 들어 있다.
음이 아닌 정수와 산술 연산 +, -, *로 이루어진 산술식을 올바르게 계산하는 PF 프로세서용 프로그램을 작성하라. 결과는 레지스터 A에서 얻어야 한다. 여기서 “올바르게”란 통상적인 연산 우선순위를 따른다는 뜻이다. 곱셈을 먼저 하고, 덧셈과 뺄셈은 왼쪽에서 오른쪽으로 한다. 따라서 입력 2 + 2 * 2 =에 대해서는 A에 8이 아니라 6이 남아야 한다.
입력
프로그램의 입력은 올바르며 다음과 같은 모양이다.
수와 그 뒤에 올 수도 있는 문자가 표준 입력에서 IN 레지스터로 들어온다. 이 열은 수로 시작한다. 모든 수는 음이 아닌 정수다. 각 수 뒤에 오는 문자는 +, -, *, = 중 하나다. 공백, 탭, 줄 바꿈 문자로 이루어진 비어 있지 않은 임의의 집합이 열의 원소 사이 구분자 역할을 할 수 있다. 열의 끝은 문자 =를 읽는 것으로 표시된다. 문자 +, -, *는 각각 덧셈, 뺄셈, 곱셈이라는 표준 수 연산을 뜻한다.
출력
이 문제는 “출력 전용” 유형이다. 채점 시스템에, 설명한 문제를 푸는 PF 프로세서용 프로그램이 담긴 텍스트 파일 PF.txt를 제출하라. PF.txt의 각 줄은 PF 프로세서에 맞는 올바른 연산이어야 한다.
제한
PF.txt 파일은 255개 프로그램 줄과 64 KB 크기를 넘지 않아야 한다. 주어진 열의, 수에서 시작하고 수에서 끝나는 임의의 부분 열을 계산한 결과는 양의 정수, 음의 정수 또는 0이지만, 십진수 18자리를 넘지 않는다.