Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 20 из 41

Тема: Поиск глобальных переменных C++

  1. #1
    Активный участник
    Регистрация
    17.05.2010
    Сообщений
    549

    Поиск глобальных переменных C++

    Есть задачка, которую не могу решить. Дано 9000 .cpp файлов, которые являют собой полноценные программы со своими мейнами. Нужно найти для каждого файла его глобальные переменные. Приветствуются отсылки к каким-нибудь тулзам, которые это умеют делать. Например, как это возможно вытянуть из линкера VS. Парсер написать пытаюсь, но это жутко сложная задача для меня. И время поджимает

  2. #2
    Активный участник
    Регистрация
    17.05.2010
    Сообщений
    653
    Есть подозрение, что нужно писать парсер.

  3. #3
    Освоившийся Аватар для mTwVitalik
    Регистрация
    26.09.2011
    Сообщений
    168
    Вроде надо писать парсер, но я не уверен.

  4. #4
    Новичок
    Регистрация
    01.11.2011
    Сообщений
    4
    Надо парсер писать, я узнавал

  5. #5
    Активный участник Аватар для AlcohoLiTTO
    Регистрация
    14.12.2010
    Адрес
    Киев, Украина.
    Сообщений
    1,185
    Despise the success of others

  6. #6
    Освоившийся
    Регистрация
    14.07.2011
    Сообщений
    133
    сам в шарпе прожу, там глобальных нет, но разве интеллисенс в vs не такой же кулвесчь при работе на плюсах?

  7. #7
    Активный участник Аватар для Ogra
    Регистрация
    09.11.2010
    Сообщений
    305
    Парсер писать не стоит - это слишком крутая задача... Я бы изучал автоматические сборщики документации, системы статического анализа, ну и конечно, компиляторы и линкеры.

  8. #8
    Освоившийся
    Регистрация
    02.09.2011
    Сообщений
    150
    Написал в Skype.

  9. #9
    Новичок
    Регистрация
    23.01.2012
    Сообщений
    4
    Commander_Duck, У меня тоже похожая проблема, надо парсить С++ файлы. Нашел решение проблемы?

  10. #10
    забанен навсегда
    Регистрация
    17.01.2012
    Сообщений
    184
    Var
    nothing:bread;
    Последний раз редактировалось NoEscape0; 15.02.2012 в 17:03.

  11. #11
    Освоившийся
    Регистрация
    31.03.2011
    Сообщений
    277
    я сам в делфи пишу, но, думаю
    Два противоречивых утверждения в одной строке.

  12. #12
    Новичок
    Регистрация
    14.12.2011
    Сообщений
    24
    Цитата Сообщение от NoEscape0 Посмотреть сообщение
    Вам сюда: http://www.cyberforum.ru/cpp/

    ---------- Сообщение добавлено в 13:15 ---------- Предыдущее сообщение было в 13:00 ----------

    Вообще- я сам в делфи пишу, но, думаю, алгаритм, приведённый ниже осуществить можно так же, как и на делфи.
    Алгаритм:
    вофторить n раз (n- кол во файлов)
    открыть файл в C++ (в делфи можно работать со сторонними приложениями путяё команды посыла нажатия клавиши опр. окну с нужным хэндлом, дамаю, в С есть такая же функция)
    далее- скопировать код, удалить всё до раздела объявления глоб. пер. и после, далее- обычный парсинг.

    ну- вроде как то так, но лучше спроси на киберфоруме, что линканул- там помогут.
    в мемориз

  13. #13
    Активный участник Аватар для Bolshevik
    Регистрация
    17.05.2010
    Сообщений
    521
    Цитата Сообщение от NoEscape0 Посмотреть сообщение
    Вообще- я сам в делфи пишу, но, думаю, алгаритм, приведённый ниже осуществить можно так же, как и на делфи.
    Если ты в глаза не видел си то зачем вставлять свое авторитетное мнение? В си нет разделов объявления переменных, т.е. переменные можно объявлять в любом участке кода. Поэтому глобальная переменная может находиться сверху файла, может между двумя функциями, может даже после всех функций. И парсить тут надо по другому.

    Как вариант - считать открытые и закрытые скобки. Открылась скобка +1 к счетчику, закрылась -1. Когда счетчик == 0 это значит что мы вышли из функции и не зашли в новую. Следовательно все переменные, которые мы встречаем - глобальные.

  14. #14
    забанен навсегда
    Регистрация
    22.02.2011
    Сообщений
    2,361
    Цитата Сообщение от Bolshevik Посмотреть сообщение
    Как вариант - считать открытые и закрытые скобки. Открылась скобка +1 к счетчику, закрылась -1. Когда счетчик == 0 это значит что мы вышли из функции и не зашли в новую. Следовательно все переменные, которые мы встречаем - глобальные.
    надо будет учесть все кавычки, ибо '{' увеличит счетчик, что не есть верно. С кавычками тоже можно намудрить, например "/" {" - слеш сделает из кавычки символ, а парсер его прочитает, как закрывающую кавычку.

  15. #15
    Освоившийся
    Регистрация
    02.09.2011
    Сообщений
    150
    Без полного разбора грамматики в С++ эта задача не решаема.

    Уже рекомендовал Commander_Duck http://www.gccxml.org/HTML/Index.html , ему, кажется, подошло.

  16. #16
    Активный участник Аватар для Bolshevik
    Регистрация
    17.05.2010
    Сообщений
    521
    Цитата Сообщение от MSoft Посмотреть сообщение
    надо будет учесть все кавычки, ибо '{' увеличит счетчик, что не есть верно. С кавычками тоже можно намудрить, например "/" {" - слеш сделает из кавычки символ, а парсер его прочитает, как закрывающую кавычку.
    Надо еще и комментарии учитывать. В комментах тоже скобки могут быть.


    Цитата Сообщение от Tranquil Посмотреть сообщение
    Без полного разбора грамматики в С++ эта задача не решаема.
    Ну это уже не для самопального парсера на коленке. Т_Т

  17. #17
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    167
    берешь, натравливаешь на файлы какую-нить прогу, которая их отформатирует нормально, и берешь только те переменный которые без отступов с начала строки.

  18. #18
    Активный участник Аватар для Michael13
    Регистрация
    17.05.2010
    Адрес
    Moscow
    Сообщений
    638
    Цитата Сообщение от NoEscape0 Посмотреть сообщение
    Вам сюда: http://www.cyberforum.ru/cpp/

    ---------- Сообщение добавлено в 13:15 ---------- Предыдущее сообщение было в 13:00 ----------

    Вообще- я сам в делфи пишу, но, думаю, алгаритм, приведённый ниже осуществить можно так же, как и на делфи.
    Алгаритм:
    вофторить n раз (n- кол во файлов)
    открыть файл в C++ (в делфи можно работать со сторонними приложениями путяё команды посыла нажатия клавиши опр. окну с нужным хэндлом, дамаю, в С есть такая же функция)
    далее- скопировать код, удалить всё до раздела объявления глоб. пер. и после, далее- обычный парсинг.

    ну- вроде как то так, но лучше спроси на киберфоруме, что линканул- там помогут.
    Вот после таких кадров и говорят, что технари - неграмотное быдло

  19. #19
    Освоившийся
    Регистрация
    17.05.2010
    Сообщений
    158
    Скачать какой-нибудь скриптовый движок для c++, распарсить им все файлы и вытащить оттуда глобальные переменные

    Но это из раздела "из пушки по тараканам".

  20. #20
    Новобранец
    Регистрация
    07.06.2010
    Сообщений
    32
    Открываешь файл, удаляешь от туда все функции, структуры, классы, коменты и директивы препроцессора. Всё что осталось - глобальные переменные.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •