Итак, я хотел бы получить доступ к аннотациям узла, когда я нахожу его. Приведем пример:Rascal AST для доступа к аннотации доступа
visit (myAST) {
case someNode(str name): {
// How do I now access the @src annotation of someNode here?
}
};
Я уже пробовал следующие, но это не работает:
visit (myAST) {
case someNode(str name): {
parents = getTraversalContext();
iprintln(parents[0]); // This print shows someNode with the @src annotation.
iprintln(parents[0]@src); // This gives the error: get-annotation not supported on value at...
}
};
Что я делаю неправильно здесь? Является ли мой подход неправильным?
Второе решение будет работать, если вы сопоставляете 'parents [0]' с типом, для которого объявлена аннотация или против 'node'. Это связано с тем, что функция 'getAnnotation' определена только для' node', а не для 'value'. Тем не менее, решение Paul должно быть предпочтительнее использования 'getTraversalContext' – jurgenv