Lex & Yacc - ваш ответ.Или Flex и Bison, которые являются разветвленной версией оригинальных инструментов.
Они бесплатны, они являются настоящим стандартом для написания лексеров и синтаксических анализаторов на C и используются повсеместно.
Кроме того, O 'Reilly выпустила небольшую жемчужину из 300 страниц: Flex & Bison .Я купил его, и он действительно объясняет вам, как написать хороший синтаксический анализатор для языка программирования и обрабатывать все тонкие вещи (восстановление после ошибок, конфликты, области действия и т. Д.).Он также ответит на ваши вопросы о том, как вы анализируете выражения: ваш подход правильный с нисходящим парсером, но вы обнаружите, что этого недостаточно для обработки приоритетов операторов.
Конечно, для хобби вымог бы написать свой собственный лексер и парсер, но это было бы просто академическим усилием, которое приятно понять, как работают FSM и парсер, но без особого веселья:)
Если вы, вместо этого, интересуетесь дизайном языка программированияили сложные реализации Я предлагаю эту книгу: Прагматика языка программирования , которая не столь известна из-за Книга Дракона , но она действительно объясняет, почемуи как различные характеристики могут и должны быть реализованы в компиляторе.«Книга Дракона» - это тоже Библия, и на самом низком уровне она расскажет, как написать синтаксический анализатор… но я предупреждаю, что это будет скучно…