Qt + Bison, ошибки компиляции. решения/предостережения. |
Здравствуйте, гость ( Вход | Регистрация )
Qt + Bison, ошибки компиляции. решения/предостережения. |
trdm |
9.8.2009, 16:13
Сообщение
#1
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
Решил поработать с Bison на Qt, собрать парсер для языка подобного 1С.
Воспользовался грамматикой отсюда: 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 подчеркивания терминальным символам:
После этого компиляция прошла. Публикую как рецепт и предостережение будующим девелоперам, которые возможно будут возиться с Qt+Bison. Фишка в том, что MS VS 6.0 проглотила эту грамматику и не пикнула. Сообщение отредактировал trdm - 9.8.2009, 16:14 |
|
|
Текстовая версия | Сейчас: 30.11.2024, 4:53 |