자동차 트라이얼

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

자동차 트라이얼(car trialling)은 운전자가 매우 정밀하게 작성된 지시문을 그대로 따라야 하는 모터스포츠이다. 대회를 설계할 때 주최자는 방심한 참가자를 걸려들게 하려고 지시문 곳곳에 일부러 "함정"을 심어 둔다.

아래 규칙을 지키는 지시문인지 판정하는 프로그램을 작성하라. 이 규칙은 실제 자동차 트라이얼 지시문을 느슨하게 본떠 만든 것이다.

문법 표기법은 다음과 같다.

  • 대문자로 쓴 단어(예: GO, KEEP, RIGHT)는 그대로 나타나야 하는 리터럴 문자열이며, 대소문자를 구분한다.
  • 소문자 이름은 문법 규칙이다.
  • |는 선택지를 구분하며, 그중 정확히 하나를 골라야 한다.
  • ..는 범위를 펼친 것으로, A..DA | B | C | D와 같다.
instruction   = navigational | time-keeping | navigational AND time-keeping
navigational  = directional | navigational AND THEN directional
directional   = how direction | how direction where
how           = GO | GO when | KEEP
direction     = RIGHT | LEFT
when          = FIRST | SECOND | THIRD
where         = AT sign
sign          = "signwords"
signwords     = s-word | signwords s-word
s-word        = letter | s-word letter
letter        = A..Z | .
time-keeping  = record | change
record        = RECORD TIME
change        = cas TO nnn KMH
cas           = CHANGE AVERAGE SPEED | CAS
nnn           = digit | nnn digit
digit         = 0..9

s-wordnnn은 각각 글자와 숫자가 공백 없이 이어진 것이다. 이웃한 항목 사이에는 하나 이상의 공백이 있으나, 다음 세 경우에는 공백이 전혀 없다: 마침표(.) 바로 앞, 여는 큰따옴표(") 바로 뒤, 닫는 큰따옴표(") 바로 앞.

입력

입력은 한 줄에 하나씩 여러 개의 지시문으로 이루어진다. 각 줄의 길이는 최대 75자이다. 입력은 문자 # 하나만 있는 줄로 끝나며, 이 줄은 지시문이 아니므로 처리하지 않는다.

출력

각 지시문 줄마다 번호가 매겨진 줄을 하나씩 출력한다. 줄 번호는 1부터 차례로 매긴다.

각 출력 줄은 너비 3칸에 오른쪽 정렬한 줄 번호로 시작하고, 이어서 마침표(.)와 공백 한 칸을 붙인다. 그다음에는

  • 지시문이 올바르면 지시문 자체를 출력하되, 공백이 둘 이상 이어진 구간은 모두 공백 한 칸으로 줄인다.
  • 그렇지 않으면 Trap!을 출력한다.