hecho en Chile · open source

Un lenguaje de juguete que habla como tú. Aprende cómo funcionan los lenguajes por dentro lexerparserASTbytecodeVM sin dejar de webear.

dinámico · tipado débilarchivos .clopen source
wena.cl.cl
// wena, mundo
pega saludar(nombre) {
  "wena, " + nombre + ", wn!"
}

wea quien = pregunta("¿Como te llamai? ")
lorea(saludar(quien))
salida
¿Como te llamai? Ángel
wena, Ángel, wn!
manifiesto

¿Qué es esta wea?

¿Qué es?

Un lenguaje dinámico y de tipado débil, escrito en Rust. Por dentro ya recorre lexer, parser, AST, bytecode y una VM de pila funcionando de verdad.

¿Pa' quién?

Pa' estudiantes y curiosos que quieren cachar cómo se construye un lenguaje, y pa' cualquiera que quiera codear en su propia jerga.

¿Por qué existe?

Porque aprender lenguajes se hace mejor cuando la sintaxis te habla en chileno, y porque un error también puede tener personalidad.

diccionario

Tu jerga, tus keywords

Las palabras clave son chilenas. Esto es todo lo que necesitai pa' empezar.

weavariable mutable
duroconstante
pegafunción
cachaiif
si noelse
mientraswhile
para … enfor-each
ojo / cagotry / catch
devolverreturn
cortalabreak
siguecontinue
y · o · noand · or · not
en acción

Código que corre de verdad

wena.cl.cl
pega saludar(nombre) {
  cachai (largo(nombre) == 0) {
    devolver "wena, anónimo, wn!"
  }
  "wena, " + nombre + ", wn!"
}

lorea(saludar("Wn++"))
lorea(saludar(""))
salida
wena, Wn++, wn!
wena, anónimo, wn!
personalidad

Cuando la cagai, te funa

Los mensajes de error tienen humor local. Con cariño, eso sí po.

E_SACO

Cuando sumaste un número con un texto

wn++ ✗No podi sumar un 'numero' con un 'texto', pedazo de saco wea.
E_NOEXISTE

Cuando usaste una variable que no declaraste

wn++ ✗La wea 'x' no existe papito.
E_DIV0

Cuando dividiste por cero

wn++ ✗SUSPENSIÓN PERMANENTE: división por cero.