Sintassi delle Espressioni
Il parser accetta una grammatica piuttosto semplice.
Precedenza degli operatori
| Operatore | Associatività | Descrizione |
|---|---|---|
| (...) | Nessuna | Raggruppamento |
| f(), x.y, a[i] | Sinistra | Chiamata funzione, accesso proprietà, indicizzazione array |
| ! | Sinistra | Fattoriale |
| ^ | Destra | Elevamento a potenza |
| +, -, not, sqrt, ecc. | Destra | Operatori unari prefissi |
| *, /, % | Sinistra | Moltiplicazione, divisione, resto |
| +, -, | ||
| ==, !=, >=, <=, >, <, in | Sinistra | Confronti e appartenenza |
| and | Sinistra | AND logico |
| or | Sinistra | OR logico |
| x ? y : z | Destra | Operatore ternario |
| = | Destra | Assegnazione |
| ; | Sinistra | Separatore espressioni |
Operatori unari
- Accettano un solo argomento
- Le parentesi sono opzionali
- Senza parentesi mantengono la loro precedenza
Esempi
sin(x)^2 ≡ (sin x)^2
sin x^2 ≡ sin(x^2)
Elenco operatori
- -x → Negazione
- +x → Conversione a numero
- x! → Fattoriale
- abs x → Valore assoluto
- acos x → Arcocoseno
- asin x → Arcoseno
- atan x → Arcotangente
- cbrt x → Radice cubica
- ceil x → Arrotondamento per eccesso
- cos x → Coseno
- exp x → e^x
- floor x → Arrotondamento per difetto
- ln x → Logaritmo naturale
- log10 x → Log base 10
- not x → NOT logico
- round x → Arrotondamento
- sign x → Segno
- sin x → Seno
- sqrt x → Radice quadrata
- tan x → Tangente
Funzioni predefinite
- random(n) → Numero casuale
- min(a,b,…) → Minimo
- max(a,b,…) → Massimo
- pow(x,y) → Potenza
- atan2(y,x) → Arcotangente
- roundTo(x,n) → Arrotonda
- map(f,a) → Applica funzione
- filter(f,a) → Filtro
- join(sep,a) → Join
- if(c,a,b) → If funzione
Array
[1, 2, 3, 2+2, 10/2, 3!]
Definizione di funzioni
nome(parametri) = espressione
Esempi:
square(x) = x*x
add(a, b) = a + b
factorial(x) = x < 2 ? 1 : x * factorial(x - 1)
Costanti
- E → Numero di Nepero
- PI → Pi greco
- true → Booleano vero
- false → Booleano falso