Если пользователь вводит строку кода, соответствующую традиционным выражениям, вы можете вручную написать для этого рекурсивный анализатор спуска за несколько часов и покончить с этим.
Если ваши входные данные представляют собой фрагмент сложного языка (например, вы хотите принять строку кода C #), вам потребуется гораздо более сильный анализатор, и рекомендуется использовать генератор синтаксического анализа.
Тем не менее, вы обнаружите, что большинство генераторов синтаксического анализатора не предлагают вам хороший способ для анализа части языка, который вы определяете, но вы можете обойти это, определив корневую грамматику Правило упоминать нетерминалы, которые соответствуют «линиям», которые вы готовы принять.