La segmentation peut être composé de quelques pas, par exemple, si vous avez ce code html:
<html>
<head>
<title>My HTML Page</title>
</head>
<body>
<p style="special">
This paragraph has special style
</p>
<p>
This paragraph is not special
</p>
</body>
</html>
le tokenizer peut convertir cette chaîne à une liste à plat des principales jetons, de jeter des espaces (merci, SasQ pour la correction):
["<", "html", ">",
"<", "head", ">",
"<", "title", ">", "My HTML Page", "</", "title", ">",
"</", "head", ">",
"<", "body", ">",
"<", "p", "style", "=", "\"", "special", "\"", ">",
"This paragraph has special style",
"</", "p", ">",
"<", "p", ">",
"This paragraph is not special",
"</", "p", ">",
"</", "body", ">",
"</", "html", ">"
]
il peut y avoir plusieurs jetons passe pour convertir une liste de jetons à une liste de plus en plus au niveau des jetons comme suit hypothétique analyseur HTML peut faire (et qui est toujours une liste à plat):
[("<html>", {}),
("<head>", {}),
("<title>", {}), "My HTML Page", "</title>",
"</head>",
("<body>", {}),
("<p>", {"style": "special"}),
"This paragraph has special style",
"</p>",
("<p>", {}),
"This paragraph is not special",
"</p>",
"</body>",
"</html>"
]
puis l'analyseur convertit la liste des jetons pour former un arbre ou un graphe qui représente la source du texte dans une manière qui est plus pratique pour accéder et manipuler par le programme:
("<html>", {}, [
("<head>", {}, [
("<title>", {}, ["My HTML Page"]),
]),
("<body>", {}, [
("<p>", {"style": "special"}, ["This paragraph has special style"]),
("<p>", {}, ["This paragraph is not special"]),
]),
])
à ce stade, l'analyse est complète; et c'est ensuite à l'utilisateur d'interpréter l'arbre, de le modifier, etc.