Skip to content

dabl03/GolfScript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GolfScript

logo de licencia MIT

“GolfScript es un lenguaje de programación esotérico orientado a la pila destinado a resolver problemas (agujeros) con la menor cantidad de pulsaciones de teclas posible. También pretende ser simple y fácil de escribir” – Página oficial de [Pagina original](http://www.golfscript.com/golfscript/).

El código corto se logra mediante el uso de símbolos únicos para representar operaciones de alto nivel (como mapa, unión, tamaño de matriz, etc.). Estar basado en pilas permite que las funciones y otras manipulaciones funcionen sin necesidad de variables explícitas; sin embargo, las variables siguen existiendo y son útiles para manipulaciones de pilas más complicadas.

Para aprender GolfScript, comience con el tutorial y descargue la implementación. Una vez que se sienta cómodo con él, es posible que desee verificar exactamente cómo se analiza el código y ver todas las funciones integradas.

Para mas información y tutoriales sobre GolfScript

Sintaxis:

GolfScript se basa en el manejo de pila(Esto hay que saberlo si o si), por lo que todas las operaciones se basan en sacar y meter algo dentro de la pila.

Meter algo en la pila:

> 1
[ 1 ]
> "hola"
[ 1 "hola" ]

Eliminar algo de la pila:

> 1 2 3 4 5 #Primero introducimos algo para después sacarlo.
[ 1 2 3 4 5 ]
> ;
[ 1 2 3 4 ]
> ;;
[ 1 2 ]
> ;;;
[ ]
Error se intenta sacar mas elemento del que hay en la pila.

Operaciones aritméticas simples:

> 2 2 3 4 4 6 4 3 #Ingresamos los números que vamos a calcular.
[ 2 2 3 4 4 6 4 3 ]
> 1 +
[ 2 2 3 4 4 6 4 4 ]
> +
[ 2 2 3 4 4 6 8 ]
> 2 - -
[ 2 2 3 4 4 0 ]
> *
[ 2 2 3 4 0 ]
> 1 + /
[ 2 2 3 4 ]

Creando variables:

> 1:var_1
[ 1 ]
> 1:var_2;# Notar que pusimos “;” para que el valor de la variable se elimine de la pila.
[ 1 ]
> var_1# Pasamos var_1 a la pila
[ 1 1 ]
> { + "Feliz dia" puts }:+;# Redefino el operador suma.
[ 1 1 ]
> +
"Feliz día"
[ 2 ]
> { "Hola " }: ;# Redefino el espacio(' ')
[ 2 ]
>     ;
[ 2 "hola " "hola " "hola " "hola " ]

Creando funciones:

> { 1 + 4 2 3 - -}:function;# Creamos una función.
[ { 1 + 4 2 3 - -} ]
> { 1 2 4 4 6 7 }:llenar_pila;
[ { 1 + 4 2 3 - -} ]
> llenar_pila# Llamamos a nuestra función.
[ { 1 + 4 2 3 - -} 1 2 4 4 6 7 ]
> function
[ { 1 + 4 2 3 - -} 1 2 4 4 6 8 3 ]

Dependencias:

  • GMP: Biblioteca para hacer operaciones con números realmente largos.
  • GCC: Para compilarlo.
  • make: Para automatizar el compilado.

Como compilarlo

Con solo ejecutar el archivo makefile compilarás toda la app:

make

Y para debuggear solo debes pasar DEBUG=1, aconsejo limpiar los compilados si ya lo has compilado:

make clean
make DEBUG=1

Pero si deseas hacerlo tu mismo, debes hacer:

gcc -Wall ./src/main.c {Pon aquí todos los archivos ./src/operators/*.c} {Pon aquí todos los archivos ./src/*.c} -o ./gsp -lgmp

Y para debugear aconsejo pasar al gcc el parámetro -D DEBUG, y compilar con el archivo ./test/memory.c. Esto trae como agregado que puedes saber si hay fuga de memoria al final de main.

¿Como compilar los test?

Si quieres testear los códigos fuente por separado solo debes pasar -E TEST=1 al makefile para hacer el test.

make TEST=1

Esto generará los test para cada archivo por separado, y binarios independientes de la APP principal.

Nota: Si deseas colaborar, no guardes un archivo importante en el directorio raiz con un nombre que contenga *_test y _test.exe o ./test/*_test y ./test/*_test.exe. Esto porque serán eliminados al llamar make clean, se colocó porque la salida de los testeos siguen ese patrón.

Créditos:

  • Interprete basado en interprete GolfScript de: Darren Smith.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published