Обработка ошибок при анализе

При анализе кода могут возникать ошибки. Существует несколько способов реакции на них:

  • «Panic-Mode recovery» – анализатор удалит встреченный узел, вызывающий ошибку, и попытается изучить окрестность для восстановления нормальной работы;

  • «Phrase-Level Recovery» – анализатор попытается локально разрешить ошибку и продолжить работу;

  • «Error Production» – анализатор сохраняет ошибки и после выдает пользователю диагностическое сообщение;

  • «Global Correction» – анализатор попытается исправить ошибку, изучив весь код программы (коррекция может быть опасной, так как программа может работать не так, как задумывал пользователь).

Семантический анализатор может вызывать следующие типы ошибок:

  • отсутствует функция main;

  • использована переменная, не определенная в данной области видимости;

  • использована не определенная функция;

  • внутри функции, которая не должна возвращать никакого значения, пользователь что-то пытается вернуть;

  • ошибки приведения типов;

  • переопределение переменной.

При нахождении ошибки анализатор добавляет ее в массив, а после окончания проверки всего дерева оповещает пользователя.

Пример

Код:

def main() -> None:
    x: int = 1
    y: float = 2 + z

Ошибка:

SEMANTIZER:
  In line 3 in column 19 in file sample.py error:
    z was not declared in this scope

Назад