Составители:
Рубрика:
2.1.3. Построение выражений
Для синтаксического анализа выражений был выбран рекурсивно-
нисходящий алгоритм. Для разбора выражений это означает ссылку на
определения в терминах самого себя. Все выражения строятся по
следующим правилам:
Выражение ⇒ Терм[+ Терм][- Терм]
Терм ⇒ Фактор[* Фактор][/ Фактор]
Фактор ⇒ Переменная, Число или [Выражение]
Квадратные
обозначают возможное отсутствие элементов
выражения. Символ ⇒ введен вместо слова "продуцирует".
Перечисленные правила можно рассматривать как правила вывода
выражения. Следует читать, например, вторую строку: "Терм является
произведением или отношением факторов".
Правила диктуют безусловный приоритет выполнения операций.
Приоритет устанавливается по вложенности изложенных правил, начиная
от фактора к выражению.
Пример. Выражение 15/5 - (10 + 5).
Анализ выполнится по
следующей схеме:
1. Первый терм: 15/5.
2. Факторы 15 и 5, выполняется деление, результат 3.
3. Второй терм: (10 + 5). Стартует рекурсивный анализ второго
выражения.
4. Факторы выбираются и суммируются, результат 15.
5. Число, возвращенное из рекурсии, вычитаем из первого результата.
Итоговый результат: -12.
Предложенный рекурсивный разбор выражений устанавливает
следующее:
- приоритет операций определяется в продукционных правилах и является
безусловным;
- вычисления выражений соответствуют правилам обычной математики.
2.1.4. Анализатор выражений
Простейший анализатор выражений поддерживает шесть
арифметических операций и унарный минус. Все операции могут
использоваться
в сочетании с круглыми скобками, приоритет выполнение
вычислений, в которых является наивысшим. Функция SERROR (error)
предназначена для выдачи сообщений при обнаружении ошибки.
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »
