Системное программное обеспечение
Синтаксические анализаторы
Основные принципы работы синтаксического анализатора
Синтаксические деревья могут
быть построены компилятором для любой части входной программы.
Не всегда синтаксическому дереву должен соответствовать фрагмент кода результирующей программы – например, возможно построение синтаксических деревьев для декларативной части языка. В этом случае операции, имеющиеся в дереве, не требуют порождения объектного кода, но несут информацию о действиях, которые должен выполнить сам компилятор над соответствующими элементами.
В том случае, когда синтаксическому дереву соответствует некоторая последовательность операций, влекущая порождение фрагмента объектного кода, говорят о дереве операций.
Дерево операций можно непосредственно построить из дерева вывода, порожденного СА. Для этого достаточно исключить из дерева вывода цепочки нетерминальных символов, а также узлы, не несущие семантической (смысловой) нагрузки при генерации кода (различные скобки, которые меняют порядок выполнения операций и операторов, но после построения дерева никакой смысловой нагрузки не несут, так как им не соответствует никакой объектный код).
Только разработчик компилятора может
четко определить, как при построении дерева операций
должны различаться операнды и сами операции,
а также то, какие операции являются семантически
незначащими для порождения объектного кода.