Simple

À propos des expressions simples

Dans 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érandes

Dans 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ériques

Lorsque 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éenne

Lorsque 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îne

Lorsque 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.