73 lines
1.5 KiB
Markdown
73 lines
1.5 KiB
Markdown
---
|
|
title: "Syntaxe"
|
|
weight: 1
|
|
---
|
|
|
|
# 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
|
|
'''
|
|
``` |