TPL 2: Mejoras y screenshot

A

Una screenshot de cómo está avanzando mi lenguaje de programación:
http://img453.imageshack.us/img453/8707/tplscreenot3.jpg

Cosas nuevas:

  • Funciones que permiten expresiones enteras como parámetros.
  • Lista de variables al terminar ejecución.
  • Punteros y acceso a propiedades de objetos.
  • Autogeneración de constantes conocidas.
  • Sintaxis más permisiva.
  • Operadores lógicos.
  • Optimiza y muestra estadísticas de código.
  • Encapsulador. (generación de ejecutables embebiendo el intérprete y el código)

Un ejemplo curioso de la flexibilidad que permite poder pasar expresiones complejas como parámetros:

imprimir $izda[$ent(1?9)]("Hola mundo");

Imprimiría un nº aleatorio (pero entero) de letras entre 1 y 9 de la cadena "Hola mundo" empezando por la izquierda.

El código del algoritmo de fibonacci que sale
en la screenshot es:

// Programa que calcula N números de Fibonacci
definir a=1; b=1; n=1;

mientras n <> 20 hacer
imprimir a & " "
a=a+b; b=a-b; n=$inc(n);
fin

friskies

que hace ese programa?

smintcs

no es un programa, es un lenguaje de programacion que esta creando él, es Toy Programing Lenguaje o algo asi, esta muy currao

scumah

muy currao es poco xD

sigue así crack

erdanblo

Nunca mejor dicho: tus trabajos no tienen palabras para definirlo xD.

A

Buenas.

En primer lugar, gracias por los comentarios.

En segundo lugar... una cosa nueva.
Usando C uno se da cuenta de que uno de los elementos que mayor potencia le dan son los punteros. La cara mala de ellos es que son peligrosos y es dificil gestionarlos.

He decidido crear un concepto "nuevo" para TPL. Los índices. Cuando uno crea una variable, ésta tiene la siguiente estructura: indice | nombre | valor

Pongamos un ejemplo:
definir x = 1, y = "hola"

Y el resultado en la máquina virtual de TPL.
00 : x : 1
01 : y : "hola"

00 y 01 serían los índices. Tomando estos índices
como referencia se pueden crear dos funciones,
como las siguientes:

$indice(expresion)

  • Si recibe un número devuelve el nombre de la variable asociada a ese indice.
  • Si recibe una cadena, su valor.

$valor(expresion)

  • Si recibe una cadena devuelve el índice de la variable asociada a dicha cadena.
  • Si recibe un número, su valor.

Ventajas con respecto a los punteros:

  • Nunca apuntan a NULL.
  • La máquina virtual los gestiona internamente.
  • Las "direcciones de memoria" (los índices) son legibles.
  • Podrían cambiarse todas las variables del programa
    con solo un bucle.

Un ejemplo de código:

Este programa imprime sus propias variables

a través de los índices. Va buscando en bucle

hasta que el nombre coincida con "x" la última

en declararse y por tanto el último índice.

definir a="ABC"; b="123"; c="QWERTY"; x = 0;

imprimir "Las variables que hay son: "

mientras $indice(x) <> "x" hacer
imprimir $indice(x) & "=" & $valor(x) & " "
x = x + 1
fin

imprimir "\nEn total hay: " & x & " variables."

Una screenshot del resultado de ese código:
http://img155.imageshack.us/img155/8485/cvarsta7.jpg

A

Una cosa más... si alguna vez habeis pensado: "Al lenguaje que uso le falta ésto" o se os ha ocurrido alguna cosa útil que os gustaría tener, no dudeis en decirlo. Cualquier sugerencia ayuda a que el resultado sea mejor. :-)

A ver si limpio un poco ésto y pongo binarios y código fuente.

9 días después
A

Una foto de cómo está quedando el IDE:
http://img62.imageshack.us/img62/7208/dibujove3.jpg

Usuarios habituales

  • Archville
  • erdanblo
  • scumah
  • smintcs
  • friskies