/MiniJava

Primary LanguageJava

#MiniJava

Disciplina: Teoria e Implementação de Linguagens Computacionais

Implementação de compilador para a linguagem MiniJava, um subconjunto de Java.

##Analise léxica

###Elementos Léxicos

O analisador léxico foi criado usando a biblioteca JFlex.

  • Whitespace - Espaços em branco, quebras de linha, tabulações e carriage return
  • Comentários - Qualquer texto entre /* e */
  • Palavras-chave - class, public, extends, static, void, int, boolean, while, if, else, return, false, true, this, new
  • Operadores - ||, &&, ==, !=, <, <=, >, >=, +, -, *, /, %, !
  • Delimitadores - ; . , = ( ) { } [ ]
  • Identificadores - um identificador começa com uma letra ou underline e é seguido por qualquer quantidade de letras, underline e dígitos. Apenas letras entre A/a e Z/z são permitidos, há diferença entre maiúscula e minúscula. Palavras-chave não são identificadores
  • Literais Inteiros - uma sequência de dígitos iniciada com qualquer um dos dígitos entre 1 e 9 e seguida por qualquer número de dígitos entre 0 e 9. O dígito 0 também é um inteiro.
  • Literais ponto flutuante - Uma parte inteira seguida de uma parte fracionária, separada por ponto. A parte fracionária, podemos incluir um expoente, seguindo os exemplos dos slides de análise léxica.

Obs.: Comentários e whitespace não tem significado algum, exceto para separar os tokens.

##Analise sintática

O analisador sintático foi criado usando a biblioteca Java CUP, e foi integrado com o JFlex para usar os tokens lidos pelo analizador léxico.