Supposez que vous souhaitiez lister tous les identificateurs utilisés d'un programme source.
Vous aurez alors besoin de filtrer tous les mots réservés de votre liste.
Certains programmeurs habitués au C pourraient être tentés de représenter l'ensemble des mots réservés sous forme d'un tableau de chaînes de caractères, puis de rechercher dans ce tableau les mots réservés inscrits dans la liste.
Pour accélérer la recherche, ils pourraient même utiliser un arbre binaire ou une table de hachage pour les représenter.
En LUA, un moyen simple et efficace, consiste à définir comme indice (index) les mots réservés que l'on recherche.
Il suffit alors de vérifier, lors d'un test, si le résultat est nil ou non... Ce qui donne:
reserved = {["while"] = true, ["end"] = true, ["function"] = true, ["local"] = true,} for w in pgrSource() do if reserved[w] then -- Si "w" est un mot réservé ... end end
Et pour avoir une initialisation plus claire, il suffit d'utiliser une fonction auxiliaire pour construire l'ensemble.
function Set(list) local set = {} for _, l in ipairs(list) do set[l] = true end return set end -- Ce qui donne: reserved = Set{"while", "end", "function", "local", }