Heredoc is a way to format text and is part of the preprocessor. This facility makes it easier to format text for help messages, room descriptions, etc.
    Syntax 1:   @marker
                  <... text block ...>
                marker
    
    Syntax 2:   @@marker
                  <... text block ...>
                marker
Notes:
    @   - produces a string suitable for write()

    @@  - produces an array of strings, suitable for the body pager
These are used by prepending '@' (or '@@') before an end marker word. This is followed by your formatted text, as you would have it appear to the user. The text block is terminated by the end marker word, without the '@' (or '@@'). With '@', the text block is processed as if it were a single string surrounded by quotes and '\n' (newlines) in between the lines. With '@@', the text block is processed as it were an array of strings, with each line being a string surrounded by quotes.
Example 1:

        int help() {
            write( @ENDHELP
        This is the help text.
        It's hopelessly inadequate.
        ENDHELP
              );
            return 1;
        }

Is equivalent to:
        int help() {
            write( "This is the help text\nIt's hopelessly inadequate.\n" );
            return 1;
        }
Example 2:
        int help() {
            this_player()->more( @@ENDHELP
        This is the help text.
        It's hopelessly inadequate.
        ENDHELP
              , 1);
            return 1;
        }
Is equivalent to:
        int help() {
            this_player()->more( ({ "This is the help text.",
                  "It's hopelessly inadequate." }), 1);
            return 1;
        }