-
Espaços em branco:
[\n \t \r \f] -
Identificadores: Uma letra
[a-zA-Z]+, seguido de zero ou mais letras[0-9a-zA-Z]*, dígitos ou_ -
Numerais: Apenas números inteiros
[0-9] -
Operadores:
=<==!=+-*&&! -
Pontuação:
()[]{};., -
Palavras reservadas:
booleanclassextendspublicstaticvoidmainStringreturnintifelsewhilelengthtruefalsethisnewnullSystem.out.println
PROG = MAIN CLASSE
MAIN = 'class' 'id' '{' 'public' 'static' 'void' 'main' '(' 'String' '[' ']' 'id' ')' '{' CMD '}' '}'
CLASSE = 'class' 'id' '[' 'extends' 'id' ']' '{' VAR METODO '}'
VAR = TIPO 'id' ';'
METODO = 'public' TIPO 'id' '(' PARAMS ')' '{' VAR CMD 'return' REXP ';' '}'
PARAMS = TIPO 'id'
TIPO = 'boolean'
| 'int'
CMD = 'if' '(' REXP ')' CMD
| 'while' '(' REXP ')' CMD
| 'System.out.println' '(' REXP ')' ';'
| 'id' '=' REXP ';'
REXP = 'num' '<' 'num'Foi implementado um analisador sintático descendente recursivo.
- Colocar o codigo dentro do arquivo input.txt na raiz do diretorio.
- rodar o script:
./run_Compilador.shpara Windows. - rodar o script:
./run_Compilador_unix.shpara UNIX.
