CONCEPT
        character escape codes

DESCRIPTION
	Character escape codes are used to represent some common
	special characters that would be awkward or impossible to
	enter in the source program directly. The escape characters
	come in two varieties: 'character escapes', which can be
	used to represent some particular formatting and special
	characters, and 'numeric escapes', which allow a character to
	be specified by its numeric encoding.

	Escapes begin always with a backslash '\'. If the following
	characters could not be treated as a valid escape the backslash
	is merely ignored.

	The following character escapes are available in LPC (the code
	may differ from platform to platform):

	  \a    Code 007    Bell
          \b    Code 008    Backspace
          \e    Code 027    Escape
	  \f    Code 012    Formfeed
	  \n    Code 010    Newline
	  \r    Code 013    Carriage-Return
	  \t    Code 009    Tabulator
	  \\    Code 092    Backslash itself
	  \'    Code 039    Single quote
	  \"    Code 034    Double quote

	The single quote may appear without preceding backslash in character
	constants, and the double quote may appear without a backslash in
	string constants.

	The numeric escapes could be used to express a character directly
	by its code in binary, octal, decimal or hexadecimal notation.
	
	  \0b     Beginning of binary notation
	  \0o     Beginning of octal notation
	  \0x     Beginning of hexadecimal notation
	  \x      Beginning of hexadecimal notation
	  \u, \U  Beginning of extended hexadecimal notation

	A backslash followed by a digit ([0-9]) which does not map to one
	of the above starts an escape in decimal notation.

	A numeric escape terminates when N digits have been used up or
	when the first character that is not a valid digit in that
	notation is encountered. N is 2 for hexadeximals with \0x and \x,
	3 for decimals and octals, 4 for hexadecimals with \u,
	8 for binarys and for hexadecimals with \U.

	If the specified code is greater than 255 a warning is issued and
	the value modulo 256 is used (except for \u and \U).

EXAMPLES
	Put a newline at the end of user output
	  "You enter.\n"

	Alert the user
	  "Beeep.\a Wake up\n"

	Put a double quote in a string
	  "You say \"hello\"\n"

	Write the line from above
	  "\"You say \\\"hello\\\"\\n\""

	Put a single quote in a string
	  "You say 'hello'\n"

	Some forms to write "abcde"
	  "abcde"
	  "ab\99de"              (with c's code being 99)
	  "ab\099de"
	  "ab\x63de"             (99 = 0x63)
	  "ab\0x63de"

	The following string consists of two characters
	  "\0111"                (\011 and 1)

	The following string consists of three characters
	  "\0o090"               (\000 and 9 and 0)
