Не первый раз сталкиваюсь с ошибками при попытках построить проекты со сколько-нибудь сложной грамматикой на boost::spirit под Embarcadero C++

Принесением кровавых жертв и плясками с бубном, один из них все таки удалось откомпилировать.

Сразу оговорюсь - это решение для архитектуры win32 и соответствующего тулчейна, для компиляторов других платформ, поддерживаемых Embarcadero C++, проверка еще не проводилась. 

Помогает разбиение единого исходника с грамматикой на меньшие куски, разложенные по нескольким исходникам. Кроме того, здесь встретилось решение, позволившее даже не разбивать исходники на части:

It's rather rare that the main consumer of virdefs is the bodies of 
individual functions (the cases I've looked at tend to be vtables, thunks, 
etc). But, just in case, you could try the "-VA-" option:

* -VA Generate all global functions in their own virtual/weak segment

I recommend this workaround half-heartedly because I have not seen C++ code 
where it helped [except in contrived C-like test cases(*)].