Après avoir défini un semblant de
méthode de travail
on s’attaque aujourd’hui à l’écriture d’un
tokenizer
pour Naam.
Le tokenizer
Le code du projet est en ligne sur Github à l’adresse suivante:
naam.
N’hésitez pas à le consulter. Les extraits qui suivront sont tirés de la
version 0.0.1.
La tokenization est le processus de séparation des éléments
basiques d’un langage.
C’est la première étape de l’analyse lexicale.
Par exemple, à partir du programme suivant:
sign(n)=
1 if n > 0
-1 if n < 0
0 else
print sign(4)
Je veut obtenir la suite de tokens suivante:
sign
(
n
)
=
1
if
n
>
0
-1
if
n
<
0
0
else
print
sign
(
4
)
Je vais d’abord introduire la classe Main, qui est certainement
temporaire et aussi (exceptionnellement) la seule à ne pas être
testée. Elle est juste là pour me permettre de visualiser les
résultats.
Le principe est très simple:
Maintenant, on passe au truc intéressant, le tokenizer
proprement dit:
Chaque méthode est suffisament documentée pour que vous puissiez
comprendre la logique de la bestiole. La prochaine fois on s’attaque
au lexer.