P>spirit — это либа, предоставляющая такие возможности (embedded EBNF), которые просто невозможно достичь иными способами.
Да вот только не EBNF она предоставляет, а нечитаемую пародию на него. На практике от использования спирита возникает больше проблем, чем решается. Самое оптимальное почти во всех случаях — сделать прототип на ANTLR и написать рабочий парсер вручную по мотивам сгенерированного кода.