Я не знаю, почему ваш конкретный код Spirit не работает, но, учитывая, что вы «очень плохо знакомы с C ++» и спрашиваете, как сделать ваш код более понятным в долгосрочной перспективе, мой ответ таков:
Не используйте Boost Spirit. Используйте понятный генератор синтаксических анализаторов, такой как ANTLR (v2 может генерировать код C ++; v3 нет, поэтому используйте v2), или lex & yacc или аналогичный.
Boost Spirit - отличный инструмент для демонстрации того, как далеко можно продвинуться в определенных функциях C ++. Это не особенно поможет вам, если ваша цель - интуитивно понятный и обслуживаемый код, особенно если вы еще не разбираетесь в C ++ (это совсем не стучит в вас).