Я работаю с грамматикой Java 8 и хочу найти вхождения вызова метода, а точнее it.hasNext()
, когда it
является Iterator
.Interpolation in Concrete Syntax Matching
Это работает:
visit(unit) {
case (MethodInvocation)`it . <TypeArguments? ta> hasNext()`: {
println("found");
}
}
В идеале я хотел бы, чтобы соответствовать с любым идентификатором, а не только it
.
Таким образом, я попытался с помощью интерполяции строк, который компилирует, но не соответствует:
str iteratorId = "it";
visit(unit) {
case (MethodInvocation)`$iteratorId$ . <TypeArguments? ta> hasNext()`: {
println("achei");
}
}
Я также попробовал несколько других способов, в том числе переменных использует шаблон (как видно в docs), но я не могу получить это работать.
Возможно ли такое совпадение в негодяи? Если да, как это можно сделать?