В чем разница между синтаксисом и семантикой в языках программирования (например, C, С++)?
В чем разница между синтаксисом и семантикой в языках программирования?
Ответ 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, (,)" ]. Точно так же вы должны очень осторожно, как вы используете функцию, синтаксис функции, объявление функции, определение, инициализацию и вызов ее.
В то время как семантика, это касается логики или понятия предложения или высказываний. Если вы говорите или пишете что-то из понятия или логики. Затем вы семантически ошибаетесь.