Обход через узел AST - PullRequest
       10

Обход через узел AST

3 голосов
/ 02 февраля 2010

Я хочу узнать номер строки, на которую ссылается звонок, используя AST api в пакете.Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

У вас есть иллюстрация о том, как искать в методе CompilationUnit в этой статье в бумажном виде :

for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
IType[] types = unit.getTypes();
for (int i = 0; i < types.length; i++) {
  IType type = types[i];
  IMethod[] methods = type.getMethods();
  • Если метод ASTNode , вы можете использовать функцию ASTNode.getStartPosition().
  • Если единицей компиляции этого IMember является CompilationUnit, вы можете использовать это в CompilationUnit.getLineNumber(position)
2 голосов
/ 02 февраля 2010

CompilationUnit.getLineNumber (int position)

позиция относительно объекта CompilationUnit

Документация:

Возвращает номер строки, соответствующий в заданную исходную позицию символа в оригинальной исходной строке. начальная строка блока компиляции пронумеровано 1, и каждая строка расширяется через последний символ разделитель конца строки. Самый последний линия проходит через конец исходная строка и не имеет строки разделитель. Например, источник класс строк A \ n {\ n} имеет 3 строки соответствующий инклюзивному характеру диапазоны [0,7], [8,9] и [10,10]. Возвращает -1 для позиции персонажа это не соответствует ни одному источнику строка, или -2, если номер строки отсутствует информация доступна для этого блок компиляции.

...