Règles de syntaxe générales

PureBasic a défini des règles qui ne changent jamais,à savoir:

         > Commentaires

Exemple

  If a = 10 ; Ceci est un commentaire pour indiquer quelque chose.

> Mots clé (Keywords)

Tous les mots clés sont utilisés pour des choses générales à l'intérieur de PureBasic, comme la création de tableaux (Dim) ou des listes (NewList), ou le contrôle du déroulement du programme (If : Else : EndIf). Ils ne sont pas suivis par les parenthèses '()', qui sont généralement utilisées par PureBasic pour les fonctions.

Exemple

    If a = 1      ; If, Else et EndIf sont des mots clés; contrairement à 'a'
      ...         ; qui est une variable utilisée dans une expression ('a = 1').
    Else
      ...
    EndIf
Les mots clés sont régulièrement décrits dans les chapitres sur le côté gauche de la page d'index du manuel de référence.

> Fonctions

Toutes les fonctions doivent avoir un nom suivi d'un '(' à défaut de quoi elle ne sera pas considérée comme une fonction. Cela est vrai y compris lorsque la fonction ne prend aucun paramètre.

Exemple

  WindowEvent() ; est une fonction.
  WindowEvent   ; est une variable.

> Constantes

Toutes les constantes ont un nom précédé par un #.
Elles ne peuvent être déclarées qu'une fois et garde toujours leur valeur prédéfinie. (Le compilateur remplace tous les noms des constantes avec leur valeur correspondante lors de la compilation de l'exécutable.)

Exemple

  #Hello = 10 ; est une constante.
  Hello  = 10 ; est une variable.

> Texte littéral

Les chaînes littérales sont encadrées par le caractère ". Les séquences d'échappement sont prises en charge en utilisant le caractère ~ avant la chaîne littérale.
Les séquences d'échappement autorisés sont:
  \a: bip                    Chr(7)
  \b: retour arrière         Chr(8)
  \f: saut de page           Chr(12)
  \n: retour à la ligne      Chr(10)
  \r: retour chariot         Chr(13)
  \t: tabulation horizontal  Chr(9)
  \v: tabulation vertical    Chr(11)
  \": double quote           Chr(34)
  \\: antislash              Chr(92)
Il y a deux constantes spéciales pour les chaînes:
  #Empty$: représente une chaîne vide (exactement la même chose que "")
  #Null$ : représente une chaîne nulle. Ceci peut être utilisé avec les fonctions 
           des APIs nécessitant un pointeur NULL en guise de chaîne ou à une chaîne vraiment libre.
Attention: Sous Windows, \t ne fonctionne pas avec les fonctions graphiques des bibliothèques 2DDrawing et VectorDrawing.

Exemple

  a$ =  "Salut le monde"  ; Texte standard
  b$ = ~"Echappe\nMoi !"  ; Texte avec une séquence d'échappement

> Labels

Tous les labels (étiquettes) doivent être suivis par un ':'. Les noms de label ne peuvent pas contenir d'opérateurs (+,-,...) ou de caractères spéciaux (é,à,ß,ä,ö,ü,...).
Dans une procédure, l'étiquette sera disponible uniquement dans cette procédure.

Exemple

  Je_suis_un_label:

> Modules

Les modules utilisent un double deux-points comme cela '::' ce qui permet au programmeur d'accéder à un élément d'un module depuis l'extérieur de ce module. Le nom du module étant précisé, il est suivi du séparateur '::'. Donc attention à ne pas confondre le '::' avec le simple':' d'une étiquette (label).

Exemple

   Debug Voitures::NbVoitures ; Affiche le contenu de la variable 'NbVoitures' du module 'Voitures'

> Expressions

On appelle expression toute séquence de code qui peut être évaluée. Une expression peut regrouper toute variable, constante ou fonction d'un même type. Lorsque vous utilisez des nombres dans une expression, vous pouvez utiliser le symbole $ en tête pour préciser qu'il s'agit d'une valeur hexadécimale ou un % pour signifier une valeur binaire. Sans l'un ou l'autre de ces deux symboles, la valeur sera toujours considérée comme décimale. Les chaînes de caractères doivent être délimitées par des guillemets.

Exemple

  a = a + 1 + (12 * 3) 
  a = a + WindowHeight() + b/2 + #MaConstante
  
  If a <> 12 + 2 
    b + 2 >= c + 3
  EndIf
  
  a.s = b.s + "ceci est une chaine" + c.s
  a$ = b$ + "ceci est une autre chaine" + c$

  foo = foo + $69 / %1001 ; Utilisation de nombres hexadécimal et binaire

> Regroupement des commandes

Il est possible de placer un nombre quelconque de commandes sur la même ligne en les séparant par :.

Exemple

  If Variable=0 : Debug "Ok" : Else : Debug "Erreur" : EndIf

> Texte multiligne

Si une ligne de code contient une expression de grande taille, elle peut être divisée en plusieurs lignes. Une ligne découpée doit se terminer avec l'un des opérateurs suivants: plus (+), virgule (,), ou (|), And, Or, Xor.

Exemple

  Texte$ = "Très très très très long texte" + #LF$ +
          "un autre long texte" + #LF$ +
          "et la fin du long texte."

  MessageRequester("Bonjour c'est un titre très long.",
                   "Et un très long message, afin que nous puissions utiliser le multiligne" + #LF$ + Texte$,
                   #PB_MessageRequester_Ok)

> Glossaire

Les mots suivants utilisés dans ce manuel ont toujours le même sens :

<variable> : une variable basic.
<expression> : une expression comme commenté ci-dessus.
<constant> : une constante numérique.
<label> : un label de programme.
<type> : tout type, (standard ou structuré).

> Autres

- Dans ce manuel, tous les sujets sont listés en ordre alphabétique pour réduire tout temps de recherche.

- La valeur renvoyée par les commandes est le plus souvent un Integer. Dans le cas contraire, le type de la valeur est indiqué dans la description (ligne de syntaxe) de la commande.

- Dans la documentation de PureBasic, les termes "commandes" et "fonctions" ont le même sens, independamment du fait que la fonction retourne une valeur ou non.