Skip to content

Alcance del Tutorial

Objetivos

Este tutorial tiene dos objetivos principales:

  1. Mostrar de manera práctica las fases básicas en las que se divide la construcción de un compilador.
  2. Mostrar cómo utilizar distintas herramientas y técnicas para agilizar la creación de cada fase.

Como parte del segundo objetivo, se verán los siguientes aspectos:

  • Cómo usar Anltr para generar analizadores léxicos y sintácticos.
  • Cómo crear un árbol de sintaxis abstracta (AST) para representar el código fuente.
  • Ejemplos de creación de gramáticas atribuidas y su implementación.
  • Uso de una especificaciones de código.
  • Mostrar cómo hacer todo lo anterior de manera manual o bien con la herramienta VGen (opcional).

El objetivo no es ver a fondo cada uno de estos elementos, sino tener una visión suficiente para entender lo más importante de cada uno de ellos y así ya disponer de una base que permita profundizar en los aspectos que se desee.

MLang

Se ha creado para el tutorial un lenguaje de programación llamado MLang (Minimal LANGuage). Se ha pretendido un lenguaje lo más pequeño posible de tal manera que su comprensión sea sencilla y no distraiga del objetivo principal del tutorial, que es aprender las fases del compilador. Se ha buscado un lenguaje lo más pequeño posible que permita ver lo más importante de cada fase.

Un programa en MLang tiene esta estructura:

c
DATA
	float price;
	int width;
	int height;
	float total;

CODE
	price = 9.95;
	total = (price - 3.0) * 1.18;
	print total;

	width = 10; height = 20;
	print 0 - width * height / 2;

El ejemplo define una serie de variables globales que posteriormente utiliza para pedir unos valores al usuario. Con ellos realiza una serie de cálculos imprimiendo finalmente el resultado. El lenguaje se describirá en más detalle en un capítulo posterior.