Skip to content

gabcastro/Unisinos-Tradutores-AnalisadorLexico

Repository files navigation

Analisador Léxico

Conteúdo

Sobre

Criação de um analisador léxico que tem como objetivo identificar os seguintes padrões:

  • Variáveis ou identificadores: reconhecer variáveis, funções, parâmetros de funções. Exemplo:
// trecho de código
int x = 7;
int y;

// tokens gerados
[reserved word, int] [id, 1] [equal_op, =] [num, 7]
[reserved word, int] [id, 2]
  • Constantes numéricas (números inteiros): reconhecer um número inteiro qualquer e convertê-lo para os respectivos tokens:
// trecho de código
int x = 7 + 25 * 52;

// tokens gerados
[reserved word, int] [id, 1] [equal_op, =] [num, 7] [arith_op, +] [num, 25] [arith_op, *] [num, 52]
  • Palavras reservadas: reconhecer palavras reservadas. Por exemplo: do, while, if, else, switch, for, return, null, int, float, double, string, bool, break, case, etc e convertê-las para os respectivos tokens:
// trecho de código
if (x == 10)

// token gerado
[reserved word, if] [id, 1] [relational_op, ==] [num, 10]
  • Operadores relacionais: reconhecer os operadores relacionais: <, <=, ==, !=, >=, > e convertê-los para os respectivos tokens:
// Trecho de código
while( x != 0)

// Tokens gerados:
[reserved_word, while] [id, 1] [Relational_Op, !=] [num, 0]
  • Números de ponto flutuante (números reais): reconhecer números reais quaisquer e convertê-los para os respectivos tokens:
// Trecho de código
int x = 7.15 - 2.13;

// Tokens gerados
[reserved_word, int] [id, 1] [Equal_Op, =] [num, 7.15] [Arith_Op, -] [num, 2.13]
  • Remoção de espaços em branco e comentários: reconhecer espaços em branco e comentários no código fonte e removê-los (ignorá-los)
// Trecho de código

// Comentário 1
/* Comentário 2 */
  • Strings: reconhecer os strings e convertê-las para seus respectivos tokens:
// Trecho de código
String sexo = “masculino”;

// Tokens gerados:
[reserved_word, String] [id, 1] [equal, =] [string_literal, masculino]
  • Operadores lógicos: reconhecer os operadores lógicos: || && e convertê-los para os respectivos tokens:
// Trecho de código
if(idade > 70 && sexo == “masculino”)

//Tokens gerados
[reserved_word, if] [id, 1] [Relational_Op, >] [num, 70] [logic_op, &&] [id, 2] [Relational_Op, ==] [Relational_Op, string_literal]
  • Demais caracteres: reconhecer os caracteres: = ( ) { } , ; e convertê-los para seus respectivos tokens:
[equal, =] [l_paren, (] [r_paren, )] [l_bracket, {] [r_bracket, }] [r_bracket, }] [comma, ,] [semicolon, ;]

Como executar

Basta executar o arquivo bat em um terminal

$ .\batFile.bat

Referências