У меня есть входные блоки текста с командами и аргументами, по одному на строку, например
XYZ ARG1,ARG2,ARG3,...,ARGN
И я хочу убедиться, что аргументы XYZ
правильно сформированы для этой конкретной команды, и выполнить правильный блок кода, если они есть. Есть что-то вроде ~ 100 команд, некоторые из которых имеют переменное число аргументов, различные отношения (то есть, если была вызвана команда XYZ
, тогда мне нужно также вызвать команду ABC
).
Также существуют команды, такие как:
COMMAND
XYZ ARG1
BEF ARG1 ARG2
ENDCOMMAND
Важно, чтобы текст содержался в COMMAND
и ENDCOMMAND
.
Обычно для чего-то подобного я бы использовал Lex и Yacc, а не regex, но есть ли что-нибудь более современное? Код написан на C #. Есть ли что-нибудь в MSDN, что делает это, а не старой школы C Lex и Yacc?