IF — 조건 분기

IF — 조건 분기

IFx의 모든 비트가 0이면 orig가 주는 위치에서 실행을 계속하도록 하는 조건 분기 단어로, THEN/ELSE와 함께 쓰이는 코어 단어예요.

출처: IF — Forth 2012 Standard

본문

컴파일 (Compilation)

( C: -- orig )

새로운 미해결 전방 참조 orig의 위치를 제어 흐름 스택에 놓아요. 아래 주어진 실행 시점 의미를 현재 정의에 추가해요. 이 의미는 orig가(예: THEN 또는 ELSE에 의해) 해결될 때까지 불완전해요.

실행 (Run-time)

( x -- )

x의 모든 비트가 0이면 orig의 해결이 지정하는 위치에서 실행을 계속해요.

참조 (See)

  • 3.2.3.2 Control-flow stack
  • 6.1.1310 ELSE
  • 6.1.2270 THEN
  • A.6.1.1700 IF

합리성 (Rationale)

전형적인 사용:

: X ... test IF ... THEN ... ;

또는

: X ... test IF ... ELSE ... THEN ... ;

테스트 (Testing)

T{ : GI1 IF 123 THEN ; ->  }T
T{ : GI2 IF 123 ELSE 234 THEN ; ->  }T
T{  0 GI1 ->     }T
T{  1 GI1 -> 123 }T
T{ -1 GI1 -> 123 }T
T{  0 GI2 -> 234 }T
T{  1 GI2 -> 123 }T
T{ -1 GI1 -> 123 }T

IF 문 안의 여러 ELSE:

: melse IF 1 ELSE 2 ELSE 3 ELSE 4 ELSE 5 THEN ;
T{ <FALSE> melse -> 2 4 }T
T{ <TRUE>  melse -> 1 3 5 }T

더 알아보기 (Learn more)

출처: IF — Forth 2012 Standard