@Worgen

Как посчитать значения из AST-дерева?

Добрый день, необходимо сделать калькулятор который бы считал выражения следующих типов:
(2+5*(2+1))*2, 8*(2+1/(2+5)) и так далее.
Необходимо реализовать с помощью AST-дерево.
Я уже сделал парсер для этого, выводит он следующее:
5cc8180fecc33601859615.png
Все это храниться у меня в списке в моем созданном классе:
class Node
    {
        public string type;
        public string value;

        public Node() { }
        public Node(string t, string v) { type = t; value = v; }
    }

//список который выводит после парсинга
List<Node> parse = new List<Node>();

Подскажите, пожалуйста, как мне щас посчитать все это? Не совсем понимаю как это реализовать.
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Как уже сказано, это не AST, а список токенов(надо сказать, неудобных токенов). Разобрать это в AST можно простейшим алгоритмом рекурсивного спуска, например. Затем вычислить.
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
Посмотрите вот эту статью:
https://habr.com/ru/post/281495/

Там в комментариях много интересных ссылок, например эта:
journal.stuffwithstuff.com/2011/03/19/pratt-parser...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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