Такие средства как Bison, Flex и в дальнейшем языки ФП. Других я не знаю.
Ну Bison/Flex еще понятно- у них на выходе тот же С/С++, а цель использования- уменьшить сложность парсера и вероятность ошибки. А какой смысл в ФП кроме преумножения сущностей раз не планируется полное переписывание?