IF — 조건 분기
IF — 조건 분기
IF는 x의 모든 비트가 0이면 orig가 주는 위치에서 실행을 계속하도록 하는 조건 분기 단어로, THEN/ELSE와 함께 쓰이는 코어 단어예요.
본문
컴파일 (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