Skip to content

Apenas um compilador simples que traduz a linguagem .lps para linguagem de máquina, gerando AST, código intermediário, código de máquina e seu executável

Notifications You must be signed in to change notification settings

kauasampa/Compilador

Repository files navigation

Compilador para a linguagem LPMS - Etapa 2 (Parser)
===================================================

Descrição:
Este programa realiza a análise léxica, sintática e semântica de arquivos escritos na linguagem LPMS.
Ele valida o código e gera uma Árvore Sintática Abstrata (AST) para representar a estrutura do programa.
A partir da AST, ele gera o código de 3 endereços.
A partir do código de 3 endereços, gera um código de máquina executável

## Estrutura
1. **lexer.py**: Define o analisador léxico.
2. **parser.py**: Define o analisador sintático e a construção da AST.
3. **main.py**: Integra lexer e parser, executa o programa e exibe a AST, além de gerar o código de 3 endereços e seu código de máquina
4. **programa.lps**: Exemplo de código para teste.
5. **code_generator.py**: Tradução da AST para código de 3 endereços
6. **code_intermediate.txt**: Código de 3 endereços traduzido a partir da AST
7. **machine_code_generator.py**: Gera o código de maquina a partir do código de 3 endereços
8. **machine_code.s**: Código de maquina salvo


##Requisitos:
- Python 3.6 ou superior
- Biblioteca PLY (instale com: pip install ply)
- NASM (instale com: sudo apt install nasm)

##Execução:
1. Coloque o código LPMS em um arquivo, como "programa.lps".
2. Execute o programa com o comando:
   python3 main.py programa.lps
3. Use os seguintes comandos para montar e executar o arquivo:
   nasm -f elf64 -o machine_code.o machine_code.s
   ld -o machine_code machine_code.o -lc --entry=_start --dynamic-linker /lib64/ld-linux-x86-64.so.2
   chmod +x machine_code
   ./machine_code
 




##Saída:
- Para códigos válidos, será exibida a AST, e essa AST será armazenada em um arquivo criado ast_output.txt
- Para erros, serão exibidas mensagens indicando problemas léxicos, sintáticos/semânticos e a linha correspondente.
- Também irá gerar o código de 3 endereços (code_intermediate.txt) e o código de máquina executável (machine_code.s).


About

Apenas um compilador simples que traduz a linguagem .lps para linguagem de máquina, gerando AST, código intermediário, código de máquina e seu executável

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published