Simple · Compiladores
FAQ: Linguagem "Simple"
Assumindo a distribuição do Compact na directoria actual e a directoria "examples" com os programas de teste, as seguintes acções seriam necessárias para compilar o exemplo 1 (ex1.spl):
./simple examples/ex1.spl
yasm -felf examples/ex1.asm
Compilação de um programa Simple para Produzir outra Saída
O nome do compilador corresponde sempre ao nome da linguagem. O processo de produção (tradução) de uma outra linguagem (C, XML, etc.) a partir do original Compact é semelhante ao descrito para a compilação para produção de um executável (nesse caso, a tradução é de Compact para ASM).
Assumindo a distribuição do Compact na directoria actual e a directoria "examples"com os programas de teste, as seguintes acções seriam necessárias para traduzir o exemplo 1 (ex1.spl) para XML:
./simple examples/ex1.spl -target xml
Neste caso, a saída do compilador é o ficheiro ex1.xml. Resultados semelhantes seriam obtidos para os outros "targets". Um comando equivalente ao anterior é o seguinte:
./simple examples/ex1.spl -o examples/ex1.xml
Compilação do Simple: doxygen
Q: Quando tento compilar o Simple, o make produz um erro ao tentar executar o programa "doxygen". O que estou a fazer mal?
Q: Ao executar o "ld" com os ficheiros criados com o compilador e usando as opções -L$HOME/compiladores/root/usr/lib -lrts, aparece a seguinte mensagem de erro:
ld: skipping incompatible .../compiladores/root/usr/lib/librts.a when searching for -lrts
Q: Na produção de um executável Compact depois de realizadas as fases de compilação e geração de módulo binário ( .o), devo produzir o executável com o comando " gcc examples/ex1.o -o ex1"?
No caso do Simple (ou de outro compilador semelhante), o que se deve fazer é:
Gramática do Simple: %prec, %nonassoc, etc.
Q: Na especificação da gramática do Simple, o que é o %prec? E o que quer dizer %nonassoc IFX (no .l não é reconhecido nenhum token chamado IFX)?
Gramática do Simple: token UMINUS
Q: O que é? Não é detectado pelo Flex.
R: O token UMINUS é um token definido na especificação da gramática do Simple. É utilizado para definir a precedência dos operadores unários representados pelos tokens '-' e '+' (esses, sim, reconhecidos pelo analisador lexical).