На этапе 60-х гг. считалось, что для написания программ достаточно соблюдения формальных правил синтаксиса. Была разработана концепция контекстно-свободной грамматики, или НФБ-грамматики (от «нормальной формы Бэкуса»). Эта концепция применяется для спецификации синтаксиса языка и до сих пор она является основным способом описания компонентов программы. Но со временем стало ясно, что одного синтаксиса недостаточно для решения всех вопросов, связанных с разработкой языков программирования. Требуется совокупность правил, определяющих смысл как языковых конструкций , так и программ в целом, то есть необходимо описание семантики.
Синтаксис, определенный как «система языковых категорий, относящихся к соединениям слов и строению предложений», в языках программирования описывает последовательность символов, которая составляет синтаксически правильную программу.
Синтаксис предоставляет важную информацию, необходимую как для понимания программы, так и для ее трансляции в объектную программу.
Одного синтаксиса недостаточно для однозначной спецификации структуры оператора. Например, Х = 2.45 + 3,67 и результат выполнения может быть: Х=5, Х=6 и Х=6.12
Результат зависит от того, как были определены переменная Х и оператор «+».
Переменная Х |
Оператор «+» |
Результат |
Целая переменная |
Целочисленное сложение |
5 |
Целая переменная |
Вещественное сложение |
6 |
Вещественная переменная |
Вещественное сложение |
6.12 |
Таким образом, для полного описания языка программирования недостаточно определение только синтаксических структур. В языке имеются и другие атрибуты, известные под общим названием семантика, которые не всегда определяются синтаксическими правилами, но оказывают влияние на переменную. Сюда относятся использование объявлений, операций, управление последовательностью действий и среда ссылок.
Синтаксис является важной частью описания языка программирования. Но к настоящему времени описание синтаксиса в большей части является решенной проблемой. Первая фаза трансляции – фаза синтаксического разбора исходной программы – представляет собой чисто механический процесс.
Использование семантики для генерирования эффективной объектной программы из заданной исходной программы все еще требует большого мастерства в сочетании с применением некоторых формальных методов.
Похожие статьи: