Reescrever a entrada

O ANTLR4 facilita a geração de código que resulte de uma reescrita do código de entrada. Isto é, inserir, apagar, e/ou modificar partes desse código.

Para esse fim existe a classe TokenStreamRewriter (que têm métodos para inserir texto antes ou depois de tokens, ou para apagar ou substituir texto).

Vamos supor que se pretende fazer algumas alterações de código fonte Java, por exemplo, acrescentar um comentário imediatamente antes da declaração de uma classe..

Podemos ir buscar a gramática disponível para a versão 8 do Java: Java8.g4

Para que a reescrita apenas acrescente o comentário, é necessário substituir o skip dos tokens que estão a ser desprezados, redireccionando-os para um canal escondido.

Agora podemos criar um listener para resolver este problema.

Exemplo

Last updated