|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre éprouvé
![]() Inscription : février 2009 Messages : 352 ![]() |
Bonjour! Je voulais vous faire partager mon petit script alias tokemon, un parser basé sur une grammaire innovante.
j'ai crée ce script pour un projet d'extension des css, comme less ou sass (un mélange des deux en faite) Voici l'exemple d'une grammaire parssant une expression arithmétique. Code :
Et renverra l'arbre suivant Code :
Tokemon est assez rapide, même si il ne sera jamais aussi rapide qu'un parser écrit à la main et spécifique pour une grammaire. L'algo utilisé est très simple, et n'est pas prédictif comme peuvent l'être des parsers LL(1) ou LALR(1), il sera donc le plus souvent plus lent que ce genre de parser, mais la taille du code sera aussi bien moindre. A titre de comparaison, en parsing pure (sans génération de noeud) sur une grammaire simple, tokemon est entre 3 à 6 fois plus rapide que PEG.js (valeur subjective, j'ai plus les bon chiffre et bench sous la main). Mais il reste en deçà de jscc (1.25 à 2 fois plus rapide sous chrome et opera, mais entre 1.8 et 4 fois plus lent sur FF et IE) Dans la version 1, tokemon n'est pas un générateur de parser, peut être pour la version 2 N'hésitez pas à me faire parvenir vos remarques! Edit : Je viens de me rendre compte qu'il y'a un petit bug sur le report d'érreur. La correction viendra après mes vacances
|
||||
|
|
10
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : février 2009 Messages : 352 ![]() |
Le bug sur le report d’erreur est corrigé.
J'ai effectué des mini bench, et les chiffres que j'avais avancé sont erroné, notamment ceux de pegjs. Tokemon est aussi rapide que pegjs, donc désolé de mettre avancé autant (pas une question de prétention, juste de maladresse dans les bench L'exemple ci-dessus, (l’arithmétique) n'utilise pas le mécanisme usuel de priorité d'opérateur pour ce type de grammaire, mais est efficace quand même... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com