Lua: Le tutoriel  wxWidgets
Lua
Les tables: Comment filtrer certains mots définis?

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
				
while étant un mot réservé en LUA, ne peut-être utilisé en tant qu'identifiant.
Par conséquent, nous ne pouvons pas écrire while = 1, mais nous pouvons écrire ["while"] = 1.

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", }	
				

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 4 décembre 2012.
Valid XHTML 1.0 Transitional

wxlualogo
Flèche haut
Flèche gauche
Flèche haut
Flèche droite
Connexion à la base de données impossible