Separar analisador léxico do analisador sintáctico
Muito embora se possa definir a gramática completa, juntando a análise léxica e a sintáctica no mesmo módulo, podemos também separar cada uma dessas gramáticas.
Isso facilita, por exemplo, a reutilização de analisadores léxicos.
Existem também algumas funcionalidades do analisador léxico, que obrigam a essa separação (“ilhas” lexicais).
Para que a separação seja bem sucedida há um conjunto de regras que devem ser seguidas:
Cada gramática indica o seu tipo no cabeçalho.
Os nomes das gramáticas devem (respectivamente) terminar em Lexer e Parser.
Todos os tokens implicitamente definidos no analisador sintáctico têm de passar para o analisador léxico (associando-lhes um identificador para uso no parser).
A gramática do analisador léxico deve ser compilada pelo ANTLR4 antes da gramática sintáctica.
A gramática sintáctica tem de incluir uma opção (tokenVocab) a indicar o analisador léxico.
No teste da gramática deve utilizar-se o nome sem o sufixo:
antlr4-test NAME rule
Exemplo
Last updated