diff --git a/main.py b/main.py index 2a1c93f..9476c3e 100755 --- a/main.py +++ b/main.py @@ -4,19 +4,18 @@ import parse +def make_text(value): + return { + "type": "text", + "_value": value, + } + def do_system_print(env, args): - (text_type, text_value) = args[0] - if text_type == "reference": - (text_type, text_value) = env[text_value] - if text_type != "text": - print("Invalid print value: %s" % (text_type)) - return None - else: - print(text_value) - return None + print(args[0]["_value"]) + return None def do_system_read(env, args): - return ('text', input()) + return make_text(input()) base_env = { "System": { @@ -26,10 +25,21 @@ } } +def resolve_value(env, value): + (type, value) = value + if type == "reference": + return env[value] + elif type == "text": + return make_text(value) + else: + print("Unimplemented value type: %s" % (type)) + def run_statement(env, ast): - subject = env[ast[1][1]] + subject = resolve_value(env, ast[1]) command = subject[ast[2]] - args = ast[3] + args = [] + for arg in ast[3]: + args.append(resolve_value(env, arg)) return command(env, args) def run_set(env, ast):