diff --git a/labs_spring_2021/assignment_5.md b/labs_spring_2021/assignment_5.md index f26e30f..43fd505 100644 --- a/labs_spring_2021/assignment_5.md +++ b/labs_spring_2021/assignment_5.md @@ -7,7 +7,7 @@ ## Варіант #0. Побудова математичного інтерпретатора Написати програму-інтерпретатор математичних виразів, що підтримує змінні та (в більш складному варіанті) оператори розгалуження. Можете взяти за основу вашу або чиюсь попередню лабораторну роботу із Shunting Yard. -В цій роботі замість того, щоб одразу обчислювати значення кожної операції, необхідно спочатку побудувати абстрактне синтаксичне дерево виразу. Далі обчислення виразу зводиться до обходу дерева в глибину і обчислення значення вузлів дерева або прийняття рішення про зміну порядку обходу дерева. Як приклад, можна навести умовний оператор: обчислюється лише одна з гілок вершини цього оператора, а інша пропускається. +В цій роботі замість того, щоб одразу обчислювати значення кожної операції, необхідно спочатку побудувати [абстрактне синтаксичне дерево](https://www.twilio.com/blog/abstract-syntax-trees) виразу. Далі обчислення виразу зводиться до обходу дерева в глибину і обчислення значення вузлів дерева або прийняття рішення про зміну порядку обходу дерева. Як приклад, можна навести умовний оператор: обчислюється лише одна з гілок вершини цього оператора, а інша пропускається. Значення змінних під час обходу дерева найкраще зберігати в хеш-таблиці. Ніякі типи даних, крім чисел із плаваючою комою, впроваджувати не обов\'язково.