aboutsummaryrefslogtreecommitdiff
path: root/lib/metaprogramming.nom
diff options
context:
space:
mode:
Diffstat (limited to 'lib/metaprogramming.nom')
-rw-r--r--lib/metaprogramming.nom28
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/metaprogramming.nom b/lib/metaprogramming.nom
index bf4d79a..d167fef 100644
--- a/lib/metaprogramming.nom
+++ b/lib/metaprogramming.nom
@@ -3,7 +3,7 @@
that easier.
# Rule to make rules:
-lua code ".."
+lua> ".."
|nomsu:defmacro("rule %signature = %body", (function(nomsu, vars)
| local signature = nomsu:get_stubs(nomsu:typecheck(vars, "signature", "List").value);
| local body = nomsu:typecheck(vars, "body", "Thunk");
@@ -14,7 +14,7 @@ lua code ".."
# Rule to make nomsu macros:
rule [escaped parse %shorthand as %longhand] =:
- lua code ".."
+ lua> ".."
|local aliases = nomsu:get_stubs(nomsu:typecheck(vars, "shorthand", "List").value);
|if #vars.longhand.value ~= 1 then;
| nomsu:error("Expected only 1 line to parse to, but got "..tostring(#vars.longhand.value));
@@ -29,13 +29,13 @@ escaped parse \[parse %shorthand as %longhand] as \: escaped parse \%shorthand a
# Rule to make lua macros:
rule [escaped compile %macro_def to %body] =:
- lua code ".."
+ 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);
|nomsu:defmacro(aliases, thunk, body.src);
rule [escaped compile %macro_def to code %body] =:
- lua code ".."
+ 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);
@@ -45,27 +45,27 @@ 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
rule [do %] =:
- lua expr "\(%)(nomsu, vars)"
+ =lua "\(%)(nomsu, vars)"
rule [%tree as lua] =:
- lua expr "nomsu:tree_to_lua(\(%tree))"
+ =lua "nomsu:tree_to_lua(\(%tree))"
rule [%tree as value] =:
- lua expr "nomsu:tree_to_value(\(%tree), vars)"
+ =lua "nomsu:tree_to_value(\(%tree), vars)"
compile [repr %obj] to:
"nomsu:repr(\(%obj as lua))"
compile [type %obj, type of %obj] to:
"type(\(%obj as lua))"
-parse [lua block %block] as: lua code ".."
+parse [lua do> %block] as: lua> ".."
|do;
| \(%block)
|end;
rule [%tree as lua statement] =:
- lua block ".."
+ lua do> ".."
|local _,statement = nomsu:tree_to_lua(\(%tree));
|return statement;
rule [%tree as lua statements] =:
- lua block ".."
+ lua do> ".."
|local lua_bits = {};
|local statements = nomsu:typecheck(vars, "tree", "Thunk").value;
|for _,bit in ipairs(statements) do;
@@ -81,7 +81,7 @@ compile [nomsu %method %args] to: "nomsu[\(%method as lua)](nomsu, unpack(\(%arg
# Get the source code for a function
rule [help %rule] =:
- lua block ".."
+ lua do> ".."
|local fn_def = nomsu.defs[nomsu:get_stub(vars.rule)]
|if not fn_def then;
| nomsu:writeln("Rule not found: "..nomsu:repr(vars.rule));
@@ -95,7 +95,7 @@ rule [help %rule] =:
# Compiler tools
parse [eval %code, run %code] as: nomsu "run" [%code]
rule [source code from tree %tree] =:
- lua block ".."
+ lua do> ".."
|local _,_,leading_space = vars.tree.src:find("\\n(%s*)%S");
|if leading_space then;
| local chunk1, chunk2 = vars.tree.src:match(":%s*([^\\n]*)(\\n.*)");
@@ -108,5 +108,5 @@ parse [source code %body] as: source code from tree \%body
parse [parse tree %code] as: nomsu "tree_to_str" [\%code]
-parse [enable debugging] as: lua code "nomsu.debug = true"
-parse [disable debugging] as: lua code "nomsu.debug = false"
+parse [enable debugging] as: lua> "nomsu.debug = true"
+parse [disable debugging] as: lua> "nomsu.debug = false"