comparison interps/clc-intercal/CLC-INTERCAL-Base-1.-94.-2/README @ 996:859f9b4339e6

<Gregor> tar xf egobot.tar.xz
author HackBot
date Sun, 09 Dec 2012 19:30:08 +0000
parents
children
comparison
equal deleted inserted replaced
995:6883f5911eb7 996:859f9b4339e6
1 CLC-INTERCAL 1.-94.-2
2
3 "human beings are given free will in order to choose between
4 insanity on the one hand and lunacy on the other"
5 Aldous Huxley
6
7 -- - --------
8 -2 - Contents
9 -- - --------
10
11 -2 - Contents
12 -1 - Foreword
13 0 - Introduction to CLC-INTERCAL pre-pre-escape 1.-94.-2
14 1 - What has changed since CLC-INTERCAL 0.05
15 2 - How to install this escape
16 3 - How to modify the compiler(s)
17 4 - Licence
18
19
20 -- - --------
21 -1 - Foreword
22 -- - --------
23
24 A few years ago, I had, for several reasons, decided to completely GIVE UP
25 working on INTERCAL or, if you prefer, ABSTAIN FROM developing CLC-INTERCAL
26 any farther.
27
28 Of course, the flesh is weak and here I am at it again. It just so happens
29 that I am using the "compiler compiler compiler compiler" for a serious
30 project, so I am going to develop it further.
31
32
33 - - ------------ -- ------------ -------------- --------
34 0 - Introduction to CLC-INTERCAL pre-pre-escape 1.-94.-2
35 - - ------------ -- ------------ -------------- --------
36
37 It has been decided during the development of CLC-INTERCAL 0.06 that there
38 would be no further releases of CLC-INTERCAL. However, the compiler has
39 been left unattended on an FTP server, and appears to have escaped. For this
40 reason, we refer to this as an "escape" rather than a "release".
41
42 Additionally, development of CLC-INTERCAL version 0 has effectively stopped
43 before the escape of 0.06; a new versioning scheme has been introduced for
44 CLC-INTERCAL version 1. The main points to note are:
45
46 * The term "version" has been replaced by "perversion" for correctness
47 * The perversion number consists of a floating-point number with
48 independent signs for the integer and fractional part. Negative
49 fractions indicate pre-escapes (so 1.-94 means "94 pre-escapes to
50 go before 1.00". Or you can just add the numbers together and get
51 0.06, which is entirely a coincidence since 0.06 is not being
52 developed)
53 * The fractional part of a perversion number can be integer or floating
54 point, with a similar meaning for the parts. The current pre-escape is
55 1.-94.-2 which means "2 pre-pre-escapes to go before pre-escape 1.-94".
56
57 The fact that the compiler has escaped does not allow you to use without
58 reference to its licence: see the end of this document or the file COPYING.
59
60 Since this is a pre-pre-escape, there are parts which are unimplemented
61 or partially implemented. The file "MISSING" describes what is missing.
62 There might also parts which are implemented but are intended to be left
63 implemented: these will be removed from the final escapes.
64
65
66 - - ---- --- ------- ----- ------------ ----
67 1 - What has changed since CLC-INTERCAL 0.05
68 - - ---- --- ------- ----- ------------ ----
69
70 Just about everything. See the file "Changes" for a complete list, or see
71 the following executive summary.
72
73 The code is a complete rewrite. The "CREATE" statement which was documented
74 but not implemented has now been implemented (in a different form) and not
75 documented. This means that the compiler only needs to know about one
76 statement, "CREATE", and everything else can be created on-the-fly. This is
77 why the compiler itself and the various compatibility modules now include
78 INTERCAL source code consisting almost exclusively of "CREATE" statements.
79
80 This made it a lot easier to extend the language by specifying new features
81 in INTERCAL instead of Perl. Most statements have been modified to allow
82 creation of quantum bits. For example, it is possible to create 16 quantum
83 bits in one operation by assigning to a register while not assigning to it.
84 It goes without saying that the practice is not recommended if you don't
85 actually possess a quantum computer.
86
87 A new statement, "NEXT FROM", combines all the advantages of "COME FROM" and
88 "NEXT". It has been implemented essentially to provide a system call
89 interface, where the operating system is supposed to have a "NEXT FROM"
90 lurking in its darkest corner. See the last entry in the file "Changes"
91 for a complete description of the system call interface. Since this is
92 INTERCAL, the syscall interface is entirely system independent. System
93 dependent system calls are not supported.
94
95 All old programs should work unchanged (modulo the unimplemented parts, but
96 this is due to change as the perversion number progresses towards 1.00).
97 Programs intended for different compilers can also be compiled by selecting
98 a different compiler object (for example, "ick.iacc" provides compatibility
99 with the C-INTERCAL compiler "ick", and "1972.iacc" with the original
100 Princeton compiler). All these compiler object must be first compiled using
101 "iacc.iacc", the INTERCAL Astonishing Compiler Compiler, which is also used to
102 compile itself before compiling other compilers. A pre-compiled version is
103 provided in this escape otherwise you'll never get started.
104
105 The command-line compiler "oo, ick" and the inline module "Language::INTERCAL"
106 are not currently provided. They have been replaced by the compiler "sick"
107 and the module "Language::INTERCAL::Sick" respectively, which have a rather
108 different usage. A compatibility "oo, ick" and "Language::INTERCAL" is
109 intended to appear in a future pre-escape, and certainly before the escape.
110
111 The former "on-line reference", has been included in the distribution in
112 directory doc/html; it has been adapted for CLC-INTERCAL 1.-94; however
113 some new features might be still undocumented or underdocumented. Some of
114 the HTML documents are included as templates: the actual documentation
115 will be produced in blib/htmldoc
116
117
118 - - --- -- ------- ---- ------
119 2 - How to install this escape
120 - - --- -- ------- ---- ------
121
122 To unpack the distribution you need the following:
123
124 * A command interpreter compatible with the Bourne shell
125 * the "dd" program
126 * optionally, gzip and/or bzip2
127
128 If necessary, uncompress the distribution:
129
130 gzip -d CLC-INTERCAL-1.-94.-2.ddsh.gz
131
132 or:
133
134 bzip2 -d CLC-INTERCAL-1.-94.-2.ddsh.bz2
135
136 Unpack the distribution:
137
138 sh CLC-INTERCAL-1.-94.-2.ddsh
139
140 Create the Makefile:
141
142 cd CLC-INTERCAL-1.-94.-2
143 perl Makefile.PL
144
145 Build the compilers:
146
147 make
148
149 See if everything works:
150
151 make test
152
153 And install:
154
155 make install
156
157 It is possible that, by the time you read this, we have provided two
158 alternative versions of some modules: pure Perl and Perl-with-C. The latter
159 is likely to be better in some way (speed, size), otherwise we would not
160 provide it. If Makefile.PL finds that alternative versions are available,
161 it will ask which one you want to install. In general, the pure Perl versions
162 will work as long as your Perl installation works; the Perl-with-C should
163 work but might break because your C compiler is not the same as mine, or
164 simply because it's C and it's more self-obfuscating than INTERCAL. If it
165 does not work, install the pure Perl version. If that does not work either,
166 you have found an unimplemented feature. Congratulations.
167
168 The "make" and "make test" will take some time: "make" will run IACC (the
169 INTERCAL Astonishing Compiler Compiler) to build itself and all the other
170 compilers, and this is not quite a quick job. The "make test" will test
171 all parts of the compiler, including the Virual Machine, the Quantum
172 Emulator and the Just-Too-Late compiler. Have a coffee break, or read the
173 source code and try to figure out how it works. If you can figure out how
174 it works, please tell me, because I cannot.
175
176
177 - - --- -- ------ --- -----------
178 3 - How to modify the compiler(s)
179 - - --- -- ------ --- -----------
180
181 The compiler and the compiler compiler are currently underdocumented
182 (which means that there is no documentation whatsoever). If you feel
183 the urge to modify the compiler itself, ignore the Perl runtime library
184 and edit the file "sick.iacc", which would have been installed somewhere
185 system dependent. If you have write permission to this system dependent
186 location and your command interpreter is compatible with the Bourne Shell,
187 you can locate the file and edit it by simply typing (all in one line, we
188 show it in separate lines for readability):
189
190 sh -c '${EDITOR-vi} `sick -vo/dev/null sick.iacc 2>&1 |
191 head -1 | sed -e "s/\.\.\. \[.*$//"`'
192
193 If you would rather not type the above, or you have no write permission to
194 the appropriate place (or if you have an inferior command interpreter), try:
195
196 sick -vo/dev/null sick.iacc
197
198 The complete path will appear in the first line of the output, so you can copy
199 or edit it. You do want to copy it in case you break it:
200
201 sh -c 'cp `sick -vo/dev/null sick.iacc 2>&1 |\
202 head -1 | sed -e "s/\.\.\. \[.*$//"` iacc.io.SAFE'
203
204 When you have edited the file, rebuild the compiler object with:
205
206 sick sick.iacc
207
208 If you have edited a copy, type that from the directory where you left the
209 edited copy, or "sick" won't find it (but see the "-I" command line option)
210
211 A similar consideration applies to rebuilding IACC (the INTERCAL Astonishing
212 Compiler Compiler). However, in this case you need to make a copy of "iacc.io"
213 as well as "iacc.iacc":
214
215 sh -c 'cp `sick -vo/dev/null iacc.iacc 2>&1 |\
216 head -1 | sed -e "s/\.\.\. \[.*$//"` iacc.io.SAFE'
217 sh -c 'cp `sick -vo/dev/null iacc.io 2>&1 |\
218 head -1 | sed -e "s/\.\.\. \[.*$//"` iacc.io.SAFE'
219 sh -c '${EDITOR-vi} `sick -vo/dev/null iacc.iacc 2>&1 |\
220 head -1 | sed -e "s/\.\.\. \[.*$//"`'
221 sick iacc.iacc
222
223 If you break "iacc.io" you won't be able to recompile "iacc" unless you
224 re-install CLC-INTERCAL or use the copy you just made.
225
226
227 - - -------
228 4 - Licence
229 - - -------
230
231 Copyright (c) 2006-2008 Claudio Calvelli <intercal@sdf.lonestar.org>
232 (Please include the word INTERLEAVING in the subject when emailing that
233 address, or the email may be ignored)
234
235 In addition to the above, permission is hereby granted to use, misuse,
236 modify, distribute, break, fix again, etcetera CLC-INTERCAL-1.-94.-2
237 provided that the following conditions are met:
238
239 1. Redistributions of source code must retain the above copyright
240 notice, this list of conditions and the following disclaimer.
241 2. Redistributions in binary form must reproduce the above copyright
242 notice, this list of conditions and the following disclaimer in the
243 documentation and/or other materials provided with the distribution.
244 3. Neither the name of the Author nor the names of its contributors
245 may be used to endorse or promote products derived from this software
246 without specific prior written permission.
247
248 THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
249 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
250 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
251 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
252 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
253 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
254 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
255 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
256 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
257 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
258 SUCH DAMAGE.
259