Вы различаете последовательность грамматических терминов:
<type> & <identifier>
и
<identifier> & <identifier>
хотя в последнем случае вы, вероятно, действительно имеете дело с:
<expression> & <expression>
или подобная конструкция, где '<expression>
' заканчивается как целые литералы или простые имена переменных.
Для этого может потребоваться семантическая обратная связь с лексическим анализатором - он должен уметь распознавать, что int
(в примере) является именем типа (ключевым словом), а не общим идентификатором, но его также необходимо указать об именах typedef, чтобы их можно было также рассматривать как типы. Помните, однако, что имена typedef, как правило, ограничены.