using System; using System.Collections.Generic; using System.Text; namespace SuperBASIC { enum NumberType{ Ans, Number, Operand }; struct BasicNumber { internal NumberType type; readonly Runtime runtime; readonly private float number; readonly private int operand; internal BasicNumber(Runtime rt, float v) { type = NumberType.Number; number = v; operand = 0; runtime = rt; } internal BasicNumber(Runtime rt) { type = NumberType.Ans; number = 0; operand = 0; runtime = rt; } internal BasicNumber(Runtime rt, int v) { type = NumberType.Operand; number = 0; operand = v; runtime = rt; } internal int GetOperand() { return operand; } public float GetValue() { if (type == NumberType.Number) { return number; } else { return runtime.GetRegister(); } } public static implicit operator float(BasicNumber v) => v.GetValue(); public override string ToString() => $"{number}"; } }