6.14.2 Where are compilation semantics used?

The most common use of the compilation semantics of a word w is when w is text-interpreted in compile state, the state right after starting a definition with, e.g., :.

: hello
  s" hello" type ;

In this example, the text interpreter performs the compilation semantics of s", type and ; (after first performing the interpretation semantics of :)

When you postpone a word, you also use the compilation semantics.

: compile-+ ( -- ) \ compiled code: ( n1 n2 -- n )
  POSTPONE + ;

: foo ( n1 n2 -- n )
  [ compile-+ ] ;

see foo

Here the POSTPONE + compiles the compilation semantics of + into compile-+ (By contrast, just writing + in this place would result in performing the compilation semantics of +, and because this is a word with default compilation semantics, that would compile the execution/interpretation semantics of +). In the definition of foo, (the interpretation semantics of) compile-+ is performed, which in turn performs the compilation semantics of +, i.e., it compiles + into foo.

The compilation semantics is represented by a compilation token (see Compilation token). You can get the compilation token of a word w with ``w name>compile, comp' w, or [comp'] w. The first form first gets the name token of w and then accesses the compilation token with name>compile.