Skip to content

Um analisador léxico (lexer) para a linguagem Java desenvolvido em Python como projeto acadêmico para a disciplina de Compiladores.

Notifications You must be signed in to change notification settings

httpsemilly/lexikon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LEXIKON: Lexer para linguagem Java

Python License: MIT

Descrição

Um analisador léxico (lexer) para a linguagem Java desenvolvido em Python como projeto acadêmico para a disciplina de Compiladores. Este projeto implementa a fase de análise léxica de um compilador, responsável por converter código fonte em uma sequência de tokens.

Objetivos Acadêmicos

  • Compreender os fundamentos de compiladores
  • Implementar a fase de análise léxica
  • Trabalhar com expressões regulares
  • Desenvolver habilidades em processamento de linguagens

Funcionalidades

  • Reconhecimento de tokens Java
  • Suporte a números (inteiros e ponto flutuante)
  • Identificação de palavras-chave e identificadores
  • Reconhecimento de operadores e delimitadores
  • Tratamento de strings literais
  • Ignorar comentários e espaços em branco
  • Controle de linha e coluna para mensagens de erro

Estrutura do projeto

lexikon/
├── src/
│ ├── token.py
│ ├── token_type.py
│ ├── symbol.py
│ ├── symbol_table.py
│ ├── keywords.py
│ └── lexer.py
├── examples/
│ └── Calculator.java
│── main.py
└── README.md

Rodando localmente

Pré-requisitos

  • Python 3.8 ou superior

Execução via terminal

python main.py examples/Calculator.java

Exemplo de uso

1. Crie um arquivo Java na pasta examples:

// examples/MeuPrograma.java

public class MeuPrograma {
    public static void main(String[] args) {
        int resultado = 10 + 5 * 2;
        System.out.println("Resultado: " + resultado);
    }
}

2. Execute o lexer:

python main.py examples/MeuPrograma.java

3. Saída esperada (exemplo):

PUBLIC      | public      | Line 1, Column 1
CLASS       | class       | Line 1, Column 8
IDENTIFIER  | MeuPrograma | Line 1, Column 14
LEFT_BRACE  | {           | Line 1, Column 26
PUBLIC      | public      | Line 2, Column 5 
STATIC      | static      | Line 2, Column 12 
VOID        | void        | Line 2, Column 19 
IDENTIFIER  | main        | Line 2, Column 24 
...

About

Um analisador léxico (lexer) para a linguagem Java desenvolvido em Python como projeto acadêmico para a disciplina de Compiladores.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages