Catálogo de Sintaxis — Referencia de Clean Language
Guía de Referencia

Catálogo de Sintaxis — Referencia de Clean Language

Referencia completa de sintaxis para Clean Language. Explora variables, funciones, clases, control de flujo, operaciones asíncronas y patrones de framework con ejemplos de código.

Variables

integer x = 42
number pi = 3.14
string name = "Clean"
boolean active = true

Declara variables con tipo y valores iniciales.

Imprimir

print "Hola, Mundo!"
print("Con paréntesis")

Muestra texto en la consola. Los paréntesis son opcionales.

Comentarios

// Este es un comentario

Los comentarios de una línea comienzan con //.

Entrada

string nombre = input("Ingresa tu nombre: ")
integer edad = input.integer()
boolean confirmar = input.yesNo("¿Continuar?")

Lee entrada del usuario con métodos type-safe.

Declaración de Función

functions:
	integer add(integer a, integer b)
		return a + b

Declara funciones en un bloque functions: con el tipo de retorno primero.

Llamadas a Funciones

integer result = add(3, 4)
print result.toString()

Llama funciones por nombre con argumentos.

If/Else

if x > 0
	print "positivo"
else
	print "no positivo"

Ramificación condicional sin paréntesis.

Bucle While

while i < 10
	print i.toString()
	i = i + 1

Repite mientras la condición sea verdadera, sin paréntesis.

Iterar Rango

iterate i in 0 to 10
	print i.toString()

Itera sobre un rango numérico usando la palabra clave 'in'.

Iterar Array

iterate item in myArray
	print item.toString()

Itera sobre elementos de un array usando la palabra clave 'in'.

Clase

class Person
	string name
	integer age
	constructor(string n, integer a)
		name = n
		age = a

Define clases con campos directamente bajo la declaración de clase. Sin palabra clave 'this' - usa nombres de parámetros diferentes.

Herencia

class Dog is Animal
	string breed
	constructor(string n, string b)
		base(n)
		breed = b

Extiende clases con palabra clave 'is' y llamadas al constructor base().

Arrays

array<integer> nums = [1, 2, 3, 4, 5]
nums.push(6)
integer len = nums.length()

Arrays tipados con push, length e indexación. Usa array<T> en minúsculas.

Aritméticos

integer suma = a + b
integer dif = a - b
integer prod = a * b
integer coc = a / b
integer resto = a % b
number potencia = x ^ y

Operadores aritméticos básicos: +, -, *, /, %, ^

Comparación

boolean eq = a == b
boolean neq = a != b
boolean lt = a < b
boolean gt = a > b
boolean lte = a <= b
boolean gte = a >= b

Operadores de comparación: ==, !=, <, >, <=, >=

Lógicos

boolean ambos = a and b
boolean cualquiera = a or b
boolean opuesto = not a
boolean verificar = x is SomeType

Operadores lógicos: and, or, not, is

Interpolación de Strings

string saludo = "Hola, {nombre}!"
string resultado = "Suma: {a + b}"

Inserta expresiones en strings usando llaves.

Métodos

string s = "hola mundo"
s.length()
s.toUpperCase()
s.substring(0, 5)
s.contains("mundo")
s.replace("mundo", "Clean")
s.split(" ")
s.trim()

Métodos integrados de manipulación de strings.

Require

functions:
	integer divide(integer a, integer b)
		require b != 0
		return a / b

Validación de precondiciones con require.

Rules

functions:
	integer clamp(integer val, integer min, integer max)
		rules
			val >= min
			val <= max
		return val

Múltiples reglas de validación.

Later (Await)

later data = start fetchData()
print data

Espera el resultado de función asíncrona con 'later' y 'start'.

Background (Sin espera)

background logAction()
function syncCache() background

Ejecuta funciones asíncronas sin esperar los resultados.

Bloque Import

import:
	math
	utils/strings

Importa módulos al inicio de un archivo.

Funciones Privadas

private:
	void helperFunction()
		// solo interno

Marca funciones como solo internas con bloque private:.

Bloque Tests

tests:
	"add devuelve suma": add(2, 3) = 5
	"dividir por cero falla": divide(10, 0) = error

Define pruebas en línea con valores esperados.

Operaciones en Lote

integer:
	x = 10
	y = 20

print:
	"Hola"
	"Mundo"

constant:
	PI = 3.14159
	MAX_SIZE = 100

Aplica tipo o función a múltiples declaraciones en un bloque.

Intent

functions:
	void processPayment(number amount, string method)
		intent "Procesar una transacción de pago"
		// cuerpo de la función

Describe el propósito de la función en lenguaje natural para herramientas de IA.

Spec

functions:
	number calculateDiscount(number price, number pct)
		spec "specs/pricing/discount.spec.cln"
		return price * (pct / 100)

Vincula funciones a documentos de especificación para trazabilidad.

Bloque Source

source:
	spec: "specs/payment.spec.cln"
	version: "a3f2c1d"

Marca archivos como generados desde especificaciones con seguimiento de versión.

Copied!