/PatitoMasMas

Final Project

Primary LanguagePython

Patito++

  • Proyecto final - Diseño de compiladores
  • Febrero - Junio 2020
  • Equipo 14

README Index

Quick Reference Manual

Programa

Para generar un programa en Patito++ se necesita la siguiente sintaxis

programa nombrePrograma;

Seguido por su declaración de variables y funciones.

Variables

Las variables son definidas después de la declaración del programa o de la función.

Tipos

Patito++ cuenta con los tipos tradicionales definidos:

  • int
  • float
  • char

Arreglos y matrices

Patito++ cuenta con una declaración de arreglos/matrices de tipo C por lo que todos inician en 0 y terminan en un numero entero definido por el usuario.

Ejemplo

var
    tipo : nombre;
    tipo : nombre[5];
    tipo : nombre[5][3];

Funciones

Dentro de Patito++ se pueden definir 0 o más funciones para cada programa.

Las funciones pueden tomar como parámetros variables dimensionadas.

Los tipos de retorno de una función son los previamente mencionados y void, incluyendo variables dimensionadas de estos tipos.

funcion tipoRetorno nombreFuncion(tipoParametro : nombre)
{
    estatuto;
}

Lectura

Se pueden leer una o más variables(con o sin dimensiones) separadas por comas.

lee(nombreVar,nombreVar[dim]);

Escritura

Se pueden escribir tanto letreros(strings constantes) y/o expresiones separadas por comas. Es posible escribir todo un arreglo sin indexarlo así como indexándolo.

escribe("letrero",100*2,"otro letrero",arreglo, arreglo[0]);

Expresiones

Patito++ soporta las siguientes expresiones aritméticas:

Normales

Operación Operando
Suma +
Resta -
Multiplicación *
División /
Comparación ==
Diferencia !=
Mayor que >
Menor que <
AND &
OR `

Matrices

Operación Operando
Suma +
Resta -
División /
Multiplicación *
Transpuesta !
Inversa ?
Determinante $
Mínimo ~
Máximo #
Sumatoria @
Promedio %

Asignación

A una variable (con o sin dimensiones) le puedes asignar una expresión. A una matriz se le puede asignar otra si sus dimensiones lo permiten.

nombre = 100 * 100;
nombre[10] = 40;
matriz = otraMatriz;
nombre = llamadaFuncion(param,param) + 100;

Ciclos

Patito++ soporta ciclos condicionales y no condicionales.

Condicionales

mientras (expresion) haz
{
    estatuto;
}

No condicionales

desde variable=expresion hasta expresion hacer
{
    estatuto;
}

Decisiones

Puede o no tener un camino alternativo (else).

si (expresion) entonces
{
    estatuto;
}
sino
{
    estatuto;
}

Llamadas a funciones

Los parámetros de una llamada están conformados por expresiones.

nombreFuncion(expresion,expresion);

Retorno

Si una función no es void tiene que regresar un valor en la forma de una expresión.

regresa(expresion);

Ejemplos

Función normal

funcion tipo nombreFuncion(tipo nombre);
var
    tipo : nombreVar;
{
	lee(nombreVar);
	escribe("letrero",nombreVar);
	si (nombreVar > 5) entonces {
		nombre = 100 * 2;
	}
	sino {
		nombre = 100 / 2;
	}
	escribe("resultado:",nombre);
}

Función main

principal()
{
    nombreFuncion(param1,param2);
    variable = 100 * 50 - 10 / 5;
    escribe(variable);
}

Instalación

Para instalar este lenguaje es necesario contar con Python 3 instalado. Esto se puede verificar corriendo el comando python3 en la terminal.

Una vez instalado Python 3 podemos proceder a instalar el lenguaje.

git clone https://github.com/DianaBarrios/PatitoMasMas.git
pip install -r requirements.txt

Con estos dos comandos el lenguaje se debería de poder accesar usando el siguiente comando, los archivos a correr por default los va a buscar en la carpeta de Pruebas.

./patito nombre.ppp

Equipo

Alberto Juarez Diana Barrios
foto1 foto2
A0128913 A00819792