Преобразование с помощью antlr (morph?) Только для одного узла - PullRequest
0 голосов
/ 09 августа 2011

Это должно быть довольно просто, но я не могу найти соответствующую информацию в документации.

У меня есть запрос sparql, и у меня есть antlr грамматика, которая производит для него AST, я хотел бы произвестидругой запрос sparql, изменяющий только его часть, соответствующий определенному правилу в грамматике и, следовательно, конкретному узлу в AST.

Я хочу удалить это поддерево (или текст) из дерева, преобразовать егов другое дерево (или текст), поместите его обратно в исходное (большее) дерево (или текст) и получите полный текст для нового запроса, который в целом равен исходному.Я надеюсь, что вам не нужны подробности о преобразовании, которое нужно перенести, потому что это не просто и не кратко объяснить.

В (вроде) псевдокоде это будет что-то вроде:

prog returns [String res]
    : ^([^nodeICare] e*) {($res += $e.text;)*}
    | ^(nodeICare e) {$res += (transformer.transform($e)).text;}

Должен быть какой-то простой способ сделать это, не так ли?

Большое спасибо.

...