Carnet Wiki

Syntaxes Alternatives pour SPIP

Version 7 — Juillet 2009 JLuc

Objectifs

-  objectif du développement : nouvelle(s) syntaxe(s) pour spip

-  objectif de cette page :

  • collecter et exposer des syntaxes alternatives pour SPIP, ainsi que les réactions et discussions
  • partager la réflexion autour
  • développer la culture de cette/ces nouvelle-s syntaxe-s et en préparer la sortie publique.

Mode d’emploi de cette page participative

-  compléter / améliorer les parties insuffisantes de cette présentation
-  poser questions et réponses dans les parties « Discussion »
-  proposer une nouvelle syntaxe à la fin de cette page


Introduction

-  Allocution conférentielle de ESJ lors de SPIP-Avignon.

Voir la VDO

-  quelques notions clés

ESJ : <? veut dire qu’on quitte l’univers syntaxique dans lequel on était, mais ne préjuge rien sur celui-ci, qui peut avoir des choses en commun avec le nouveau.
Exemple <?php ou <?xml ... ou <?spip

ESJ : Spip intègre désormais un décompilateur paramétrable des squelettes qui permet de traduire un squelette d’une syntaxe dans une autre...

A propos de XML on lira https://www-licence.ufr-info-p6.jus...

On trouvera une DTD ici : http://www.w3.org/TR/xhtml1/DTD/xht...

Utilité d’une syntaxe XML

Usage d’outils standards : éditeurs ; analyseurs

Discussion

Quels sont ces éditeurs et analyseurs qui pourraient valoriser une nouvelle syntaxe ?
Est-ce qu’on y gagnerait pas finalement peu de chose ? (d’autant plus que la syntaxe envisagée utilise des <?spip ... qui débrancheraient localement l’analyse des éditeurs/analyseurs de XML standards.

Par ailleurs, il est possible de définir des plugins pour notepad++ (par exemple) sans que la syntaxe soit XML.


Critères de Qualité d’une syntaxe

Problèmes actuels à résoudre

-  JLuc  : on ne connait pas complètement la syntaxe de spip : elle présente des recoins impossibles et des subtilités impossible à documenter car tout ce qui possible ou impossible n’est pas précisément défini (cf ElementsDeGrammaireSpip )

- ESJ : la syntaxe actuelle est incohérente et lourde, il y a pleins d’exemples ;

- ESJ : c’est une syntaxe propriétaire pour laquelle il n’existe aucun outil standard (éditeur, analyseur etc).

à détailler et justifier !

Critères de Qualité

à détailler !

-  lisibilité
-  simplicité
-  capacité à décrire le langage
-  extensibilité
-  non ambiguité
-  conformité XML
-  validité relativement à la dtd (?)
-  permettre aux colorieurs syntaxique d’améliorer leurs analyse
-  tout ce qui s’ouvre se ferme (parenthèse, crochet, accolade)
-  stabilité des lexèmes
-  stabilité parenthétique
-  existence d’une grammaire écrite qui décrit exhaustivement les syntaxes possibles

...

- Utilité et necessité de pouvoir utiliser une nouvelle syntaxe
-  

Discussion

...

...


Points concernés

-  les boucles

Syntaxe actuelle :

   <B_art>
       <ul>
   <BOUCLE_art(ARTICLES){id_article}>
       <li>#TITRE</li>
   </BOUCLE_art>
       <ul>
   </B_art>
       pas d'article
   <//B_art>

-  les chaines multi

Syntaxe actuelle :

    <multi>[fr] francais [en] anglais</multi>

-  les chaines de langues (idiome)  :

Syntaxe actuelle :

   <:plugin:nom:> 
    <:nom{param=valeur}|filtre:> 

Proposition initiale par ESJ présentée à Avignon

-  emploi de <?spip autour de chaque construction SPIP.

-  d’après Marcimat :

   <?spip AVANT art ?>
       <ul>
   <?spip BOUCLE art ARTICLES { (id_article) ?>
       <li>#TITRE</li>
   <?spip } art ?>
       <ul>
   <?spip APRES art ?>
       pas d'article
   <?spip VIDE art ?>

-  d’après Booz :

<?spip AVANT art ?>
  <ul>
<?spip BOUCLE art (ARTICLES) {id_article IN 1,2,3} {  ?>
     <li>#TITRE</li>
<?spip } art ?>
</ul>
<?spip APRES art ?>
pas d'article
<?spip VIDE art ?> 

Discussion

...


Propositions de Simon Camerlo

sur spip-dev le 1er Juillet 2009 :

<boucle attribX="valeur" ... >
   <avant> (...) </avant>


(contenu de la boucle à afficher)


<apres> (...) </apres>
   <sinon> (...) </sinon>
</boucle> 

Discussion

ESJ : ça fait des boucles CONFORME XML mais pas VALIDES par rapport à la DTD, et même que ca les empêche définitivement de l’être. Cf pourquoi dans vidéo.

Marcimat : oui, j’ai compris aussi cette histoire de validité. exemple simple non valide :
Ici, on ouvre un « ul » mais pour être valide, il ne peut pas y avoir de chevauchement de balise. Cette écriture est donc fausse, comme <a><b></a></b>

<boucle>
   <avant><ul></avant>
   <pendant><li>#TITRE</li></avant>
   <apres></ul></apres>
</boucle>

JLuc : ok, mais ça se corrige (cf prop suivante)


Evolution de la proposition de Simon Camerlo

Suite à la discussion, la proposition de Simon peut évoluer en :

<boucle attribX="valeur" ... >
   <autour>   
        (... contenu à afficher avant)
        <contenu> (...) </contenu>
        (...contenu à afficher après)
    </autour>
   <sinon> (...) </sinon>
</boucle> 

Discussion

ESJ : Mais non, la nouvelle syntaxe NE DOIT PAS utiliser des balise <...> sinon il y aura confusion avec celle de la DTD.

Gilles : (en effet) et ne sont pas dans du XHTML (partie de la DTD qui sera utilisée pas l’éditeur). Le principe de la syntaxe proposée par Emmanuel est de créer un syntaxe xml SPIP qui se base sur cette DTD à l’aide du paramètre « profile » :
content-type : application/spip+xml ; profile=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

JLuc : on peut alors définir et utiliser une nouvelle DTD pour xspip, non ?