2) связанная со смысловым содержанием алгоритма
3) связанная с нарушением формы языковой конструкции (+)
4) возникающая во время выполнения программы при обращении к несуществующему файлу
Синтаксическая ошибка возникает при нарушении формальных правил построения конструкции программы: порядка токенов, расстановки разделителей, соответствия скобок, ключевых слов и операторов. Компилятор или интерпретатор анализирует исходный код синтаксическим анализатором, сопоставляя его с грамматикой языка и формируя синтаксическое дерево. Если последовательность символов не может быть однозначно преобразована в допустимую структуру, выполнение программы обычно не начинается, а система сообщает о месте и характере ошибки.
Поэтому правильным является признак, связанный с нарушением формы языковой конструкции. Типичные проявления — пропущенная скобка или кавычка, неверный порядок операторов, отсутствие обязательного разделителя, использование недопустимой конструкции в данном контексте. Такая ошибка отличается от семантической: при семантической структуре записи может быть корректной, но её смысл не соответствует правилам языка, например переменная не объявлена или типы данных несовместимы.
Обращение к несуществующему файлу относится не к синтаксису, а к ошибке времени выполнения либо к ошибке обработки внешнего ресурса. Она выявляется только при фактическом выполнении соответствующей команды и зависит от состояния файловой системы, прав доступа и корректности указанного пути. В медицинских информационных системах разграничение этих классов важно для диагностики программных сбоев: синтаксические дефекты устраняются на уровне исходного кода, а ошибки выполнения требуют анализа среды исполнения и доступности ресурсов.
| Класс ошибки | Нарушенный принцип | Когда выявляется | Типичный пример | Основной диагностический признак |
|---|---|---|---|---|
| Лексическая | Недопустимое формирование элементарной лексемы | На этапе лексического анализа | Недопустимый символ в имени или числовой константе | Невозможно выделить корректный токен |
| Синтаксическая | Нарушена грамматическая форма конструкции | До выполнения программы, при разборе кода | Пропущена скобка, оператор или разделитель | Компилятор не строит корректное синтаксическое дерево |
| Семантическая | Нарушен смысл или контекст использования конструкции | При семантическом анализе или компиляции | Несовместимые типы данных, необъявленная переменная | Форма записи допустима, но операция лишена допустимого смысла |
| Времени выполнения | Нарушены условия исполнения операции во внешней среде | Во время работы программы | Обращение к отсутствующему файлу или деление на ноль | Ошибка зависит от входных данных и состояния системы |
| Логическая | Алгоритм формально выполняется, но приводит к неверному результату | После запуска, при проверке результатов | Неправильное условие расчёта дозировки или маршрутизации пациента | Программа завершается без сообщения об ошибке, но результат неверен |
| Ресурсная | Недостаток памяти, времени, прав или иных системных ресурсов | В процессе выполнения или при обращении к ресурсу | Переполнение памяти, отсутствие разрешения на чтение файла | Сбой определяется ограничениями операционной среды |
Синтаксическая корректность является необходимым условием дальнейшего семантического анализа и выполнения программы. Для её проверки применяют компилятор, редактор кода, статический анализатор и тесты разбора исходного текста. Исправление выполняют по сообщению об ошибке, проверяя указанную строку и ближайшие незавершённые конструкции. В клинических программных системах это особенно важно, поскольку даже небольшая ошибка в коде может препятствовать запуску модуля расчёта, регистрации данных или поддержки принятия решений.
