Revert "core: Remove pmatch-car, pmatch-cdr hack."
This reverts commit be1e84624ea4a158173f34af923e3c4a3793412a.
This commit is contained in:
parent
c03449ac5a
commit
1400489a94
|
@ -42,12 +42,17 @@
|
||||||
core:write
|
core:write
|
||||||
core:write-error
|
core:write-error
|
||||||
core:write-port
|
core:write-port
|
||||||
core:type)
|
core:type
|
||||||
|
pmatch-car
|
||||||
|
pmatch-cdr
|
||||||
|
)
|
||||||
;;#:re-export (open-input-file open-input-string with-input-from-string)
|
;;#:re-export (open-input-file open-input-string with-input-from-string)
|
||||||
)
|
)
|
||||||
|
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(guile
|
(guile
|
||||||
|
(define pmatch-car car)
|
||||||
|
(define pmatch-cdr cdr)
|
||||||
(define core:exit exit)
|
(define core:exit exit)
|
||||||
(define core:display display)
|
(define core:display display)
|
||||||
(define core:display-port display)
|
(define core:display-port display)
|
||||||
|
|
|
@ -74,6 +74,6 @@
|
||||||
((_ v (unquote var) kt kf) (let ((var v)) kt))
|
((_ v (unquote var) kt kf) (let ((var v)) kt))
|
||||||
((_ v (x . y) kt kf)
|
((_ v (x . y) kt kf)
|
||||||
(if (pair? v)
|
(if (pair? v)
|
||||||
(ppat (car v) x (ppat (cdr v) y kt kf) kf)
|
(ppat (pmatch-car v) x (ppat (pmatch-cdr v) y kt kf) kf)
|
||||||
kf))
|
kf))
|
||||||
((_ v lit kt kf) (if (eq? v (quote lit)) kt kf))))
|
((_ v lit kt kf) (if (eq? v (quote lit)) kt kf))))
|
||||||
|
|
|
@ -135,6 +135,8 @@ struct scm scm_symbol_mes_version = {TSYMBOL, "%version",0};
|
||||||
|
|
||||||
struct scm scm_symbol_car = {TSYMBOL, "car",0};
|
struct scm scm_symbol_car = {TSYMBOL, "car",0};
|
||||||
struct scm scm_symbol_cdr = {TSYMBOL, "cdr",0};
|
struct scm scm_symbol_cdr = {TSYMBOL, "cdr",0};
|
||||||
|
struct scm scm_symbol_pmatch_car = {TSYMBOL, "pmatch-car",0};
|
||||||
|
struct scm scm_symbol_pmatch_cdr = {TSYMBOL, "pmatch-cdr",0};
|
||||||
|
|
||||||
struct scm scm_vm_evlis = {TSPECIAL, "*vm-evlis*",0};
|
struct scm scm_vm_evlis = {TSPECIAL, "*vm-evlis*",0};
|
||||||
struct scm scm_vm_evlis2 = {TSPECIAL, "*vm-evlis2*",0};
|
struct scm scm_vm_evlis2 = {TSPECIAL, "*vm-evlis2*",0};
|
||||||
|
@ -143,6 +145,8 @@ struct scm scm_vm_apply = {TSPECIAL, "core:apply",0};
|
||||||
struct scm scm_vm_apply2 = {TSPECIAL, "*vm-apply2*",0};
|
struct scm scm_vm_apply2 = {TSPECIAL, "*vm-apply2*",0};
|
||||||
struct scm scm_vm_eval = {TSPECIAL, "core:eval",0};
|
struct scm scm_vm_eval = {TSPECIAL, "core:eval",0};
|
||||||
|
|
||||||
|
struct scm scm_vm_eval_pmatch_car = {TSPECIAL, "*vm-eval-pmatch-car*",0};
|
||||||
|
struct scm scm_vm_eval_pmatch_cdr = {TSPECIAL, "*vm-eval-pmatch-cdr*",0};
|
||||||
struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
|
struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
|
||||||
|
|
||||||
struct scm scm_vm_eval_set_x = {TSPECIAL, "*vm-eval-set!*",0};
|
struct scm scm_vm_eval_set_x = {TSPECIAL, "*vm-eval-set!*",0};
|
||||||
|
|
42
src/mes.c
42
src/mes.c
|
@ -177,6 +177,8 @@ struct scm scm_symbol_mes_version = {TSYMBOL, "%version",0};
|
||||||
|
|
||||||
struct scm scm_symbol_car = {TSYMBOL, "car",0};
|
struct scm scm_symbol_car = {TSYMBOL, "car",0};
|
||||||
struct scm scm_symbol_cdr = {TSYMBOL, "cdr",0};
|
struct scm scm_symbol_cdr = {TSYMBOL, "cdr",0};
|
||||||
|
struct scm scm_symbol_pmatch_car = {TSYMBOL, "pmatch-car",0};
|
||||||
|
struct scm scm_symbol_pmatch_cdr = {TSYMBOL, "pmatch-cdr",0};
|
||||||
|
|
||||||
struct scm scm_vm_evlis = {TSPECIAL, "*vm-evlis*",0};
|
struct scm scm_vm_evlis = {TSPECIAL, "*vm-evlis*",0};
|
||||||
struct scm scm_vm_evlis2 = {TSPECIAL, "*vm-evlis2*",0};
|
struct scm scm_vm_evlis2 = {TSPECIAL, "*vm-evlis2*",0};
|
||||||
|
@ -185,6 +187,8 @@ struct scm scm_vm_apply = {TSPECIAL, "core:apply",0};
|
||||||
struct scm scm_vm_apply2 = {TSPECIAL, "*vm-apply2*",0};
|
struct scm scm_vm_apply2 = {TSPECIAL, "*vm-apply2*",0};
|
||||||
struct scm scm_vm_eval = {TSPECIAL, "core:eval",0};
|
struct scm scm_vm_eval = {TSPECIAL, "core:eval",0};
|
||||||
|
|
||||||
|
struct scm scm_vm_eval_pmatch_car = {TSPECIAL, "*vm-eval-pmatch-car*",0};
|
||||||
|
struct scm scm_vm_eval_pmatch_cdr = {TSPECIAL, "*vm-eval-pmatch-cdr*",0};
|
||||||
struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
|
struct scm scm_vm_eval_define = {TSPECIAL, "*vm-eval-define*",0};
|
||||||
|
|
||||||
struct scm scm_vm_eval_set_x = {TSPECIAL, "*vm-eval-set!*",0};
|
struct scm scm_vm_eval_set_x = {TSPECIAL, "*vm-eval-set!*",0};
|
||||||
|
@ -971,6 +975,8 @@ eval_apply ()
|
||||||
case cell_vm_apply: goto apply;
|
case cell_vm_apply: goto apply;
|
||||||
case cell_vm_apply2: goto apply2;
|
case cell_vm_apply2: goto apply2;
|
||||||
case cell_vm_eval: goto eval;
|
case cell_vm_eval: goto eval;
|
||||||
|
case cell_vm_eval_pmatch_car: goto eval_pmatch_car;
|
||||||
|
case cell_vm_eval_pmatch_cdr: goto eval_pmatch_cdr;
|
||||||
case cell_vm_eval_define: goto eval_define;
|
case cell_vm_eval_define: goto eval_define;
|
||||||
case cell_vm_eval_set_x: goto eval_set_x;
|
case cell_vm_eval_set_x: goto eval_set_x;
|
||||||
case cell_vm_eval_macro_expand_eval: goto eval_macro_expand_eval;
|
case cell_vm_eval_macro_expand_eval: goto eval_macro_expand_eval;
|
||||||
|
@ -1117,6 +1123,26 @@ eval_apply ()
|
||||||
{
|
{
|
||||||
switch (CAR (r1))
|
switch (CAR (r1))
|
||||||
{
|
{
|
||||||
|
case cell_symbol_pmatch_car:
|
||||||
|
{
|
||||||
|
push_cc (CADR (r1), r1, r0, cell_vm_eval_pmatch_car);
|
||||||
|
goto eval;
|
||||||
|
eval_pmatch_car:
|
||||||
|
x = r1;
|
||||||
|
gc_pop_frame ();
|
||||||
|
r1 = CAR (x);
|
||||||
|
goto eval_apply;
|
||||||
|
}
|
||||||
|
case cell_symbol_pmatch_cdr:
|
||||||
|
{
|
||||||
|
push_cc (CADR (r1), r1, r0, cell_vm_eval_pmatch_cdr);
|
||||||
|
goto eval;
|
||||||
|
eval_pmatch_cdr:
|
||||||
|
x = r1;
|
||||||
|
gc_pop_frame ();
|
||||||
|
r1 = CDR (x);
|
||||||
|
goto eval_apply;
|
||||||
|
}
|
||||||
case cell_symbol_quote:
|
case cell_symbol_quote:
|
||||||
{
|
{
|
||||||
x = r1;
|
x = r1;
|
||||||
|
@ -1695,6 +1721,12 @@ g_cells[cell_symbol_car] = scm_symbol_car;
|
||||||
g_free++;
|
g_free++;
|
||||||
g_cells[cell_symbol_cdr] = scm_symbol_cdr;
|
g_cells[cell_symbol_cdr] = scm_symbol_cdr;
|
||||||
|
|
||||||
|
g_free++;
|
||||||
|
g_cells[cell_symbol_pmatch_car] = scm_symbol_pmatch_car;
|
||||||
|
|
||||||
|
g_free++;
|
||||||
|
g_cells[cell_symbol_pmatch_cdr] = scm_symbol_pmatch_cdr;
|
||||||
|
|
||||||
g_free++;
|
g_free++;
|
||||||
g_cells[cell_vm_evlis] = scm_vm_evlis;
|
g_cells[cell_vm_evlis] = scm_vm_evlis;
|
||||||
|
|
||||||
|
@ -1713,6 +1745,12 @@ g_cells[cell_vm_apply2] = scm_vm_apply2;
|
||||||
g_free++;
|
g_free++;
|
||||||
g_cells[cell_vm_eval] = scm_vm_eval;
|
g_cells[cell_vm_eval] = scm_vm_eval;
|
||||||
|
|
||||||
|
g_free++;
|
||||||
|
g_cells[cell_vm_eval_pmatch_car] = scm_vm_eval_pmatch_car;
|
||||||
|
|
||||||
|
g_free++;
|
||||||
|
g_cells[cell_vm_eval_pmatch_cdr] = scm_vm_eval_pmatch_cdr;
|
||||||
|
|
||||||
g_free++;
|
g_free++;
|
||||||
g_cells[cell_vm_eval_define] = scm_vm_eval_define;
|
g_cells[cell_vm_eval_define] = scm_vm_eval_define;
|
||||||
|
|
||||||
|
@ -1872,6 +1910,8 @@ g_cells[cell_symbol_mes_prefix].car = cstring_to_list (scm_symbol_mes_prefix.nam
|
||||||
g_cells[cell_symbol_mes_version].car = cstring_to_list (scm_symbol_mes_version.name);
|
g_cells[cell_symbol_mes_version].car = cstring_to_list (scm_symbol_mes_version.name);
|
||||||
g_cells[cell_symbol_car].car = cstring_to_list (scm_symbol_car.name);
|
g_cells[cell_symbol_car].car = cstring_to_list (scm_symbol_car.name);
|
||||||
g_cells[cell_symbol_cdr].car = cstring_to_list (scm_symbol_cdr.name);
|
g_cells[cell_symbol_cdr].car = cstring_to_list (scm_symbol_cdr.name);
|
||||||
|
g_cells[cell_symbol_pmatch_car].car = cstring_to_list (scm_symbol_pmatch_car.name);
|
||||||
|
g_cells[cell_symbol_pmatch_cdr].car = cstring_to_list (scm_symbol_pmatch_cdr.name);
|
||||||
|
|
||||||
g_cells[cell_vm_evlis].car = cstring_to_list ("*vm*");
|
g_cells[cell_vm_evlis].car = cstring_to_list ("*vm*");
|
||||||
g_cells[cell_vm_evlis2].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_evlis2].car = g_cells[cell_vm_evlis].car;
|
||||||
|
@ -1879,6 +1919,8 @@ g_cells[cell_vm_evlis3].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_apply].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_apply].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_apply2].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_apply2].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_eval].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_eval].car = g_cells[cell_vm_evlis].car;
|
||||||
|
g_cells[cell_vm_eval_pmatch_car].car = g_cells[cell_vm_evlis].car;
|
||||||
|
g_cells[cell_vm_eval_pmatch_cdr].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_eval_define].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_eval_define].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_eval_set_x].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_eval_set_x].car = g_cells[cell_vm_evlis].car;
|
||||||
g_cells[cell_vm_eval_macro_expand_eval].car = g_cells[cell_vm_evlis].car;
|
g_cells[cell_vm_eval_macro_expand_eval].car = g_cells[cell_vm_evlis].car;
|
||||||
|
|
Loading…
Reference in a new issue