La syntaxe du langage XS
La syntaxe du langage XS, inspirée de celle de l'Objective-C, offre l'avantage d'être très simple et particulièrement claire.
Types de variables
Nombres
x = 27
y = 3.14
Chaînes de caractères
a = "Hello world!"
b = "Çédilles"
Tableaux
t1 = {"abc", "def", "ghi"}
t2 = {2, 3, 5, 7, 11, 13}
t3 = {x, y, a, b}
t4 = {1, 2, 3, 4, 5, 6}
t4 = 1..6
Dictionnaires
d1 = ["genre" = "masc."; "type" = "adj."; "année" = 1270]
d2 = ["adresse" "Zürich"; "ZIP" 8004]
d3 = ["nom" = "bovet"; "prénom" = "simon"; "âge" = 26; "couleurs" = {"orange", "bleu"} ]
Balises
tag1 = interpretTag:"<date>45 BC</date>"
tag2 = newTagWithName:"date" contents:"45 BC"
tag3 = newTagWithName:"w" attributes:["lex" "Lorem"; "type" "n.m."]
Opérateurs de base
Standards
z = 3 * (x + y) / 2
c = "Valeur: " + z
( équiv. à t1 += t2 )t1 = t1 + t2
t3 += "abc"
( équiv. à z = z - 2 )
z -= 2
Accesseurs
( = "H" )a[1]
( = "Hello" )
a[1..5]
( = "ghi" )
t1[3]
( = 1270 )
d1["année"]
Expressions conditionnelles
if x > 0
sign = 1
else
sign = -1
end
sign = (x > 0) ? 1 ! -1
Boucles
while x > 0
x -= 1
y += 1
end
for i = 1..10
...
end
for s = {"abc", "def", "ghi"}
...
end
for s in {"abc", "def", "ghi"}
...
end
Appels de fonction
L'appel d'une fonction est le seul élément qui pourra paraître nouveau à une personne déjà familiarisée avec la programmation. L'appel d'une fonction avec un ou plusieurs argument(s) s'effectue ainsi:
printXML:corpus
n = count:a
editXML:corpus withStyle:"Standard"
mots = tagsIn:corpus named:"w"
m = elementsOf:liste containing:"abr"
lemme = attribute:"lex" ofTag:mot
Cette syntaxe, proche de celle de l'Objective-C, offre l'énorme avantage de produire un code très clair et transparent, réduisant ainsi le besoin de commentaires fastidieux. Pour s'en convaincre, il suffit de considérer comment la dernière ligne des exemples ci-dessus serait écrite dans n'importe quel autre langage:
lemme = attribute("lex", mot)
ou
lemme = attributeOfTag("lex", mot)
(Combien de paramètres sont requis pour l'appel de la fonction? Que signifie chacun d'entre eux? etc.)