Les patterns

Les patterns compilés forment une passerelle entre le langage courant et les expressions régulières, bien plus complexes. Ils sont utilisés pour reconnaître une partie du texte qui est en train d'être lu, dans les expressions, actions ou fonctions.

L'objectif d'un pattern est de reconnaître du texte. La forme du pattern permet de définir quelles suites de caractères on veut pouvoir reconnaître.

• Une chaîne vierge sera obligatoire. Par exemple, le pattern cancel event ne reconnaîtra que la chaîne cancel event.

• Une chaîne entre crochets [] sera optionnelle. Par exemple, le pattern [script] file reconnaîtra les chaînes de caractère suivantes :

  • file
  • script file

• Deux chaînes entre parenthèses () séparées par une barre verticale | seront optionnelles, mais au moins l'une d'entre elle sera obligatoire. Par exemple, le pattern random (numbers|integers) reconnaîtra les chaînes de caractères suivantes :

  • random numbers
  • random integers

Tip

Plusieurs chaînes peuvent être ajoutées à la suite en ajoutant une barre verticale | à chaque nouvelle chaîne.

Info

Il est possible de combiner les patterns pour reconnaître des phrases plus complexes. Il est possible d'utiliser des crochets dans les parenthèses, et réciproquement.

Il est également possible de paramétrer des arguments pour les expressions ou les actions. Il suffit de mettre entre accolades {} le nom du type attendu. Pour indiquer qu'il peut y avoir n'importe quel type, il suffit d'utiliser le type {element}, puisque tous les types héritent du type element.

Tip

Pour les expressions, fonctions et actions, renseigner un type spécifique n'est généralement pas utile lors du runtime, puisque les variables ne sont pas typées. Cependant, cela permet une meilleure compréhension du pattern et des variables attendues (car une erreur sera lancée si un cast vers ce type est impossible) par l'action ou l'expression, ainsi qu'une meilleure génération de la documentation.

Par exemple, le pattern random element of {array} indique qu'un tableau est attendu après une chaîne de caractère égale à random element of. Si l'expression passée n'est pas un tableau, une erreur sera levée lors du runtime.

Enfin pour les expressions et les fonctions, il est possible d'indiquer leur type de retour. Il suffit pour cela de rajouter le nom du type à la fin de la chaîne, après deux points :. Ainsi, le pattern size of {array}:number indique qu'un nombre est renvoyé par ce pattern de l'expression ou de la fonction.