Z C S C R I P T 
Langage de script du projet ZC (C++ et XML)

Sommaire:
Présentation | Principes de base | Exemples
Liens:
Référence ZCSCRIPT rapide

Présentation :

ZCSCRIPT est un langage de script très simple basé sur le système ZCXML (parsers et objets XML):
  • il travail sur une arborescence XML qui contient les données et les objets utiles
  • ses instructions elles-même correspondent à des tags XML spéciaux

  • Un programme basé sur ZCSCRIPT est en général organisé autour d'un arbre XML :
  • Objets héritant de zNode (cf. ZCXML)
  • Données XML de configuration
  • Données XML temporaires
  • Nodes XML d'organisation
  • etc..

  • Les objets de la structure (qui héritent tous de zNode en C++) peuvent permettre aux scripts d'appeller certaines de leurs méthodes via la fonction "call", il suffit de surcharger cette fonction et de l'adapter en fonction des besoins.

    ZCSCRIPT est prévu pour qu'un programme (C++) appelle les scripts de façon événementielle:
  • La "boucle principale" du programme est faite en C++ (par exemple avec ZCSCELECT)
  • Un script ne doit pas boucler indéfiniment: il effectue une tache et se termine

  • Les avantages de ZCSCRIPT par rapport à un programme 100% C++ sont multiples:
  • Changement des scripts sans recompiler ni arrêter le programme
  • Execution de commandes complexes à distance
  • Réorganiser les objets pour rajouter des fonctionalités
  • Etc..

  • Principes de base :

    Les scripts fonctionnent avec un système de variables et objets temporaires:
  • Ils sont effacés à la fin du script
  • Les variables sont uniquement globales (pour le moment)

  • Il n'y a pas de typage fort:
  • Les variables peuvent être des entiers, des réels ou des chaines de charactères
  • Les variables sont converties d'un type à l'autre automatiquement en fonction des besoins
  • Les objets sont tous considérés comme des zNode par les scripts

  • Toutes les insctructions de ZCSCRIPT ainsi que les appels de méthodes d'objets retournent une variable (en C++: class zVar cf. ZCXML) qui doit être effacée par l'appelant (un autre instruction ou bien la fonction C++ qui a appelé le script).

    Les erreurs des instructions de ZCSCRIPT sont notées dans la variable "_error_" sous la forme "CODE_ERREUR explication". Les erreurs ne stoppent pas le script, elles doivent être explicitement lues (ATTENTION: seulement la dernière erreur est lisible). La variable _error_ peut être vidée comme une variable quelconque.

    ZCXML permet d'identifier un node via son type ou son id (en général <type id="id"/>).
    Les objets peuvent être appelés via leur chemin (path) dans l'arborescence XML à partir du Node racine:
  • Path "" : node racine
  • Path "conf" : node fils de type ou d'id valant "conf"
  • Path "conf/param" : node petit fils (fils de "conf")
  • Path "node/param#2" : 2e fils de "conf" ayant un type ou un id valant "param"
  • Etc..
  • Les objets peuvent être aussi nommés et utilisés via leur nom: <&obj.fonction param="val"/>
    Les objets nommés et les variables dont le nom se termine par "&" ne peuvent pas être modifiés par les scripts (mais on peut utiliser leurs méthodes ou leur valeurs).

    Exemples :

    <script>
      <print>Hello World\n</print>
    </script>

    <script>
      <set n="mavar">Hello World\n</set>
      <print><$mavar/></print>
    </script>

    <script>
      <&logMachine.log>Hello World\n</&logMachine.log>
    </script>