À propos des expressions simplesDans leur forme la plus simple, les expressions FormCalc sont des groupes d’opérateurs, mots-clés et littéraux assemblés de façon logique. Voici des exemples d’expressions simples :
2
"abc"
2 - 3 * 10 / 2 + 7
Chaque expression FormCalc renvoie une seule valeur, après exécution des opérations dans l’ordre traditionnel, même si cet ordre n’est pas toujours évident à déterminer d’après la syntaxe de l’expression. Ainsi, les ensembles d’expressions suivants, lorsqu’on les applique à des objets de conception de formulaire, produisent les mêmes résultats :
Expression
|
Equivalent à
|
Renvoie
|
"abc"
|
"abc"
|
abc
|
2 - 3 * 10 / 2 + 7
|
2 - (3 * (10 / 2)) + 7
|
-6
|
10 * 3 + 5 * 4
|
(10 * 3) + (5 * 4)
|
50
|
0 and 1 or 2 > 1
|
(0 and 1) or (2 >1)
|
1 (true)
|
2 < 3 not 1 == 1
|
(2 < 3) not (1 == 1)
|
0 (false)
|
Comme le suggère le tableau précédent, tous les opérateurs FormCalc possèdent un certain niveau de priorité lorsqu’ils apparaissent dans des expressions. Le tableau suivant illustre la hiérarchie des opérateurs :
Priorité
|
Opérateur
|
La plus élevée
|
=
|
|
(Unaire) - , + , not
|
|
* , /
|
|
+ , -
|
|
< , <= , > , >= , lt , le , gt , ge
|
|
== , <> , eq , ne
|
|
& , and
|
La plus basse
|
| , or
|
Promotion d’opérandesDans le cas où un ou plusieurs opérandes d’une opération ne correspondent pas au type prévu pour cette opération, FormCalc promeut les opérandes pour qu’ils correspondent au type requis. La façon dont se fait cette promotion dépend du type d’opérande exigé par l’opération.
Opérations numériquesLorsque des opérandes non numériques se retrouvent dans des opérations numériques, ils sont d’abord promus à leur équivalent numérique. Si l’opérande non numérique n’est pas converti correctement en valeur numérique, sa valeur devient zéro (0). La promotion d’opérandes dont la valeur est nulle en nombres donne toujours la valeur zéro.
Le tableau suivant donne quelques exemples de promotion d’opérandes non numériques.
Expression
|
Equivalent à
|
Renvoie
|
(5 - "abc") * 3
|
(5 - 0) * 3
|
15
|
"100" / 10e1
|
100 / 10e1
|
1
|
5 + null + 3
|
5 + 0 + 3
|
8
|
opération booléenneLorsque des opérandes non booléennes se retrouvent dans des opérations booléennes, ils sont d’abord promus à leur équivalent booléen. Si l’opérande non booléenne n’est pas converti correctement en une valeur différente de zéro, sa valeur est Vrai (1) ; sinon, sa valeur est Faux (0). La promotion d’opérandes dont la valeur est nulle en valeur booléenne donne toujours la valeur Faux (0). Par exemple, l’expression :
"abc" | 2
renvoie 1. Autrement dit, Faux | Vrai = Vrai, alors que
if ("abc") then
10
else
20
endif
renvoie 20.
Opérations de chaîneLorsque des opérandes non chaînes se retrouvent dans des opérations de chaîne, ils sont d’abord promus en chaînes tirées de leur valeur. La promotion d’opérandes dont la valeur est nulle en chaînes donne toujours la chaîne vide. Par exemple, l’expression :
concat("The total is ", 2, " dollars and ", 57, " cents.")
renvoie "The total is 2 dollars and 57 cents."
Remarque : si durant l’évaluation d’une expression, une étape intermédiaire génère NaN, +Inf ou -Inf, FormCalc génère une exception d’erreur et propage cette erreur dans le reste de l’expression. La valeur de l’expression est alors toujours 0. Par exemple :
3 / 0 + 1
renvoie 0.
|
|
|