Re[23]: Вопрос о конкретных примерах
От: Nick_ Россия  
Дата: 07.10.04 21:25
Оценка:
Здравствуйте, 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 я пропустил. она простая. можешь сам ее посмотреть в стандарте.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.