ref: 6a277f5b5fd8b91b71aba6352118f004b1f4fc3a
parent: 02e52de48838943242250b85d2bf23c97755111f
author: smazga <[email protected]>
date: Tue Aug 25 12:54:09 EDT 2020
macro
--- a/macro.ml
+++ b/macro.ml
@@ -29,40 +29,26 @@
match transforms with
| hd :: tl ->
print_endline ("__ hd: " ^ Printer.print hd true);
- print_endline ("__ arg length: " ^ string_of_int (List.length args));
print_endline ("__ args: " ^ Printer.dump args);
(match hd with
| T.List
{ T.value = [ T.List { T.value = pattern }; T.List { T.value = template } ] }
->
- print_endline (" _ pattern: " ^ Printer.dump pattern);
- print_endline
- ("__ pattern length: "
- ^ string_of_int (List.length pattern)
- ^ " template: "
- ^ Printer.dump template)
+ print_endline (" _ multi pattern: " ^ Printer.dump pattern)
| T.List { T.value = [ T.List { T.value = pattern }; atom ] } ->
- let rec wrangle p a pp =
- (match (p, a) with
- | sh :: st, ph :: pt ->
- print_endline (">>>>> sh:" ^ (Printer.print sh true) ^ " ph:" ^ (Printer.print ph true)); wrangle st pt pp
- | sh :: st, [] ->
- print_endline (">>>>> sh:" ^ (Printer.print sh true));
- let ss = Printer.print sh true in
- let x = if ss = "_" then sym else (if List.mem sh (Core.seq literals) then sh else (T.String "")) in
- wrangle st args []
- | _, _ -> "<end>") in
- print_endline ("wrangle: " ^ wrangle pattern (Core.seq args) []);
- print_endline (" _ pattern: " ^ Printer.dump pattern);
- print_endline
- ("__ atomic pattern length: "
- ^ string_of_int (List.length pattern)
- ^ " atom: "
- ^ Printer.print atom true)
+ let rec foobar p a pp =
+ (match p, a with
+ | ph :: pt, ah :: at ->
+ print_endline "one"; foobar pt at (pp @ [T.Nil])
+ | ph :: pt, [] ->
+ print_endline "two"; foobar pt [] (pp @ [T.Nil])
+ | _, _ -> print_endline ("three: " ^ Printer.dump pp); pp) in
+ print_endline ("foobar: " ^ Printer.dump (foobar pattern args []));
+ print_endline "out";
+ (* let tweaked = Str.global_replace (Str.regexp "^_") (Printer.print sym true) (Printer.dump pattern) in
+ * print_endline ("tweaked: " ^ tweaked); *)
+ print_endline (" _ single pattern: " ^ Printer.dump pattern)
| _ -> ());
- let foo = Reader.read (Printer.print hd false) in
- print_endline (" foo: " ^ Printer.print foo true);
- (* print_endline ("__ transform length: " ^ string_of_int (List.length foo)); *)
match_transform tl
| [] -> ()
in