EditorDoc Sections Nuprl Doc
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html
Unstructured ML and the underlying scanner. (also doc for ML editing)

The underlying ML interpreter reads a string of chars and terms. When ML is invoked on terms in the system, it converts the term to a character/term sequence for the underlying interpreter. It fully expands operators in the term until there are none left attributed with one of the conditions "Macro" or "ml". So "structured" ML code is built from operators used as macros to expand to the appropriate text. doc for ops as macros
Then instances of [text] terms are passed as the characters filling them, and the binary
operator: <pseudo text><pseudo text>
is used for concatenation in the sequence. Terms with other operators are passed as themselves. These operators for representing text strings and concatenation can be passed as literals by enclosing the terms in <term>.

NOTE: You can also forestall the creation of structured ML and enter a text string to be parsed by ML by using the `(c-t)' command. In an ML environment, `(c-t)' will insert [ml text] into which you can enter text. Whenever the point is placed on this form of term, typically by moving up to it from the text with `{(c-k)(cm-k)}', the editor will attempt to parse it and convert it to structured ML code. If that fails, an error message will be inserted, and the user must alter the text (`(c-d)' to delete the text). IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html

EditorDoc Sections Nuprl Doc