Я не совсем понимаю, что означает синтаксис в C99. Здесь, говоря C99, я имею в виду ISO/IEC 9899:1999. Ну, я думаю, что синтаксическая часть грамматики не сильно изменилась со времен ANSI C, C89.
Возьмите пример из этого вопроса:
6.5.5 Multiplicative operators
Syntax
multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression
Constraints
Each of the operands shall have arithmetic type. The operands of the % operator
shall have integer type.
Semantics
The usual arithmetic conversions are performed on the operands.
The result of the binary * operator is the product of the operands.
The result of the / operator is the quotient
Интересно, почему в синтаксисе мультипликативных операторов у нас есть «приведение-выражение»? И какую грамматику может означать этот синтаксис? В этом вопросе @Avi сказал, что в
a*b*c
«c должен анализироваться как выражение приведения», я не совсем понимаю это.
Возьмите другой пример из c99 6.6.1, синтаксис константных выражений
Syntax
constant-expression:
conditional-expression
почему это условное выражение появилось здесь? Может кто-нибудь показать мне, как объяснить этот синтаксис? Спасибо всем заранее.