GraphClick
iLocalize
Unite
Barbouillon
xFractal
ProVoc
XS
AudioXplorer

Archives
Developpeurs

Online-Store
Support
home

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.)

Section suivante