Главная arrow Программирование С++ arrow Синтаксический анализатор выражений

Синтаксический анализатор выражений

Фрагмент кода, в котором читаются и анализируются выражения, называется синтаксическим анализатором выражений (expression parser). Вне всякого сомнения, он является наиболее важной подсистемой, необходимой интерпретатору Mini С++. Поскольку в С++ выражения определены шире, чем в других языках программирования, существенный объем кода программы на языке С++ выполняется анализатором выражений.
Существует несколько разных способов разработки анализатора выражений для языка С++. Многие коммерческие компиляторы используют таблично-управляемый синтаксический анализатор (table-driven parser), который создается программой-генератором анализатора (parser-generator program). Несмотря на то, что таблично-управляемые синтаксические анализаторы, как правило, быстрее других вариантов, их трудно создавать самостоятельно. Интерпретатор Mini С++ использует рекурсивно-нисходящий синтаксический анализатор (recursive-descent parser), который действует в соответствии с логикой порождающих правил, описанных в предыдущем разделе. Рекурсивно-нисходящий анализатор представляет собой по существу коллекцию взаимно рекурсивных функций, которые обрабатывают выражение. Если синтаксический анализатор применяется в компиляторе, он генерирует надлежащий объектный код, соответствующий исходному коду программы. В интерпретаторе анализатор вычисляет заданное выражение. В этом разделе разрабатывается синтаксический анализатор интерпретатора Mini С++.
^   Примечание   ^
Я писал об анализе выражений в течение многих лет. Для более глубокого изучения этого процесса применительно к языку С++ отсылаю вас к своей книге "С++: The Complete Reference", изд. McGraw-Hill/Osborne.1