Descargar

1. Léxico

Cómo se escriben las piezas más pequeñas de un programa.

Archivos

Los programas son archivos de texto UTF-8 con extensión .hez (o .hz). Las sentencias terminan con el salto de línea; para poner varias en una línea se separan con ;.

var a = 1; var b = 2
print(a + b)
▶ Probar en el editor

Una expresión puede continuar en la línea siguiente si la línea queda "abierta": un paréntesis, corchete o llave sin cerrar, o un operador al final.

var total = 1 +
    2 +
    3
var lista = [
    "uno",
    "dos",
]
print(total, lista)
▶ Probar en el editor

Comentarios

// comentario hasta el final de la línea
/* comentario
   de varias líneas */
/// Comentario de documentación: VS Code lo muestra al pasar el ratón sobre lo que va debajo.
function saludo(): text { return "hola" }
print(saludo())
▶ Probar en el editor

La línea #!

En Linux y macOS, si la primera línea empieza por #!, se ignora. Así un programa puede ejecutarse directamente (chmod +x programa.hz y ./programa.hz):

#!/usr/bin/env hyper
print("Soy un script ejecutable")

Nombres

Los nombres de variables, funciones y clases empiezan por una letra o _ y siguen con letras, dígitos o _. Se pueden usar letras con acento y la ñ. Se distingue entre mayúsculas y minúsculas.

var añoActual = 2026
var _interno = true
var Nivel2 = "jefe"
print(añoActual, _interno, Nivel2)
▶ Probar en el editor

Convenciones: camelCase para variables y funciones, PascalCase para clases y enums, MAYÚSCULAS para constantes.

Palabras clave

Estas palabras están reservadas y no se pueden usar como nombres:

and       as*       async     await     break     catch     class     const
constructor         continue  do*       else      emit*     enum      event*    extends
false     finally   for       foreach   from*     function  get*      if
implements          import    in        interface is        let       match
new       not       null      on*       once*     or        priority* private
protected public    repeat    return    set*      static    step*     struct
super     this      throw     true      try       var       while

Las marcadas con * solo son especiales en su contexto (por ejemplo get delante de un método): en el resto se pueden usar como nombres.

Números

Todos los números son de 64 bits con decimales (como double); los enteros son exactos hasta 2⁵³.

print(42, -7, 3.14, 1e6, 2.5e-3)   // decimales y notación científica
print(0xFF, 0b1010, 0o17)          // hexadecimal, binario y octal
print(1_000_000)                   // guiones bajos para leer mejor
▶ Probar en el editor

Textos

Los textos van entre comillas dobles o simples. Dentro, ${expresión} inserta el valor de cualquier expresión.

var nombre = "Ana"
print("Hola, ${nombre}. Dentro de un año tendrás ${30 + 1} años.")
print('Comillas simples: "dobles" dentro sin escapar')
▶ Probar en el editor

Dar formato dentro de ${...}

Detrás de la expresión, después de :, puede ir un formato (el mismo que el de Python): decimales, ancho, alineación, separador de miles, porcentaje...

var precio = 1234.5
print("Total: ${precio:.2f} €")          // Total: 1234.50 €
print("Con miles: ${precio:,.2f}")       // Con miles: 1,234.50
print("[${"Ana":<8}] [${"Ana":>8}] [${"Ana":^9}]")
print("${0.256:.1%} · ${255:x} · ${5:08b} · ${7:03}")   // 25.6% · ff · 00000101 · 007
foreach fila in [["Espada", 120], ["Poción", 15.5]] {
    print("${fila[0]:<10}${fila[1]:>8.2f}")              // una tabla alineada
}
▶ Probar en el editor
FormatoQué haceEjemplo
.2fnúmero con 2 decimales${3.14159:.2f} → 3.14
10 · >10 · <10 · ^10ancho 10 (los números a la derecha, los textos a la izquierda) · a la derecha · a la izquierda · centrado${"Ana":^7} → Ana
*^10rellena con otro carácter${"Ana":*^7} → **Ana**
05rellena con ceros${42:05} → 00042
, · _separa los miles${1234567:,} → 1,234,567
+pone el signo también a los positivos${42:+} → +42
% · .1%porcentaje${0.256:.1%} → 25.6%
dentero (redondea)${3.7:d} → 4
x X b ohexadecimal, binario y octal${255:x} → ff
enotación científica${12345.6:.2e} → 1.23e+04
.3 en un textocomo mucho 3 caracteres${"HyperEZ":.5} → Hyper

Si la expresión lleva una condición a ? b : c, ponla entre paréntesis para darle formato: ${(ok ? 1 : 0):>3}. La función format(valor, "formato") hace lo mismo fuera de un texto, y numero.format(2) escribe los números al estilo español (1.234,50).

EscapeSignificado
\nsalto de línea
\ttabulador
\rretorno de carro
\0carácter nulo
\\barra invertida
\" \'comillas
\$un $ literal (para escribir ${ sin interpolar)
\u{1F600}carácter Unicode por su código
print("Línea 1\nLínea 2\tcon tabulador \u{2764} y un \$ suelto")
▶ Probar en el editor

Textos de varias líneas

Entre tres comillas, el texto puede ocupar varias líneas (también admite ${...}):

var poema = """
En un lugar
de la Mancha
"""
print(poema.trim().lines().length)
▶ Probar en el editor

Textos sin escapes: r"..."

Con una r delante, las barras invertidas se quedan tal cual y no hay interpolación. Es lo cómodo para expresiones regulares y rutas de Windows:

print(r"C:\Users\ana\juego.hz")
print(Regex(r"\d+").findAll("1 22 333").length)
▶ Probar en el editor