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