2 --x <| foo | bar -> do toto end
3 --table.insert(x.cases, |$| match $ with foo|bar -> toto end )
6 local match_builder = mlp.stat:get "match"
8 function dynacase_builder (d, s)
10 local m = match_builder{ v, false, { s[1], s[2], s[3] } }
11 local c = `Function{ {v}, {m} }
12 return `Call{ `Index{ d, "extend" }, c }
15 --fixme: limiter la precedence du expr de droite
17 name = "dynamatch extension", prec=30,
19 gg.list{ name = "patterns",
22 terminators = { "->", "if" } },
23 gg.onkeyword{ "if", mlp.expr },
26 { "do", mlp.block, "end", builder = |x| x[1] },
27 default = { mlp.expr, builder = |x| { `Return{ x[1] } } } },
28 builder = |x| dyna_builder (x[1], x[3]) }