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.jarExecute com o argumento -h para obter a informação de comandos que o compilador suporta
java -jar .\projeto-compiladores-ifsc-1.0-SNAPSHOT.jar -hExecutando 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.jarPara 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.txtPor 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.llRecomendado sempre salvar os arquivos compilador com a extensão
.llpara 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 -tPara 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.llE 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-ifsclocalizado 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
targetdo projeto será criado um arquivo chamadoprojeto-compiladores-ifsc-1.0-SNAPSHOT.jar, esse é o executavel do compilador.