Compilador Java: JDK 19 ou maior.
LLVM: Clang 16.0.0.
Baixe o programa já compilado e pronto para ser executado na ultima versão aqui. Veja nas Releases também outras versões disponiveis.
O programa compilado tem como objetivo compilar o código suportado para a linguagem intermediaria do LLVM na forma textual, ou seja, ele irá fazer o papel de frontend do compilador gerando uma representação para o backend (LLVM) poder realizar os proximos passos de otimização, geração de código alvo e linkagem em um executavel.
Para rodar o executavel utilize o comando:
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar
Execute com o argumento -h
para obter a informação de comandos que o compilador suporta
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar -h
Executando o programa sem nenhuma argumento será iniciado o modo interativo onde o código a ser compilado pode ser escrito sem necessitar estar em um arquvio salvo. Para compilar o código digitado é necessário digitar --stop
e para encerrar o programa é necessário digitar --exit
.
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar
Para compilar de um arquivo salve em disco, passe o caminho do arquivo como o primeiro argumento do programa. Na pasta exemplos
existe um exemplo de jogo da velha.
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar .\exemplos\jogoVelha.txt
Por padrão o programa imprime o código LLVM IR compilado em tela, mas também é possivel especificar um arquivo para o código compilado ser salvo em disco com o argumento -o
. Exemplo compilando o jogo da velha e salvando em arquivo na pasta exemplos
.
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar .\exemplos\jogoVelha.txt -o .\exemplos\jogoVelha.ll
Recomendado sempre salvar os arquivos compilador com a extensão
.ll
para o compilador do LLVM indentificar corretamente o arquivo. \
É possivel também habilitar a visualização da arvore de derivação usada pelo compilador na parte das analiases lexica e sintatica com o argumento -t
:
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar -t
Para criar um executavel é necessario ter o clang na versão 16. É necessário apenas especificar o caminho do código LLVM IR compilado para o clang:
clang-16 .\exemplos\jogoVelha.ll
E então um executavel deverá ser criado e o programa poderá ser executado.
Caso deseja compilar o programa, siga os seguintes passos:
-
Clone o projeto com o comando:
git clone https://github.com/erikborella/projeto-compiladores-ifsc.git
-
Abra o projeto
projeto-compiladores-ifsc
localizado dentro da pasta do projeto clonado na sua IDE de preferencia.
-
Compile o projeto usando o Maven executando o Goal
package
: -
Depois do processo de compilação for concluido na pasta
target
do projeto será criado um arquivo chamadoprojeto-compiladores-ifsc-1.0-SNAPSHOT.jar
, esse é o executavel do compilador.