diff options
Diffstat (limited to 'std.py')
| -rw-r--r-- | std.py | 32 | 
1 files changed, 32 insertions, 0 deletions
| @@ -0,0 +1,32 @@ +from tokens import * +import sys +from collections import namedtuple + +FuncImpl = namedtuple("FuncImpl", ("func", "impl")) + +STD = {} + +def std_exit(status=0): +    sys.exit(status) +    return NebLiteral(NebType.BOOL, True) + +def std_print(arg): +    print(arg.value) +    #return []  # TODO this should return empty list +    return NebLiteral(NebType.BOOL, True) + +def build_std(): +    print_string = FuncImpl(NebFunction("print", [NebType.STRING], NebType.BOOL), std_print) +    STD["print"] = { +        print_string.func.in_sig(): print_string +    } + +    exit_ = FuncImpl(NebFunction("exit", [], NebType.BOOL), std_exit) +    exit_int = FuncImpl(NebFunction("exit", [NebType.INT], NebType.BOOL), std_exit) + +    STD["exit"] = { +        exit_.func.in_sig(): exit_, +        exit_int.func.in_sig(): exit_int +    } +     +build_std() | 
