Proyecto PeA: Programación en castellano

Hoy, nuevamente, después de mucho tiempo he retomado mi proyecto PeA, que básicamente se trata de un lenguaje multi propósito para el web en castellano. Este lenguaje al igual que PHP o cualquier otro puede escribirse directamente en las paginas HTML y el servidor al recibir una petición PeA interpreta el código y devuelve los resultados.

He jugado con ello un poco esta tarde y he logrado volver a compilar la ultima versión en mi MacBook, en realidad el proyecto estuvo desarrollado en Windows, utilizando Visual Studio 6 pero luego se hicieron pequeños ajustes para que se pueda compilar en Linux y con la ayuda de un archivo “make” todo es de otro color. Al estar basando en FreeBSD, el sistema operativo de Mac es basicamente un Unix, así que no hubo mayores problemas con la compilación.

Pues bien, ya está compilado y funcional nuevamente. En los próximos días abriré la página oficial del proyecto www.proyectopea.com y se podrá desde ahí descargar el código completo. A ver si hay alguien que pueda aportar.

Como mencioné antes, este lenguaje se programa es castellano, por ejemplo en lugar de escribir function se escribirá funcion, una clase se llamará clase en lugar de class y muchas más cosas que ya vendrán sobre la marcha. También puedo agregar es que es mucho más rápido que PHP y maneja mejor la memoria y los recursos del sistema y está escrito completamente en C.

C string inverter

Some friend of mine just asked me to write him a simple string inverter in C, meaning a little program which reads a string and outputs the same string in inverted order. For example:

Input: Hello, we are done!
Output: !enod era ew ,olleH

I honestly don’t know the use of it, but any way here is it. (Not tested, but it should work fine)

Read more to see the code or download it zipped.

I just wrote a quick & dirty PHP version as well. Download.

However, the PHP version could be simplified a lot (one line of code):

<?php
    echo strrev("Hello, we are done!");
?>

Here’s the C code:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

struct list
 {
	char item;
	struct list *link;
 };

typedef struct list x;
	x *stack, *temp = NULL;

/* Pushes characters to the stack */
push(char data)
 {
	stack = (x *)malloc(sizeof(x));
	stack->item = data;
	stack->link = temp;
	temp = stack;
 }

/* Pops characters from the stack */
pop()
 {
	x *t;
	while(temp != NULL)
	 {
		printf("%c", temp->item);
		t = temp;
		temp = temp->link;
		free(t);
	 }
	printf(" ");
	temp = NULL;
 }

main()
 {
	int i;
	char string[30];
	clrscr();
	printf("\n Your text: ");
	gets(string);
	i = 0;
	printf("\n Inverted: ");
	while(string[i] != '\0')
	 {
		(isspace(string[i]) != 0) ? pop() : push(string[i]);
		i++;
	 }
	pop();
 }