aboutsummaryrefslogtreecommitdiff
path: root/neb/std
diff options
context:
space:
mode:
Diffstat (limited to 'neb/std')
-rw-r--r--neb/std/core.py40
-rw-r--r--neb/std/repl.py8
2 files changed, 24 insertions, 24 deletions
diff --git a/neb/std/core.py b/neb/std/core.py
index a0f2cf6..cf0686b 100644
--- a/neb/std/core.py
+++ b/neb/std/core.py
@@ -1,4 +1,4 @@
-from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, evaluate, interpret, parse, lex, InterpretPanic, TypeWrap, Function, UserType, NebMacro
+from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, evaluate, interpret, parse, lex, InterpretPanic, TypeWrap, Function, UserType, NebSyntax
from ..structs import *
from pathlib import Path
@@ -18,7 +18,7 @@ def interpretIf(symbol, args, env, ns):
cond = Arg("cond", TypeEnum.BOOL)
t_branch = Arg("t-branch", TypeEnum.ANY)
f_branch = Arg("f-branch", TypeEnum.ANY, optional=True)
-CORE.register("if", NebMacro("if", interpretIf, [cond, t_branch, f_branch]))
+CORE.register("if", NebSyntax("if", interpretIf, [cond, t_branch, f_branch]))
def interpretDef(symbol, args, env, ns):
if not isinstance(args[0], Symbol):
@@ -30,7 +30,7 @@ def interpretDef(symbol, args, env, ns):
def_name_arg = Arg("name", TypeEnum.ANY)
def_val_arg = Arg("value", TypeEnum.ANY)
-CORE.register("def", NebMacro("def", interpretDef, [def_name_arg, def_val_arg], return_type=Type(":list")))
+CORE.register("def", NebSyntax("def", interpretDef, [def_name_arg, def_val_arg], return_type=Type(":list")))
def interpretRedef(symbol, args, env, ns):
if not isinstance(args[0], Symbol):
@@ -43,7 +43,7 @@ def interpretRedef(symbol, args, env, ns):
env.reregister(name, res)
return List([])
-CORE.register("redef", NebMacro("redef", interpretRedef, [def_name_arg, def_val_arg], return_type=Type(":list")))
+CORE.register("redef", NebSyntax("redef", interpretRedef, [def_name_arg, def_val_arg], return_type=Type(":list")))
def interpretLambda(symbol, args, env, ns):
new_args = args
@@ -61,7 +61,7 @@ def interpretLambda(symbol, args, env, ns):
lambda_args_arg = Arg("args", TypeEnum.ANY)
lambda_body_arg = Arg("body", TypeEnum.ANY)
-CORE.register("lambda", NebMacro("lambda", interpretLambda, [lambda_args_arg, lambda_body_arg], lambda_body_arg))
+CORE.register("lambda", NebSyntax("lambda", interpretLambda, [lambda_args_arg, lambda_body_arg], lambda_body_arg))
def interpretForCount(symbol, args, env, ns):
num = evaluate(args[0], env, ns)
@@ -79,7 +79,7 @@ def interpretForCount(symbol, args, env, ns):
for_count_arg = Arg("count", TypeEnum.INT)
for_body_arg = Arg("body", TypeEnum.ANY)
-CORE.register("for-count", NebMacro("for-count", interpretForCount, [for_count_arg, for_body_arg], for_body_arg))
+CORE.register("for-count", NebSyntax("for-count", interpretForCount, [for_count_arg, for_body_arg], for_body_arg))
def interpretForEach(symbol, args, env, ns):
coll = evaluate(args[0], env, ns)
@@ -96,7 +96,7 @@ def interpretForEach(symbol, args, env, ns):
return ret
for_each_arg = Arg("list", TypeEnum.LIST)
-CORE.register("for-each", NebMacro("for-each", interpretForEach, [for_each_arg, for_body_arg], for_body_arg))
+CORE.register("for-each", NebSyntax("for-each", interpretForEach, [for_each_arg, for_body_arg], for_body_arg))
def interpretBranch(symbol, args, env, ns):
for arg in args:
@@ -109,7 +109,7 @@ def interpretBranch(symbol, args, env, ns):
return evaluate(arg.args[1], env, ns)
return List([])
-CORE.register("branch", NebMacro("branch", interpretBranch, [for_body_arg], for_body_arg))
+CORE.register("branch", NebSyntax("branch", interpretBranch, [for_body_arg], for_body_arg))
def interpretFunc(symbol, args, env, ns):
if not isinstance(args[0], Symbol):
@@ -128,7 +128,7 @@ def interpretFunc(symbol, args, env, ns):
env.register(name, func)
return List([])
-CORE.register("func", NebMacro("func", interpretFunc, [def_name_arg, lambda_args_arg, lambda_body_arg], lambda_body_arg, Type(":list")))
+CORE.register("func", NebSyntax("func", interpretFunc, [def_name_arg, lambda_args_arg, lambda_body_arg], lambda_body_arg, Type(":list")))
def interpretBlock(symbol, args, env, ns):
new_env = Environment(env)
@@ -138,7 +138,7 @@ def interpretBlock(symbol, args, env, ns):
return ret
block_arg = Arg("expr", TypeEnum.ANY)
-CORE.register("block", NebMacro("block", interpretBlock, [block_arg], block_arg))
+CORE.register("block", NebSyntax("block", interpretBlock, [block_arg], block_arg))
def interpretWhile(symbol, args, env, ns):
new_env = Environment(env)
@@ -154,7 +154,7 @@ def interpretWhile(symbol, args, env, ns):
ret = evaluate(arg, new_env, ns)
return ret
-CORE.register("while", NebMacro("while", interpretWhile, [Arg("cond", TypeEnum.BOOL)], Arg("expr", TypeEnum.ANY)))
+CORE.register("while", NebSyntax("while", interpretWhile, [Arg("cond", TypeEnum.BOOL)], Arg("expr", TypeEnum.ANY)))
# NOTE this doesn't technically need to be a macro
def interpretUse(symbol, args, env, ns):
@@ -169,7 +169,7 @@ def interpretUse(symbol, args, env, ns):
interpret(parse(lex(data)), env, ns)
return List([])
-CORE.register("use", NebMacro("use", interpretUse, [Arg("filename", TypeEnum.STRING)], return_type=Type(":list")))
+CORE.register("use", NebSyntax("use", interpretUse, [Arg("filename", TypeEnum.STRING)], return_type=Type(":list")))
# NOTE this doesn't technically need to be a macro
def interpretAssert(symbol, args, env, ns):
@@ -180,7 +180,7 @@ def interpretAssert(symbol, args, env, ns):
raise InterpretPanic(symbol, "assertion failed")
return List([])
-CORE.register("assert", NebMacro("assert", interpretAssert, [Arg("cond", TypeEnum.BOOL)], return_type=Type(":list")))
+CORE.register("assert", NebSyntax("assert", interpretAssert, [Arg("cond", TypeEnum.BOOL)], return_type=Type(":list")))
def interpretUseAs(symbol, args, env, ns):
target = evaluate(args[0], env, ns)
@@ -197,20 +197,20 @@ def interpretUseAs(symbol, args, env, ns):
interpret(parse(lex(data)), env, new_ns)
return List([])
-CORE.register("use-as", NebMacro("use-as", interpretUseAs, [Arg("filename", TypeEnum.STRING), Arg("namespace", TypeEnum.ANY)], return_type=Type(":list")))
+CORE.register("use-as", NebSyntax("use-as", interpretUseAs, [Arg("filename", TypeEnum.STRING), Arg("namespace", TypeEnum.ANY)], return_type=Type(":list")))
def interpretQuote(symbol, args, env, ns):
return args[0]
quote_arg = Arg("arg", TypeEnum.ANY)
-CORE.register("quote", NebMacro("quote", interpretQuote, [quote_arg]))
+CORE.register("quote", NebSyntax("quote", interpretQuote, [quote_arg]))
def interpretEval(symbol, args, env, ns):
ev = evaluate(args[0], env, ns) # TODO why do i have to evaluate twice?
return evaluate(ev, env, ns)
eval_arg = Arg("arg", TypeEnum.ANY)
-CORE.register("eval", NebMacro("eval", interpretEval, [eval_arg]))
+CORE.register("eval", NebSyntax("eval", interpretEval, [eval_arg]))
def interpretType(symbol, args, env, ns):
# (type typename parent func)
@@ -239,7 +239,7 @@ def interpretType(symbol, args, env, ns):
type_name_arg = Arg("name", TypeEnum.ANY)
type_parent_arg = Arg("name", TypeEnum.ANY)
type_func_arg = Arg("func", TypeEnum.ANY)
-CORE.register("type", NebMacro("type", interpretType, [type_name_arg, type_parent_arg, type_func_arg]))
+CORE.register("type", NebSyntax("type", interpretType, [type_name_arg, type_parent_arg, type_func_arg]))
def interpretOr(symbol, args, env, ns):
# or returns true for the first expression that returns true
@@ -252,7 +252,7 @@ def interpretOr(symbol, args, env, ns):
return Bool(False)
or_arg = Arg("arg", TypeEnum.BOOL)
-CORE.register("or", NebMacro("or", interpretOr, [or_arg, or_arg], or_arg, Type(":bool")))
+CORE.register("or", NebSyntax("or", interpretOr, [or_arg, or_arg], or_arg, Type(":bool")))
def interpretAnd(symbol, args, env, ns):
# and returns false for the first expression that returns false
@@ -264,7 +264,7 @@ def interpretAnd(symbol, args, env, ns):
return ev
return Bool(True)
-CORE.register("and", Builtin("and", interpretAnd, [or_arg, or_arg], or_arg, Type(":bool")))
+CORE.register("and", NebSyntax("and", interpretAnd, [or_arg, or_arg], or_arg, Type(":bool")))
def interpretBench(symbol, args, env, ns):
before = datetime.now()
@@ -273,4 +273,4 @@ def interpretBench(symbol, args, env, ns):
print(f"bench [{symbol.line}]: {args[0]} => {after - before}")
return ret
-CORE.register("bench", NebMacro("bench", interpretBench, [Arg("command", TypeEnum.ANY)], return_type=Type(":any")))
+CORE.register("bench", NebSyntax("bench", interpretBench, [Arg("command", TypeEnum.ANY)], return_type=Type(":any")))
diff --git a/neb/std/repl.py b/neb/std/repl.py
index b888d1a..e8f2857 100644
--- a/neb/std/repl.py
+++ b/neb/std/repl.py
@@ -1,4 +1,4 @@
-from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, Function, evaluate, InterpretPanic, Callable, Macro, lex, parse
+from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, Function, evaluate, InterpretPanic, Callable, NebSyntax, lex, parse
from .core import interpretQuote
from ..structs import *
@@ -30,11 +30,11 @@ def interpretUserSymbols(symbol, args, env, ns):
REPL.register("user-symbols", Builtin("user-symbols", interpretUserSymbols, [], return_type=Type(":list")))
-def interpretMacros(symbol, args, env, ns):
- keys = [Symbol(k, -1) for k,v in sorted(env.environment.items()) if isinstance(v, Macro)]
+def interpretSyntax(symbol, args, env, ns):
+ keys = [Symbol(k, -1) for k,v in sorted(env.environment.items()) if isinstance(v, NebSyntax)]
return List(keys)
-REPL.register("macros", Builtin("macros", interpretMacros, [], return_type=Type(":list")))
+REPL.register("syntax", Builtin("syntax", interpretSyntax, [], return_type=Type(":list")))
def interpretParseNeb(symbol, args, env, ns):
return interpretQuote(None, [parse(lex(args[0].value))[0]], env, ns)