Подтвердить что ты не робот

В чем разница между синтаксисом и семантикой в языках программирования?

В чем разница между синтаксисом и семантикой в ​​языках программирования (например, C, С++)?

4b9b3361

Ответ 1

Синтаксис относится к структуре или грамматике языка. Он отвечает на вопрос: как мне построить правильное предложение? Все языки, даже английские и другие человеческие (так называемые "естественные" ) языки имеют грамматики, то есть правила, которые определяют, правильно ли построено предложение.

Вот несколько правил синтаксиса языка C:

  • отдельные операторы с точкой с запятой
  • заключить условное выражение оператора IF в круглых скобках
  • группировать несколько операторов в один оператор, заключая в фигурные скобки
  • типы данных и переменные должны быть объявлены перед первым исполняемым оператором (эта функция была удалена на C99.C99 и последние допускают объявления смешанного типа.)

Семантика - это значение предложения. Он отвечает на вопросы: действительно ли это предложение? Если да, то что означает это предложение? Например:

x++;                  // increment
foo(xyz, --b, &qrs);  // call foo

являются синтаксически допустимыми операторами C. Но что они означают? Является ли даже правильным пытаться преобразовать эти утверждения в исполняемую последовательность инструкций? Эти вопросы лежат в основе семантики.

Рассмотрим оператор ++ в первом утверждении. Во-первых, действительно ли это возможно?

  • Если x - тип данных с плавающей точкой, этот оператор не имеет смысла (в соответствии с правилами языка C) и, следовательно, является ошибкой , хотя оператор синтаксически корректен.
  • Если x является указателем на некоторый тип данных, смысл инструкции заключается в том, чтобы добавить sizeof (некоторый тип данных) к значению по адресу x и сохранить результат в местоположение по адресу x ".
  • Если x является скаляром, значение выражения "добавляет значение к адресу x и сохраняет результат в местоположении по адресу x".

Наконец, обратите внимание, что некоторые семантики не могут быть определены во время компиляции и поэтому должны оцениваться во время выполнения. В примере оператора ++, если x уже имеет максимальное значение для своего типа данных, что происходит, когда вы пытаетесь добавить 1 к нему? Другой пример: что произойдет, если ваша программа попытается разыменовать указатель, значение которого равно NULL?

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

Ответ 2

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

Type token;

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

Ответ 3

У Википедии есть ответ. Синтаксис чтения (языки программирования) и семантика (информатика) wikipages.

Или подумайте о работе любого компилятора или интерпретатора. Первым шагом является лексический анализ, в котором токены генерируются путем деления строки на лексемы, а затем разбора, которые строят некоторое абстрактное синтаксическое дерево (которое является представлением синтаксиса). Следующие шаги включают в себя трансформацию или оценку этих АСТ (семантика).

Кроме того, заметим, что если вы определили вариант C, где каждое ключевое слово преобразовалось в его французский эквивалент (так, if становится si, do становится faire, else становится sinon и т.д. и т.п...) вы бы определенно изменить синтаксис вашего языка, но вы не сильно измените семантику: программирование на этом французском C не будет проще!

Ответ 4

Семантика - это то, что означает ваш код - что вы можете описать в псевдокоде. Синтаксис - это фактическая структура - все от переменных имен до полуколоней.

Ответ 5

Синтаксис - это структура или форма выражений, операторов и программных единиц, но Семантика - это значение этих выражений, операторов и программных единиц. Семантика выполняется непосредственно из синтаксиса . Синтаксис относится к структуре/форме кода, заданной конкретным языком программирования, но Семантика относится к значению, присвоенному символам, символам и словам.

Ответ 6

Синтаксис: это относится к грамматической структуре языка. Если вы пишете язык c. Вы должны очень заботиться о том, чтобы использовать типы данных, токены [это может быть буквальный или символ типа "printf()". Он имеет 3 вывода, "printf, (,)" ]. Точно так же вы должны очень осторожно, как вы используете функцию, синтаксис функции, объявление функции, определение, инициализацию и вызов ее.

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