2
Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
4
This file is part of GNU Common Lisp, herein referred to as GCL
6
GCL is free software; you can redistribute it and/or modify it under
7
the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE as published by
8
the Free Software Foundation; either version 2, or (at your option)
11
GCL is distributed in the hope that it will be useful, but WITHOUT
12
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14
License for more details.
16
You should have received a copy of the GNU Library General Public License
17
along with GCL; see the file COPYING. If not, write to the Free Software
18
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
40
if (endp(form) || endp(MMcdr(form)))
41
FEtoo_few_argumentsF(form);
42
if (!endp(MMcddr(form)) && !endp(MMcdddr(form)))
43
FEtoo_many_argumentsF(form);
45
if (vs_base[0] == Cnil)
46
if (endp(MMcddr(form))) {
47
vs_top = vs_base = top;
70
if (type_of(clause) != t_cons)
71
FEerror("~S is an illegal COND clause.",1,clause);
73
if (vs_base[0] != Cnil) {
74
conseq = MMcdr(clause);
79
while (!endp(conseq)) {
82
conseq = MMcdr(conseq);
89
vs_base = vs_top = top;
104
FEtoo_few_argumentsF(arg);
111
if (type_of(clause) != t_cons)
112
FEerror("~S is an illegal CASE clause.",1,clause);
114
conseq = MMcdr(clause);
115
if (type_of(key) == t_cons)
117
if (eql(MMcar(key),top[0]))
120
} while (!endp(key));
121
else if (key == Cnil)
123
else if (key == Ct || key == sLotherwise || eql(key,top[0]))
127
vs_base = vs_top = top;
133
vs_base = vs_top = top;
139
conseq = MMcdr(conseq);
140
} while (!endp(conseq));
149
object *top = vs_top;
152
FEtoo_few_argumentsF(form);
154
if (vs_base[0] == Cnil) {
155
vs_base = vs_top = top;
160
vs_base = vs_top = top;
167
} while (!endp(form));
176
object *top = vs_top;
179
FEtoo_few_argumentsF(form);
181
if (vs_base[0] == Cnil) {
185
vs_base = vs_top = top;
192
} while (!endp(form));
194
vs_base = vs_top = top;
201
make_special_form("IF",Fif);
202
make_special_form("COND",Fcond);
203
make_special_form("CASE",Fcase);
204
make_special_form("WHEN",Fwhen);
205
make_special_form("UNLESS",Funless);
207
sLotherwise = make_ordinary("OTHERWISE");
208
enter_mark_origin(&sLotherwise);