Numlex Documentación
Referencia de sintaxis

Operadores y lógica

Precedencia completa, aritmética, comparaciones, lógica booleana (reglas reales de cortocircuito) y reglas bit a bit exactas.

Toda expresión en Numlex se evalúa con una única gramática estricta de operadores: una sola escalera de precedencia para aritmética y lógica, valores booleanos reales (sin conversión a 1/0) y reglas exactas aparte para el trabajo bit a bit.

Esta página es la referencia completa de operadores: precedencia desde if/then/else hasta los operadores de sufijo, el significado de cada operador, exactamente dónde hay cortocircuito (&& con el lado izquierdo falso, y en ningún otro sitio) y la tabla de precedencia para enteros exactos, con desplazamientos comprobados y comportamiento de desbordamiento.

Precedencia

De menor a mayor:

if … then … else …     (right-associative)
or  /  ||
and /  &&
not /  !
==  !=
<  <=  >  >=
+  −                   (left)
*  ×  /  ÷             (left; `of` after a percent or multiplier is this level)
^                      (power, right)
unary + / −
primary                (literals, parentheses, calls, % and x postfixes)

Operadores

OperadorSignificadoNotas
+ −suma / restaen un contexto aditivo, un porcentaje «puro» a la derecha es una parte del lado izquierdo acumulado: 100 + 10% = 110
* × / ÷multiplicación / división200 × 10% = 20, 200 / 10% = 2000
^potencianunca XOR (XOR es la palabra xor para enteros)
% (sufijo)p% = p/100«porcentaje» semántico en contexto aditivo
x (sufijo)1.5x = multiplicador 1.5solo se reconoce si no hay una variable x activa
of (infijo, nivel *)15% of 490 = 73.5el lado izquierdo debe ser un porcentaje o un multiplicador (1.5x): 1.5x of 20 = 30, cadenas 10% of 20% of 50 = 1; 3 of 4 es un error. En las líneas de porcentaje, la base de N% of E es el resto de la línea: 15% of 490 + 5 = 74.25
< <= > >=comparacionesnuméricas; el resultado es booleano
== !=igualdad / desigualdadresultado booleano
and &&conjunción&& cortocircuita solo con el lado izquierdo falso: false && (1/0 > 0) = false; true && … y la palabra and siempre evalúan el operando derecho
or ||disyunciónno cortocircuita: se evalúan ambos operandos — false or (1/0 > 0) y false || (1/0 > 0) son errores de división por cero
not !negaciónprefijo
if a then b else ccondicionalprecedencia más baja; las ramas son expresiones completas; else es obligatorio

Más sobre las formas de porcentaje y multiplicador en Porcentajes.

Los booleanos son un tipo real

true y false nunca se convierten a 1/0. Mezclar un booleano y un número en un mismo operador es un error.

Glifos frente a palabras

  • Los glifos & y | son siempre bit a bit: con operandos booleanos son un error (false | (1/0 > 0) → «Invalid expression»).
  • Solo las palabras and/or son contextuales: dos enteros las vuelven bit a bit, dos booleanos las vuelven lógicas.

Enteros exactos y operadores bit a bit

El modo de enteros exactos se activa con:

  • Fuerte: literales 0x… / 0b… / 0o…, las llamadas int( bin( oct( hex(, las frases … as|in <base> / … to base N, los glifos bit a bit & | << >> y la palabra xor. Los glifos solo cuentan cuando la línea tiene contenido matemático: fish & chips sigue siendo prosa.
  • Débil: la palabra and/or cuando ambos lados son enteros.

Precedencia para enteros, de menor a mayor:

if/then/else  →  ||  →  &&  →  | / or  →  xor  →  & / and
→  comparisons == != < <= > >=  →  shifts << >>  →  + -  →  * / %  →  ^
→  unary  →  primaries
OperadorSignificadoNotas
&AND bit a bit
|OR bit a bitel glifo es siempre bit a bit: los operandos booleanos son un error (false | (1/0 > 0))
xorXOR bit a bit (palabra)6 xor 3 = 5
<<desplazamiento a la izquierdadesplazamiento 0…63; el desbordamiento es un error
>>desplazamiento a la derechadesplazamiento 0…63; aritmético para negativos
/división enterael resultado es un número decimal cuando hay resto
%resto
^potenciael exponente se comprueba; un exponente negativo produce un número decimal

Todos los valores aquí son enteros exactos: 0x7FFFFFFFFFFFFFFF = 9223372036854775807. El desbordamiento es un error visible, nunca un «envolvimiento» ni un número redondeado en silencio. La división con resto, un exponente negativo y los valores no enteros «salen» de los enteros exactos, así que usa paréntesis explícitos en las fronteras.

Las formas literales y los nombres de base están en Números y bases enteras.

Relacionado

¿Has encontrado un error en esta documentación? Infórmalo en GitHub