Здравствуйте, VladD2, Вы писали:
VD>Если серьезно, то какой ты еще хотел реакции на слова "Почитай на досуге грамматику С++ или С." человеку который последние пол года только этой темой и занимался?
OK. Обьясняю еще раз. на этот раз разжовываю как совсем чайнику.
Берем стандарт С++. Читаем Appendix A: Grammar summary
Компилятор разбирает выражение
(hello.... перед ним стоит открывающая скобка.
Дальше он может идти по одному из двух путей
Если hello — тип:
expression->...->cast-expression->
(->type-id->...->type-name->
hello.
Если hello — идентификатор(переменная):
expression->...->cast-expression->...->primary-expression->
(->expression->...->id-expression->
hello.
Ну и как определить по какому пути делать синтаксический разбор, не зная hello тип или не тип?
Еще в качестве примера могу привести приоритет операций. То, что умножение имеет более высокий приоритет чем сложение выясняется уже на этапе синтаксического анализа, а не семантического.
После того как я тебе еще раз попытался разжевать, может ты потрудишься обьяснить что ты имел в виду в
сообщении
http://rsdn.ru/Forum/Message.aspx?mid=840770&only=1Автор: VladD2
Дата: 06.10.04
когда заявил, что "Да пофигу для синтаксического разбора чем будет эта конструкция. Тип, не тип — это уже семантика."
cast-expression:
unary-expression
( type-id ) cast-expression
unary-expression:
postfix-expression
... -- здесь правила начинающиеся на ключевое слово или унарный оператор
postfix-expression:
primary-expression
... -- здесь правила либо начинающиеся на ключевое слово, либо postfix-expression, либо имя типа.
primary-expression:
literal
this
( expression )
id-expression
type-id:
type-specifier-seq [abstract-declarator]
type-specifier-seq:
type-specifier [type-specifier-seq]
type-specifier:
simple-type-specifier
...
simple-type-specifier:
[::] [nested-name-specifier] type-name
Цепочку от expression до cast-expression я пропустил. она простая. можешь сам ее посмотреть в стандарте.