Я бы хотел, чтобы пользователь мог передавать такую строку, как:
FLOOR(AVG(SomeToken))
и подтвердите, что эта строка действительна (например, правильность вложенности, круглые скобки закрыты, FLOOR и AVG - допустимые функции, SomeToken - допустимый токен).
Я не уверен, с чего начать делать что-то подобное. Я пытался смотреть на лексеры / парсеры, но все еще немного потерян.