Escopo do Projeto
Objetivo
Desenvolver um interpretador simplificado para um subconjunto da linguagem Python, utilizando Flex para análise léxica e Bison para análise sintática. O interpretador é capaz de executar operações básicas como atribuições de variáveis, expressões aritméticas, controle de fluxo com estruturas condicionais e loops.
Funcionalidades Implementadas
Tipos de Dados
- Inteiros:
42
,-10
,+5
- Ponto flutuante:
3.14
,-2.5
,1e-10
- Strings:
"Hello"
,'World'
- Booleanos:
True
,False
Operadores
- Aritméticos:
+
,-
,*
,/
,%
,**
- Comparação:
==
,!=
,<
,>
,<=
,>=
- Lógicos:
and
,or
,not
Estruturas de Controle
- Condicionais:
if
/else
com blocos aninhados - Loops:
while
com suporte abreak
econtinue
- Blocos: Indentação Python completa
Funções Built-in
print()
: Saída formatada com múltiplos argumentos
Tratamento de Erros
- Erros léxicos: Caracteres inválidos
- Erros sintáticos: Estrutura gramatical incorreta
- Erros semânticos: Variáveis não definidas, divisão por zero
- Erros de indentação: Inconsistência na indentação
Limitações do Escopo Atual
Não Implementado
- Funções definidas pelo usuário: Apenas funções built-in
- Estruturas de dados complexas: Listas, dicionários, tuplas
- Classes e objetos: Programação orientada a objetos
- Módulos: Sistema de importação
- Exceções: Try/catch
- Operadores de bit:
&
,|
,^
,<<
,>>
- Operadores de atribuição composta:
+=
,-=
, etc. - Loop
for
: Apenaswhile
implementado elif
: Apenasif
/else
básico
Implementado
- Operações aritméticas básicas: Todas as operações fundamentais
- Controle de fluxo:
if
/else
ewhile
- Variáveis: Declaração e atribuição
- Tipos básicos: Int, float, string, bool
- Indentação: Suporte completo
- Comentários: Linhas com
#
- Tratamento de erros: Mensagens detalhadas
- Suite de testes: Cobertura completa
Arquivos Principais
Código Fonte
main.c
: Ponto de entradalexer/lexer.l
: Especificação do lexerparser/parser.y
: Gramática do parserparser/ast.h/.c
: Implementação da ASTparser/tabela.h/.c
: Tabela de símbolosparser/interpretador.h/.c
: Interpretadorparser/types.h
: Definições de tipos
Scripts e Configuração
Makefile
: Sistema de buildindent_preproc.py
: Pré-processadorrun_tests.sh
: Suite de testesscripts/
: Scripts de automação
Testes
tests/test_*.py
: Testes de funcionalidadetests/test_*.c
: Testes unitáriostests/test_erro_*.py
: Testes de erro
Conclusão
Este projeto demonstra com sucesso a implementação de um interpretador Python simplificado usando as ferramentas Flex e Bison. O escopo foi bem definido e implementado, cobrindo os conceitos fundamentais de compiladores: análise léxica, análise sintática, construção de AST e interpretação.
O projeto oferece uma base sólida para futuras extensões e serve como excelente material educacional para o estudo de compiladores e interpretadores.
Histórico de Versão
Versão | Data | Descrição | Autor(es) |
---|---|---|---|
0.1 |
27/04/2025 | Criação do GitPages do grupo | Jefferson |
1.0 |
27/04/2025 | Criação da página "Escopo" contendo informações sobre o escopo do projeto | Letícia Resende |
1.1 |
28/04/2025 | Ajustes e correções em inconsistências no documento | Arthur Evangelista |
1.2 |
27/06/2025 | Atualização completa do escopo para refletir o projeto implementado | Arthur Evangelista |