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


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

6 66

6 ответов:

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

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

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

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

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

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

рассмотрим оператор ++ в первом сообщении. Прежде всего, действительно ли это вообще возможно?

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

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

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

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

Type token;

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

Википедия имеет ответ. Читайте синтаксис (языка программирования) & семантика (информатика) wikipages.

или подумайте о работе в любое компилятор или переводчик. Первый шаг -лексический анализ где токены генерируются путем деления строки на лексемы, то извлечение, что строить какие-то абстрактное синтаксическое дерево (что является представлением синтаксиса). Этот следующие шаги включают преобразование или оценку этих AST (семантика).

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

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

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

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

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