23 lines
735 B
Plaintext
Executable File
23 lines
735 B
Plaintext
Executable File
require 'metalua.walk.id'
|
|
-{ extension 'log' }
|
|
|
|
mlp.expr.prefix:add{ '!', prec = 5,
|
|
builder = function(_,x)
|
|
local v = mlp.gensym()
|
|
return `Stat{ +{ block:
|
|
local -{v} = -{x};
|
|
(-{v}).h_boundary=true },
|
|
v }
|
|
end }
|
|
|
|
mlp.stat:add{ '!', mlp.expr, builder = |x| +{stat: (-{x[1]}).h_boundary=true } }
|
|
|
|
-- * if there's no boundary in it, is there a need to rename vars?
|
|
-- ==> first pass to mark binders which contain boundaries,
|
|
-- then 2nd pass only touched those which have a splice
|
|
-- in them.
|
|
|
|
return +{ require (-{ `String{ package.metalua_extension_prefix .. 'H-runtime' } }) }
|
|
|
|
|