С для профессиональных программистов



         

Порядок построения выражений - часть 2


Пусть на вход анализатора поступает следующее выражение:

9/3-(100+56)

Анализатор в этом случае будет работать по такой схеме:

1.  Берем первый терм: "9/3".

2. Берем каждый фактор и выполняем деление чисел, получаем результат "3".

3. Берем второй терм: "(100+56)". В этой точке стартует рекурсивный анализ второго выражения.

4. Берем каждый фактор и суммируем их между собой, получаем результат 156

5. Берем число, вернувшееся из рекурсии, и вычитаем его из первого: 3-156. Получаем итоговый результат "-153".

Если вы немного смущены столь сложной схемой работы анализатора, то уверяем вас, что это не так уж страшно. Гораздо страшнее оказаться у телевизора, когда транслируют финальный футбольный матч, не имея с собой достаточного запаса пива. Поэтому не пугайтесь комплексного подхода.

Вы должны помнить две основные идеи рекурсивного разбора выражений: (1) приоритет операторов является безусловным в продукционных правилах и определен в них; (2) этот метод синтаксического анализа и вычисления выражений очень похож на тот, который вы сами используете для выполнения таких же операций.




Содержание  Назад  Вперед