Squirrel é (ou vai ser) uma linguagem imperativa, mas com sonhos de OO, tendo como principais influências python, c++ e java.
Este projeto está sendo desenvolvido como parte da disciplina de Engenharia de linguagens do curso de Engenharia de Sofware na UFRN.
Para desenvolver Squirrel estamos utilizando o Bison e o Flex, implementações do YACC e Lex, respectivamente.
Para gerar um executável do compilador, é possível utilizar o flex e bison (junto com algum compilador C) diretamente. O modo recomendável, no entanto, é utilizando o waf (veja abaixo).
-
Gerar o léxico:
lex lexer.l
-
Converter o arquivo yacc:
yacc -d parser.y
ou
bison --define=y.tab.h parser.y
-
Gerar o executável:
cc *.c src/commons/*.c libs/datastructs-c/src/*.c src/compiler/*.c -I src/commons -I libs/datastructs-c/src -I src/compiler -std=gnu99 -o squirrel
Outra opção é utilizar o waf.
./waf configure build
Waf é um sistema de build que permite definir o script de construção do programa em python (ver o arquivo wscript).
O waf em si é um programa em python e pode ser incluso junto ao projeto.
O script irá criar o executável do compilador (squirrel) na pasta build.