-
Notifications
You must be signed in to change notification settings - Fork 0
kauasampa/Compilador
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published