Exemplos

Hello (1)

ANTLR4

Exemplo

As duas gramáticas – lexical e sintática – são expressas com instruções com a seguinte estrutura:

  • alfa : beta;

em que alfa corresponde a um única símbolo lexical ou sintático (dependendo da sua primeira letra ser, respectivamente, maiúscula ou minúscula); e em beta é uma expressão simbólica equivalente a alfa.

Hello (2)

Uma sequência de símbolos na entrada que seja reconhecido por esta regra gramatical pode sempre ser expressa por uma estrutura tipo árvore (chamada sintática), em que a raiz corresponde a alfa e os ramos à sequência de símbolos expressos em beta:

Podemos agora gerar o processador desta linguagem e experimentar a gramática utilizando o programa de teste do ANTLR4.

Utilização:

ANTLR4: Ficheiros gerados

Executando o comando antlr4 sobre esta gramática obtemos os seguintes ficheiros:

Ficheiros gerados:

  • HelloLexer.java: código Java com análise léxica (gera tokens para análise sintática).

  • Hello.tokens e HelloLexer.tokens: ficheiros com a identificação de tokens (pouco importante nesta fase, mas server para modularizar diferentes analisadores léxicos e/ou separar a análise léxica da análise sintática).

  • HelloParser.java: código Java com a análise sintática (gera a árvore sintática do programa).

  • HelloListener.java e HelloBaseListener.java: código Java que implementa automaticamente um padrão de execução de código tipo listener (observer, callbacks) em todos os pontos de entrada e saída de todas as regras sintáticas do compilador.

Podemos executar o ANTLR4 com a opção -visitor para gerar também código Java para o padrão tipo visitor (difere do listener porque a visita tem de ser explicitamente requerida).

  • HelloVisitor.java e HelloBaseVisitor.java: código Java que implementa automaticamente um padrão de execução de código tipo visitor todos os pontos de entrada e saída de todas as regras sintáticas do compilador.

Last updated