areejmayar Ответов: 1

Парсер или регулярное выражение?


У меня есть задание
Мне нужно реализовать программу для извлечения вызовов функций и их аргументов из текстов программ на языке с++. Программа принимает текст в качестве входных данных, должна выводить текст на выходе, где информация о найденных функциях выводится отдельными строками. Каждая строка вывода представляет собой последовательность элементов, разделенных пробелами: имя функции и аргументы.

Что я уже пробовал:

what i need to do?
i know that i need scan the text to find the methods pattern in the text but the question is is regular expression enough for this task or there is a tool to do that and i do not need to invent the wheel?
is it possible to implement this task in c# or better in java 

Richard MacCutchan

Вы можете использовать любой язык, но Google для языковых парсеров, так как есть ряд библиотек, которые могут вам помочь.

areejmayar

я искал в течение недели есть много ответов. Некоторые люди говорят, что достаточно использовать регулярное выражение, а другие говорят, что лучше не изобретать велосипед и использовать подходящий парсер, а я новичок в этой области. Мне нужна помощь

1 Ответов

Рейтинг:
1

OriginalGriff

Его можно реализовать либо в C#, либо в Java, но регулярное выражение будет недостаточно: существует слишком много разновидностей сигнатур методов (и другого кода), с которыми вам нужно иметь дело, чтобы сделать регулярное выражение жизнеспособным.

Вместо этого посмотрите на поиск синтаксического анализатора C++ на вашем предпочтительном языке и посмотрите, что вы можете сделать с ним - это серьезная работа, чтобы создать свой собственный!
Google поможет: Парсер C++ - поиск в Google[^] является отправной точкой.


areejmayar

Я читал, что есть Clang или AHTLR, я искал их привязку в C# и как их использовать, но без надежды:(