c
This commit is contained in:
23
example.lsp
23
example.lsp
@@ -25,14 +25,13 @@
|
|||||||
(':t (':str-cat (':t2ot-elt k) ":")))
|
(':t (':str-cat (':t2ot-elt k) ":")))
|
||||||
|
|
||||||
(:macro @ ( (k(:c-paren-eval _)) v )
|
(:macro @ ( (k(:c-paren-eval _)) v )
|
||||||
(':t k ": " v))
|
(':t (':dict-key (':atm-to-str k)) v))
|
||||||
|
|
||||||
(:macro @ ( (k(:c-paren-eval _)) (v(:c-atm _)) )
|
(:macro @ ( (k(:c-paren-eval _)) (v(:c-paren-eval _)) )
|
||||||
(':t (':str-cat (':str-cat (':atm-to-str k) ": ") (':atm-to-str v) )))
|
(':t (':str-cat (':str-cat (':atm-to-str k) ": ") (':atm-to-str v) )))
|
||||||
|
|
||||||
(:macro @ ( (k(:c-paren-eval _)) v .. other)
|
(:macro @ ( (k(:c-paren-eval _)) v .. other)
|
||||||
(k v)
|
(':t (':dict-key (':atm-to-str k)) v other))
|
||||||
other)
|
|
||||||
|
|
||||||
(:macro t2ot-elt ( hd )
|
(:macro t2ot-elt ( hd )
|
||||||
(':atm-to-str hd))
|
(':atm-to-str hd))
|
||||||
@@ -57,9 +56,14 @@
|
|||||||
(':indent hd)
|
(':indent hd)
|
||||||
(':indent tl))
|
(':indent tl))
|
||||||
|
|
||||||
|
(:macro indent-each ())
|
||||||
|
|
||||||
|
(:macro indent-each ( hd )
|
||||||
|
(':indent hd))
|
||||||
|
|
||||||
(:macro indent-each ( hd .. tl )
|
(:macro indent-each ( hd .. tl )
|
||||||
(':indent hd)
|
(':indent hd)
|
||||||
(':indent tl))
|
(':indent-each tl))
|
||||||
|
|
||||||
(:macro rm-first (x .. tl)
|
(:macro rm-first (x .. tl)
|
||||||
tl)
|
tl)
|
||||||
@@ -67,6 +71,15 @@
|
|||||||
(:macro indent ( (x(:c-li0-eq _ :tree)) )
|
(:macro indent ( (x(:c-li0-eq _ :tree)) )
|
||||||
(':tree (':indent-each (':rm-first (':unpack x)))))
|
(':tree (':indent-each (':rm-first (':unpack x)))))
|
||||||
|
|
||||||
|
(:macro indent ( (x(:c-li0-eq _ :atm-to-str)) )
|
||||||
|
(':atm-to-str (':indent-each (':rm-first (':unpack x)))))
|
||||||
|
|
||||||
|
(:macro indent ( (x(:c-li0-eq _ :yot)) )
|
||||||
|
(':yot (':indent-each (':rm-first (':unpack x)))))
|
||||||
|
|
||||||
|
(:macro indent ( (x(:c-li0-eq _ :dict-key)) )
|
||||||
|
(':dict-key (':indent-each (':rm-first (':unpack x)))))
|
||||||
|
|
||||||
(name "Complex CI/CD Pipeline")
|
(name "Complex CI/CD Pipeline")
|
||||||
|
|
||||||
(on
|
(on
|
||||||
|
17
sexpr.ml
17
sexpr.ml
@@ -830,11 +830,17 @@ module SExprMacroExp = struct
|
|||||||
else
|
else
|
||||||
s, ctx
|
s, ctx
|
||||||
end
|
end
|
||||||
|
and eval_root_while ctx s = begin
|
||||||
|
let s, ch, ctx = eval ctx s in
|
||||||
|
if ch then
|
||||||
|
SExpr.aggr_flat_map eval_root_while ctx s
|
||||||
|
else
|
||||||
|
s, ctx
|
||||||
|
end
|
||||||
|
|
||||||
let do_eval s =
|
let do_eval s =
|
||||||
eval_while [] s |> fst
|
eval_root_while [] s |> fst
|
||||||
|
|
||||||
(* only use this for testing! *)
|
|
||||||
let sparse src =
|
let sparse src =
|
||||||
PC.doparse
|
PC.doparse
|
||||||
Format.err_formatter
|
Format.err_formatter
|
||||||
@@ -925,13 +931,8 @@ let read_all_stdin () =
|
|||||||
|
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
let parsr = SExpr.parse_top () in
|
|
||||||
let src = read_all_stdin () in
|
let src = read_all_stdin () in
|
||||||
let v = PC.doparse
|
let v = SExprMacroExp.sparse src in
|
||||||
Format.err_formatter
|
|
||||||
{ source = src; path = "top" }
|
|
||||||
parsr in
|
|
||||||
let v = Option.get v in
|
|
||||||
let v = SExprMacroExp.do_eval v in
|
let v = SExprMacroExp.do_eval v in
|
||||||
|
|
||||||
Format.set_margin 40;
|
Format.set_margin 40;
|
||||||
|
Reference in New Issue
Block a user