94 |
|
|
95 |
|
|
96 |
/* {Evaluator} |
/* {Evaluator} |
|
* |
|
|
* For an explanation of symbols containing "EVAL", see beginning of eval.c. |
|
97 |
*/ |
*/ |
|
#define SCM_EVALIM2(x) \ |
|
|
((SCM_EQ_P ((x), SCM_EOL) \ |
|
|
? scm_misc_error (NULL, scm_s_expression, SCM_EOL), 0 \ |
|
|
: 0), \ |
|
|
(x)) |
|
|
#define SCM_EVALIM(x, env) (SCM_ILOCP (x) \ |
|
|
? *scm_ilookup ((x), env) \ |
|
|
: SCM_EVALIM2(x)) |
|
|
#define SCM_XEVAL(x, env) (SCM_IMP (x) \ |
|
|
? SCM_EVALIM2(x) \ |
|
|
: (*scm_ceval_ptr) ((x), (env))) |
|
|
#define SCM_XEVALCAR(x, env) (SCM_IMP (SCM_CAR (x)) \ |
|
|
? SCM_EVALIM (SCM_CAR (x), env) \ |
|
|
: (SCM_SYMBOLP (SCM_CAR (x)) \ |
|
|
? *scm_lookupcar (x, env, 1) \ |
|
|
: (*scm_ceval_ptr) (SCM_CAR (x), env))) |
|
98 |
|
|
99 |
typedef SCM (*scm_t_trampoline_0) (SCM proc); |
typedef SCM (*scm_t_trampoline_0) (SCM proc); |
100 |
typedef SCM (*scm_t_trampoline_1) (SCM proc, SCM arg1); |
typedef SCM (*scm_t_trampoline_1) (SCM proc, SCM arg1); |
110 |
|
|
111 |
|
|
112 |
|
|
|
SCM_API const char scm_s_expression[]; |
|
|
SCM_API const char scm_s_test[]; |
|
|
SCM_API const char scm_s_body[]; |
|
|
SCM_API const char scm_s_bindings[]; |
|
|
SCM_API const char scm_s_variable[]; |
|
|
SCM_API const char scm_s_clauses[]; |
|
|
SCM_API const char scm_s_formals[]; |
|
|
|
|
113 |
SCM_API SCM scm_sym_and; |
SCM_API SCM scm_sym_and; |
114 |
SCM_API SCM scm_sym_begin; |
SCM_API SCM scm_sym_begin; |
115 |
SCM_API SCM scm_sym_case; |
SCM_API SCM scm_sym_case; |