Skip to content

lsgonc/t6-compiladores

Repository files navigation

Ciência da Computação, UFSCar - 2025

Professor: Daniel Lucrédio

Trabalho desenvolvido por:

Nome RA
Enzo Youji Murayama 813606
Gabriel Henrique Alves Zago 811640
Lucas Sciarra Gonçalves 811948

Playlist Language Compiler

Linguagem criada como parte do trabalho final da disciplina de Compiladores, destinada à definição e validação de playlists musicais com suporte a metadados estruturados. O vídeo de apresentação pode ser acessado aqui:

Como funciona?

A linguagem permite definir uma playlist através de um arquivo de texto com uma estrutura clara e obrigatória. O compilador lê este arquivo, valida sua sintaxe e semântica, e gera uma página representativa da playlist.

A estrutura de uma playlist é composta por três partes principais:

  • Cabeçalho da Playlist (Obrigatório): Define os metadados principais.
  • Descrição (Opcional): Um texto livre para descrever a playlist.
  • Músicas (Obrigatório, pelo menos uma): A lista de faixas que compõem a playlist. A imagem de capa é opcional.

Modelo básico de utilização da linguagem:

PLAYLIST "nome-da-playlist"
DURACAO_MAXIMA {número} min
GENERO "genero-da-playlist"
ANO {número}
FAIXA_ETARIA {"LIVRE" || número}

DESCRICAO "descricao-da-playlist"

MUSICA "musica1" AUTOR "autor1" DURACAO {número} min CAPA "url-da-imagem1"
MUSICA "musica2" AUTOR "autor2" DURACAO {número} min CAPA "url-da-imagem2"

Cada arquivo passado pelo compilador é capaz de definir uma única playlist.


📦 Arquivos

Este projeto está organizado nos seguintes arquivos:

  • gramatica.lark → Gramática da linguagem. Define todas as regras sintáticas e léxicas da nossa linguagem de playlists.
  • parser.py → Cria o analisador sintático a partir da gramática. Sua única função é gerar um parser do Lark pronto para uso.
  • transformer.py → Realiza a análise semântica. Valida a lógica do código e transforma os dados em uma estrutura Python.
  • html_generator.py → Realiza a criação da página HTML.
  • main.py → Fluxo principal do compilador.
  • requirements.txt → Dependências do projeto.

📑 Exemplos de uso

O projeto também inclui arquivos contendo casos de teste utilizados para validar a linguagem desenvolvida, abrangendo diferentes cenários de uso e possíveis erros.

  • caso-teste-01.txt → Exemplo correto
  • caso-teste-02.txt → Exemplo com erros léxicos
  • caso-teste-03.txt → Exemplo com erros sintáticos
  • caso-teste-[04-10].txt → Exemplo com erros semânticos

🛠 Guia de uso

Antes de começar, certifique-se de que o Python está instalado em seu sistema.

python --version
pytho3 --version

Caso não possua, realize a instalação antes de prosseguir.

# Clone o repositório
git clone https://github.com/lsgonc/t6-compiladores.git

# Acesse o diretório do projeto
cd t6-compiladores

# Instale as dependências
pip install -r requirements.txt

# Execute o programa com o arquivo de teste e o nome da playlist
python main.py casos-de-teste/caso-teste-01.txt nome-da-playlist

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors