From 19d65e8cc510314e205549a5158259d7584af288 Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Mon, 29 Jan 2024 22:09:39 -0600 Subject: [PATCH] Make OperationMnemonicMap one-to-one --- libs/UIX.Asm/LexerMaps.cs | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/libs/UIX.Asm/LexerMaps.cs b/libs/UIX.Asm/LexerMaps.cs index 92167ad..1cc25bd 100644 --- a/libs/UIX.Asm/LexerMaps.cs +++ b/libs/UIX.Asm/LexerMaps.cs @@ -12,7 +12,15 @@ internal static class LexerMaps ? type : null; } - public static OpCode MnemonicToOpCode(string mnemonic) => MnemonicMap[mnemonic.ToUpperInvariant()]; + public static OpCode MnemonicToOpCode(string mnemonic) + { + if (MnemonicMap.TryGetValue(mnemonic, out var opCode)) + return opCode; + else if (OperationMnemonicMap.TryGetValue(mnemonic, out _)) + return OpCode.Operation; + + throw new System.ArgumentException($"'{mnemonic}' is not a known UIXA instruction.", nameof(mnemonic)); + } internal static readonly IDictionary OperationMnemonicMap = new Dictionary { @@ -66,24 +74,6 @@ internal static class LexerMaps ["VTC"] = OpCode.VerifyTypeCast, ["CON"] = OpCode.ConvertType, ["OPR"] = OpCode.Operation, // Generic operation, allow dynamic invocations of operators - ["ADD"] = OpCode.Operation, - ["SUB"] = OpCode.Operation, - ["MUL"] = OpCode.Operation, - ["DIV"] = OpCode.Operation, - ["MOD"] = OpCode.Operation, - ["NEG"] = OpCode.Operation, - ["AND"] = OpCode.Operation, - ["ORR"] = OpCode.Operation, - ["NOT"] = OpCode.Operation, - ["REQ"] = OpCode.Operation, - ["RNE"] = OpCode.Operation, - ["RLT"] = OpCode.Operation, - ["RGT"] = OpCode.Operation, - ["RLE"] = OpCode.Operation, - ["RGE"] = OpCode.Operation, - ["RIS"] = OpCode.Operation, - ["INC"] = OpCode.Operation, - ["DEC"] = OpCode.Operation, ["ISC"] = OpCode.IsCheck, ["ASC"] = OpCode.As, ["TYP"] = OpCode.TypeOf,