:NONAME — 이름 없는 정의
:NONAME — 이름 없는 정의
:NONAME(colon-no-name)은 실행 토큰 xt를 만들고 컴파일 상태로 들어가 현재 정의를 시작하는 코어 확장 단어예요. 만들어진 정의는 이후 xt EXECUTE로 실행할 수 있어요.
본문
컴파일 (Compilation)
( C: -- colon-sys ) ( S: -- xt )
실행 토큰 xt를 만들고 컴파일 상태로 들어가 현재 정의를 시작하고 colon-sys를 만들어요. 아래 주어진 시작 의미를 현재 정의에 추가해요. xt의 실행 의미는 정의 본문에 컴파일된 단어들에 의해 결정돼요. 이 정의는 이후 xt EXECUTE를 사용해 실행할 수 있어요. 제어 흐름 스택(control-flow stack)이 데이터 스택으로 구현된 경우, colon-sys는 데이터 스택의 최상단 항목이어야 해요. 3.2.3.2 Control-flow stack 참조.
시작 (Initiation)
( i*x* -- i*x* ) ( R: -- nest-sys )
호출 중인 정의에 대한 구현 의존 정보 nest-sys를 저장해요. 스택 효과 i*x*는 xt에 대한 인자를 나타내요.
xt 실행 (xt Execution)
( i*x* -- j*x* )
xt가 지정하는 정의를 실행해요. 스택 효과 i*x*와 j*x*는 각각 xt에 대한 인자와 결과를 나타내요.
참조 (See)
- A.6.2.0455 :NONAME
합리성 (Rationale)
전형적인 사용:
DEFER print
:NONAME ( n -- ) . ; IS print
주의 (Note)
:NONAME 정의 안에서는 RECURSE와 DOES>가 허용돼요.
테스트 (Testing)
VARIABLE nn1
VARIABLE nn2
T{ :NONAME 1234 ; nn1 ! -> }T
T{ :NONAME 9876 ; nn2 ! -> }T
T{ nn1 @ EXECUTE -> 1234 }T
T{ nn2 @ EXECUTE -> 9876 }T