Я бы серьезно взглянул на синтаксический анализ на основе монадических комбинаторов (который также часто связан с лексическим анализом) в Haskell. Я нашел это довольно откровением; Удивительно, как легко вы можете создать парсер с нуля, используя этот метод. На самом деле это настолько просто, что зачастую быстрее написать свой собственный анализатор, чем пытаться использовать существующие библиотеки.
Самым известным примером является, вероятно, Parsec , в котором есть хорошее руководство пользователя , в котором объясняется, как его использовать. Существует список портов этой библиотеки для других языков (включая C ++ и Ruby ), перечисленных на странице Parsec вики Haskell , хотя я не знаком с ними, и поэтому я не могу сказать, насколько они близки к использованию Parsec в Haskell.
Если вы хотите узнать, как они работают внутренне и как писать свои собственные, я рекомендую начать с главы 8 («Функциональные парсеры») из Грэма Хаттона «Программирование на Haskell ». Как только вы хорошо поймете эту главу (которая, вероятно, займет несколько чтений), вы будете готовы.