Другие языки программирования и технологии

задание на C++, подскажите путь решения хотя бы

дана программа на С++, записать в выходной файл построчно все идентификаторы, встречающиеся в этой программе
!!
!!!nur!!!
610
А это практическое задание, или для обучения? И есть какие-нибудь требования для, например, C++ name mangling?
А то можно программно программу скомпилировать и debug info в каком-нибудь легко распарсивабельном формате получить. Да и есть всякие командно-строковые тулзы для выпарсивания символов из скомпилированной программы (при сохранении там дебагной инфы) .

На UNIX-like системах обычно с этим проблем нет, просто заскриптуйте вызовы gcc/gdb/otool/ldd/nm/с++filt тулзов, ну или что там вместо них на Вашем диалекте операционки используется. . .

ЗЫ. Еще можно погуглить либы для syntax coloring, в качестве альтернативного решения. Что-то такое было, они наверняка должны идентификаторы выпарсивать уметь.

ЗЫЗЫЗЫ. А можно еще таким путем пойти. Если задание учебное, решение нужно "примерное" и на C++ name mangling можно забить. Ищите первую букву (знак подчеркивания пусть тоже будет буквой) , до которой идет не-буква. Проверяете, является ли она частью коммента или строкового литерала или директивы препроцессора или зарезервированного слова (список зарезервированных слов гуглится) . Если нет, то это начало идентификатора. Ток пока парсить идентификатор будете, не забывайте, что там еще цифры могут быть, но только не первым символом. По схемам Бэкуса-Науэра идентификатор определялся именно как-то так.
ПП
Просто Павел
19 662
Лучший ответ
Ну вот когда программу дадут, ты и запишешь ;)
Если нужна программа, делающая это самостоятельно, то ей на вход передается текст другой программы, а она в нем ищет последовательности, начинающиеся буквой и содержащие только буквы или цифры, и выводит их построчно, проверяя при этом, не попадалась ли эта последовательность раньшн.
Никита Блохин
Никита Блохин
76 202
От вас требуют написать лексический анализатор исходного текста программы на C++ и вывести лексемы-идентификаторы.

Если найти в сети грамматику C++ для yacc, такую программу можно написать минут за 10.

ЗЫ
В такой постановке задача некорректна: C++ имеет ОЧЕНЬ много диалектов, в каждом из которых свой набор ключевых слов, что будет мешать написать ПРАВИЛЬНУЮ грамматику.
РЛ
Роман Ли
11 112
Что такое идентификаторы? Напиши полностью условие.
DR
Dilshod Raximov
3 757
Идентификатор это специальное имя, например int indef;
вот indef это идентификатор, т. е. имя.

Задание легкое.

Я бы сделал так.

....

int i, j;
float k, l;
char 'a';

Присваиваешь им значение, рендомно, либо в объвление можно

далее вывод на экран,
потом в условном операторе уже проверяешь их. (Тут думать нужно как сделать, я не стал думать, ибо лень)

если это int записываешь в файл int и тд и тп
Антон Латышев
Антон Латышев
2 087