Files
1000-lignes-de-code/episode-001/reponse-decoupage-mot/response-thomas-boutdecode.md
T

2.4 KiB

local function strsplit(delimiter, text)
	if delimiter == "" then
		error("delimiter matches empty string!")
	end
	local list, pos, first, last = {}, 1
	while true do
		first, last = text:find(delimiter, pos, true)
		if first then -- found?
			table.insert(list, text:sub(pos, first - 1))
			pos = last + 1
		else
			table.insert(list, text:sub(pos))
			break
		end
	end
	return list
end
M.private.strsplit = strsplit

statements

keyword:

local function if...then..[else]...end while...do...end return break private

operators/symbols:

== . = , . : + - () --

Éléments syntaxiques du langage qui permettent d'effectuer une action détérminé par l'interpréteur ou le compilateur, selon qu'il s'agisse d'un langage scripté ou compilé. Il peut s'agir d'un nom ou d'un symbole que l'on applique à 0 ou plusieurs opérandes.

Ces opérandes peuvent être des valeurs, des variables ou des expressions composées).

J'ai regroupé les opérateurs et les keywords dans la même catégorie car leur utilisation et syntaxes sont similaires quand bien même, leurs usages peuvent varier grandement et ne pas servir, du tout, le même but.

Exemple de ce que j'entend par là : un + permet de réduire deux operandes à un seul en appliquant une addition tandis qu'un if permet, en fonction d'un opérande booléen de décider d'éxecuter un set d'opérandes plutôt qu'un autre.

Peut-être pouvons-nous parler de compound statement pour les (if/while)... ? ;D

Exemple +:

operand operator operand

3 + 2

Exemple while...do...end:

operator operatand operator
  operand
  ...
  operand
operator

while operand_1 do
  operand_2
  ...
  operand_n
end

functions/callable expressions/routines/methods:

strsplit error find insert sub

Ces expressions agissent comme un opérateur mais à leur différence, ils ne sont pas définies dans la grammaire du langages et ne sont donc pas des mots réservés.

constants/values:

true "" "delimiter matches empty string!" {} 1

Ces noms, au moment de l'éxécution du programme, représentent un état de la mémoire invariable. Seules les opérations de lectures sont autorisés.

variables:

delimiter text list pos first last table M

Ces noms représentent aussi un état variable de la mémoire. Les actions d'écritures sont autorisés autant que les actions de lectures.