Enviar tokens para canais diferentes
Last updated
Last updated
Nos exemplos de gramáticas que temos vindo a apresentar, tem-se optado pela acção skip quando na presença dos chamados espaços em branco ou de comentários.
Esta acção faz desaparecer esses tokens simplificando a análise sintáctica.
O preço a pagar (geralmente irrelevante) é perder o texto completo que lhes está associado.
No entanto, em ANTLR4 é possível ter dois em um. Isto é, retirar tokens da analise sintáctica, sem no entanto fazer desaparecer completamente esses tokens (podendo-se recuperar o texto que lhe está associado).
Esse é o papel dos chamados canais léxicos.
A classe CommonTokenStream encarrega-se de juntar os tokens de todos os canais (o visível – canal zero – e os escondidos).
(É possível ter código para aceder aos tokens de um canal em particular.)