Estrutura sintática
As gramáticas em ANTLR4 têm a seguinte estrutura sintática.
grammar Name; // mandatory
options { ... } // optional
import { ... } // optional
tokens { ... } // optional
@actionName { ... } // optional
rule1: ... ; // parser and lexer rules
...
As regras léxicas e sintáticas podem aparecer misturadas e distinguem-se por a primeira letra do nome da regra ser minúscula (analisador sintático), ou maiúscula (analisador léxico).
A ordem pela qual as regras léxicas são definidas é muito importante.
É possível separar as gramáticas sintáticas das léxicas precedendo a palavra reservada grammar com as palavras reservadas parser ou lexer.
parser gramamar NameParser;
...
lexer grammar NameLexer;
A secção das opções permite definir algumas opções para os analisadores (eg. origem dos tokens, e a linguagem de programação de destino).
options { tokenVocab = NameLexer }
Qualquer opção pode ser redefinida por argumentos na invocação do ANTLR4.
A seção import relaciona-se com herança de gramáticas.
Last updated