Operador
Introducción
El lenguaje Wave ofrece una variedad de operadores que permiten realizar cálculos entre variables, evaluaciones lógicas, comparaciones, y operaciones de bits.
Este documento explica los principales operadores disponibles en Wave, organizados por categoría, y proporciona el funcionamiento de cada uno junto con ejemplos.
Los operadores se clasifican en las siguientes categorías:
- Operadores aritméticos
 - Operadores de comparación
 - Operadores lógicos
 - Operadores de bits
 - Operadores de asignación
 - Otros operadores especiales
 
Operadores aritméticos
Los operadores aritméticos realizan operaciones matemáticas básicas sobre datos numéricos.
| Operador | Descripción | Ejemplo (a = 10, b = 3) | 
|---|---|---|
+ | Adición | a + b → 13 | 
- | Sustracción | a - b → 7 | 
* | Multiplicación | a * b → 30 | 
/ | División | a / b → 3 (división entera) | 
% | Operación de módulo | a % b → 1 | 
Operadores de comparación
Los operadores de comparación devuelven un valor bool como resultado de comparar dos valores.
| Operador | Descripción | Ejemplo (a = 10, b = 3) | 
|---|---|---|
== | Igual | a == b → falso | 
!= | Distinto | a != b → verdadero | 
< | Menor | a < b → falso | 
> | Mayor | a > b → verdadero | 
<= | Menor o igual | a <= 10 → verdadero | 
>= | Mayor o igual | a >= b → verdadero | 
Operadores lógicos
Los operadores lógicos procesan combinaciones de verdadero/falso para valores bool.
| Operador | Nombre | Descripción | Ejemplo | 
|---|---|---|---|
&& | Lógico AND | Solo true cuando ambos valores son true | true && false → falso | 
| \`\ | Lógico OR | Si uno de los dos es true, entonces es true | \`true \ | 
! | Lógico NOT | Invierte true a falso y falso a true | !true → falso | 
Operadores de bits
Los operadores de bits manipulan datos enteros a nivel de bits.
| Operador | Nombre | Descripción | Ejemplo | 
|---|---|---|---|
& | Bit AND | Solo 1 cuando ambos bits son 1 | a & b → 2 | 
| \`\ | Bit OR | 1 si uno de los bits es 1 | b→7\` | 
^ | Bit XOR | 1 cuando los bits son diferentes | a ^ b → 5 | 
~ | NOT de bit | Invertir bits | ~a → -7 | 
<< | Shift a la izquierda | Mover bits a la izquierda | a << 1 → 12 | 
>> | Shift a la derecha | Mover bits a la derecha | a >> 1 → 3 | 
Operadores de asignación
Se utiliza para almacenar un valor en una variable. En la mayoría de los casos, se puede combinar con operadores aritméticos para abreviar.
| Operador | Descripción | Ejemplo (a = 5) | 
|---|---|---|
= | Asignación básica | a = 10 | 
+= | Asignación después de la suma | a += 2 → 7 | 
-= | Asignación después de la resta | a -= 1 → 4 | 
*= | Asignación después de la multiplicación | a *= 3 → 15 | 
/= | Asignación después de la división | a /= 5 → 1 | 
%= | Asignación después del módulo | a %= 4 → 1 | 
Otros operadores especiales
Wave también ofrece operadores con significados únicos o especiales como los siguientes.
| Operador | Nombre | Descripción | Ejemplo | 
|---|---|---|---|
?? | Operador de fusión nula | Usa el valor de la derecha si el de la izquierda es nulo | a ?? b → si a es nulo, entonces b | 
?: | Operador condicional (operador ternario) | Selecciona un valor basado en una condición | condición ? valor si verdadero : valor si falso | 
in | Verifica la inclusión | Verifica si un valor está incluido en una colección | "a" en lista | 
is | Operador de comparación de tipos | Verifica el tipo de un valor | x es i32 | 
!& | NAND | Operación lógica NAND | Operación lógica avanzada | 
| \`!\ | NOR | Operación lógica NOR | Operación lógica avanzada | 
~^ | XNOR | Operación lógica XNOR | Operación lógica avanzada | 
Resumen
Wave ofrece una variedad de operadores desde operaciones matemáticas hasta evaluación lógica, manipulación de bits y división de condiciones. Estos operadores interactúan con variables o forman condiciones y son herramientas indispensables para cálculos complejos o control de flujo.
La prioridad y la dirección de combinación de cada operador se podrán tratar en la sección "Prioridad y orden de evaluación" posteriormente.