Skip to content

Commit

Permalink
PseudoD 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Alejandro Linarez Rangel committed Mar 12, 2016
1 parent 0d3f5f8 commit 4b9a9ce
Show file tree
Hide file tree
Showing 17 changed files with 258 additions and 45 deletions.
6 changes: 4 additions & 2 deletions ESTRUCTURA.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Estructura del arbol de documentos y carpetas:
./Ejemplos/ Ejemplos de código en PseudoD.
./bepd/ Biblioteca estandar de PseudoD.
./bepd/doc/ Documentación de BEPD(proximamente).
./test/ Pruebas de PseudoD.
./ipdc Intermedio entre PseudoD y la consola.

Estructura donde estarían los archivos despues de compilar:
Expand Down Expand Up @@ -48,11 +49,11 @@ Algunas preguntas que se podria hacer:
estandar.

¿Que versión de BEPD es la que trae este código?
BEPD u2.0.0:2.0.0 (BEPD 2.0.0 diseñada para PseudoD 1.9.5/2.0.0).
BEPD 2.0.0:1.9.5/2.0.0. (BEPD 2.0.0 diseñada para PseudoD 1.9.5/2.0.0).

¿Como se usa ipdc?
ipdc supone que ya se tiene PseudoD(el ejecutable) en /usr/bin/ o en
/home/$USER/bin/. Su uso se puede ver con:
/opt/pseudod/bin/. Su uso se puede ver con:
ipdc --help
o:
ipd --ayuda
Expand Down Expand Up @@ -85,3 +86,4 @@ Algunas preguntas que se podria hacer:
de BEPD, guias sobre el NEA, entre otros.
* www.pseudod.com : Pagina principal. Aqui se encontrara informacion acerca del proyecto,
tutoriales, guias, e informacion reciente.

7 changes: 4 additions & 3 deletions LEEME.txt
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,18 @@ TU PSEUDOD

FORMATO DE ERRORES
Los errores en PseudoD son mostrados con el siguiente formato:
Error [grado] en (modulo/orden): [sintaxis] (mensaje)
(clase) Error [grado] en (modulo/orden): [sintaxis] (mensaje)
Por ejemplo:
No:
Error: division entre cero
Si:
Error en Ent.Dividir: 'Ent.Dividir a b c': division entre cero.
(ErrorMatematico) Error en Ent.Dividir: 'Ent.Dividir a b c': division entre cero.
No:
Error: se esperaba ']'
Si:
Error en [: '[ ... ]': se esperaba ']'
(ErrorDeSintaxis) Error en [: '[ ... ]': se esperaba ']'

PseudoD fue creado por Alejandro Linarez Rangel

Gracias por usar PseudoD

6 changes: 3 additions & 3 deletions NEA/PDData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ namespace PDvar
int i = buscar((*this->nombrep),n);
if(i == -1)
{
throw PDvar::ErrorDelNucleo("Error en el manejador de datos: C++'ObtenerPuntero(n)': No se encontro el puntero");
throw PDvar::ErrorDelNucleo("Error en el manejador de datos: C++'ObtenerPuntero(" + n + ")': No se encontro el puntero");
}
else
{
Expand All @@ -257,7 +257,7 @@ namespace PDvar
int i = buscar((*this->nombrep),n);
if(i == -1)
{
throw PDvar::ErrorDelNucleo("Error en el manejador de datos: C++'ObtenerVariable(n)': No se encontro la variable o puntero");
throw PDvar::ErrorDelNucleo("Error en el manejador de datos: C++'ObtenerVariable(" + n + ")': No se encontro la variable o puntero");
}
else
{
Expand Down Expand Up @@ -424,7 +424,7 @@ namespace PDvar
val2 = ValorDelToken(tok2,in,data);
if(ytok != "y")
{
throw string("No se reconoce el token " + tok + " se esperaba \"y\"");
throw PDvar::ErrorDeSintaxis("Error en el parser(expr): 'son/sean iguales/diferentes expr y expr': se esperaba 'y' no " + ytok);
}
if(op == "iguales")
{
Expand Down
35 changes: 32 additions & 3 deletions NEA/Tipos.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,9 @@ namespace PDTipos
data->ObtenerIndicePuntero(this->ni + string("#") + this->methods[i])
= data->BuscarIndice("Variable",this->nm + string("#")
+ this->methods[i]);
data->ObtenerIndicePuntero(this->ni + string("#") + this->methods[i] + "#cod")
data->ObtenerIndicePuntero(this->ni + string("#") + this->methods[i] + string("#cod"))
= data->BuscarIndice("Variable",this->nm + string("#")
+ this->methods[i] + string("#cod"));
+ this->methods[i]);
/*data->ObtenerVariable(this->ni+string("#")+this->methods[i])
= data->ObtenerVariable(this->nm+string("#")+this->methods[i]+string("#cod"));*/
}
Expand Down Expand Up @@ -510,7 +510,36 @@ namespace PDTipos

void PseudoHerencia::InscribirInstancia(PDDatos* data)
{
data->ObtenerVariable(this->nmh) += " " + data->ObtenerVariable(this->nmb);
string& base = data->ObtenerVariable(this->nmb);
string& hija = data->ObtenerVariable(this->nmh);
string curr_mtd = "";
for(int i = 0;i < base.size();i++)
{
if(base[i] == ' ')
{
if((curr_mtd.front() == ':')&&(hija.find(curr_mtd.c_str()) == string::npos))
{
// Crear una funcion llamada Hija#Metodo que sea igual a Base#Metodo
curr_mtd.replace(0,1,"");
string hija_mtd = this->nmh + string("#") + curr_mtd;
string base_mtd = this->nmb + string("#") + curr_mtd;
data->CrearVariable(hija_mtd,"Variable",0);
data->CrearVariable(hija_mtd + "#NOMBRE","Variable",0);
data->CrearVariable(hija_mtd + "#Tipo","Variable",0);
data->CrearVariable(hija_mtd + string("#cod"),"Puntero",0);
data->ObtenerVariable(hija_mtd)
= data->ObtenerVariable(base_mtd);
data->ObtenerVariable(hija_mtd + "#NOMBRE") = hija_mtd;
data->ObtenerVariable(hija_mtd + "#Tipo") = "PseudoFuncion";
data->ObtenerIndicePuntero(hija_mtd + string("#cod"))
= data->BuscarIndice("Variable",hija_mtd);
}
curr_mtd = "";
continue;
}
curr_mtd += base[i];
}
hija += base;
}

PseudoDireccionarPuntero::PseudoDireccionarPuntero(string p,string v) : PDInstancia()
Expand Down
9 changes: 5 additions & 4 deletions README.mkd
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ clase foo
heredar Objeto foo
funcion foo#bar
adquirir foo_metod_b_msg
fijar foo_metod_b_msg =* Hola desde foo#bar
escribir foo_metod_b_msg
adquirir mensaje
fijar mensaje =* Hola desde foo#bar
escribir mensaje
nl
liberar foo_metod_b_msg
liberar mensaje
finfun
instancia foo MFoo
Expand All @@ -123,3 +123,4 @@ llamar MFoo#bar #(Final).
PseudoD fue creado por Alejandro Linarez Rangel, la pagina oficial es [PseudoD.com](http://www.pseudod.com) y [PseudoD.sourceforge.net](http://www.sourceforge.net/projects/pseudod/), alli estan los foros, la wiki y el blog de PseudoD.

Este es PseudoD **2.0.0**.

19 changes: 8 additions & 11 deletions bepd/LEEME.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
.____________________________________________________________________________.
|LEEME.txt - BEPD 1.9.0 - PseudoD 1.9|
|____________________________________________________________________________|
|PseudoD, tanto el NEA como el NIA y todos los archivos en este directorio |
|fueron creados por Alejandro Linarez Rangel |
\____________________________________________________________________________/
ESTE ARCHIVO CONTIENE TEXTO UNICODE

Contancto a <proyectopseudod@gmail.com>
Y a <https://www.sourceforge.net/projects/pseudod>
PAG. ANCHO 80 caracteres
Expand Down Expand Up @@ -31,8 +27,8 @@ PAG. ANCHO 80 caracteres
La Biblioteca Estandar de PseudoD(BEPD) es una colección de archivos y
directorios destinados a ser utilizados por cualquier programador de PseudoD.

Esta es la versión de BEPD u1.9.3:u1.9.5, diseñada para ser usada, con minimo
PseudoD 1.9.5.
Esta es la versión de BEPD 2.0.0:1.9.5/2.0.0., diseñada para ser usada, con
minimo PseudoD 1.9.5.

Tabla de archivos:

Expand All @@ -45,6 +41,7 @@ mate.pseudo | Funciones matemáticas avanzadas y basicas. | 1.0.0
tipos.pseudo | Funciones mixtas modificadoras. | 1.0.0
algor.pseudo | Algoritmos basicos y avanzados. | 2.0.0
plugins.pseudo| Sistema de carga de plug-ins. | 1.4.0
errores.pseudo| Sistema de errores. | 1.0.0

Archivos obsoletos:

Expand All @@ -53,7 +50,7 @@ Nombre | Descripción | Versión
funciones.pseudo | Métodos de las clases. | 1.0.0
es.pseudo | Sistemas de E/S. | 1.0.0
dinamico.pseudo | Sistema de carga dinamica. | 1.1.0
errores.pseudo | Manejo de errores por "valores magicos". | 1.0.0

Esta versión de BEPD fue diseñada para usarse con PseudoD 1.9, preferiblemente
con la versión más reciente.(u1.9.5)
Esta versión de BEPD fue diseñada para usarse con PseudoD 2.0, preferiblemente
con la versión más reciente.(2.0.0)

1 change: 1 addition & 0 deletions bepd/errores.pseudo
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Puede ser desde una division por cero, hasta errores de dominio.
DOCUMENTA]
clase ErrorMatematico
#(Final).
heredar Error ErrorMatematico

[DOCUMENTA
@brief Es el error actual.
Expand Down
71 changes: 53 additions & 18 deletions bepd/test.pd
Original file line number Diff line number Diff line change
@@ -1,25 +1,60 @@
utilizar clases.pseudo [ para Numero ]

instancia Numero myInt
fijar myInt#valor =* 0

funcion ModDemo
[ Cualquier aparicion de myInt es de la global ]
instancia Numero myInt
[ Cualquier aparicion de myInt es de la local ]
fijar myInt#valor =* 1024
escribir myInt#valor
clase Base
:metodoA
:metodoB
#(Final).
heredar Objeto Base

funcion Base#metodoA
adquirir yo
adquirir msg
recibir_parametro yo
fijar msg =* Hola desde Base:metodoA, habla la instancia:
escribir msg
escribir_esp
escribir yo
nl
liberar yo
liberar msg
finfun

funcion Base#metodoB
adquirir yo
adquirir msg
recibir_parametro yo
fijar msg =* Hola desde Base:metodoB, habla la instancia:
escribir msg
escribir_esp
escribir yo
nl
liberar myInt
[ Cualquier aparicion de myInt es de la global ]
escribir myInt#valor
liberar yo
liberar msg
finfun

clase Hija
:metodoB
#(Final).
heredar Base Hija

funcion Hija#metodoB
adquirir yo
adquirir msg
recibir_parametro yo
fijar msg =* Hola desde Hija:metodoB, habla la instancia:
escribir msg
escribir_esp
escribir yo
nl
fijar myInt#valor =* 2
liberar yo
liberar msg
finfun

escribir myInt#valor [ global ]
nl
llamar ModDemo #(Final). [ local/global ]
escribir myInt#valor [ global ]
nl
instancia Base base
instancia Hija hija

llamar base#metodoA #(Final).
llamar base#metodoB #(Final).
llamar hija#metodoA #(Final).
llamar hija#metodoB #(Final).

2 changes: 1 addition & 1 deletion instalar.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ if [ "$opt" = "s" ]
rm ./PseudoD
rm ./libpseudod.so
rm ./libpseudodsrc.a
rm ./Dato.o
rm ./Data.o
rm ./pdbase.o
echo "Eliminados..."
fi
Expand Down
4 changes: 4 additions & 0 deletions ipdc
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ if [ "$param1" = "-f" ]
PseudoD "$param2" "$RUTA_PSEUDOD" "$RUTA_LIB";
fi
if [ "$param1" = "-i" ]
then
PseudoD -i "$RUTA_PSEUDOD" "$RUTA_LIB";
fi
if [ "$param1" = "-io" ]
then
ipd nulo "$RUTA_PSEUDOD" "$RUTA_LIB";
fi
Expand Down
55 changes: 55 additions & 0 deletions tests/LEEME.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
ESTE ARCHIVO CONTIENE TEXTO UNICODE

Bienvenido al sistema de pruebas de PseudoD, donde estan las pruebas de cada
caracteristica del lenguaje, a continuación podras ver como crear, editar
y ejecutar las pruebas.

ESTRUCTURA DE UNA PRUEBA
Donde "./" es el directorio de la prueba:
salida.txt Salida de la prueba.
test.pd Prueba en PseudoD.
entrada.txt Entrada de la prueba.
fmt.txt Formato de los archivos de entrada/salida.
espr.txt Salida esperada de la prueba.
diff.txt Salida 'diff' entre 'espr.txt' y
'salida.txt'.

CREANDO UNA PRUEBA
1. Como primer paso, se debe crear una carpeta en el directorio actual que
posea de nombre, el nombre de la prueba.
2. Se deben crear los archivos especificados dentro del directorio.
3. Se debe llenar esos archivos con los formatos especificados.
4. Ejecutar la prueba como es dicho más abajo.

FORMATO DE LOS ARCHIVOS
'salida.txt'
Debe contener la salida sin modificar de la prueba, debe seguir el
formato de 'fmt.txt'.
'test.pd'
Debe contener el código fuente de la prueba, comentado y debe cumplir
los requisitos basicos de código fuente(ver más abajo).
'entrada.txt'
Entrada de la prueba, debe seguir el formato de 'fmt.txt'.
'fmt.txt'
Especificación del formato de las pruebas, en dos secciones:
'---GENERAL---'
Especificación en formato general de las pruebas, conteniendo
variables y la descripción de ellas, por ejemplo:
---GENERAL---
La entrada se compone de 'N' lineas con el siguiente formato:
a b c d
Donde 'N' es especificado en la primera linea como:
N w f
'---EXPR---'
Especificación en formato de expresión regular(regexpr), por ejemplo:
---EXPR---
(<N>[0-9]+) (<w>[a-z]*) (<f>[0-9]{2})
(<a><b><c><d>){{{N}}}
Recordar que {a,b} es que la expresion se repita entre a y b veces
mientras que {{a}} es el valor de la variable a.
'espr.txt'
Salida esperada de la prueba, siguiendo el formato de 'fmt.txt'.
'diff.txt'
Salida de ejecutar 'diff' entre 'salida.txt' y 'espr.txt'.


Empty file added tests/nucleo/diff.txt
Empty file.
11 changes: 11 additions & 0 deletions tests/nucleo/entrada.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
5
2
1 1
2
3 1
5
2 6 3 6 3
7
17 18 17 16 18 19 17
9
20 23 21 25 27 15 17 20 19
5 changes: 5 additions & 0 deletions tests/nucleo/espr.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
1.000000
2.000000
4.000000
17.428571
20.777778
19 changes: 19 additions & 0 deletions tests/nucleo/fmt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---ENTRADA---
---GENERAL---
La primera linea posee el formato:
N
Donde 'N' es el numero de listas a procesar, el resto d la entrada se
compone de 'N' listas con el formato:
Ni
Li...
Donde 'Ni' es el tamaño de la lista actual y 'Li...' son todos los
elementos de la lista actual separados por espacios.
---EXPR---
(<N>[0-9]+)\n(((<Ni>[0-9]+)\n((<Li>[0-9]+){{{Ni}}})){{{N}}})
---SALIDA---
---GENERAL---
La salida se compone de 'N' lineas que contienen un decimal que es el
promedio de la lista 'Ni'.
---EXPR---
((<Pi>[0-9]+(\.[0-9]+)?){{{N}}})

5 changes: 5 additions & 0 deletions tests/nucleo/salida.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
1.000000
2.000000
4.000000
17.428571
20.777778

0 comments on commit 4b9a9ce

Please sign in to comment.