разбирать строку формы динамической функции - PullRequest
1 голос
/ 23 апреля 2009

Я пытаюсь проанализировать динамическую функцию из строки, например:

char* func = "app.exe /path:\"@FileExists('filepath', @FileDelete('filepath'), @MsgBox('file not found','error',1))\";

хочу разобрать

@FileExists('filepath', @FileDelete('filepath'), @MsgBox('file not found','error',1))

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 23 апреля 2009

Как уже сказал Джош, вероятно, лучше всего использовать какой-нибудь динамический язык сценариев. Вы должны взглянуть на Lua , который легко встраивается, маленький и доступен по лицензии MIT.

4 голосов
/ 23 апреля 2009

C ++ не имеет понятия динамических функций. Если вы ищете какую-то функцию, которая будет принимать строку и выполнять ее как код C ++, вам не повезло.

3 голосов
/ 23 апреля 2009

Я предполагаю, что вы хотите выполнить код в строке. В C ++ после компиляции программы нет записи имен функций или переменных. Это все просто адреса.

Можно настроить собственную карту строк для функций. Затем вам нужно будет построить дерево функций / имен и аргументов и вручную вызвать функции. По сути, вы должны написать интерпретатор для некоторого подмножества C ++ с предопределенным набором доступных функций. Это абсолютно не задача для новичка, но если вы действительно этого хотите, взгляните на Анализ рекурсивного спуска . На сегодняшний день это самый простой способ начать писать переводчика. Если ваши потребности перерастают это, взгляните на некоторые из более мощных синтаксических анализаторов, таких как ANTLR или flex / bison

В C ++ возможно встраивать более динамичные языки сценариев. Фактически, большинство языков сценариев имеют некоторый интерфейс C, и все, что вы можете делать в C, вы можете делать в C ++. Взгляните на что-то вроде Boost.Python или в этом примере для VBScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...