aboutsummaryrefslogtreecommitdiff
path: root/lib/metaprogramming.nom
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2017-10-31 16:19:08 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2017-10-31 16:19:08 -0700
commit6ba79a8ff1015c3d2b5c28bc61c27275f5abc2af (patch)
treebdf7a31a4192c9b3c0eace6de648af68ef9c8ccd /lib/metaprogramming.nom
parentc1ec00d5fc4bab300280f64dc55de307f860aed4 (diff)
Added support for serializing rules.
Diffstat (limited to 'lib/metaprogramming.nom')
-rw-r--r--lib/metaprogramming.nom10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/metaprogramming.nom b/lib/metaprogramming.nom
index 65a625d..ac45574 100644
--- a/lib/metaprogramming.nom
+++ b/lib/metaprogramming.nom
@@ -9,8 +9,8 @@ lua> ".."
| local body = nomsu:typecheck(vars, "body", "Thunk");
| return ([[
|nomsu:def(%s, %s, %s)
- |]]):format(nomsu:repr(signature), nomsu:tree_to_lua(body), nomsu:repr(body.src)), nil;
- |end), "<source can be found in lib/metaprogramming.nom>");
+ |]]):format(nomsu:repr(signature), nomsu:tree_to_lua(body), nomsu:repr(("rule %s\\n..=%s"):format(vars.signature.src, vars.body.src))), nil;
+ |end));
# Rule to make nomsu macros:
rule [escaped parse %shorthand as %longhand] =:
@@ -33,7 +33,7 @@ rule [escaped parse %shorthand as %longhand] =:
| end
| return nil, table.concat(lua_bits, "\\n");
|end
- |nomsu:defmacro(aliases, parsing_as, template.src);
+ |nomsu:defmacro(aliases, parsing_as, ("parse %s\\n..as %s"):format(vars.shorthand.src, vars.longhand.src));
escaped parse \[parse %shorthand as %longhand] as \: escaped parse \%shorthand as \%longhand
# Rule to make lua macros:
@@ -42,14 +42,14 @@ rule [escaped compile %macro_def to %body] =:
|local aliases = nomsu:get_stubs(nomsu:typecheck(vars, "macro_def", "List").value);
|local body = nomsu:typecheck(vars, "body", "Thunk");
|local thunk = nomsu:tree_to_value(body);
- |nomsu:defmacro(aliases, thunk, body.src);
+ |nomsu:defmacro(aliases, thunk, ("compile %s\\n..to %s"):format(vars.macro_def.src, body.src));
rule [escaped compile %macro_def to code %body] =:
lua> ".."
|local aliases = nomsu:get_stubs(nomsu:typecheck(vars, "macro_def", "List").value);
|local body = nomsu:typecheck(vars, "body", "Thunk");
|local thunk = nomsu:tree_to_value(body);
|local thunk_wrapper = function(nomsu, vars) return nil, thunk(nomsu, vars); end
- |nomsu:defmacro(aliases, thunk_wrapper, body.src);
+ |nomsu:defmacro(aliases, thunk_wrapper, ("compile %s\\n..to code %s"):format(vars.macro_def.src, body.src));
parse [compile %macro_def to %body] as: escaped compile \%macro_def to \%body
parse [compile %macro_def to code %body] as: escaped compile \%macro_def to code \%body