Как правильно распарсить запись функции и какие структуры данных использовать для ее хранения?

Есть строка содержащая функцию, например:
func1( 123, func2( func3( a1, a2), 234, func3( a3, a4) ) , 345)

Стоит задача разобрать строку, запрашивая для каждой функции ее значение с сервера. Если функция среди параметров содержит функции, то сначала надо вычислить их значение.
Подскажите какие есть простые способы распарсить такую строку и хранить функции (в том числе при необходимости заменяя\добавляя их значениями)?

Мне пришло в голову парсить с конца записи, находить крайнюю функцию и ее значение добавлять в массив аргументов.
Может быть есть уже какие-то готовые реализации по разбору подобных записей?
  • Вопрос задан
  • 2465 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Koss1024
Алгоритм известен более чем
https://ru.wikipedia.org/wiki/Алгоритм_сортировочн...
Пример в статье заменяем на названия функций и все. Если речь не идет о просини выражений дополнительно.

Вопрос точно по С++? Поскольку запрос с сервера здесь выглядит слегка неуместно
Всему свой тул
Ответ написан
Комментировать
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Лобовое решение состоит в следующем:
0) Выбросить из строки пробелы и их эквиваленты.
1) Проверить корректность входной строки, чтобы хотя бы скобки стояли корректно.
2) Найти самые глубоко вложенные скобки, слева от них до разделителя (скобки или запятой) стоит имя функции, а в них - аргументы.
3) Вызвать функцию.
4) Врезать на место функции и ее аргументов результатиз п. 4.
5) Вернуться к 2.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы