Как мне начать писать парсер (рекурсивный спуск?) в С#? На данный момент мне просто нужен простой парсер, который анализирует арифметические выражения (и читает переменные?). Хотя позже я намереваюсь написать синтаксический анализатор xml и html (для учебных целей). Я делаю это из-за широкого спектра материалов, в которых полезны парсеры: веб-разработка, переводчики языка программирования, инструменты для дома, игровые моторы, редакторы карт и плитки и т.д. Итак, какова основная теория написания парсеров и как мне реализовать один в С#? Является ли С# правильным языком для парсеров (я как-то написал простой арифметический синтаксический анализатор в С++ и был эффективным. Будет ли JIT-компиляция одинаково хороша?). Любые полезные ресурсы и статьи. И лучше всего, примеры кода (или ссылки на примеры кода).
Примечание. Из любопытства кто-нибудь, кто отвечает на этот вопрос, когда-либо реализовал парсер в С#?