Воспользовался грамматикой отсюда: 1CLangParser (респозитарий cvs.alterplast.ru)
при попытке собрать начал получать кучу непонятного вида ошибок, справиться с которыми по
причине малого опыта и непонятного происхождения было затруднительно.
Вот приблизительные ошибки:
Раскрывающийся текст
mingw32-make.exe[1]: Entering directory `D:/Progekts/_Linux/unNStudio/Lang/Src'
g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.3.4\include\QtCore" -I"..\..\..\..\Qt\4.3.4\include\QtCore" -I"..\..\..\..\Qt\4.3.4\include\QtGui" -I"..\..\..\..\Qt\4.3.4\include\QtGui" -I"..\..\..\..\Qt\4.3.4\include" -I"." -I"..\..\..\..\Qt\4.3.4\include\ActiveQt" -I"release" -I"." -I"..\..\..\..\Qt\4.3.4\mkspecs\win32-g++" -o release\uoLang.tab.o uoLang\uoLang.tab.cpp
In file included from ../../../../Qt/4.3.4/include/QtCore/qglobal.h:1,
from ../../../../Qt/4.3.4/include/QtCore/../../src/corelib/tools/qchar.h:47,
from ../../../../Qt/4.3.4/include/QtCore/qchar.h:1,
from ../../../../Qt/4.3.4/include/QtCore/../../src/corelib/tools/qstring.h:47,
from ../../../../Qt/4.3.4/include/QtCore/qstring.h:1,
from ../../../../Qt/4.3.4/include/QtCore/QString:1,
from uoLang\/uoLangParser.h:11,
from uoLang\uoLang.tab.cpp:137:
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1697: error: expected unqualified-id before numeric constant
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1697: error: abstract declarator `const char*' used as declaration
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1697: error: `$_4' declared as an `inline' field
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1697: error: expected `;' before numeric constant
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1697: error: expected `;' before '}' token
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1698: error: expected unqualified-id before numeric constant
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1698: error: abstract declarator `const char*' used as declaration
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1698: error: `$_6' declared as an `inline' field
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1698: error: expected `;' before numeric constant
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1698: error: expected `;' before '}' token
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1699: error: expected unqualified-id before numeric constant
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1699: error: abstract declarator `const char*' used as declaration
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1699: error: `$_8' declared as an `inline' field
../../../../Qt/4.3.4/include/QtCore/../../src/corelib/global/qglobal.h:1699: error: expected `;' before numeric constant
после N-ного час битья головой апстену наконец-то дошло, что терминальные символы, которые бизон потом швыряет в дефайны, используются в других дефайнах Qt и из-за этого вылазиет куча совершенно непонятного вида ошибок.
Вышел из проблемы следующим образом, добавил по 2 подчеркивания терминальным символам:
label__ /* Метка ('~ИмяМетки') */
number__ /* Число (без + -) */
date__ /* Дата (любая однострочная последовательность символов между двух апострофов ) */
literal__ /* Строка (для простоты '|asdhsd"' тоже считается строкой) */
name__ /* Любой идентификатор */
func__ /* Функция */
После этого компиляция прошла.
Публикую как рецепт и предостережение будующим девелоперам, которые возможно будут возиться с Qt+Bison.
Фишка в том, что MS VS 6.0 проглотила эту грамматику и не пикнула.