Analizador léxico

5 días atrás

¡Feliz año!

El analizador léxico (lexer) para tuu está listo, reconoce casi todos los símbolos que el lenguaje soportará y es razonablemente fácil de extender.

Tuve que escribir el lexer completamente a mano, aún cuando ya lo había hecho en la herramienta “flex.” Hacer un analizador lexico en “lex” es bastante fácil en realidad mientras que hacerlo a mano resultó bastante complejo ¿Porque reinventar la rueda?

Quiero que tuu sea capaz de soportar unicode nativamente y que sea seguro para hilos, lo cual probablemente sea posible en lex, pero es mejor hacer bien esta parte tan crítica desde el comienzo.

El código está en ShareSource, aunque no hay mucho que mostrar ahora. Lo que sigue es crear el analizador sintáctico (parser) y creoq ue lo haré también a mano.

Elio Cuevas Gómez

,

Comentarios

---

Infraestructura para compiladores

53 días atrás

Leyendo Ars me enteré del proyecto LLVM que liberó una nueva versión recientemente. Aún no he avanzado mucho con mi compilador, pero ya se lo difícil que es así que aprender sobre este proyecto me ayudaría a crear tuu de manera más rápida.

Niños leer noticias a veces es bueno.

Elio Cuevas Gómez

,

Comentarios

---

El lenguaje para dominarlos a todos

153 días atrás

Durante mucho tiempo he querido crear un lenguaje de programación propio, y ahora que tengo más claro lo que me gustaría que este lenguaje tuviera, he decidido empezar.

tuu es un lenguaje de programación de alto nivel y de propósito general para la creación de aplicaciones gráficas y multimedia portátiles y de alto rendimiento.

“tuu” es una palabra en mixteco que significa “pluma”. Los objetivos de diseño de este lenguaje serán:

  1. Rápido
  2. Fácil de usar
  3. Sintaxis sencilla y elegante
  4. Independiente del dispositivo: para que funcione igual en una PC y en un celular
  5. Desplegable, quitarle la carga del despliegue al desarrollador, tanto como sea posible
  6. Seguro para hilos (thread safe)
  7. Internacionalizable (i18n): Soporte nativo para unicode
  8. Localizable (l10n)

Posible ejemplo:

#Hola mundo
forms.Label("¡Hola mundo!").show

Mostrará una ventana con el texto “¡Hola mundo!”. Trataré de copiar algunas de las mejores características de Python, Ruby y Java.

Elio Cuevas Gómez

,

Comentarios [2]

---