Попробуйте пройти через http://www.antlr.org/grammar/1152141644268/Java.g (обратите внимание на объявление type
и его использование) - оно даст вам некоторое представление.
Короче говоря, когда вы анализируете источник, вы знаете,где вы ожидаете увидеть тип, будь то после модификаторов в полях и методах, непосредственно перед именами параметров в формальном списке параметров и т. д. И когда вы знаете, что String
- это некоторый тип, вы можете проверить с помощью таблицы import
, чтобы получитьполное имя, и найдите фактический класс в classpath.
Теперь, как Барт упоминает в комментариях (теперь удалено), реальное разрешение происходит позже в конвейере.На этапе синтаксического анализа вы создаете только узел, говорящий о том, что у вас есть type
, который является Identifier
, который равен String
. Таким образом, ответ на данный момент будет: «вы не делаете. "
Обновление: попробуйте выполнить этот тезис , он должен вам помочь.