J'essaie d'écrire un analyseur html de base qui ne tolère pas les erreurs et j'ai lu l'algorithme d'analyse HTML5 mais c'est juste trop d'informations pour un simple analyseur. Je me demandais si quelqu'un avait une idée de la logique d'un tokenizer de base qui transformerait simplement un petit html en une liste de tokens significatifs. Je suis plus intéressé par la logique que par le code
std::string html = "<div id='test'> Hello <span>World</span></div>";
Tokenizer t;
t.tokenize(html);
Donc pour le html ci-dessus, je veux le convertir en une liste de quelque chose comme ceci :
["<","div","id", "=", "test", ">", "Hello", "<", "span", ">", "world", "</", "span", ">", "<", "div", ">"]
Je n'ai rien pour la méthode tokenize mais je me demandais si itérer sur le html caractère par caractère est la meilleure façon de construire la liste
void Tokenizer::tokenize(std::string html){
std::list<std::string> tokens;
for(int i = 0; i < html.length();i++){
char c = html[i];
if(...){
...
}
}
}