Я пытаюсь выполнить синтаксический анализ инструкций. Я хочу использовать регулярное выражение для проверки каждой подстроки. Как я могу убедиться, что строка заканчивается запятой? Мое регулярное выражение для памяти (mips) также не работает.Регулярное выражение, должно заканчиваться запятой
public static OperandType GetRegisterType(this string source)
{
if (Regex.IsMatch(source, @"\$t[0-9]"))
return OperandType.Temporary; // $t0 - $t9
if (Regex.IsMatch(source, @"\$s[0-9]"))
return OperandType.Store; // $s0 - $s9
if (Regex.IsMatch(source, @"\$k[0-1]"))
return OperandType.OSReserved; // $k0 - $k1
if (Regex.IsMatch(source, @"[-+]?\b\d+\b"))
return OperandType.Constant;
if (Regex.IsMatch(source, @"\$zero"))
return OperandType.Special;
if (Regex.IsMatch(source, @"[a-zA-Z0-9]+\b\:"))
return OperandType.Label;
if (Regex.IsMatch(source, @"\d+\b\(\$[s-t]\b[0-9])"))
return OperandType.Memory;
return OperandType.Invalid;
}
пример того, как загрузить из памяти
lw $t7,248($t2)
Зачем вам Regex? source.EndsWith (",") будет делать то, что вы хотите, и красиво и читаемо. –
Мне нужно убедиться, что вся строка соответствует форме. т.е. временный => $ t0 - $ t9 –
. Попробуйте объяснить, что вы подразумеваете под * Как я могу убедиться, что строка заканчивается запятой? * в качестве примера 'lw $ t7,248 ($ t2)' не имеет запятой в конце. – Borodin