Resumen

En este tema se han visto los siguientes conceptos:

  • Un procesador de lenguaje es aquel programa cuya entrada sea un lenguaje. Aunque se suele asociar sólo a los compiladores, muchos de los programas habituales son procesadores de lenguajes (navegadores, ofimática, ...).
  • Un procesador suele ser un programa complejo, por lo que para hacer el proceso más manejable, su construcción suele dividirse en varias fases.

Aunque puede haber más, las fases más comunes son:

  • El analizador léxico. Agrupa los caracteres y los clasifica en tokens.
  • El analizador sintáctico. Agrupa los tokens en construcciones y las refleja en un árbol.
  • El analizador semántico. Comprueba la validez de las construcciones. Su trabajo se suele dividir en dos etapas.
    • Etapa de identificación. Se comprueba que todo símbolo ha sido definido.
    • Etapa de comprobación de tipos. Se comprueba que toda operación se realiza con los operandos adecuados.
  • La generación de código. Genera la salida correspondiente a la entrada recibida. Se suele dividir en dos etapas.
    • Gestión de Memoria. Se asocia una dirección y un formato a todo símbolo.
    • Selección de Instrucciones. Se asocia a toda construcción aquello que debe generar.