02_Syntaxe de base - HellperKK/Stoicos GitHub Wiki

Le syntaxe du Stoicos est assez simple et peux être décrite en un ensemble de 5 éléments :

Des valeurs simples

  • Des entiers comme 10 42 ou -37
  • Des flottants comme 10.1 42. ou -37.483
  • Des booléens comme true et false
  • Des chaînes de caractères (ou string) comme "Ceci est une chaine" ou "J'aime le chocolat"
  • Des symboles comme :hello ou :mister_jack
  • Des tableaux (ou arrays) comme [1 2 3 4 5] ou [1 [2 3 4] "cinq"] (un tableau étant une valeur contenant d'autres valeurs séparées par des espaces)

Ainsi que d'autres valeurs dont on parlera plus tard !

Appel de fonction

La brique élémentaire du Stoicos consiste en des appels de fonctions. Un appel se fait par l'inscription du nom d'une fonction suivi d'une lise de valeurs, ses arguments. Par exemple, on a pu voir

println "Bonjour le monde"

qui utilise la fonction println et en argument la chaîne de caractères "Bonjour le monde". Cette façond d'appeler des fonctions est ce qui s'appelle la notation préfixée du fait que l'opérateur précède ses arguments. Ainsi, on en fera jamais 1 + 2 mais toujours + 1 2

De plus, une fonction est une autre valeur de base et il est tout à fait possible d’utiliser une fonction comme argument d'une autre fonction et faire par exemple

println println

La compréhension des fonctions est PRIMORDIALE pour pouvoir utilsier le langage stoicos. En effet les fonctions permettent d'effectuer des cations comme un affichage dans le console, mais aussi aussi de modifier des données pour en générer des nouvelles.

Fonctions imbriquées

Aussi, chaque fonction retourne une valeur qui peut être utilisée pour une autre fonction qui elle-même retourne une valeur qui peut être utilisée... par exemple 2 + 3 * 5 calcule 3 * 5 avant d'effectuer 2 + 15, utilisant le résultat du premier calcul dans le second. En Stoicos, ce calcul se fait en écrivant le premier appel, puis en l'entourant de parenthèses et en utilisant le tout dans le second calcul, donnant

+ 2 (* 3 5)

De même, si on souhaitait afficher le résultat avec println on pourrait faire

println (+ 2 (* 3 5))

Block

Un block est une valeur contenant d'autres valeurs délimitées par des {} comme

{(println "Hello") "world"}

Son rôle principal est de contenir du code dont l’évaluation n'est pas directe, par exemple dans une condition où cette dernière n'est pas sûre. Une fois évalué, un block retourne la dernière valeur qu'il évalue.

Saut de ligne

Une particularité du Stoicos est que le code est évalué ligne par ligne. Cependant, avec les imbrications de fonction, une ligne peut facilement devenir très longue. Dans ce cas il est possible de couper une ligne en plusieurs fragments en faisant en sorte que chaque fragment après le premier commence par une espace ou une tabulation.

Par exemple le code suivant

println (+ 2 (* 3 5))

peut aussi être écrit comme ceci

println
	(+ 2
		(* 3 5)
	)