[COMPILE] — 이름의 컴파일

[COMPILE] — 이름의 컴파일

[COMPILE](bracket-compile)는 컴파일 시점에 공백으로 구분된 name을 찾아, 그 기본 컴파일 의미가 아니라면 그것을, 그렇지 않으면 name의 실행 의미를 현재 정의에 추가하는 코어 확장 단어예요.

출처: [COMPILE] — Forth 2012 Standard

본문

컴파일 (Compilation)

( "<spaces>name" -- )

선행 공백 구분자를 건너뛰고 공백으로 구분된 name을 파싱해요. name을 찾아요. name이 기본 컴파일 의미가 아닌 다른 의미를 가지면 그것을 현재 정의에 추가하고, 그렇지 않으면 name의 실행 의미를 추가해요. name이 발견되지 않으면 애매한 조건(ambiguous condition)이 존재해요.

주의 (Note)

이 단어는 구식(obsolescent)이며 기존 구현에 대한 양보로 포함되었어요.

참조 (See)

  • 3.4.1 Parsing(파싱)
  • A.6.2.2530 [COMPILE]

합리성 (Rationale)

전형적인 사용:

: name2 ... [COMPILE] name1 ... ; IMMEDIATE

테스트 (Testing)

기본 컴파일 의미를 가진 경우:

T{ : [c1] [COMPILE] DUP ; IMMEDIATE ->  }T
T{ 123 [c1] -> 123 123 }T

즉시 단어(immediate word)인 경우:

T{ : [c2] [COMPILE] [c1] ; ->  }T
T{ 234 [c2] -> 234 234 }T

특수 컴파일 의미를 가진 경우:

T{ : [cif] [COMPILE] IF ; IMMEDIATE ->  }T
T{ : [c3]  [cif] 111 ELSE 222 THEN ; ->  }T
T{ -1 [c3] -> 111 }T
T{  0 [c3] -> 222 }T

더 알아보기 (Learn more)

출처: [COMPILE] — Forth 2012 Standard