Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Распарсить объявление C++ функции


Автор: User008 9.9.2011, 15:35
Меня интересуют разработки для парсинга С++ функции.

Автор: borisbn 9.9.2011, 16:37
http://stackoverflow.com/questions/5577425/using-regular-expressions-in-python-to-determine-c-functions-and-their-paramete

http://stackoverflow.com/questions/476173/regex-to-pull-out-c-function-prototype-declarations

Автор: User008 9.9.2011, 16:58
Спасибо. А есть на C++?

Автор: borisbn 10.9.2011, 12:54
А какая разница ? Там же регулярки. Или тебя интересуют ф-ции/библиотеки, реализующие регулярки ?
Тогда http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/index.html, http://doc.qt.nokia.com/latest/qregexp.html, http://msdn.microsoft.com/en-us/library/ff926113.aspx (это только для C++0x)

А вообще, у тебя поразительный лаконизм. Крткст сстр тлнт ?

Автор: boostcoder 10.9.2011, 13:31
User008, парсеры для подобных задач обычно генерятся из правил при помощи flex, bison.
еще есть boost::spirit::lex, который парсеры не генерит. но умеет не меньше. а юзается проще, прям из использующего его кода.
пример:
Код

/* example4.input */
{

  if (variable) { a = b ; }

  while (10) { 

    if (2) { b = 10 ; }
    if (x) { c = x ; } else { d = 10 ; }

  }

  variable = 42;

}

http://www.assembla.com/code/boost-1_47_0/git/nodes/libs/spirit/example/lex/example4.input
т.е. распарсить декларацию функции, вообще как два пальца об асфальт  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)