- Proyecto final - Diseño de compiladores
- Febrero - Junio 2020
- Equipo 14
Para generar un programa en Patito++
se necesita la siguiente sintaxis
programa nombrePrograma;
Seguido por su declaración de variables y funciones.
Las variables son definidas después de la declaración del programa o de la función.
Patito++
cuenta con los tipos tradicionales definidos:
- int
- float
- char
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.
var
tipo : nombre;
tipo : nombre[5];
tipo : nombre[5][3];
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;
}
Se pueden leer una o más variables(con o sin dimensiones) separadas por comas.
lee(nombreVar,nombreVar[dim]);
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]);
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 | % |
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;
Patito++
soporta ciclos condicionales y no condicionales.
Condicionales
mientras (expresion) haz
{
estatuto;
}
No condicionales
desde variable=expresion hasta expresion hacer
{
estatuto;
}
Puede o no tener un camino alternativo (else).
si (expresion) entonces
{
estatuto;
}
sino
{
estatuto;
}
Los parámetros de una llamada están conformados por expresiones.
nombreFuncion(expresion,expresion);
Si una función no es void tiene que regresar un valor en la forma de una expresión.
regresa(expresion);
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);
}
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
Alberto Juarez | Diana Barrios |
---|---|
A0128913 | A00819792 |