On utilise ici un méta-langage nommé BLIP
(Boxed Linguistic Instructions Processing)
qui s'inspire initialement du LISP
mais qui est ici réduit à un langage de description de structures
linguistiques imbriquées, dans l'esprit d'un mot-clé
a priori.
Sa syntaxe est réduite au minimum pour désigner des
BLIP traite donc uniquement des
structures de boîtes imbriquées et en extrait ce qu'il comprend,
La réciproque est fausse : le premier item d'une liste ne désigne pas forcément une instruction ! En chinois le verbe est simplement précédé de 请 (qǐng = prier) ou suivi de 着 (zhe, pour les verbes d'état).
Enfin, si BLIP reconnaît une action mais placée ailleurs qu'en début de liste, il n'en fera rien. Ce qui n'empêche pas l'instruction concernée, elle en début de liste, d'en faire quelque chose !
A priori BLIP interprête donc n'importe quoi de bien parenthésé, et en fait ce qu'il peut via
un module linguistique.
C'est à chaque langage de réduire éventuellement cette liberté, au cas par cas.
Pour BLIP, chaque PdB (ici une fonction Javascript des variables L, une liste, et
V, pour définir des variables locales)
analyse l'entrée (la liste L) à sa convenance et
peut tolérer ou non des erreurs de syntaxe par rapport à un langage défini a priori.
De plus chaque PdB décide s'il émet ou non des messages d'erreurs
.
Ainsi BLIP exploite un langage primitif,
Les deux premiers sont conçus sans les structures usuelles de contrôle de la programmation mais avec possibilité de définir des variables (globales pour chaque langage) ; le dernier permet même de définir des fonctions récursives.
BLIP ne reconnaît que les chaînes de caractères et des mots particuliers qu'un module définit
comme articulations linguistiques
pour faciliter la mise en place d'une syntaxe proche du
langage naturel. C'est ce qui nécessite un colorisateur particulier qui doit pourvoir développeur
et les PdB.
Pour la définir la syntaxe
et les tests de BAlgo, simple langage de démonstration,
on s'est initialement inspiré d'un tutoriel sur un langage LISP-like
à vocation pédagogique,
et de sa doc officielle
.
Avec BLIP, mettre au point un langage à vocation algorithmique comme BAlgo
nécessite de définir aussi l'affectation et les instructions de contrôle, car il faut bien noter que
Dans BLIP, quelle que soit l'extension développée (comme Calc ou BoxML, ci-dessous),
la syntaxe est minimaliste. C'est simplement celle de
BLIP accepte aussi
Tout commentaire est précédé de ; ou // ; le premier saut de ligne qui le suit en définit la fin.
Ce qui suit est un exemple de script en langage spécifique, adapté à une problématique donnée : l'usage d'expressions mathématiques sous forme d'IHM (Interface Homme-Machine).
On peut lister toutes ses instructions possibles avec l'instruction (Calc?), ou avoir simplement une explication sur l'une d'elles, par exemple avec (Placer?). On remarque que l'instruction Commenter n'est pas définie initialement, ce qui n'empêche pas l'interpréteur de faire convenablement le maximum de ce qu'il comprend.
Comme pour tout langage conçu avec BLIP, on peut compléter Calc dynamiquement.
À titre de démonstration de ce qui est dit dans la présentation théorique, le script suivant permet de définir les instructions Commenter et Afficher initialement inconnues de Calc :
Avec la seule instruction Box
on peut construire du source HTML avec les textes sous la forme explicite de chaînes de caractères.
Donc les espaces du source en BoxML ne font pas partie de celle
du source HTML produit (alors que les objets Text étant implicites en HTML,
les espaces nuisibles
sont difficiles à négocier).
On peut aussi définir un style à appliquer, avec l'instruction Style.
Dans BAlgo la syntaxe est en français, sans faute d'accent.
On y distingue les affecter ··· à ···
est un raccourci de affecter ··· à la variable ···
,
instruction que l'on ne définit pas (mais qui pourrait l'être !).
On préfèrera d'ailleurs (Affecter (* 100 n) à "n"), plus lisible.
On s'inspire des primitives graphiques de MicroAlg.
On peut à tout moment
[planche
de GeoDyn)
— Réinitialiser LGD —