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 |
|
|
Litkevich Yuriy |
9.8.2009, 18:57
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
BRE |
9.8.2009, 19:23
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
AD |
9.8.2009, 20:54
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
А синтаксический анализатор использовали? Если да, то какой? flex?
А можно код приложения на Qt еще выложить? Чтобы посмотреть этот синтез Qt и bison? |
|
|
trdm |
10.8.2009, 17:50
Сообщение
#5
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
А синтаксический анализатор использовали? Если да, то какой? flex? А можно код приложения на Qt еще выложить? Чтобы посмотреть этот синтез Qt и bison? анализаторов пока не использовал, думаю и не буду - разбр буду вести вручную. А что тебе даст код? Он не простой и еще незаконченный. |
|
|
AD |
10.8.2009, 17:55
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Текстовая версия | Сейчас: 30.11.2024, 2:44 |