Синтаксис различных языков программирования

21.1. Синтаксис и семантика языков программирования

У каждого языка программирования, как и у любого естественного языка, есть свои синтаксис и семантика.

Синтаксис — совокупность правил некоторого языка, определяющих формирование его элементов. Иначе говоря, это совокупность правил образования семантически значимых последовательностей символов в данном языке. Синтаксис задается с помощью правил, которые описывают понятия некоторого языка. Примерами понятий являются: переменная, выражение, оператор, процедура. Последовательность понятий и их допустимое использование в правилах определяет синтаксически правильные структуры, образующие программы. Именно иерархия объектов, а не то, как они взаимодействуют между собой, определяются через синтаксис. Например, оператор может встречаться только в процедуре, а выражение в операторе, переменная может состоять из имени и необязательных индексов и т.д. Синтаксис не связан с такими явлениями в программе, как «несоответствие типов» или «переменная с данным именем не определена». Этим занимается семантика.

Семантика — правила и условия, определяющие соотношения между элементами языка и их смысловыми значениями, а также интерпретацию содержательного значения синтаксических конструкций языка. Объекты языка программирования не только размещаются в тексте в соответствии с некоторой иерархией, но и дополнительно связаны между собой посредством других понятий, образующих разнообразные ассоциации. Например, переменная, для которой синтаксис определяет допустимое местоположение только в описаниях и некоторых операторах, обладает определенным типом, может использоваться с ограниченным множеством операций, имеет адрес, размер и должна быть описана до того, как будет использоваться в программе.

Текст исходной программы на языке высокого уровня представляет собой обычный тестовый файл. Для его «чтения» и превращения в последовательность машинных команд, прежде всего, выполняется синтаксический анализ текста программы.

Читайте также:  Дизайн и верстка бланков

Синтаксический анализатор — компонента компилятора, осуществляющая проверку исходных операторов на соответствие синтаксическим правилам и семантике данного языка программирования. Несмотря на название, анализатор занимается проверкой и синтаксиса, и семантики. Он состоит из нескольких блоков, каждый из которых решает свои задачи.

21.2. Структура языков программирования

Языки программирования достаточно сильно отличаются друг от друга по назначению, структуре, семантической сложности, методам реализации. Это накладывает свои специфические особенности на разработку конкретных трансляторов. Структура языка характеризует иерархические отношения между его понятиями, которые описываются синтаксическими правилами. Языки программирования могут сильно отличаться друг от друга по организации отдельных понятий и по отношениям между ними. Например, язык C++ допускает описание переменных в любой точке программы перед первым ее использованием, а в Паскале переменные должны быть определены в специальной области описания. В зависимости от принятого решения, транслятор может анализировать программу за один или несколько проходов, что влияет на скорость трансляции.

Семантика языков программирования изменяется в очень широких пределах. Они отличаются не только по особенностям реализации отдельных операций, но и по парадигмам программирования, определяющим принципиальные различия в методах разработки программ. Специфика реализации операций может касаться как структуры обрабатываемых данных, так и правил обработки одних и тех же типов данных. Даже при выполнении операции сложения двух целых чисел такие языки, как C и Паскаль, могут вести себя по-разному.

Один и тот же язык может быть реализован нескольким способами. Это связано с тем, что теория формальных грамматик допускает различные методы разбора одних и тех же предложений. В соответствии с этим трансляторы разными способами могут получать один и тот же результат (объектную программу) по первоначальному исходному тексту. Существует несколько компиляторов языка Паскаль: Turbo Pascal, MS Pascal, Pascal with Objects, Delphi, Builder. Вместе с тем, все языки программирования обладают рядом общих характеристик и параметров. Эта общность определяет и схожие для всех языков принципы организации трансляторов.

Читайте также:  Базовыми понятиями объектно ориентированного программирования являются объектно

Для любого языка его создателями определяются:

  • множество символов, которые можно использовать для записи правильных программ (алфавит);
  • множество правильных программ (синтаксис);
  • «смысл» каждой правильной программы (семантика).

Рассмотрим пример синтаксического разбора. Пусть в исходном тексте программы встретилась формула a + (b + c) * d. В большинстве языков программирования такая формула определяет иерархию программных объектов, которую можно отобразить в виде дерева (Рис. 21 .79). В кружках представлены символы, используемые в качестве элементарных конструкций, а в прямоугольниках задаются составные понятия, имеющие иерархическую и, возможно, рекурсивную структуру.

Синтаксическая структура, правильная для одного языка, может быть ошибочной для другого. Например, в языке Лисп приведенное выражение не будет распознано. Однако для этого языка корректным будет являться выражение ( * ( + a b c ) d ).

Рис. 21.79. Дерево синтаксического разбора.

Другой характерной особенностью всех языков является их семантика. Она определяет смысл операций языка, корректность операндов. Цепочки, имеющие одинаковую синтаксическую структуру в различных языках программирования, могут различаться по семантике (что, например, наблюдается в C++, Pascal, Basic для приведенного выше фрагмента арифметического выражения). Знание семантики языка позволяет отделить ее от его синтаксиса и использовать для преобразования в другой язык (осуществить генерацию кода). Описание семантики и распознавание ее корректности обычно является самой трудоемкой и объемной частью транслятора, так как необходимо осуществить перебор и анализ множества вариантов допустимых комбинаций операций и операндов.

Источник

Что такое синтаксис языка программирования?

bestprogrammer.ru

Что такое синтаксис языка программирования

Изучение

Каждый язык имеет базовую структуру, которую пользователи должны понимать, чтобы эффективно использовать его. Недостаточно знать значение отдельных слов, составляющих язык, — если вы не знаете, как их расположить, вы не сможете общаться.

Представьте, что вы знаете словарное определение каждого слова английского языка, но не понимаете, как формируются английские предложения. У вас будет невероятно богатый словарный запас, но вы не сможете его использовать. Тот же принцип применим и к языкам программирования. Чтобы использовать язык программирования, вам нужно понимать его синтаксис.

Если вы новичок в программировании, вы обнаружите, что изучение правил синтаксиса является ключевой частью изучения языка программирования. Знание того, что такое синтаксис и почему он важен, поможет вам изучить эти правила и лучше понять структуру кода.

Сегодня мы более подробно изучим синтаксис, подумаем, почему он важен, и узнаем, как он различается между несколькими основными языками программирования.

Что такое синтаксис?

Синтаксис — это набор правил, которые говорят нам, какое расположение символов создает правильное выражение в языке. Человеческие языки и языки программирования зависят от синтаксиса. Чтобы эффективно использовать любой тип языка, вам нужно знать, как сочетать элементы для достижения вашей цели. В случае с человеческим языком этой целью является успешное общение. В случае с языком программирования цель состоит в том, чтобы выдать набор директив, которые компьютер может читать и выполнять.

Синтаксические ошибки возникают, когда элементы в утверждении расположены таким образом, что затрудняют успешную коммуникацию. Давайте рассмотрим простой пример из английского языка:

  1. Собака погналась за кроликом.
  2. Кролик погнался за собакой.
  3. Погнался за кроликом за собакой.

Как видите, порядок слов в английском языке имеет большое значение. Слова в этих трех предложениях одни и те же, но сочетание их по-разному приводит к совершенно разным значениям. Первое предложение содержит простое утверждение, соответствующее синтаксису английского языка. Во втором предложении меняются местами подлежащее и прямое дополнение, так что, хотя предложение все еще имеет синтаксический смысл, его значение радикально отличается. В третьем предложении слова перемешаны таким образом, что его трудно читать. Оно не соответствует правилам синтаксиса английского языка, поэтому неясно, о чем говорится в предложении.

Использование правильного синтаксиса, возможно, даже важнее в языках программирования, чем в человеческих языках. Если вы изучаете новый человеческий язык и у вас есть только начальное понимание его синтаксиса, вы все равно сможете передать смысл. Это связано с тем, что синтаксис человеческих языков часто является гибким, и люди-слушатели могут решать проблемы, чтобы понять значение несовершенного предложения.

Языки программирования менее приспособлены к синтаксическим ошибкам. Синтаксис определяет, как мы организуем элементы в нашем коде, чтобы сделать его понятным для компьютера. Если есть синтаксическая ошибка, компьютер может не прочитать ее.

Вот несколько примеров того, что может определять синтаксис программирования:

  • используем ли мы строчные или прописные символы
  • как мы записываем комментарии кода
  • как мы используем пробелы
  • как мы указываем отношения между утверждениями (отдельные команды, выдаваемые компьютеру)

Синтаксис важен в программировании, потому что без него было бы невозможно написать работающий код. Код — это набор инструкций, написанных на языке, который компьютер может прочитать и использовать. Если в коде есть синтаксические ошибки, программа работать не будет.

Синтаксис против семантики

» Семантика » — еще один термин, с которым вы можете столкнуться при изучении синтаксиса. Связь между синтаксисом и семантикой важна. В лингвистике синтаксис относится к порядку слов : способу, которым слова должны быть упорядочены, чтобы передать смысл. Семантика — это значение, которое передают эти слова. Точно так же в программировании синтаксис относится к структуре языка, внутренней логике, которая определяет, как должен быть написан язык. Семантической ценностью строки кода является ее содержание или значение.

Давайте рассмотрим несколько примеров программы Hello World, написанной на разных языках программирования. Как мы увидим, синтаксис варьируется между примерами, в то время как семантическое значение остается неизменным.

Источник

Оцените статью