tsguide.refl.fr/content/docs/playing/syntax.md

73 lines
1.5 KiB
Markdown

---
title: "Syntaxe"
weight: 20
---
# Rayons
Soit une variable de la forme `[A-Z][A-Z 0-9]*` ou un symbole de fonction
polarisé ou non par `+` ou `-` de la forme `(+|-)?[a-z 0-9 _]+` appliqué à une
séquence ordonnée d'autres rayons en arguments (séquence possiblement vide dans
le cas d'une constante) :
`X`, `a`, `f(X)`, `+f(X)`, `-f(-h(a, Y1), X2)`, `+add_dec(0, 2, 2)`.
Les virgules séparant les arguments peuvent être omises :
`-f(-h(a Y1) X2)`, `+add_dec(0 2 2)`, `string(hello i am X)`.
# Concaténation
Un symbole de fonction binaire infixe `:` est disponible et peut être utilisé
pour écrire confortablement une concaténation de rayons :
`a:X`, `a:b:b:X`, `f(a:X):+f(0:1:X):-f(Y)`.
# Etoiles
Une séquence non-ordonnée de rayons terminant par un point-virgule `;`:
```
X a +f(X);
```
# Constellations
Une séquence non-ordonnée d'étoiles :
```
X a +f(X); -f(-h(a Y1) X2);
+add_dec(0 2 2);
```
Toutes les variables sont locales à leur étoile. Donc, toutes les occurrences
de `X` de la première ligne sont en fait distinctes de celles de la seconde
ligne.
{{< hint info >}}
Il n'y a pas de sensibilité à l'indentation ou aux sauts de ligne.
{{< /hint >}}
# Focus
Pour choisir des points de départ du calcul, il est possible de préfixer
certaines étoiles (de notre choix) avec un symbole de *focus* `@`.
```
@X a +f(X);
@-f(-h(a Y1) X2);
+add_dec(0 2 2);
```
# Commentaires
```
'commentaire sur une seule ligne
'un autre commentaire
'''
commentaire
sur plusieurs
lignes
'''
```