MARKER — 사전 경계 표시
MARKER — 사전 경계 표시
MARKER는 사전(dictionary)의 경계를 표시하는 정의 name을 만들어, 실행 시점에 그 시점 이후의 모든 정의를 제거할 수 있게 하는 코어 확장 단어예요.
본문
스택 효과
( "<spaces>name" -- )
설명
선행 공백 구분자를 건너뛰고 공백으로 구분된 name을 파싱해요. 아래 정의된 실행 의미를 가진 name의 정의를 만들어요.
name 실행 (name Execution)
( -- )
모든 사전 할당과 검색 순서 포인터를 name의 정의 직전 상태로 복원해요. name의 정의와 이후의 모든 정의를 제거해요. 삭제된 정의나 할당 해제된 데이터 공간을 참조할 수 있는 기존 구조의 복원은 반드시 제공되는 것은 아니에요. 수치 기수 같은 다른 문맥 정보는 영향을 받지 않아요.
참조 (See)
- 3.4.1 Parsing(파싱)
- 15.6.2.1580 FORGET
- A.6.2.1850 MARKER
합리성 (Rationale)
사전 구현이 더 정교해지고 어떤 경우에는 여러 주소 공간을 사용하게 되면서, FORGET는 많은 Forth 시스템에서 구현하기 지나치게 어렵거나 불가능해졌어요. MARKER는 사전이 미래의 어떤 시점에 재배열되어야 할 수 있는 위치를 구체적으로 표시하는 "랜드마크 정보"를 시스템이 미리 기억할 수 있게 함으로써 그 문제를 크게 완화해요.