diff options
| author | Dave Love | 1999-10-03 12:39:42 +0000 |
|---|---|---|
| committer | Dave Love | 1999-10-03 12:39:42 +0000 |
| commit | a933dad155af89ff3e97634c07aa09f9df0fb2b3 (patch) | |
| tree | 43be918d0d87dc41c6051df657247209b1736c82 /etc/BABYL | |
| parent | a7bfd66f45c12ca1b8c158b44c57dc56de13654c (diff) | |
| download | emacs-a933dad155af89ff3e97634c07aa09f9df0fb2b3.tar.gz emacs-a933dad155af89ff3e97634c07aa09f9df0fb2b3.zip | |
#
Diffstat (limited to 'etc/BABYL')
| -rw-r--r-- | etc/BABYL | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/etc/BABYL b/etc/BABYL new file mode 100644 index 00000000000..987d1283aba --- /dev/null +++ b/etc/BABYL | |||
| @@ -0,0 +1,176 @@ | |||
| 1 | Format of Version 5 Babyl Files: | ||
| 2 | |||
| 3 | Warning: | ||
| 4 | |||
| 5 | This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli), | ||
| 6 | based on looking at a particular Babyl file and recalling various | ||
| 7 | issues. Therefore it is not guaranteed to be complete, but it is a | ||
| 8 | start, and I will try to point the reader to various Babyl functions | ||
| 9 | that will serve to clarify certain format questions. | ||
| 10 | |||
| 11 | Also note that this file will not contain control-characters, | ||
| 12 | but instead have two-character sequences starting with Uparrow. | ||
| 13 | Unless otherwise stated, an Uparrow <character> is to be read as | ||
| 14 | Control-<character>, e.g. ^L is a Control-L. | ||
| 15 | |||
| 16 | Versions: | ||
| 17 | |||
| 18 | First, note that each Babyl file contains in its BABYL OPTIONS | ||
| 19 | section the version for the Babyl file format. In principle, the | ||
| 20 | format can be changed in any way as long as we increment the format | ||
| 21 | version number; then programs can support both old and new formats. | ||
| 22 | |||
| 23 | In practice, version 5 is the only format version used, and the | ||
| 24 | previous versions have been obsolete for so long that Emacs does not | ||
| 25 | support them. | ||
| 26 | |||
| 27 | |||
| 28 | Overall Babyl File Structure: | ||
| 29 | |||
| 30 | A Babyl file consists of a BABYL OPTIONS section followed by | ||
| 31 | 0 or more message sections. The BABYL OPTIONS section starts | ||
| 32 | with the line "BABYL OPTIONS:". Message sections start with | ||
| 33 | Control-Underscore Control-L Newline. Each section ends | ||
| 34 | with a Control-Underscore. (That is also the first character | ||
| 35 | of the starter for the next section, if any.) Thus, a three | ||
| 36 | message Babyl file looks like: | ||
| 37 | |||
| 38 | BABYL OPTIONS: | ||
| 39 | ...the stuff within the Babyl Options section... | ||
| 40 | ^_^L | ||
| 41 | ...the stuff within the 1st message section... | ||
| 42 | ^_^L | ||
| 43 | ...the stuff within the 2nd message section... | ||
| 44 | ^_^L | ||
| 45 | ...the stuff within the last message section... | ||
| 46 | ^_ | ||
| 47 | |||
| 48 | Babyl is tolerant about some whitespace at the end of the | ||
| 49 | file -- the file may end with the final ^_ or it may have some | ||
| 50 | whitespace, e.g. a newline, after it. | ||
| 51 | |||
| 52 | |||
| 53 | The BABYL OPTIONS Section: | ||
| 54 | |||
| 55 | Each Babyl option is specified on one line (thus restricting | ||
| 56 | string values these options can currently have). Values are | ||
| 57 | either numbers or strings. The format is name, colon, and the | ||
| 58 | value, with whitespace after the colon ignored, e.g.: | ||
| 59 | |||
| 60 | Mail: ~/special-inbox | ||
| 61 | |||
| 62 | Unrecognized options are ignored. | ||
| 63 | |||
| 64 | Here are those options and the kind of values currently expected: | ||
| 65 | |||
| 66 | MAIL Filename, the input mail file for this | ||
| 67 | Babyl file. You may also use several file names | ||
| 68 | separated by commas. | ||
| 69 | Version Number. This should always be 5. | ||
| 70 | Labels String, list of labels, separated by commas. | ||
| 71 | |||
| 72 | |||
| 73 | Message Sections: | ||
| 74 | |||
| 75 | A message section contains one message and information | ||
| 76 | associated with it. The first line is the "status line", which | ||
| 77 | contains a bit (0 or 1 character) saying whether the message has | ||
| 78 | been reformed yet, and a list of the labels attached to this | ||
| 79 | message. Certain labels, called basic labels, are built into | ||
| 80 | Babyl in a fundamental way, and are separated in the status line | ||
| 81 | for convenience of operation. For example, consider the status | ||
| 82 | line: | ||
| 83 | |||
| 84 | 1, answered,, zval, bug, | ||
| 85 | |||
| 86 | The 1 means this message has been reformed. This message is | ||
| 87 | labeled "answered", "zval", and "bug". The first, "answered", is | ||
| 88 | a basic label, and the other two are user labels. The basic | ||
| 89 | labels come before the double-comma in the line. Each label is | ||
| 90 | preceded by ", " and followed by ",". (The last basic label is | ||
| 91 | in fact followed by ",,".) If this message had no labels at all, | ||
| 92 | it would look like: | ||
| 93 | |||
| 94 | 1,, | ||
| 95 | |||
| 96 | Or, if it had two basic labels, "answered" and "deleted", it | ||
| 97 | would look like: | ||
| 98 | |||
| 99 | 1, answered, deleted,, zval, bug, | ||
| 100 | |||
| 101 | The & Label Babyl Message knows which are the basic labels. | ||
| 102 | Currently they are: deleted, unseen, recent, and answered. | ||
| 103 | |||
| 104 | After the status line comes the original header if any. | ||
| 105 | Following that is the EOOH line, which contains exactly the | ||
| 106 | characters "*** EOOH ***" (which stands for "end of original | ||
| 107 | header"). Note that the original header, if a network format | ||
| 108 | header, includes the trailing newline. And finally, following the | ||
| 109 | EOOH line is the visible message, header and text. For example, | ||
| 110 | here is a complete message section, starting with the message | ||
| 111 | starter, and ending with the terminator: | ||
| 112 | |||
| 113 | ^_^L | ||
| 114 | 1,, wordab, eccmacs, | ||
| 115 | Date: 11 May 1982 21:40-EDT | ||
| 116 | From: Eugene C. Ciccarelli <ECC at MIT-AI> | ||
| 117 | Subject: notes | ||
| 118 | To: ECC at MIT-AI | ||
| 119 | |||
| 120 | *** EOOH *** | ||
| 121 | Date: Tuesday, 11 May 1982 21:40-EDT | ||
| 122 | From: Eugene C. Ciccarelli <ECC> | ||
| 123 | To: ECC | ||
| 124 | Re: notes | ||
| 125 | |||
| 126 | Remember to pickup check at cashier's office, and deposit it | ||
| 127 | soon. Pay rent. | ||
| 128 | ^_ | ||
| 129 | |||
| 130 | ;;; Babyl File BNF: | ||
| 131 | |||
| 132 | ;;; Overall Babyl file structure: | ||
| 133 | |||
| 134 | |||
| 135 | Babyl-File ::= Babyl-Options-Section (Message-Section)* | ||
| 136 | |||
| 137 | |||
| 138 | ;;; Babyl Options section: | ||
| 139 | |||
| 140 | |||
| 141 | Babyl-Options-Section | ||
| 142 | ::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator | ||
| 143 | |||
| 144 | Babyl-Option ::= Option-Name ":" Horiz-Whitespace BOptValue newline | ||
| 145 | |||
| 146 | BOptValue ::= Number | 1-Line-String | ||
| 147 | |||
| 148 | |||
| 149 | |||
| 150 | ;;; Message section: | ||
| 151 | |||
| 152 | |||
| 153 | Message-Section ::= Message-Starter Status-Line Orig-Header | ||
| 154 | EOOH-Line Message Terminator | ||
| 155 | |||
| 156 | Message-Starter ::= "^L" newline | ||
| 157 | |||
| 158 | Status-Line ::= Bit-Char "," (Basic-Label)* "," (User-Label)* newline | ||
| 159 | |||
| 160 | Basic-Label ::= Space BLabel-Name "," | ||
| 161 | |||
| 162 | User-Label ::= Space ULabel-Name "," | ||
| 163 | |||
| 164 | EOOH-Line ::= "*** EOOH ***" newline | ||
| 165 | |||
| 166 | Message ::= Visible-Header Message-Text | ||
| 167 | |||
| 168 | |||
| 169 | ;;; Utilities: | ||
| 170 | |||
| 171 | Terminator ::= "^_" | ||
| 172 | |||
| 173 | Horiz-Whitespace | ||
| 174 | ::= (Space | Tab)* | ||
| 175 | |||
| 176 | Bit-Char ::= "0" | "1" | ||