Re[2]: Posix C/C++
От: npak Россия  
Дата: 27.01.11 06:50
Оценка: +1
Здравствуйте, shasa, Вы писали:

S>Здравствуйте, tasko, Вы писали:

T>>Ряд глупых вопросов
S>...

S>Разъясните пожалуйста значение термина семантика языка


T>>Заранее спасибо.


Семантика языка бывает статическая и динамическая. Статическая семантика накладывает ограничения на синтаксически корректные программы. Например, грамматика языка С допускает такой декларатор:
unsigned short void x;

но в стандарте есть семантическое ограничение (6.7.2.) на то, какие деклараторы допустимы в программе. Другой пример статической семантики — ограничения на декларацию структуры:

A structure or union shall not contain a member with incomplete or function type (hence,
a structure shall not contain an instance of itself, but may contain a pointer to an instance
of itself),


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

Динамическая семантика определяет, как должны исполняться конструкции языка. Например:

The statement
[b]for[b] ( clause-1 ; expression-2 ; expression-3 ) statement
behaves as follows: The expression expression-2 is the controlling expression that is evaluated before each execution of the loop body. The expression expression-3 is evaluated as a void expression after each execution of the loop body. If clause-1 is a declaration, the scope of any variables it declares is the remainder of the declaration and the entire loop, including the other two expressions; it is reached in the order of execution before the first evaluation of the controlling expression. If clause-1 is an expression, it is evaluated as a void expression before the first evaluation of the controlling expression.


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