Implementación de un compilador para el lenguaje minipascal [MOD]. Fines educativos. - UTP
Un programa de minipascal esta comprendido por una o más funciones.
Ejemplo de una función
FUN foo( arg:INT )
BEGIN
PRINT( "Hello World" )
END
En general
FUN <nombre funcion> ( <argumento0:type>, <argumento1:type>,... ,<argumentoN:type> )
<var0>:<type>;
<varN>:<type>;
BEGIN
<sentence0>;
<sentence1>;
<sentenceN>
END
Cada sentencia finaliza con un punto y coma a excepción de la última sentencia. Ejemplo
FUN main()
n:int;
BEGIN
WHILE i<n-1 do
BEGIN
WRITE(v[i]);
PRINT(" ");
END;
WRITE(v[i]);
PRINT("Éxito\n")
END
Las sentencias IF y WHILE, requieren definición de sentencias de un nivel más bajo.
Ejemplo Sentencia de segundo nivel:
FUN foo( arg:INT )
BEGIN
WHILE arg < 3 DO
PRINT( "Hello World" )
END
FUN foo( arg:INT )
BEGIN
IF arg > 0 THEN
PRINT ( "Hello world" )
ELSE
PRINT ( "Arg no es mayor que cero" )
END
FUN foo( arg:INT )
BEGIN
IF arg > 0 THEN
PRINT ( "Hello world" )
ELSE
PRINT ( "Arg no es mayor que cero" );
WRITE( arg )
END
Ejemplo Sentencias de niveles inferiores.
FUN foo( arg:INT )
BEGIN
WHILE arg < 3 DO
BEGIN
PRINT( "Hello World" );
arg := arg + 1;
( ... )
PRINT( "Ultima linea sin punto y coma" )
END
END
FUN foo( arg:INT )
BEGIN
WHILE arg < 3 DO
BEGIN
arg := arg + 1;
PRINT( "Ultima linea sin punto y coma" )
END;
PRINT( "Hello World" );
END
FUN foo( arg:INT )
BEGIN
IF arg > 0 THEN
BEGIN
arg := 1;
PRINT ( "Hello world" )
END
ELSE
BEGIN
arg := 0;
PRINT ( "Arg no es mayor que cero" )
END;
WRITE( arg )
END
Universidad Tecnológica de Pereira Ingieria en Sistemas y Computación IS744 - Compiladores