[phpwiki] rfcc39

rfcc 39 : sérialisation de posts

Version : 20040502

Lexer : Syntaxe du format de sérialisation

Grammaire :
[A] item -> array
[B] item -> tokentype string properties
[C] array -> # itemnb item{itemnb}
[D] itemnb -> int
[E] int -> digit* :
[F] tokentype -> ident
[G] ident -> * string
[H] ident -> int
[I] string -> charnb char{itemnb}
[J] charnb -> int
[K] properties -> propnb prop{propnb}
[L] prop -> ident string
[M] propnb -> int

Lexer : Sémantique du format de sérialisation

NB : Les éléments terminaux de la grammaire ne sont pas repris.
[A][B] Le texte correspondant aux données sérialisées contient un item. Un item peut être un token ou un tableau contenant d'autres items (niveau n'imbrications illimité).
[C][D] Un tableau contient des items, précédés de leur nombre.
[E] Un entier est représenté par une suite de chiffres, l'entier est nul si la suite est vide.
[B][F] Un token contient son type sous la forme d'un identificateur, son texte brut et la liste de ses propriétés.
[G][H] Un identificateur apparait soit sous la forme de son numéro s'il est déjà apparu avant, soit sous la forme d'un astérisque suivi de son texte brut si c'est sa première occurence (il prend alors comme numéro le nombre d'identificateurs apparus avant lui).
[I][J] Un texte brut est composé de sa longueur, suivi de ses caractères.
[K][M] Un liste de propriétés contient des propriétés, précédées de leur nombre.
[L] Une propriété est composée de son nom sous forme d'identificateur et de sa valeur sous forme de texte brut.

Slip : tokens

Slip : Table des identificateurs initiale

00
text
01
blank
02
url
03
wiki
04
smiley
05
begintag
06
endtag
07
clock
08
title
09
keyword
10
site
11
name
12
confirmed
13
valid
14
hours
15
minutes
16
seconds
17
index
18
board
19
sub