J'ai créé trois différents lexers depuis une même base, ils utilisent soit :
Elle est mesurée et comparée sur deux méthodes :
L'équivalence des résultats des analyses lexicales est comparée afin d'assurer des mesures dans des conditions identiques.
La performance est dépendante de l'objet retourné par la fonction Lexeme.
ATTENTION: Premier objet arrivé, premier objet trouvé.
- Un ordre est requis (mots clés avant identifiant, ...)
- Les objets trouvés le plus souvant doivent être classés en tête : amélioration des performances.
Ils réalisent une analyse à plusieurs niveaux:
un arbre lexical est créé et non pas une liste.
L'avantage de cette approche est la simplification des grammaires de l'analyse syntaxique.
Si vous recherchez un lexer retournant une liste de tokens, consultez le site d'Eli Bendersky, il pourra vous être utile :
Lexer | Tokens | Portée | Vitesse | Taille modules | Observations |
---|---|---|---|---|---|
AutomatonLexer | AFD | 1..n | moyenne | énormes | Plus long token retourné. |
|
|||||
MultiRegExpLexer | ER | 1..1 | lente | normal | Premier token arrivé, premier servi. |
|
|||||
OneRegExpLexer | ER | 1..n | rapide | normal |
Plus long token retourné, par défaut. Puis premier token arrivé, premier servi. |
|