Синтаксический анализ
Основная задача синтаксического анализа – разбор структуры программы. Как правило, под структурой понимается дерево, соответствующее разбору в
контекстно-свободной грамматике языка. В настоящее время чаще всего используется следующие виды анализа:
Рекурсивный спуск чаще используется при ручном программировании синтаксического анализатора
• LL(1)-анализ (и его вариант – рекурсивный спуск)
• LR(1)-анализ и его варианты (LR(0), SLR(1), LALR(1) и другие)., LR(1) – при использовании систем автоматизации построения синтаксических анализаторов.
• Анализ простого предшествования
Результатом синтаксического анализа является синтаксическое дерево со ссылками на таблицу имен. В процессе синтаксического анализа также обнаруживаются ошибки, связанные со структурой программы.
Контекстный анализ
На этапе контекстного анализа выявляются зависимости между частями программы, которые не могут быть описаны контекстно-свободным синтаксисом. Это в основном связи “описание-использование”, в частности анализ типов объектов, анализ областей видимости, соответствие параметров, метки и другие.
В процессе контекстного анализа строится таблица символов, которую можно рассматривать как таблицу имен, пополненную информацией об описаниях (свойствах) объектов. Основным формализмом, использующимся при контекстном анализе, являются атрибутные грамматики.
Результатом работы фазы контекстного анализа является снабженное атрибутами дерево разбора программы или.
Информация об объектах может быть, как рассредоточена в самом дереве, так и сосредоточена в отдельных таблицах символов. В процессе контекстного анализа также могут быть обнаружены ошибки, связанные с неправильным использованием объектов.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий