Annotation of 43BSDTahoe/new/dipress/doc/intertext.me, revision 1.1

1.1     ! root        1: .bp
        !             2: .sh 1 "A Textual Representation for \*(IP"
        !             3: .sh 2 Introduction
        !             4: .lp
        !             5: This section describes a language used to represent an Interpress master in
        !             6: human readable form.
        !             7: In order to make an Interpress master compact,
        !             8: an encoding scheme is used to represent the operators and the values.  
        !             9: Although this encoding uses less disk space and results in shorter
        !            10: transmission times, it is practically impossible to examine or edit an
        !            11: Interpress master.  For this reason, the utilities \fIiptotext\fP and
        !            12: \fItexttoip\fP represent the master as a text file.
        !            13: For someone to completely use the Interpress utilities and understand the
        !            14: output, an understanding of the text representation is necessary.
        !            15: It is recommended
        !            16: that the reader of this section have a working knowledge of Interpress.
        !            17: .sh 2 Tokens
        !            18: .lp
        !            19: The keyword \*(lqHeader\*(rq indicates that the following string is the
        !            20: header that appears at the front of the Interpress file.  This keyword can
        !            21: only be used once at the top of the file.  It is not checked for validity.
        !            22: .sh 2 "Integers"
        !            23: .lp
        !            24: A series of digits optionally preceded by a plus or minus sign is an integer.
        !            25: .sh 2 "Short numbers"
        !            26: .lp
        !            27: Any integer that starts in the first column is translated into an Interpress 
        !            28: \fIshort number\fP.  This number must be in the range \(mi4000..28767.
        !            29: .sh 2 "Operators"
        !            30: .lp
        !            31: Any word that starts in the first column
        !            32: is translated into an operator, with the exceptions noted in \fIkeywords\fP.
        !            33: The \*(lqpseudo\*(rq operators are handled as follows.
        !            34: The word \*(lqBEGIN\*(rq marks
        !            35: the beginning of a block.  The word \*(lqEND\*(rq indicates the
        !            36: end of a block.  The character \*(lq{\*(rq indicates the beginning
        !            37: of a body and the character \*(lq}\*(rq indicates the end of a
        !            38: body.  All other words refer to an Interpress operator.  The names found in
        !            39: Appendix B of the \fIInterpress Electronic printing Standard\fP
        !            40: are recognized.  The case of the letters is insignificant.
        !            41: .sh 2 "Comments"
        !            42: .lp
        !            43: Anything that appears in parentheses is assumed to be a
        !            44: comment and is ignored.  These comments should not be confused with a
        !            45: comment sequence.
        !            46: .sh 2 "Sequences"
        !            47: .lp
        !            48: If the first
        !            49: character on the line is \*(lq>\*(rq then the remainder of the line
        !            50: describes a \fIsequence\fP.
        !            51: If the second character is also \*(lq>\*(rq then the
        !            52: sequence described is \fIlong\fP, otherwise it is \fIshort\fP.
        !            53: The keyword that starts
        !            54: in the third column describes the type of sequence.  The value of the
        !            55: sequence appears after the colon.  The following names are valid sequence
        !            56: names:  Comment, Identifier, Insert file, Integer, Rational, String.
        !            57: .sh 2 "Strings"
        !            58: .lp
        !            59: Strings are represented in the same way they are in C.
        !            60: A double quote is used to mark each end of the string
        !            61: and a backslash is used to indicate the start of a special
        !            62: character.  If a digit follows a backslash, it starts an octal number that
        !            63: does not exceed three digits.  This number is the octal value of the
        !            64: character represented.  For example, the string "a\e244b" consists of an
        !            65: ascii \*(lqa\*(rq followed by the octal value 244 and ending with an ascii
        !            66: \*(lqb\*(rq.  Two successive backslashes represents a single backslash and a
        !            67: backslash followed by a double quote represents a double quote.  It will not
        !            68: be uncommon in program listings to use strings like:
        !            69: "#include\ \e"file.h\e"".
        !            70: .sh 2 "Rationals"
        !            71: .lp
        !            72: A rational number is represented as a fraction with a slash separating the
        !            73: numerator and the denominator.
        !            74: For example:  \*(lq1/2\*(rq represents the rational 1 over 2.
        !            75: .sh 2 Format
        !            76: .sp
        !            77: Here is a Backus-Naur style grammar that describes the text format
        !            78: (tokens are in italics, literals are contained in double quotes):
        !            79: .sp
        !            80: .(l
        !            81: textFile ::= prelim body | body
        !            82: 
        !            83: prelim ::= file header | file | header
        !            84: 
        !            85: file ::= "File: " \fIstring\fP \fInl\fP
        !            86: 
        !            87: header ::= "Header: " \fIstring\fP \fInl\fP
        !            88: 
        !            89: body ::= line \fInl\fP\^ body | line \fInl\fP
        !            90: 
        !            91: line ::= \fIinteger\fP | \fIoperator\fP | short-long sequence
        !            92: 
        !            93: .ta \w'sequence ::= 'u
        !            94: sequence ::= "Comment: " \fIstring\fP |
        !            95:        "Identifier: " \fIidentifier\fP |
        !            96:        "Insert file: " \fIstring\fP |
        !            97:        "Integer: " \fIinteger\fP |
        !            98:        "Rational: " \fIinteger\fP\^ "/" \fIinteger\fP |
        !            99:        "String: " \fIstring\fP
        !           100: 
        !           101: short-long ::= "> " | ">>"
        !           102: .)l
        !           103: .sp
        !           104: The token \fInl\fP\^ is a newline or line terminator.
        !           105: The other italicized tokens are explained in the previous section.
        !           106: .sh 2 Omissions
        !           107: .lp
        !           108: There is currently no way to express large vectors or any
        !           109: of the pixel vectors.  There is also no way to specify a continued
        !           110: sequence.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.