LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Идентификаторы они в лексере. А выражения они - нет, они не выражения. StdLog и String по отдельности - это ошибка разбора. Выражение из них - это только foo. Попробую ещё по-другому объяснить вопрос. Компилятор прочитал foo Как компилятор узнаёт, что foo - это переменная, а не функция? Он ищет слово «foo» в таблице символов (которую он сам же и построил, но речь не о том). В таблице есть запись для foo и есть поле, в котором записано, что foo - это переменная, или что это функция. Как должно называться это поле?

Или может быть какая-то иерархия классов. Записи для функций изображаются одним классом, записи для переменных - другим. Как назвать общий базовый класс всех этих классов?

Исходная версия den73, :

Идентификаторы они в лексере. А выражения они - нет, они не выражения. StdLog и String по отдельности - это ошибка разбора. Попробую ещё по-другому объяснить вопрос. Компилятор прочитал foo Как компилятор узнаёт, что foo - это переменная, а не функция? Он ищет слово «foo» в таблице символов (которую он сам же и построил, но речь не о том). В таблице есть запись для foo и есть поле, в котором записано, что foo - это переменная, или что это функция. Как должно называться это поле?

Или может быть какая-то иерархия классов. Записи для функций изображаются одним классом, записи для переменных - другим. Как назвать общий базовый класс всех этих классов?