Оглавление
Синтаксис (языки программирования)
-
Определение синтаксиса
- Синтаксис определяет структуру программы, состоящую из последовательности токенов.
- Лексический анализ определяет последовательность токенов, а синтаксический анализ преобразует последовательность токенов в абстрактное синтаксическое дерево.
- Контекстуальный анализ выполняется вручную для обработки контекста.
-
Примеры ошибок
- В примере на Лиспе (add 1 1) синтаксически корректен, но содержит ошибку типа при добавлении строкового литерала к целочисленному.
- Ошибки типа могут быть обнаружены во время компиляции или выполнения в зависимости от типа языка.
-
Определение синтаксиса
- Синтаксис определяется с использованием регулярных выражений и метаязыка Бэкуса-Наура.
- Грамматика может быть контекстно-свободной или контекстно-зависимой.
- Разные грамматики могут создавать разные деревья синтаксического анализа для одного и того же языка.
-
Сложные грамматики
- Некоторые языки программирования имеют грамматики типа 0, которые являются полными по Тьюрингу.
- В Perl и Lisp возможно выполнение кода во время синтаксического анализа, что усложняет задачу синтаксического анализа.
-
Синтаксис против семантики
- Синтаксис описывает форму программы, но не ее значение или результаты выполнения.
- Семантика придает значение комбинации символов и определяет, является ли программа семантически корректной.
- Некоторые синтаксически корректные программы могут быть семантически некорректными.
Полный текст статьи: