Linguagens de programação são notações para se descrever computações para pessoas e para máquinas. Contudo, apesar de possuírem definições e regras de escrita, tais linguagens ainda precisam ser traduzidas de forma que possam ser executadas por um computador. Os sistemas de software que traduzem essas linguagens são chamados de compiladores. Este projeto visa o desenvolvimento de construção de um compilador básico.
Compreender o funcionamento e possibilidades de um compilador.
- Pedro Paul (Construção da gramática e Documentação)
- Igor Túllio (Construção da gramática e Testes)
Segue a seguir a lista dos passos necessários para instalar as ferramentas necessárias para a execução do compilador:
- Instale o Java (versão 1.6 ou maior)
$ sudo dnf install java
- Faça o download do ATNLR (Usaremos como exemplo o ANTLR 4.5.3 porém pode ser usado qualquer versão 4 ou maior)
$ cd /usr/local/lib
$ sudo curl -O http://www.antlr.org/download/antlr-4.5.3-complete.jar
Ou faça o download de uma versão mais atualizada direto do navegador no site:
http://www.antlr.org/download.html
e coloque em algum lugar racional tipo /usr/local/lib
.
- Adicione
antlr-4.5.3-complete.jar
a suaCLASSPATH
:
$ export CLASSPATH=".:/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH"
- Crie alcunhas para a ferramenta ANTLR e
TestRig
.
$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
$ alias grun='java org.antlr.v4.gui.TestRig'
- (Opcional) Testar se a instalação foi bem sucedida
Você pode, ou executa o org.antlr.v4.Tool
diretamente:
$ java org.antlr.v4.Tool
ANTLR Parser Generator Version 4.5.3
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...
ou usa a opção -jar
do java:
$ java -jar /usr/local/lib/antlr-4.5.3-complete.jar
ANTLR Parser Generator Version 4.5.3
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...
Segue a seguir as listas dos passos necessários para executar o compilador:
Aqui será lido os caracteres do programa fonte. Estes serão agrupados em lexemas onde será produzida, como saída, uma sequência de tokens para cada lexema do programa fonte.
- Na pasta
CC_Compilador
, entre na pastaskeleton
$ cd skeleton/
- Compilar os aquivos Java
$ ant
caso o pacote não for encontrado instale ele.
- Execute o Scanner em um arquivo de texto
$ java -jar dist/Compiler.jar -target scan -debug ../scanner/ARQUIVO_DE_TEXTO
Aqui será lido os caracteres do programa fonte. O analisador sintático utilizará a tabela de tokens produzidos pelo analisador léxico para criar uma árvore de sintaxe, que mostra a estrutura gramatical da sequência de tokens. A análise semântica que usa esta e a tabela de tokens para verificar a consistência semântica do programa fonte com a definição da linguagem. Esta também reúne informações sobre os tipos e as salva na árvore de sintaxe ou na tabela de símbolos, para uso subsequente durante a geração de código intermediário.
- Na pasta
CC_Compilador
, entre na pastaskeleton
$ cd skeleton/
- Compilar os aquivos Java
$ ant
caso o pacote não for encontrado instale ele.
- Execute o Parser em um arquivo de texto que contenha o programa fonte
$ java -jar dist/Compiler.jar -target parser -debug ../parser/ARQUIVO_DE_TEXTO
- Na pasta
CC_Compilador
, entre na pastaskeleton
$ cd skeleton/
- Compilar os aquivos Java
$ ant
caso o pacote não for encontrado instale ele.
- Execute o Inter em um arquivo de texto que contenha o programa fonte
$ java -jar dist/Compiler.jar -target inter ../parser/ARQUIVO_DE_TEXTO
A Construção da gramática ficou restrita as liguagem ANTLR e Java. Todos os testes foram feitos em ambiente UNIX, porem poderiam ser feitos no Windows desde que o java, ant e o ANTLR fossem configurados para este.