Version 7 — Juillet 2009 — JLuc
- objectif du développement : nouvelle(s) syntaxe(s) pour spip
- objectif de cette page :
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
- Allocution conférentielle de ESJ lors de SPIP-Avignon.
- 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.
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
...
...
- 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:>
- 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
...
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)
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)
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 ?