Author: kzk
Date: Fri Aug 12 10:38:04 2005
New Revision: 1191
Modified:
branches/r5rs/sigscheme/eval.c
branches/r5rs/sigscheme/sigscheme.c
branches/r5rs/sigscheme/sigscheme.h
Log:
* implement "quasiquote", "unquote", "unquote-splicing"
* sigscheme/sigscheme.c
- (SigScm_Initialize): export "quasiquote", "unquote", "unquote-splicing"
* sigscheme/sigscheme.h
* sigscheme/eval.c
- implement ScmOp_quasiquote, ScmOp_unquote, ScmOp_unquote_splicing
Modified: branches/r5rs/sigscheme/eval.c
==============================================================================
--- branches/r5rs/sigscheme/eval.c (original)
+++ branches/r5rs/sigscheme/eval.c Fri Aug 12 10:38:04 2005
@@ -733,9 +733,7 @@
===========================================================================*/
ScmObj ScmOp_quote(ScmObj obj)
{
- ScmObj quotedObj = Scm_NewCons(SCM_QUOTE, obj);
-
- return quotedObj;
+ return Scm_NewCons(SCM_QUOTE, obj);
}
/*===========================================================================
@@ -1348,19 +1346,19 @@
/*===========================================================================
R5RS : 4.2 Derived expression types : 4.2.6 Quasiquotation
===========================================================================*/
-ScmObj ScmOp_quasiquote(ScmObj temp)
+ScmObj ScmOp_quasiquote(ScmObj obj)
{
- return SCM_FALSE;
+ return Scm_NewCons(SCM_QUASIQUOTE, obj);
}
-ScmObj ScmOp_unquote(ScmObj exp)
+ScmObj ScmOp_unquote(ScmObj obj)
{
- return SCM_FALSE;
+ return Scm_NewCons(SCM_UNQUOTE, obj);
}
-ScmObj ScmOp_unquote_splicint(ScmObj exp)
+ScmObj ScmOp_unquote_splicing(ScmObj obj)
{
- return SCM_FALSE;
+ return Scm_NewCons(SCM_UNQUOTE_SPLICING, obj);
}
Modified: branches/r5rs/sigscheme/sigscheme.c
==============================================================================
--- branches/r5rs/sigscheme/sigscheme.c (original)
+++ branches/r5rs/sigscheme/sigscheme.c Fri Aug 12 10:38:04 2005
@@ -110,6 +110,7 @@
/* eval.c */
Scm_RegisterFunc2("eval" , ScmOp_eval);
Scm_RegisterFuncL("apply" , ScmOp_apply);
+ Scm_RegisterFunc1("quote" , ScmOp_quote);
Scm_RegisterFuncR("lambda" , ScmExp_lambda);
Scm_RegisterFuncR("if" , ScmExp_if);
Scm_RegisterFuncR("set!" , ScmExp_set);
@@ -123,11 +124,13 @@
Scm_RegisterFuncR("begin" , ScmExp_begin);
Scm_RegisterFuncR("do" , ScmExp_do);
Scm_RegisterFuncR("delay" , ScmOp_delay);
+ Scm_RegisterFunc1("quasiquote" , ScmOp_quasiquote);
+ Scm_RegisterFunc1("unquote" , ScmOp_unquote);
+ Scm_RegisterFunc1("unquote-splicing" , ScmOp_unquote_splicing);
Scm_RegisterFuncR("define" , ScmExp_define);
Scm_RegisterFunc1("scheme-report-environment",
ScmOp_scheme_report_environment);
Scm_RegisterFunc1("null-environment" , ScmOp_null_environment);
/* operations.c */
- Scm_RegisterFunc1("quote" , ScmOp_quote);
Scm_RegisterFunc2("eqv?" , ScmOp_eqvp);
Scm_RegisterFunc2("eq?" , ScmOp_eqp);
Scm_RegisterFunc2("equal?" , ScmOp_equalp);
Modified: branches/r5rs/sigscheme/sigscheme.h
==============================================================================
--- branches/r5rs/sigscheme/sigscheme.h (original)
+++ branches/r5rs/sigscheme/sigscheme.h Fri Aug 12 10:38:04 2005
@@ -156,9 +156,9 @@
ScmObj ScmExp_begin(ScmObj arg, ScmObj *envp, int *tail_flag);
ScmObj ScmExp_do(ScmObj arg, ScmObj *envp, int *tail_flag);
ScmObj ScmOp_delay(ScmObj arg, ScmObj *envp, int *tail_flag);
-ScmObj ScmOp_quasiquote(ScmObj temp);
-ScmObj ScmOp_unquote(ScmObj exp);
-ScmObj ScmOp_unquote_splicint(ScmObj exp);
+ScmObj ScmOp_quasiquote(ScmObj obj);
+ScmObj ScmOp_unquote(ScmObj obj);
+ScmObj ScmOp_unquote_splicing(ScmObj obj);
ScmObj ScmExp_define(ScmObj arg, ScmObj *envp, int *tail_flag);
ScmObj ScmOp_scheme_report_environment(ScmObj version);
ScmObj ScmOp_null_environment(ScmObj version);