Práctica: Analizador Descendente Predictivo Recursivo. Desde Lenguajes de Infijo a EGG Virtual Machine

Descripción

Diseñe un lenguaje de programación sencillo (Sintáxis convencional a la C/BASIC/JavaScript/...). Escriba un analizador sintáctico que genere árboles de análisis abstracto que conformen a los usados por el intérprete del lenguaje Egg.

Posibles puntos de partida

Posiblemente las mas recomendables para empezar son Tiny-C y Mini-Pascal. Después puede usar las otras para responder a la pregunta ¿como amplío el lenguaje con ...?

Requisitos
  1. Escriba la gramática de manera que sea procesable por un ADPR. Puede usar los operadores * y + dentro de la gramática para indicar repeticiones
  2. Escriba el analizador sintáctico para dicho lenguaje. Deberá devolver el árbol de análisis sintáctico conforme a los árboles usados por el intérprete Egg
  3. El lenguaje debe tener
    • declaraciones (aunque no tiene que ser necesariamente tipeado). Esto es, deberían poder declararse objetos como variables, constantes y funciones
    • sentencias if,
    • condiciones como a <= b,
    • asignaciones,
    • alguna forma de bucle,
    • funciones y llamadas a funciones,
    • etc.
  4. La gramática deberá disponerse de forma que sea analizable por un PDR
  5. Escriba pruebas para el código desarrollado
  6. Use integración en la nube (Travis/ CircleCI)

Recursos