From aeb52829d079e0a659e68d4dc9825fb868382634 Mon Sep 17 00:00:00 2001 From: Zander Thannhauser Date: Sun, 17 Aug 2025 22:22:09 -0500 Subject: [PATCH] added testing --- main.c | 19 +- test.py | 145 +++++ tests.json | 1627 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1788 insertions(+), 3 deletions(-) create mode 100755 test.py create mode 100644 tests.json diff --git a/main.c b/main.c index b4be70e..8393e33 100644 --- a/main.c +++ b/main.c @@ -3205,11 +3205,24 @@ int main(int argc, char* const* argv) struct expression* expression = parse(line); - struct value* value = evaluate(expression, scope); + if (expression->kind == ek_syntax_error) + { + printf("syntax error!\n"); - print(value); + printf("%s\n", line); - free_value(value); + syntax_error_print(expression); + + retval = 1; + } + else + { + struct value* value = evaluate(expression, scope); + + print(value); + + free_value(value); + } free_expression(expression); } diff --git a/test.py b/test.py new file mode 100755 index 0000000..abdaf1f --- /dev/null +++ b/test.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 + +import time; +import subprocess +import shlex as sl; +import argparse +import json; + +class colors: + orange = "\033[38;2;200;150;0m"; + yellow = "\033[38;2;200;200;0m"; + green = "\033[38;2;0;200;0m"; + reset = "\033[0m"; + +def parse_args(): + parser = argparse.ArgumentParser(prog='ProgramName', description='What the program does', epilog='Text at the bottom of help') + + parser.add_argument('-n', '--new', "-t", "--touch") + parser.add_argument('-s', '--save') + parser.add_argument('-c', '--correct', action='store_true') + parser.add_argument('--delete') + + parser.add_argument('--config', default="tests.json") + + return parser.parse_args(); + +def load_database(path): + try: + with open(path) as stream: + return json.load(stream); + except FileNotFoundError: + return dict(); + +def save_database(path, tests): + with open(path, "w") as stream: + json.dump(tests, stream, sort_keys=True, indent=2); + +def new_test(new_input, database): + if new_input in database: + line = colors.orange + \ + f"test.py: " + \ + f"{sl.quote(new_input)} already in database. " + \ + f"It has been moved to the front of the line. " + \ + colors.reset; + + print(line); + + database[new_input]['ftime'] = time.time(); + else: + database[new_input] = { + 'output': "???", + 'exit': 0, + }; + +def save_test(input_, database): + result = subprocess.run(["./bin/qc", "-c", input_], + text = True, check = False, capture_output = True); + + line = colors.orange + \ + f"test.py: " + \ + f"re-ran and saved result of {sl.quote(input_)}" + \ + colors.reset; + + print(line); + + database[input_] = { + 'output': result.stdout, + 'exit': result.returncode, + } + +def correct_test(database): + input_ = max(database.items(), key = lambda kv: kv[1]['ftime'])[0]; + + save_test(input_, database); + +def delete_test(args, database): + assert(not "TODO"); + +def run_tests(tests): + for _, test in sorted(tests.items()): + if 'ftime' not in test: + test['ftime'] = time.time(); + + tests = sorted(tests.items(), key = lambda kv: kv[1]['ftime'], reverse = True); + + all_passed = True; + + for i, (input_, test) in enumerate(tests): + line = f"[{i:2}/{len(tests)}] " + + line += colors.yellow + f"$ ./bin/qc -c {sl.quote(input_)}" + colors.reset; + + print(line); + + result = subprocess.run(["./bin/qc", "-c", input_], + text = True, check = False, capture_output = True); + + passed = True; + + if test['output'] != result.stdout: + print("incorrect output"); + print(f"expected: {test['output']}"); + print(f"received:") + print(f"{result.stdout.strip()}"); + print(f"received:"); + print(f"{result.stderr.strip()}"); + passed = False; + + if result.returncode != test.get('exit', 0): + print("incorrect exit code"); + passed = False; + + if not passed: + test['ftime'] = time.time(); + all_passed = False; + break; + + if all_passed: + print(colors.green + f"all tests pass!" + colors.reset); + return 0; + else: + return 1; + +def main(args): + retval = 0 + + database = load_database(args.config); + + if (args.new): + new_test(args.new, database); + elif (args.save): + save_test(args.save, database); + elif (args.correct): + correct_test(database); + elif (args.delete): + assert(not "TODO"); + else: + retval = run_tests(database); + + save_database(args.config, database); + + return retval; + +exit(main(parse_args())); + diff --git a/tests.json b/tests.json new file mode 100644 index 0000000..cd34459 --- /dev/null +++ b/tests.json @@ -0,0 +1,1627 @@ +{ + " ": { + "exit": 0, + "ftime": 1755473136.3299894, + "output": "???" + }, + "!": { + "exit": 1, + "ftime": 1755472276.9564838, + "output": "syntax error!\n!\n \u2191\n \u2514 unexpected EOF token\n" + }, + "! ? ! : !": { + "exit": 1, + "ftime": 1755472574.5932646, + "output": "syntax error!\n! ? ! : !\n \u2191\n \u2514 unexpected question mark token\n" + }, + "!!": { + "exit": 0, + "ftime": 1755473136.3299901, + "output": "???" + }, + "!0": { + "exit": 0, + "ftime": 1755473136.3299901, + "output": "???" + }, + "!1": { + "exit": 0, + "ftime": 1755473136.3299904, + "output": "???" + }, + "!7": { + "exit": 0, + "ftime": 1755473136.3299904, + "output": "???" + }, + "!=": { + "exit": 0, + "ftime": 1755473136.3299904, + "output": "???" + }, + "!@": { + "exit": 1, + "ftime": 1755472269.8538663, + "output": "syntax error!\n!@\n \u2191\n \u2514 unknown token '@'\n" + }, + "!x": { + "exit": 0, + "ftime": 1755473136.3299906, + "output": "???" + }, + "%": { + "exit": 1, + "ftime": 1755472489.1916378, + "output": "syntax error!\n%\n\u2191\n\u2514 unexpected percent token\n" + }, + "& $ !": { + "exit": 0, + "ftime": 1755476288.629553, + "output": "???" + }, + "&&": { + "exit": 0, + "ftime": 1755473136.3299909, + "output": "???" + }, + "&1": { + "exit": 0, + "ftime": 1755473136.3299909, + "output": "???" + }, + "(": { + "exit": 1, + "ftime": 1755472637.094835, + "output": "syntax error!\n(\n \u2191\n \u2514 unexpected EOF token\n" + }, + "((x": { + "exit": 0, + "ftime": 1755473136.3299909, + "output": "???" + }, + "((x = 1, 0) && (x = 2, 1)), x": { + "exit": 0, + "ftime": 1755473136.329991, + "output": "???" + }, + "((x = 1, 0) || (x = 2, 1)), x": { + "exit": 0, + "ftime": 1755473136.329991, + "output": "???" + }, + "((x = 1, 1) && (x = 2, 1)), x": { + "exit": 0, + "ftime": 1755473136.329991, + "output": "???" + }, + "((x = 1, 1) || (x = 2, 1)), x": { + "exit": 0, + "ftime": 1755473136.3299913, + "output": "???" + }, + "()": { + "exit": 0, + "ftime": 1755473136.3299913, + "output": "???" + }, + "()+": { + "exit": 0, + "ftime": 1755473136.3299913, + "output": "???" + }, + "(1": { + "exit": 0, + "ftime": 1755473136.3299913, + "output": "???" + }, + "(1 + 2) * 3": { + "exit": 0, + "ftime": 1755473136.3299916, + "output": "???" + }, + "(1 @": { + "exit": 0, + "ftime": 1755473136.3299916, + "output": "???" + }, + "(1)": { + "exit": 0, + "ftime": 1755473136.3299916, + "output": "???" + }, + "(:": { + "exit": 1, + "ftime": 1755472628.7429862, + "output": "syntax error!\n(:\n \u2191\n \u2514 unexpected colon token\n" + }, + "(x": { + "exit": 0, + "ftime": 1755473136.3299916, + "output": "???" + }, + ")": { + "exit": 1, + "ftime": 1755472580.6547318, + "output": "syntax error!\n)\n\u2191\n\u2514 unexpected close parentheses token\n" + }, + "*": { + "exit": 1, + "ftime": 1755472397.2866447, + "output": "syntax error!\n*\n\u2191\n\u2514 unexpected asterisk token\n" + }, + "**": { + "exit": 1, + "ftime": 1755483885.957823, + "output": "syntax error!\n**\n\u2191\n\u2514 unexpected double-asterisk token\n" + }, + "+": { + "exit": 1, + "ftime": 1755472494.519292, + "output": "syntax error!\n+\n \u2191\n \u2514 unexpected EOF token\n" + }, + "+(": { + "exit": 0, + "ftime": 1755473136.3299923, + "output": "???" + }, + "+()": { + "exit": 0, + "ftime": 1755473136.3299923, + "output": "???" + }, + "+1": { + "exit": 0, + "ftime": 1755473136.3299923, + "output": "???" + }, + "+@": { + "exit": 1, + "ftime": 1755472170.3884883, + "output": "syntax error!\n+@\n \u2191\n \u2514 unknown token '@'\n" + }, + "+x": { + "exit": 0, + "ftime": 1755473136.3299923, + "output": "???" + }, + ",": { + "exit": 0, + "ftime": 1755473136.3299925, + "output": "???" + }, + "-": { + "exit": 1, + "ftime": 1755472282.3418233, + "output": "syntax error!\n-\n \u2191\n \u2514 unexpected EOF token\n" + }, + "-1": { + "exit": 0, + "ftime": 1755473136.3299925, + "output": "???" + }, + "-1 // 2": { + "exit": 0, + "ftime": 1755478727.684199, + "output": "0\n" + }, + "-2 ** -3": { + "exit": 0, + "ftime": 1755486379.725868, + "output": "error: negative exponents not supported\n" + }, + "-2 ** 3": { + "exit": 0, + "ftime": 1755486375.940761, + "output": "-8 \n" + }, + "-2 ** 7": { + "exit": 0, + "ftime": 1755486372.2766812, + "output": "-128 \n" + }, + "-2 ** 8": { + "exit": 0, + "ftime": 1755486368.9484634, + "output": "256 \n" + }, + "-3": { + "exit": 0, + "ftime": 1755478660.0032132, + "output": "-3 \n" + }, + "-3 // 2": { + "exit": 0, + "ftime": 1755478677.9157176, + "output": "-1 \n" + }, + "-4.5 % 2": { + "exit": 0, + "ftime": 1755478891.1978335, + "output": "-\u00b9/\u2082\n" + }, + "-@": { + "exit": 1, + "ftime": 1755472149.663119, + "output": "syntax error!\n-@\n \u2191\n \u2514 unknown token '@'\n" + }, + ".5": { + "exit": 0, + "ftime": 1755473136.3299928, + "output": "???" + }, + "/": { + "exit": 1, + "ftime": 1755472294.1493642, + "output": "syntax error!\n/\n\u2191\n\u2514 unexpected slash token\n" + }, + "0": { + "exit": 0, + "ftime": 1755473136.3299928, + "output": "???" + }, + "0 % 2": { + "exit": 0, + "ftime": 1755478880.9583962, + "output": "0\n" + }, + "0 && 0": { + "exit": 0, + "ftime": 1755473136.329993, + "output": "???" + }, + "0 && 1": { + "exit": 0, + "ftime": 1755473136.329993, + "output": "???" + }, + "0 && x": { + "exit": 0, + "ftime": 1755473136.329993, + "output": "???" + }, + "0 ? 0 : 0": { + "exit": 0, + "ftime": 1755474998.383444, + "output": "0\n" + }, + "0 ? 1 : 2": { + "exit": 0, + "ftime": 1755473136.329993, + "output": "???" + }, + "0 ? 1 : z": { + "exit": 0, + "ftime": 1755473136.3299932, + "output": "???" + }, + "0 ? x : y = 1": { + "exit": 0, + "ftime": 1755476288.6295545, + "output": "???" + }, + "0 ? y : 2": { + "exit": 0, + "ftime": 1755473136.3299932, + "output": "???" + }, + "0 ? y : z": { + "exit": 0, + "ftime": 1755473136.3299932, + "output": "???" + }, + "0 || 0": { + "exit": 0, + "ftime": 1755473136.3299932, + "output": "???" + }, + "0 || 1": { + "exit": 0, + "ftime": 1755473136.3299935, + "output": "???" + }, + "0 || x": { + "exit": 0, + "ftime": 1755473136.3299935, + "output": "???" + }, + "0)": { + "exit": 0, + "ftime": 1755473136.3299935, + "output": "???" + }, + "0.1": { + "exit": 0, + "ftime": 1755483238.3148835, + "output": "\u00b9/\u2081\u2080\n" + }, + "0.1234 % 0.01": { + "exit": 0, + "ftime": 1755483275.4819613, + "output": "\u00b9\u2077/\u2085\u2080\u2080\u2080\n" + }, + "0_": { + "exit": 0, + "ftime": 1755473136.3299935, + "output": "???" + }, + "0_1": { + "exit": 0, + "ftime": 1755473136.3299937, + "output": "???" + }, + "0_1.2_3": { + "exit": 0, + "ftime": 1755473136.3299937, + "output": "???" + }, + "0____": { + "exit": 0, + "ftime": 1755473136.3299937, + "output": "???" + }, + "0_b": { + "exit": 0, + "ftime": 1755473136.3299937, + "output": "???" + }, + "0_x": { + "exit": 0, + "ftime": 1755473136.329994, + "output": "???" + }, + "0b0_": { + "exit": 0, + "ftime": 1755473136.329994, + "output": "???" + }, + "0b0_1.0_1": { + "exit": 0, + "ftime": 1755473136.329994, + "output": "???" + }, + "0b10": { + "exit": 0, + "ftime": 1755474218.6265395, + "output": "2 \n" + }, + "0b101010": { + "exit": 0, + "ftime": 1755473136.329994, + "output": "???" + }, + "0b_": { + "exit": 0, + "ftime": 1755473136.3299942, + "output": "???" + }, + "0b_1001_0110": { + "exit": 0, + "ftime": 1755473136.3299942, + "output": "???" + }, + "0o775": { + "exit": 0, + "ftime": 1755473136.3299942, + "output": "???" + }, + "0x0": { + "exit": 0, + "ftime": 1755474212.1525915, + "output": "0\n" + }, + "0x0_": { + "exit": 0, + "ftime": 1755473136.3299942, + "output": "???" + }, + "0x1": { + "exit": 0, + "ftime": 1755474208.4757392, + "output": "1 \n" + }, + "0x2": { + "exit": 0, + "ftime": 1755474203.2893522, + "output": "2 \n" + }, + "0x3": { + "exit": 0, + "ftime": 1755474205.4912224, + "output": "3 \n" + }, + "0xA": { + "exit": 0, + "ftime": 1755474193.0495868, + "output": "10 \n" + }, + "0xB": { + "exit": 0, + "ftime": 1755474195.6182008, + "output": "11 \n" + }, + "0xC": { + "exit": 0, + "ftime": 1755474198.4027262, + "output": "12 \n" + }, + "0xDEAD": { + "exit": 0, + "ftime": 1755473136.3299944, + "output": "???" + }, + "0xDEAD.BEEF": { + "exit": 0, + "ftime": 1755473136.3299944, + "output": "???" + }, + "0x_": { + "exit": 0, + "ftime": 1755473136.3299944, + "output": "???" + }, + "0x_DEAD_BEEF": { + "exit": 0, + "ftime": 1755473136.3299944, + "output": "???" + }, + "0xa": { + "exit": 0, + "ftime": 1755474184.3448875, + "output": "10 \n" + }, + "0xb": { + "exit": 0, + "ftime": 1755474187.194442, + "output": "11 \n" + }, + "0xc": { + "exit": 0, + "ftime": 1755474178.0334952, + "output": "12 \n" + }, + "1": { + "exit": 0, + "ftime": 1755473274.803795, + "output": "1 \n" + }, + "1\n1 ? 2\n1 ? 2 ?\n(1)\n(1\n(1 @\n1)\n(1 + 2) * 3\n()\n()+\n+()\n+(\n: + :\n1 ? 2 %\n1 ? 2 :\n1 ? 2 : :\n!!\n?\n:\n1 : 2\n1.5\n.5\n1 + 2\n1 / 3\nx = 3\nx = 1 / 3\n2 / 4\n2000000 / 4000000\n+\n-\n*\n/\n(\n)\n2 ** 3\n2 << 3\n2.5 << 3\n2.0 << 3.5\n2 >> 3\n2 >> 3.5\n0_1\n0_1.2_3\n0b0_1.0_1\n0xDEAD.BEEF\n1_2_3\n0\n0_\n0____\n_0\n_1\n_123\n_____0\n0b_\n0x_\n0_b\n0_x\n0b0_\n0x0_\n0b_1001_0110\n0x_DEAD_BEEF\n?\n:\n,\n||\n&&\n!\n!=\n>\n>=\n<\n<=\n==\n0xDEAD\n0b101010\n0o775\n1a2\n+x\n-x\n!x\n!x\n!x\nx - x\nx - y\nx + y\nx - y\nx * y\nx / y\nx % y\nx == y\nx > y\nx >= y\nx < y\nx <= y\nx != y\nx || y\nx && y\nx - 1\n1 - x\nx + 3\n3 + x\nx - 3\n3 - x\nx * 3\n3 * x\nx / 3\nx % 3\n3 / x\n3 % x\n%\n5 % 3\n5.5 % 3.5\nx @ y\nx == 2\n3 == x\nx > 2\n2 > x\nx >= 2\n2 >= x\nx < 2\n2 < x\nx <= 2\n2 <= x\nx != 2\n2 != x\nx ? y : z\nx ? y : 0\nx ? 0 : z\nx ? 0 : 0\n1 ? y : z\n1 ? 1 : z\n1 ? y : 2\n1 ? 1 : 2\n0 ? y : z\n0 ? 1 : z\n0 ? y : 2\n0 ? 1 : 2\nx || 0\nx || 1\n0 || x\n1 || x\nx && 0\nx && 1\n0 && x\n1 && x\n+1\n-1\n!0\n!1\n!7\n1 - 1\n2 + 3\n2 - 3\n3 - 2\n2 * 3\n2 / 3\n3 / 2\n3 == 2\n3 > 2\n3 >= 2\n3 < 2\n3 <= 2\n3 != 2\n0 || 0\n1 || 0\n0 || 1\n1 || 1\n0 && 0\n1 && 0\n0 && 1\n1 && 1\n((x = 1, 0) || (x = 2, 1)), x\n((x = 1, 1) || (x = 2, 1)), x\n((x = 1, 0) && (x = 2, 1)), x\n((x = 1, 1) && (x = 2, 1)), x\nx\nx = 3, x\na.b\na123\n123a\n1 2 3\n1.2.3\n()\n(1\n|1\n&1\n": { + "exit": 0, + "ftime": 1755473136.3299947, + "output": "???" + }, + "1 != 1 = 1": { + "exit": 0, + "ftime": 1755476288.6295552, + "output": "???" + }, + "1 % 1 = 1": { + "exit": 0, + "ftime": 1755477402.8769383, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 % 2": { + "exit": 0, + "ftime": 1755478836.4612925, + "output": "1 \n" + }, + "1 % @": { + "exit": 1, + "ftime": 1755478945.8297648, + "output": "syntax error!\n1 % @\n \u2191\n \u2514 unknown token '@'\n" + }, + "1 % x": { + "exit": 0, + "ftime": 1755477762.686847, + "output": "error: use of undefined variable 'x'!\n" + }, + "1 & 2": { + "exit": 0, + "ftime": 1755477480.7324793, + "output": "???" + }, + "1 & y": { + "exit": 0, + "ftime": 1755477480.7324796, + "output": "???" + }, + "1 && 0": { + "exit": 0, + "ftime": 1755473136.3299947, + "output": "???" + }, + "1 && 0 = 1": { + "exit": 0, + "ftime": 1755477402.8990865, + "output": "???" + }, + "1 && 1": { + "exit": 0, + "ftime": 1755473136.3299947, + "output": "???" + }, + "1 && x": { + "exit": 0, + "ftime": 1755473136.329995, + "output": "???" + }, + "1 * 1 = 1": { + "exit": 0, + "ftime": 1755477399.907385, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 * @": { + "exit": 1, + "ftime": 1755478943.0933278, + "output": "syntax error!\n1 * @\n \u2191\n \u2514 unknown token '@'\n" + }, + "1 * x": { + "exit": 0, + "ftime": 1755477750.310719, + "output": "error: use of undefined variable 'x'!\n" + }, + "1 + 1 + 1 == 3": { + "exit": 0, + "ftime": 1755476845.825342, + "output": "1 \n" + }, + "1 + 1 = 1": { + "exit": 0, + "ftime": 1755477318.4355304, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 + 2": { + "exit": 0, + "ftime": 1755471799.9383914, + "output": "3 \n" + }, + "1 + 3": { + "exit": 0, + "ftime": 1755471804.28364, + "output": "4 \n" + }, + "1 - 1": { + "exit": 0, + "ftime": 1755473136.329995, + "output": "???" + }, + "1 - 1 = 1": { + "exit": 0, + "ftime": 1755477257.426796, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 - x": { + "exit": 0, + "ftime": 1755473136.3299952, + "output": "???" + }, + "1 / 1 = 1": { + "exit": 0, + "ftime": 1755477315.4834661, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 / 3": { + "exit": 0, + "ftime": 1755473136.3299952, + "output": "???" + }, + "1 / @": { + "exit": 1, + "ftime": 1755478915.4125614, + "output": "syntax error!\n1 / @\n \u2191\n \u2514 unknown token '@'\n" + }, + "1 / x": { + "exit": 0, + "ftime": 1755478911.7502086, + "output": "error: use of undefined variable 'x'!\n" + }, + "1 // 2": { + "exit": 0, + "ftime": 1755478677.919678, + "output": "0\n" + }, + "1 // y": { + "exit": 0, + "ftime": 1755478520.4740233, + "output": "error: use of undefined variable 'y'!\n" + }, + "1 2 3": { + "exit": 0, + "ftime": 1755473136.3299952, + "output": "???" + }, + "1 : 2": { + "exit": 0, + "ftime": 1755473136.3299952, + "output": "???" + }, + "1 << (1 << 1000)": { + "exit": 0, + "ftime": 1755486714.9098544, + "output": "error: cannot left bitshift beyond ULONG_MAX\n" + }, + "1 << (1 >> 1000)": { + "exit": 0, + "ftime": 1755486708.6879425, + "output": "error: cannot left bitshift by fractional value\n" + }, + "1 << 1000": { + "exit": 0, + "ftime": 1755485760.1158442, + "output": "10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376 \n" + }, + "1 << 2": { + "exit": 0, + "ftime": 1755486790.4067934, + "output": "4 \n" + }, + "1 = 1": { + "exit": 0, + "ftime": 1755477208.1395626, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 == 1 = 1": { + "exit": 0, + "ftime": 1755477212.379068, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 == @": { + "exit": 1, + "ftime": 1755476759.1444638, + "output": "syntax error!\n1 == @\n \u2191\n \u2514 unknown token '@'\n" + }, + "1 >> (1 << 1000)": { + "exit": 0, + "ftime": 1755486729.005008, + "output": "error: cannot right bitshift beyond ULONG_MAX\n" + }, + "1 >> (1 >> 1000)": { + "exit": 0, + "ftime": 1755486720.1040041, + "output": "error: cannot right bitshift by a fractional value\n" + }, + "1 >> 1000": { + "exit": 0, + "ftime": 1755485742.0840087, + "output": "\u00b9/\u2081\u2080\u2087\u2081\u2085\u2080\u2088\u2086\u2080\u2087\u2081\u2088\u2086\u2082\u2086\u2087\u2083\u2082\u2080\u2089\u2084\u2088\u2084\u2082\u2085\u2080\u2084\u2089\u2080\u2086\u2080\u2080\u2080\u2081\u2088\u2081\u2080\u2085\u2086\u2081\u2084\u2080\u2084\u2088\u2081\u2081\u2087\u2080\u2085\u2085\u2083\u2083\u2086\u2080\u2087\u2084\u2084\u2083\u2087\u2085\u2080\u2083\u2088\u2088\u2083\u2087\u2080\u2083\u2085\u2081\u2080\u2085\u2081\u2081\u2082\u2084\u2089\u2083\u2086\u2081\u2082\u2082\u2084\u2089\u2083\u2081\u2089\u2088\u2083\u2087\u2088\u2088\u2081\u2085\u2086\u2089\u2085\u2088\u2085\u2088\u2081\u2082\u2087\u2085\u2089\u2084\u2086\u2087\u2082\u2089\u2081\u2087\u2085\u2085\u2083\u2081\u2084\u2086\u2088\u2082\u2085\u2081\u2088\u2087\u2081\u2084\u2085\u2082\u2088\u2085\u2086\u2089\u2082\u2083\u2081\u2084\u2080\u2084\u2083\u2085\u2089\u2088\u2084\u2085\u2087\u2087\u2085\u2087\u2084\u2086\u2089\u2088\u2085\u2087\u2084\u2088\u2080\u2083\u2089\u2083\u2084\u2085\u2086\u2087\u2087\u2087\u2084\u2088\u2082\u2084\u2082\u2083\u2080\u2089\u2088\u2085\u2084\u2082\u2081\u2080\u2087\u2084\u2086\u2080\u2085\u2080\u2086\u2082\u2083\u2087\u2081\u2081\u2084\u2081\u2088\u2087\u2087\u2089\u2085\u2084\u2081\u2088\u2082\u2081\u2085\u2083\u2080\u2084\u2086\u2084\u2087\u2084\u2089\u2088\u2083\u2085\u2088\u2081\u2089\u2084\u2081\u2082\u2086\u2087\u2083\u2089\u2088\u2087\u2086\u2087\u2085\u2085\u2089\u2081\u2086\u2085\u2085\u2084\u2083\u2089\u2084\u2086\u2080\u2087\u2087\u2080\u2086\u2082\u2089\u2081\u2084\u2085\u2087\u2081\u2081\u2089\u2086\u2084\u2087\u2087\u2086\u2088\u2086\u2085\u2084\u2082\u2081\u2086\u2087\u2086\u2086\u2080\u2084\u2082\u2089\u2088\u2083\u2081\u2086\u2085\u2082\u2086\u2082\u2084\u2083\u2088\u2086\u2088\u2083\u2087\u2082\u2080\u2085\u2086\u2086\u2088\u2080\u2086\u2089\u2083\u2087\u2086\n" + }, + "1 ? 1 : 1": { + "exit": 0, + "ftime": 1755474987.6536245, + "output": "1 \n" + }, + "1 ? 1 : 2": { + "exit": 0, + "ftime": 1755473136.3299956, + "output": "???" + }, + "1 ? 1 : z": { + "exit": 0, + "ftime": 1755473136.3299956, + "output": "???" + }, + "1 ? 2": { + "exit": 1, + "ftime": 1755471599.4746149, + "output": "syntax error!\n1 ? 2\n \u2191\n \u2514 unexpected EOF token\n" + }, + "1 ? 2 %": { + "exit": 0, + "ftime": 1755473136.3299956, + "output": "???" + }, + "1 ? 2 :": { + "exit": 0, + "ftime": 1755473136.3299959, + "output": "???" + }, + "1 ? 2 : !": { + "exit": -6, + "ftime": 1755471477.0334759, + "output": "" + }, + "1 ? 2 : :": { + "exit": 0, + "ftime": 1755473136.3299959, + "output": "???" + }, + "1 ? 2 ?": { + "exit": 1, + "ftime": 1755471611.8653636, + "output": "syntax error!\n1 ? 2 ?\n \u2191\n \u2514 unexpected EOF token\n" + }, + "1 ? :": { + "exit": 1, + "ftime": 1755471457.004932, + "output": "syntax error!\n1 ? :\n \u2191\n \u2514 unexpected colon token\n" + }, + "1 ? x : y = 1": { + "exit": 0, + "ftime": 1755477201.7068734, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 ? y : 2": { + "exit": 0, + "ftime": 1755473136.329996, + "output": "???" + }, + "1 ? y : z": { + "exit": 0, + "ftime": 1755473136.329996, + "output": "???" + }, + "1 @ 1 = 1": { + "exit": 1, + "ftime": 1755477196.619504, + "output": "syntax error!\n1 @ 1 = 1\n \u2191\n \u2514 unexpected unknown token '@'\n" + }, + "1 | 2": { + "exit": 0, + "ftime": 1755477480.7324803, + "output": "???" + }, + "1 | y": { + "exit": 0, + "ftime": 1755477480.7324805, + "output": "???" + }, + "1 || 0": { + "exit": 0, + "ftime": 1755473136.329996, + "output": "???" + }, + "1 || 0 = 1": { + "exit": 0, + "ftime": 1755477190.899154, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 || 1": { + "exit": 0, + "ftime": 1755473136.329996, + "output": "???" + }, + "1 || 1 = 1": { + "exit": 0, + "ftime": 1755477186.0034633, + "output": "error: cannot assign to rvalue-expressions\n" + }, + "1 || x": { + "exit": 0, + "ftime": 1755473136.3299963, + "output": "???" + }, + "1(": { + "exit": 1, + "ftime": 1755471640.146321, + "output": "syntax error!\n1(\n \u2191\n \u2514 unexpected open parentheses token\n" + }, + "1)": { + "exit": 1, + "ftime": 1755471650.8578112, + "output": "syntax error!\n1)\n \u2191\n \u2514 unexpected close parentheses token\n" + }, + "1)),": { + "exit": 0, + "ftime": 1755473136.3299978, + "output": "???" + }, + "1,": { + "exit": 0, + "ftime": 1755473136.3299978, + "output": "???" + }, + "1.2.3": { + "exit": 0, + "ftime": 1755473136.3299978, + "output": "???" + }, + "1.5": { + "exit": 0, + "ftime": 1755473136.329998, + "output": "???" + }, + "123a": { + "exit": 0, + "ftime": 1755473136.329998, + "output": "???" + }, + "1_2_3": { + "exit": 0, + "ftime": 1755473136.329998, + "output": "???" + }, + "1a2": { + "exit": 0, + "ftime": 1755473136.329998, + "output": "???" + }, + "2": { + "exit": 0, + "ftime": 1755473334.3720822, + "output": "2 \n" + }, + "2 != x": { + "exit": 0, + "ftime": 1755473136.3299983, + "output": "???" + }, + "2 * 3": { + "exit": 0, + "ftime": 1755473136.3299983, + "output": "???" + }, + "2 ** (1 << 1000)": { + "exit": 0, + "ftime": 1755486333.8139348, + "output": "error: cannot exponentiate beyond ULONG_MAX\n" + }, + "2 ** (2 ** 100)": { + "exit": 0, + "ftime": 1755486329.9161963, + "output": "error: cannot exponentiate beyond ULONG_MAX\n" + }, + "2 ** -100": { + "exit": 0, + "ftime": 1755485912.92433, + "output": "error: negative exponents not supported\n" + }, + "2 ** -3": { + "exit": 0, + "ftime": 1755484850.7665782, + "output": "error: negative exponents not supported\n" + }, + "2 ** 3": { + "exit": 0, + "ftime": 1755486620.6945953, + "output": "8 \n" + }, + "2 ** 3.5": { + "exit": 0, + "ftime": 1755486595.597832, + "output": "error: cannot exponentiate by a fraction\n" + }, + "2 ** 7": { + "exit": 0, + "ftime": 1755486363.6767666, + "output": "128 \n" + }, + "2 ** 8": { + "exit": 0, + "ftime": 1755486361.3349445, + "output": "256 \n" + }, + "2 ** x": { + "exit": 0, + "ftime": 1755486590.4542077, + "output": "error: use of undefined variable 'x'!\n" + }, + "2 + 3": { + "exit": 0, + "ftime": 1755473136.3299985, + "output": "???" + }, + "2 - 3": { + "exit": 0, + "ftime": 1755473136.3299985, + "output": "???" + }, + "2 / 3": { + "exit": 0, + "ftime": 1755473136.3299985, + "output": "???" + }, + "2 / 4": { + "exit": 0, + "ftime": 1755473136.3299987, + "output": "???" + }, + "2 < x": { + "exit": 0, + "ftime": 1755473136.3299987, + "output": "???" + }, + "2 << -3": { + "exit": 0, + "ftime": 1755486786.9927943, + "output": "error: cannot left bitshift by a negative value\n" + }, + "2 << 3": { + "exit": 0, + "ftime": 1755486806.9589288, + "output": "16 \n" + }, + "2 << x": { + "exit": 0, + "ftime": 1755486587.9814649, + "output": "error: use of undefined variable 'x'!\n" + }, + "2 <= x": { + "exit": 0, + "ftime": 1755473136.3299992, + "output": "???" + }, + "2 > x": { + "exit": 0, + "ftime": 1755473136.3299992, + "output": "???" + }, + "2 >= x": { + "exit": 0, + "ftime": 1755473136.3299992, + "output": "???" + }, + "2 >> -3": { + "exit": 0, + "ftime": 1755486768.3421023, + "output": "error: cannot right bitshift by a negative value\n" + }, + "2 >> 3": { + "exit": 0, + "ftime": 1755486617.9829493, + "output": "\u00b9/\u2084\n" + }, + "2 >> 3.5": { + "exit": 0, + "ftime": 1755473136.3299994, + "output": "???" + }, + "2 >> x": { + "exit": 0, + "ftime": 1755486585.966805, + "output": "error: use of undefined variable 'x'!\n" + }, + "2)": { + "exit": 0, + "ftime": 1755473136.3299994, + "output": "???" + }, + "2,": { + "exit": 0, + "ftime": 1755473136.3299994, + "output": "???" + }, + "2.0": { + "exit": 0, + "ftime": 1755473136.3299994, + "output": "???" + }, + "2.0 << 3.5": { + "exit": 0, + "ftime": 1755473136.3299997, + "output": "???" + }, + "2.3a": { + "exit": 1, + "ftime": 1755487294.3795893, + "output": "syntax error!\n2.3a\n \u2191\n \u2514 unexpected identifier token\n" + }, + "2.5": { + "exit": 0, + "ftime": 1755478503.2517016, + "output": "2 \u00b9/\u2082\n" + }, + "2.5 % 2": { + "exit": 0, + "ftime": 1755478873.9738853, + "output": "\u00b9/\u2082\n" + }, + "2.5 ** 3": { + "exit": 0, + "ftime": 1755486395.0524492, + "output": "15 \u2075/\u2088\n" + }, + "2.5 ** 3.5": { + "exit": 0, + "ftime": 1755486583.053286, + "output": "error: cannot exponentiate by a fraction\n" + }, + "2.5 << 3": { + "exit": 0, + "ftime": 1755486803.5745416, + "output": "20 \n" + }, + "2.5 << 3.1": { + "exit": 0, + "ftime": 1755486699.8884826, + "output": "error: cannot left bitshift by fractional value\n" + }, + "2.5 >> 3": { + "exit": 0, + "ftime": 1755486623.437168, + "output": "\u2075/\u2081\u2086\n" + }, + "2.5 >> 3.1": { + "exit": 0, + "ftime": 1755486732.0083385, + "output": "error: cannot right bitshift by a fractional value\n" + }, + "2000000": { + "exit": 0, + "ftime": 1755473136.3299997, + "output": "???" + }, + "2000000 / 4000000": { + "exit": 0, + "ftime": 1755473136.33, + "output": "???" + }, + "3": { + "exit": 0, + "ftime": 1755473136.33, + "output": "???" + }, + "3 != 2": { + "exit": 0, + "ftime": 1755473136.33, + "output": "???" + }, + "3 % x": { + "exit": 0, + "ftime": 1755473136.33, + "output": "???" + }, + "3 * x": { + "exit": 0, + "ftime": 1755473136.3300002, + "output": "???" + }, + "3 + x": { + "exit": 0, + "ftime": 1755473136.3300002, + "output": "???" + }, + "3 - 2": { + "exit": 0, + "ftime": 1755473136.3300002, + "output": "???" + }, + "3 - x": { + "exit": 0, + "ftime": 1755473136.3300002, + "output": "???" + }, + "3 / 2": { + "exit": 0, + "ftime": 1755473136.3300004, + "output": "???" + }, + "3 / x": { + "exit": 0, + "ftime": 1755473136.3300004, + "output": "???" + }, + "3 // 2": { + "exit": 0, + "ftime": 1755478409.721844, + "output": "1 \n" + }, + "3 // 2.5": { + "exit": 0, + "ftime": 1755478506.6111612, + "output": "1 \n" + }, + "3 < 2": { + "exit": 0, + "ftime": 1755473136.3300004, + "output": "???" + }, + "3 <= 2": { + "exit": 0, + "ftime": 1755473136.3300004, + "output": "???" + }, + "3 == 1 + 1 + 1": { + "exit": 0, + "ftime": 1755476842.3777554, + "output": "1 \n" + }, + "3 == 2": { + "exit": 0, + "ftime": 1755473136.3300006, + "output": "???" + }, + "3 == x": { + "exit": 0, + "ftime": 1755473136.3300006, + "output": "???" + }, + "3 > 2": { + "exit": 0, + "ftime": 1755473136.3300006, + "output": "???" + }, + "3 >= 2": { + "exit": 0, + "ftime": 1755473136.3300009, + "output": "???" + }, + "3,": { + "exit": 0, + "ftime": 1755473136.3300009, + "output": "???" + }, + "3.5": { + "exit": 0, + "ftime": 1755473136.3300009, + "output": "???" + }, + "4": { + "exit": 0, + "ftime": 1755473136.3300009, + "output": "???" + }, + "4.5 % 2": { + "exit": 0, + "ftime": 1755478877.596854, + "output": "\u00b9/\u2082\n" + }, + "4000000": { + "exit": 0, + "ftime": 1755473136.330001, + "output": "???" + }, + "5": { + "exit": 0, + "ftime": 1755473136.330001, + "output": "???" + }, + "5 % 3": { + "exit": 0, + "ftime": 1755473136.330001, + "output": "???" + }, + "5.5": { + "exit": 0, + "ftime": 1755473136.330001, + "output": "???" + }, + "5.5 % 3.5": { + "exit": 0, + "ftime": 1755473136.3300014, + "output": "???" + }, + "7 % 0": { + "exit": 0, + "ftime": 1755476047.0999649, + "output": "???" + }, + "7 % 0.1": { + "exit": 0, + "ftime": 1755476047.0999653, + "output": "???" + }, + "7 % 1": { + "exit": 0, + "ftime": 1755476047.0999653, + "output": "???" + }, + "7 % 5": { + "exit": 0, + "ftime": 1755476113.2879791, + "output": "???" + }, + "7 % @": { + "exit": 1, + "ftime": 1755476394.9838262, + "output": "syntax error!\n7 % @\n \u2191\n \u2514 unknown token '@'\n" + }, + ":": { + "exit": 0, + "ftime": 1755473136.3300014, + "output": "???" + }, + ": + :": { + "exit": 0, + "ftime": 1755473136.3300014, + "output": "???" + }, + "<": { + "exit": 0, + "ftime": 1755473136.3300016, + "output": "???" + }, + "<<": { + "exit": 0, + "ftime": 1755473136.3300016, + "output": "???" + }, + "<=": { + "exit": 0, + "ftime": 1755473136.3300016, + "output": "???" + }, + "=": { + "exit": 0, + "ftime": 1755473136.3300016, + "output": "???" + }, + "= ? = : =": { + "exit": 1, + "ftime": 1755472560.8633175, + "output": "syntax error!\n= ? = : =\n\u2191\n\u2514 unexpected assignment token\n" + }, + "==": { + "exit": 0, + "ftime": 1755473136.3300018, + "output": "???" + }, + ">": { + "exit": 0, + "ftime": 1755473136.3300018, + "output": "???" + }, + ">=": { + "exit": 0, + "ftime": 1755473136.3300018, + "output": "???" + }, + ">>": { + "exit": 0, + "ftime": 1755473136.330002, + "output": "???" + }, + "?": { + "exit": 0, + "ftime": 1755473136.330002, + "output": "???" + }, + "@": { + "exit": 0, + "ftime": 1755473136.330002, + "output": "???" + }, + "@ % 7": { + "exit": 1, + "ftime": 1755476293.8294644, + "output": "syntax error!\n@ % 7\n\u2191\n\u2514 unknown token '@'\n" + }, + "_0": { + "exit": 0, + "ftime": 1755473136.3300025, + "output": "???" + }, + "_1": { + "exit": 0, + "ftime": 1755473136.3300025, + "output": "???" + }, + "_123": { + "exit": 0, + "ftime": 1755473136.3300025, + "output": "???" + }, + "_____0": { + "exit": 0, + "ftime": 1755473136.3300025, + "output": "???" + }, + "a.b": { + "exit": 0, + "ftime": 1755473136.3300028, + "output": "???" + }, + "a123": { + "exit": 0, + "ftime": 1755473136.3300028, + "output": "???" + }, + "x": { + "exit": 0, + "ftime": 1755473136.3300028, + "output": "???" + }, + "x != 2": { + "exit": 0, + "ftime": 1755473136.3300028, + "output": "???" + }, + "x != y": { + "exit": 0, + "ftime": 1755473136.330003, + "output": "???" + }, + "x % 1": { + "exit": 0, + "ftime": 1755477732.0229232, + "output": "error: use of undefined variable 'x'!\n" + }, + "x % 3": { + "exit": 0, + "ftime": 1755473136.330003, + "output": "???" + }, + "x % y": { + "exit": 0, + "ftime": 1755478840.2607698, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x & 2": { + "exit": 0, + "ftime": 1755477480.7324827, + "output": "???" + }, + "x & y": { + "exit": 0, + "ftime": 1755477480.7324827, + "output": "???" + }, + "x && 0": { + "exit": 0, + "ftime": 1755473136.330003, + "output": "???" + }, + "x && 1": { + "exit": 0, + "ftime": 1755473136.3300033, + "output": "???" + }, + "x && y": { + "exit": 0, + "ftime": 1755473136.3300033, + "output": "???" + }, + "x * 1": { + "exit": 0, + "ftime": 1755477704.4151225, + "output": "error: use of undefined variable 'x'!\n" + }, + "x * 3": { + "exit": 0, + "ftime": 1755473136.3300033, + "output": "???" + }, + "x * y": { + "exit": 0, + "ftime": 1755473136.3300035, + "output": "???" + }, + "x ** 2": { + "exit": 0, + "ftime": 1755486395.124142, + "output": "error: use of undefined variable 'x'!\n" + }, + "x ** y": { + "exit": 0, + "ftime": 1755486512.5055916, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x + 3": { + "exit": 0, + "ftime": 1755473136.3300035, + "output": "???" + }, + "x + y": { + "exit": 0, + "ftime": 1755473136.3300035, + "output": "???" + }, + "x - 1": { + "exit": 0, + "ftime": 1755473136.3300035, + "output": "???" + }, + "x - 3": { + "exit": 0, + "ftime": 1755473136.3300037, + "output": "???" + }, + "x - x": { + "exit": 0, + "ftime": 1755473136.3300037, + "output": "???" + }, + "x - y": { + "exit": 0, + "ftime": 1755473136.3300037, + "output": "???" + }, + "x / 1": { + "exit": 0, + "ftime": 1755477669.6061237, + "output": "error: use of undefined variable 'x'!\n" + }, + "x / 3": { + "exit": 0, + "ftime": 1755473136.3300037, + "output": "???" + }, + "x / y": { + "exit": 0, + "ftime": 1755478843.2609138, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x // 2": { + "exit": 0, + "ftime": 1755478181.2181916, + "output": "error: use of undefined variable 'x'!\n" + }, + "x // y": { + "exit": 0, + "ftime": 1755478178.2888138, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x < 2": { + "exit": 0, + "ftime": 1755473136.330004, + "output": "???" + }, + "x < y": { + "exit": 0, + "ftime": 1755473136.330004, + "output": "???" + }, + "x << 2": { + "exit": 0, + "ftime": 1755483969.0134418, + "output": "error: use of undefined variable 'x'!\n" + }, + "x << y": { + "exit": 0, + "ftime": 1755486520.6408663, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x <= 2": { + "exit": 0, + "ftime": 1755473136.330004, + "output": "???" + }, + "x <= y": { + "exit": 0, + "ftime": 1755473136.3300042, + "output": "???" + }, + "x = 1 / 3": { + "exit": 0, + "ftime": 1755473136.3300042, + "output": "???" + }, + "x = 3": { + "exit": 0, + "ftime": 1755477108.2987745, + "output": "3 \n" + }, + "x = 3, x": { + "exit": 0, + "ftime": 1755473136.3300042, + "output": "???" + }, + "x == 2": { + "exit": 0, + "ftime": 1755473136.3300045, + "output": "???" + }, + "x == y": { + "exit": 0, + "ftime": 1755473136.3300045, + "output": "???" + }, + "x > 2": { + "exit": 0, + "ftime": 1755473136.3300045, + "output": "???" + }, + "x > y": { + "exit": 0, + "ftime": 1755473136.3300045, + "output": "???" + }, + "x > @": { + "exit": 1, + "ftime": 1755475796.0129073, + "output": "syntax error!\nx > @\n \u2191\n \u2514 unknown token '@'\n" + }, + "x > y": { + "exit": 0, + "ftime": 1755475885.5324898, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x >= 2": { + "exit": 0, + "ftime": 1755475971.8724043, + "output": "???" + }, + "x >= y": { + "exit": 0, + "ftime": 1755475971.7800138, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x >> 3": { + "exit": 0, + "ftime": 1755483915.710374, + "output": "error: use of undefined variable 'x'!\n" + }, + "x >> y": { + "exit": 0, + "ftime": 1755486536.199988, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "x ? 0 : 0": { + "exit": 0, + "ftime": 1755473136.3300047, + "output": "???" + }, + "x ? 0 : z": { + "exit": 0, + "ftime": 1755473136.3300047, + "output": "???" + }, + "x ? y : !": { + "exit": 1, + "ftime": 1755474795.7716818, + "output": "syntax error!\nx ? y : !\n \u2191\n \u2514 unexpected EOF token\n" + }, + "x ? y : 0": { + "exit": 0, + "ftime": 1755475030.8312356, + "output": "error: use of undefined variable 'x'!\n" + }, + "x ? y : z": { + "exit": 0, + "ftime": 1755475020.1507874, + "output": "error: use of undefined variable 'x'!\n" + }, + "x @ y": { + "exit": 1, + "ftime": 1755474539.2456896, + "output": "syntax error!\nx @ y\n \u2191\n \u2514 unexpected unknown token '@'\n" + }, + "x | 2": { + "exit": 0, + "ftime": 1755477480.7324834, + "output": "???" + }, + "x | y": { + "exit": 0, + "ftime": 1755477480.7324834, + "output": "???" + }, + "x || 0": { + "exit": 0, + "ftime": 1755475034.2312126, + "output": "error: use of undefined variable 'x'!\n" + }, + "x || 1": { + "exit": 0, + "ftime": 1755474530.7809658, + "output": "error: use of undefined variable 'x'!\n" + }, + "x || y": { + "exit": 0, + "ftime": 1755474294.1468184, + "output": "error: use of undefined variable 'x'!\nerror: use of undefined variable 'y'!\n" + }, + "y": { + "exit": 0, + "ftime": 1755474250.473986, + "output": "error: use of undefined variable 'y'!\n" + }, + "z": { + "exit": 0, + "ftime": 1755474239.6175704, + "output": "error: use of undefined variable 'z'!\n" + }, + "|1": { + "exit": 1, + "ftime": 1755474246.7950273, + "output": "syntax error!\n|1\n\u2191\n\u2514 unknown token '|1'\n" + }, + "||": { + "exit": 1, + "ftime": 1755474227.929854, + "output": "syntax error!\n||\n\u2191\n\u2514 unexpected logical-or token\n" + }, + "~0": { + "exit": 0, + "ftime": 1755477480.7324836, + "output": "???" + }, + "~1": { + "exit": 0, + "ftime": 1755487294.3820662, + "output": "???" + }, + "~x": { + "exit": 0, + "ftime": 1755477480.7324839, + "output": "???" + } +} \ No newline at end of file