ralphjzhang / ell

Automatically exported from code.google.com/p/ell
GNU Lesser General Public License v3.0
0 stars 0 forks source link

Remove flags, use policies instead to achieve fastest parsing. #4

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Il n'est donc pas utile de faire des tests au runtime pour skipper,
step-back et action, étant donné que même la classe Rule peut-être 
templatisée.

Pour un maximum d'efficacité, il faut qu'un parseur soit un object complet
qui dérive des différent parfums possibles.

{{{
template <typename ConcreteParser>
struct NoSkipper : public Decorator<ConcreteParser>
{
  void skip() { }
};

struct Parser<char> : public NoSkipper<Parser<char> >
{
  void skip() { ... }
};
}}}

Les classes qui testent les flags disaparaîssent purement et simlpement
(NoAction, etc), c'est à l'instanciation de la grammaire que le travail se
fait. (A voir, il se peut qu'il faille quand même conserver une classe
transparente pour la conversion d'une référence d'un type vers l'autre.

{{{
template <typename Parser>
struct Grammar
{
  template <typename T>
  T<NoSkipper<Parser> > no_skip(T & t) { return t; }
}}}

Original issue reported on code.google.com by samuel.h...@gmail.com on 14 Apr 2009 at 7:11

GoogleCodeExporter commented 9 years ago

Original comment by samuel.h...@gmail.com on 17 Apr 2009 at 9:35

GoogleCodeExporter commented 9 years ago

Original comment by samuel.h...@gmail.com on 17 Apr 2009 at 9:37

GoogleCodeExporter commented 9 years ago

Original comment by samuel.h...@gmail.com on 17 Apr 2009 at 2:27

GoogleCodeExporter commented 9 years ago

Original comment by samuel.h...@gmail.com on 28 Jan 2011 at 2:07