Как вы, учитывая любое строковое выражение, заселяете дерево?Как оценить любое заданное выражение
У меня есть задание, на которое я застрял.
Мне нужно оценить следующее выражение ((5 * 10) /2 - ((2 + 3) + 6))
с использованием любой структуры данных.
Используя стек, я могу проверить, что строка хорошо сформирована. Но как я могу добавить различные значения в дерево и затем оценить их по порядку.
Пожалуйста, дайте мне какие-то намеки, вы можете иметь о том, как я могу читать строку (((490 * 9)/2)/5/6 - ((2/4 + 3) + 6 * 5))
Например, как я могу получить (-
) является корнем из трех, когда это пятнадцатый подстроки в входное выражение? Как я могу убедиться, что выражение (/
) 6 происходит после того, как (/
) 5 и т.д.
http://en.wikipedia.org/wiki/Recursive_descent_parser –