Conclusão
Definiu-se uma linguagem de programação, a
ALisP
, com sintaxe e a semântica largamente inspiradas/copiadas doLisp
, e implementou-se um interpretador:
- A sintaxe é definida por uma gramática LL(1).
- O processo da análise sintática produz uma representação intermédia do programa.
- A
ALisP
tem valores inteiros, double, string, booleanos, listas e funções anónimas.- Os valores podem ser guardados em variáveis e consultados posteriormente.
- As instruções proporcionam ciclos e condicionais.
- A interação com o utilizador é feita através da consola.
- O interpretador pode ser inicializado com um conjunto de funções base adequadas a tarefas específicas de um determinado domínio.
Além da interpretação de expressões/instruções/programas são convenientes algumas utilidades, proporcionadas pelo programa alisp.py
:
- Uma forma de calcular diretamente o valor de uma expressão:
alisp.py -e "(+ 40 2)"
. - Uma forma de correr um programa definido num ficheiro:
alisp.py -l guess-the-number.lisp
. - Uma forma de usar interativamente a linguagem:
alisp.py --repl
. - Estas formas pode ser combinadas, de forma a que, por exemplo, uma biblioteca de funções possa ser carregada para calcular uma expressão e/ou usada numa sessão interativa:
alisp.py -l functions.list -e "(set answer (dobro 21))" --repl