Conclusão

Definiu-se uma linguagem de programação, a ALisP, com sintaxe e a semântica largamente inspiradas/copiadas do Lisp, e implementou-se um interpretador:

  1. A sintaxe é definida por uma gramática LL(1).
  2. O processo da análise sintática produz uma representação intermédia do programa.
  3. A ALisP tem valores inteiros, double, string, booleanos, listas e funções anónimas.
  4. Os valores podem ser guardados em variáveis e consultados posteriormente.
  5. As instruções proporcionam ciclos e condicionais.
  6. A interação com o utilizador é feita através da consola.
  7. 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